summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2023-07-18 16:37:47 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2023-07-18 16:37:47 +0700
commitf953c7c5915e15bd499f374d49403ef2567e0071 (patch)
treee59d9ff9f3d610c3b261ebfb5e881cad3d6f1733
parent9e0f8349ef5038bc3d7a3424ff5b6cfc0d1154ae (diff)
refactor bill receipt
-rw-r--r--indoteknik_custom/models/bill_receipt.py98
-rw-r--r--indoteknik_custom/views/bill_receipt.xml20
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>