@@ -96,112 +96,30 @@ class Attempt < ApplicationRecord
9696 def create_transfer!
9797 self . with_lock do
9898 payout_method = payment . legal_entity . default_payout_method
99- case payout_method . details
100- when LegalEntity ::PayoutMethod ::Check
101- safely do
102- check = payment . event . increase_checks . build (
103- memo : "Payment for \" #{ payment . purpose } \" ." [ 0 ...40 ] ,
104- amount : payment . estimate_usd_amount_cents ,
105- payment_for : "Payment for \" #{ payment . purpose } \" ." ,
106- recipient_name : payment . payee . display_name ,
107- recipient_email : payment . payee . email ,
108- address_line1 : payout_method . details . address_line1 ,
109- address_line2 : payout_method . details . address_line2 ,
110- address_city : payout_method . details . address_city ,
111- address_state : payout_method . details . address_state ,
112- address_zip : payout_method . details . address_postal_code ,
113- user : payment . creator
114- )
115-
116- check . save!
117-
118- self . payout = check
119- save!
120-
121- Receipt . reupload ( old_receiptable : payment , new_receiptable : check . local_hcb_code )
122- end
123- when LegalEntity ::PayoutMethod ::AchTransfer
124- safely do
125- ach_transfer = payment . event . ach_transfers . build (
126- amount : payment . estimate_usd_amount_cents ,
127- payment_for : "Payment for \" #{ payment . purpose } \" ." ,
128- recipient_name : payment . payee . display_name ,
129- recipient_email : payment . payee . email ,
130- routing_number : payout_method . details . routing_number ,
131- account_number : payout_method . details . account_number ,
132- bank_name : ( ColumnService . get ( "/institutions/#{ payout_method . routing_number } " ) [ "full_name" ] rescue "Bank Account" ) ,
133- creator : payment . creator
134- )
135-
136- ach_transfer . save!
137-
138- self . payout = ach_transfer
139- save!
140-
141- Receipt . reupload ( old_receiptable : payment , new_receiptable : ach_transfer . local_hcb_code )
142- end
143- when LegalEntity ::PayoutMethod ::Wire
144- safely do
145- wire = payment . event . wires . build (
146- memo : "Payment for \" #{ payment . purpose } \" ." ,
147- payment_for : "Payment for #{ payment . purpose } ." [ 0 ...140 ] ,
148- amount_cents : payment . amount_cents ,
149- address_line1 : payout_method . details . address_line1 ,
150- address_line2 : payout_method . details . address_line2 ,
151- address_city : payout_method . details . address_city ,
152- address_state : payout_method . details . address_state ,
153- address_postal_code : payout_method . details . address_postal_code ,
154- recipient_country : payout_method . details . recipient_country ,
155- recipient_name : payout_method . details . recipient_name . presence || payment . payee . display_name ,
156- recipient_email : payment . payee . email ,
157- account_number : payout_method . details . account_number ,
158- bic_code : payout_method . details . bic_code ,
159- recipient_information : payout_method . details . recipient_information . merge ( {
160- purpose_code : Wire . payment_payment . purpose_code_for ( payout_method . details . recipient_country ) ,
161- remittance_info : Wire . payment_remittance_info_for ( payout_method . details . recipient_country ) ,
162- } ) ,
163- currency :,
164- user : payment . creator
165- )
166-
167- wire . save!
168-
169- self . payout = wire
170- save!
171-
172- Receipt . reupload ( old_receiptable : payment , new_receiptable : wire . local_hcb_code )
173- end
174- when LegalEntity ::PayoutMethod ::WiseTransfer
175- safely do
176- wise = payment . event . wise_transfers . build (
177- memo : "Payment for \" #{ payment . purpose } \" " ,
178- amount : payment . amount_cents ,
179- payment_for : "Payment for \" #{ payment . purpose } \" " ,
180- recipient_name : payment . payee . display_name ,
181- recipient_email : payment . payee . email ,
182- address_line1 : payout_method . details . address_line1 ,
183- address_line2 : payout_method . details . address_line2 ,
184- address_city : payout_method . details . address_city ,
185- address_state : payout_method . details . address_state ,
186- address_postal_code : payout_method . details . address_postal_code ,
187- recipient_country : payout_method . details . recipient_country ,
188- bank_name : payout_method . details . bank_name ,
189- recipient_information : payout_method . details . recipient_information ,
190- currency :,
191- user : payment . creator
192- )
193-
194- wise . save!
195-
196- self . payout = wise
197- save!
198-
199- Receipt . reupload ( old_receiptable : payment , new_receiptable : wise . local_hcb_code )
200- end
201- else
99+ unless PAYOUT_METHOD_TRANSFER_MAPPING . key? ( payout_method . details . class )
202100 raise ArgumentError , "🚨⚠️ unsupported payout method!"
203101 end
204102
103+ safely do
104+ transfer = payout_method . create_transfer (
105+ payment . event ,
106+ amount : payment . amount_cents ,
107+ memo : "Payment for \" #{ payment . purpose } \" ." ,
108+ payment_for : "Payment for \" #{ payment . purpose } \" ." ,
109+ recipient_name : payment . payee . display_name ,
110+ recipient_email : payment . payee . email ,
111+ currency : payment . currency ,
112+ user : payment . creator ,
113+ )
114+
115+ transfer . save!
116+
117+ self . payout = transfer
118+ save!
119+
120+ Receipt . reupload ( old_receiptable : payment , new_receiptable : transfer . local_hcb_code )
121+ end
122+
205123 mark_under_review!
206124 end
207125 end
0 commit comments