diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2023-07-18 16:37:47 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2023-07-18 16:37:47 +0700 |
| commit | f953c7c5915e15bd499f374d49403ef2567e0071 (patch) | |
| tree | e59d9ff9f3d610c3b261ebfb5e881cad3d6f1733 | |
| parent | 9e0f8349ef5038bc3d7a3424ff5b6cfc0d1154ae (diff) | |
refactor bill receipt
| -rw-r--r-- | indoteknik_custom/models/bill_receipt.py | 98 | ||||
| -rw-r--r-- | indoteknik_custom/views/bill_receipt.xml | 20 |
2 files changed, 54 insertions, 64 deletions
diff --git a/indoteknik_custom/models/bill_receipt.py b/indoteknik_custom/models/bill_receipt.py index 39d5f31b..b3f7f0ae 100644 --- a/indoteknik_custom/models/bill_receipt.py +++ b/indoteknik_custom/models/bill_receipt.py @@ -11,8 +11,8 @@ class BillReceipt(models.Model): _rec_name = 'number' number = fields.Char(string='Document No', index=True, copy=False, readonly=True, tracking=True) - vendor_id = fields.Many2one('res.partner', string="Vendor", required=True) - document_date = fields.Date(string="Document Date", required=True) + partner_id = fields.Many2one('res.partner', string="Vendor") + document_date = fields.Date(string="Document Date") description = fields.Text(string='Description') validated = fields.Boolean(string="Validated", readonly=True) bill_line = fields.One2many('bill.receipt.line', 'bill_id', string='Bill Receipt Lines') @@ -24,8 +24,41 @@ class BillReceipt(models.Model): return result def validate_button(self): - if not self.bill_line: - raise UserError('Bill receipt line masih kosong') + if self.validated: + raise UserError('Sudah di validate, tidak bisa digenerate ulang') + if self.bill_line: + raise UserError('Harus hapus semua line jika ingin generate ulang') + if self.partner_id.parent_id: + raise UserError('Harus pilih parent company') + + partners = [] + partners += self.partner_id.child_ids + partners.append(self.partner_id) + + for partner in partners: + query = [ + ('move_type', '=', 'in_invoice'), + ('state', '=', 'posted'), + ('payment_state', '=', 'not_paid'), + ('partner_id', '=', partner.id), + ('date_kirim_tukar_faktur', '=', False), + ] + invoices = self.env['account.move'].search(query, order='invoice_date') + count = 0 + for invoice in invoices: + self.env['bill.receipt.line'].create([{ + 'bill_id': self.id, + 'partner_id': invoice.partner_id.id, + 'invoice_id': invoice.id, + 'date_invoice': invoice.invoice_date, + 'efaktur_id': invoice.efaktur_id.id, + 'reference': invoice.ref, + 'total_amt': invoice.amount_total, + 'open_amt': invoice.amount_residual_signed, + 'due_date': invoice.invoice_date_due + }]) + count += 1 + _logger.info("Bill Receipt Line generated %s" % count) self.validated = True @@ -43,53 +76,12 @@ class BillReceiptLine(models.Model): _description = 'Bill Receipt Line' _order = 'bill_id, id' - bill_id = fields.Many2one('bill.receipt', string='Bill Receipt') - sale_order_id = fields.Many2one('sale.order', string='Sale Order') - po_id = fields.Many2one('purchase.order', string='PO') - user_id = fields.Many2one('res.users', string='Purchase Rep') - payment_term_id = fields.Many2one('account.payment.term', string='Payment Terms') - vendor_id = fields.Many2one('res.partner', string='Vendor') - date_approve = fields.Datetime(string='Confirmation Date') - date_planned = fields.Datetime(string='Receipt Date') - amount_untaxed = fields.Float(string='Untaxed Amount') - amount_total = fields.Float(string='Total') + bill_id = fields.Many2one('bill.receipt', string='Bill Ref', required=True, ondelete='cascade', index=True, copy=False) + partner_id = fields.Many2one('res.partner', string='Customer') + invoice_id = fields.Many2one('account.move', string='Invoice') + date_invoice = fields.Date(string='Invoice Date') + efaktur_id = fields.Many2one('vit.efaktur', string='Faktur Pajak') reference = fields.Char(string='Reference') - partner_ref = fields.Char(string='Vendor Reference') - - @api.onchange('po_id') - def onchange_partner_ref(self): - self.partner_ref = self.po_id.partner_ref - - @api.onchange('po_id') - def onchange_vendor_id(self): - self.vendor_id = self.po_id.partner_id - - @api.onchange('po_id') - def onchange_date_approve(self): - self.date_approve = self.po_id.date_approve - - @api.onchange('po_id') - def onchange_date_planned(self): - self.date_planned = self.po_id.date_planned - - @api.onchange('po_id') - def onchange_amount_untaxed(self): - self.amount_untaxed = self.po_id.amount_untaxed - - @api.onchange('po_id') - def onchange_user_id(self): - self.user_id = self.po_id.user_id - - @api.onchange('po_id') - def onchange_sale_order_id(self): - self.sale_order_id = self.po_id.sale_order_id - - @api.onchange('po_id') - def onchange_payment_term_id(self): - self.payment_term_id = self.po_id.payment_term_id - - @api.onchange('po_id') - def onchange_amount_total(self): - self.amount_total = self.po_id.amount_total - - + total_amt = fields.Float(string='Total Amount') + open_amt = fields.Float(string='Open Amount') + due_date = fields.Date(string='Due Date')
\ No newline at end of file diff --git a/indoteknik_custom/views/bill_receipt.xml b/indoteknik_custom/views/bill_receipt.xml index c73802c2..138bd0a0 100644 --- a/indoteknik_custom/views/bill_receipt.xml +++ b/indoteknik_custom/views/bill_receipt.xml @@ -6,7 +6,7 @@ <field name="arch" type="xml"> <tree> <field name="number"/> - <field name="vendor_id"/> + <field name="partner_id"/> <field name="document_date"/> <field name="description"/> <field name="validated"/> @@ -19,16 +19,14 @@ <field name="model">bill.receipt.line</field> <field name="arch" type="xml"> <tree> - <field name="partner_ref"/> - <field name="po_id"/> - <field name="sale_order_id"/> - <field name="user_id"/> - <field name="vendor_id"/> - <field name="date_approve"/> - <field name="date_planned"/> + <field name="partner_id"/> + <field name="invoice_id"/> + <field name="date_invoice"/> + <field name="efaktur_id"/> <field name="reference"/> - <field name="amount_untaxed"/> - <field name="amount_total"/> + <field name="total_amt"/> + <field name="open_amt"/> + <field name="due_date"/> </tree> </field> </record> @@ -51,7 +49,7 @@ <sheet> <group> <group> - <field name="vendor_id" attrs="{'readonly': [('validated', '=', True)]}"/> + <field name="partner_id" attrs="{'readonly': [('validated', '=', True)]}"/> <field name="document_date" attrs="{'readonly': [('validated', '=', True)]}"/> <field name="description" attrs="{'readonly': [('validated', '=', True)]}"/> </group> |
