Class: Invoicing::MoveInvoice
- Inherits:
-
BaseService
- Object
- BaseService
- Invoicing::MoveInvoice
- Defined in:
- app/services/invoicing/move_invoice.rb
Overview
Move invoice to another customer
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
Instance Method Details
#process(invoice, new_customer, new_shipping_address: nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/services/invoicing/move_invoice.rb', line 9 def process(invoice, new_customer, new_shipping_address: nil) Invoice.transaction do invoice.update(customer_id: new_customer.id, billing_customer_id: new_customer.id, billing_address: new_customer.billing_address) shipping_address = invoice.shipping_address if new_shipping_address.nil? && !shipping_address.one_time_only new_shipping_address = shipping_address.dup new_shipping_address.party_id = nil new_shipping_address.save! end if order = invoice.order order.customer_id = new_customer.id if new_shipping_address order.shipping_address_id = new_shipping_address.id end order.save! end if opportunity = order.opportunity opportunity.customer_id = new_customer.id opportunity.save! end # regenerate the invoice pdf end invoice.generate_pdf Result.new(invoice_moved: true, invoice: invoice) end |