I didn't catch that the first time you posted the issue.

Yes, it does appear to be related to the po_number field which you've added to the code.

If you're going to add po_number to the code, you need to not only specify the field name but also a value for said field.

Why are you storing a po_number value via the authorize.net payment module? Authnet is used for CC processing, not PO numbers ... :O (granted, I guess it's acceptable to note a PO number even if the purchase is being paid-for immediately)