42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
from netforce.model import Model, get_model
 | 
						|
 | 
						|
class InvoicePayment(Model):
 | 
						|
    _inherit="invoice.payment"
 | 
						|
 | 
						|
    def add_payment(self,ids,context={}):
 | 
						|
        obj=self.browse(ids)[0]
 | 
						|
        inv=obj.invoice_id
 | 
						|
        if inv.inv_type not in ("invoice","debit"):
 | 
						|
            raise Exception("Wrong invoice type")
 | 
						|
        if obj.amount>inv.amount_due:
 | 
						|
            raise Exception("Amount paid exceeds due amount")
 | 
						|
        vals={
 | 
						|
            "type": inv.type=="out" and "in" or "out",
 | 
						|
            "pay_type": "invoice",
 | 
						|
            "partner_id": inv.partner_id.id,
 | 
						|
            "date": obj.date,
 | 
						|
            "ref": obj.ref,
 | 
						|
            "account_id": obj.account_id.id,
 | 
						|
            "currency_id": inv.currency_id.id,
 | 
						|
            "lines": [("create",{
 | 
						|
                "type": "invoice",
 | 
						|
                "invoice_id": inv.id,
 | 
						|
                "account_id": inv.account_id.id,
 | 
						|
                "amount": obj.amount,
 | 
						|
            })],
 | 
						|
        }
 | 
						|
        pmt_id=get_model("account.payment").create(vals,context={"type":vals["type"]})
 | 
						|
        # to check when before payment post
 | 
						|
        ctx={
 | 
						|
            'hdcase_reconcile':inv.hdcase_reconcile,
 | 
						|
        }
 | 
						|
        get_model("account.payment").post([pmt_id],context=ctx)
 | 
						|
        return {
 | 
						|
            "next": {
 | 
						|
                "name": "view_invoice",
 | 
						|
                "active_id": inv.id,
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
InvoicePayment.register()
 |