summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xfixco_custom/__manifest__.py1
-rw-r--r--fixco_custom/models/account_move.py61
-rw-r--r--fixco_custom/models/purchase_order_line.py7
-rwxr-xr-xfixco_custom/security/ir.model.access.csv1
-rw-r--r--fixco_custom/views/account_move.xml13
-rw-r--r--fixco_custom/views/purchase_order.xml1
-rw-r--r--fixco_custom/views/purchase_order_line_wizard.xml37
7 files changed, 118 insertions, 3 deletions
diff --git a/fixco_custom/__manifest__.py b/fixco_custom/__manifest__.py
index c1aa655..557b2ae 100755
--- a/fixco_custom/__manifest__.py
+++ b/fixco_custom/__manifest__.py
@@ -52,6 +52,7 @@
'views/queue_job.xml',
'views/purchase_order_multi_bills.xml',
'views/report_picking_list_new.xml',
+ 'views/purchase_order_line_wizard.xml',
],
'demo': [],
'css': [],
diff --git a/fixco_custom/models/account_move.py b/fixco_custom/models/account_move.py
index f6fd742..a0de6bb 100644
--- a/fixco_custom/models/account_move.py
+++ b/fixco_custom/models/account_move.py
@@ -47,6 +47,25 @@ class AccountMove(models.Model):
compute="_compute_need_refund",
help="Flag otomatis kalau invoice sudah paid dan picking terkait di-return."
)
+ # purchase_item_ids= fields.Many2many(
+ # 'purchase.order.line',
+ # string='Auto Complete (PO Item)',
+ # )
+
+ def action_open_po_item_wizard(self):
+ self.ensure_one()
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': 'Select PO Items',
+ 'res_model': 'purchase.order.line.wizard',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {
+ 'default_move_id': self.id,
+ 'default_partner_id': self.partner_id.id,
+ }
+ }
+
approval_refund = fields.Selection(
[('approved', 'Approved'),
('rejected', 'Rejected'),
@@ -266,8 +285,6 @@ class AccountMove(models.Model):
if entry.move_type == 'out_invoice':
if entry.picking_id:
entry.invoice_date = entry.picking_id.date_done
-
-
return res
@api.onchange('purchase_vendor_bill_ids', 'purchase_id')
@@ -320,3 +337,43 @@ class AccountMove(models.Model):
self.purchase_id = False
self.purchase_vendor_bill_ids = [(5, 0, 0)] # clear after use
self._onchange_currency()
+
+class PurchaseOrderLineWizard(models.TransientModel):
+ _name = 'purchase.order.line.wizard'
+ _description = 'PO Item Selector Wizard'
+
+ move_id = fields.Many2one('account.move', required=True)
+ partner_id = fields.Many2one('res.partner')
+
+ line_ids = fields.Many2many(
+ 'purchase.order.line',
+ string='PO Items',
+ )
+
+ def action_add_lines(self):
+ self.ensure_one()
+ move = self.move_id
+
+ if move.state != 'draft':
+ raise UserError('Invoice harus draft')
+
+
+ for po_line in self.line_ids:
+
+ line = self.env['account.move.line'].with_context(
+ check_move_validity=False
+ ).new({
+ 'move_id': move.id,
+ 'product_id': po_line.product_id.id,
+ })
+
+ line._onchange_product_id()
+
+ line.name = po_line.name
+ # 🔹 Hanya qty yang belum di-invoice
+ line.quantity = po_line.product_qty - po_line.qty_invoiced
+ line.price_unit = po_line.price_unit
+ line.tax_ids = po_line.taxes_id
+ line.purchase_line_id = po_line.id
+
+ move.invoice_line_ids += line
diff --git a/fixco_custom/models/purchase_order_line.py b/fixco_custom/models/purchase_order_line.py
index 53a5eba..bdd729c 100644
--- a/fixco_custom/models/purchase_order_line.py
+++ b/fixco_custom/models/purchase_order_line.py
@@ -38,6 +38,13 @@ class PurchaseOrderLine(models.Model):
original_price_subtotal = fields.Float(string='Original Subtotal', readonly=True)
description = fields.Text(string='Description', readonly=True, copy=False)
docstatus_altama = fields.Text(string='Status Altama', readonly=True, copy=False)
+ bill_remain = fields.Float(string='Bill Remain', readonly=True, copy=False, tracking=True, compute='_compute_bill_remain')
+
+ @api.depends('qty_invoiced', 'product_qty')
+ def _compute_bill_remain(self):
+ for line in self:
+ line.bill_remain = line.product_qty - line.qty_invoiced
+
@api.constrains('product_id', 'price_unit', 'product_qty')
def _store_original_price(self):
diff --git a/fixco_custom/security/ir.model.access.csv b/fixco_custom/security/ir.model.access.csv
index 91c309e..2117f29 100755
--- a/fixco_custom/security/ir.model.access.csv
+++ b/fixco_custom/security/ir.model.access.csv
@@ -47,3 +47,4 @@ access_upload_cancel_picking,access.upload.cancel.picking,model_upload_cancel_pi
access_upload_cancel_picking_line,access.upload.cancel.picking.line,model_upload_cancel_picking_line,,1,1,1,1
access_queue_job,access.queue.job,model_queue_job,,1,1,1,1
access_purchase_order_multi_bills,access.purchase.order.multi_bills,model_purchase_order_multi_bills,,1,1,1,1
+access_purchase_order_line_wizard,access.purchase.order.line.wizard,model_purchase_order_line_wizard,,1,1,1,1 \ No newline at end of file
diff --git a/fixco_custom/views/account_move.xml b/fixco_custom/views/account_move.xml
index 5af0cfc..4869981 100644
--- a/fixco_custom/views/account_move.xml
+++ b/fixco_custom/views/account_move.xml
@@ -33,6 +33,17 @@
<!-- <button name="approve_refund" string="Approved Pengajuan Refund"
type="object" class="btn-primary" attrs="{'invisible': [('state', '!=', 'posted'), ('move_type', '!=', 'entry'), ('approval_refund', 'in', ('approved','rejected'))]}"/> -->
</button>
+ <xpath expr="//header" position="inside">
+ <button name="action_open_po_item_wizard"
+ type="object"
+ string="Add PO Items"
+ class="oe_highlight"
+ attrs="{'invisible': ['|',
+ ('move_type','!=','in_invoice'),
+ ('state','!=','draft')
+ ]}"/>
+ </xpath>
+
<button name="open_reconcile_view" position="after">
<button type="object" name="action_view_related_payment"
@@ -189,4 +200,4 @@
<field name="code">action = records.queue_job_cancel_bill()</field>
</record>
</data>
-</odoo> \ No newline at end of file
+</odoo>
diff --git a/fixco_custom/views/purchase_order.xml b/fixco_custom/views/purchase_order.xml
index cb85374..d254c92 100644
--- a/fixco_custom/views/purchase_order.xml
+++ b/fixco_custom/views/purchase_order.xml
@@ -59,6 +59,7 @@
<field name="altama_ordered" optional="hide" readonly="1"/>
<field name="altama_delivered" optional="hide" readonly="1"/>
<field name="altama_invoiced" optional="hide" readonly="1"/>
+ <field name="bill_remain" readonly="1"/>
</field>
</field>
</record>
diff --git a/fixco_custom/views/purchase_order_line_wizard.xml b/fixco_custom/views/purchase_order_line_wizard.xml
new file mode 100644
index 0000000..bce3667
--- /dev/null
+++ b/fixco_custom/views/purchase_order_line_wizard.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+ <data>
+
+ <record id="view_po_line_wizard_form" model="ir.ui.view">
+ <field name="name">purchase.order.line.wizard.form</field>
+ <field name="model">purchase.order.line.wizard</field>
+ <field name="arch" type="xml">
+ <form string="Select PO Items">
+ <group>
+ <field name="line_ids">
+ <tree editable="bottom">
+ <field name="order_id" readonly="1"/>
+ <field name="product_id" readonly="1"/>
+ <field name="bill_remain" readonly="1"/>
+ <field name="qty_invoiced" readonly="1"/>
+ <field name="product_qty" readonly="1"/>
+ </tree>
+ </field>
+ </group>
+
+ <footer>
+ <button string="Add"
+ type="object"
+ name="action_add_lines"
+ class="btn-primary"/>
+ <button string="Cancel"
+ class="btn-secondary"
+ special="cancel"/>
+ </footer>
+ </form>
+ </field>
+ </record>
+
+ </data>
+</odoo>
+