summaryrefslogtreecommitdiff
path: root/fixco_custom/models/requisition.py
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-07-08 08:58:46 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-07-08 08:58:46 +0700
commitb858358ffbdd14c9b56ac96f035bddccae4d872d (patch)
tree0058aeea123b8e2c29ab704f98806b227838dbbe /fixco_custom/models/requisition.py
parent8f07d24c8362cb6a4d5ded8f94b75c5057a5b025 (diff)
skema bills and requisition
Diffstat (limited to 'fixco_custom/models/requisition.py')
-rw-r--r--fixco_custom/models/requisition.py55
1 files changed, 30 insertions, 25 deletions
diff --git a/fixco_custom/models/requisition.py b/fixco_custom/models/requisition.py
index 1734abd..b0800ba 100644
--- a/fixco_custom/models/requisition.py
+++ b/fixco_custom/models/requisition.py
@@ -51,24 +51,31 @@ class Requisition(models.Model):
sales_approve = fields.Boolean(string='Approval Status', tracking=3, copy=False)
merchandise_approve = fields.Boolean(string='Approval Status', tracking=3, copy=False)
+ def get_price(self, product):
+ purchase_pricelist = self.env['purchase.pricelist'].search([
+ ('product_id', '=', product)
+ ], limit=1)
+ if purchase_pricelist:
+ return purchase_pricelist.price, purchase_pricelist.vendor_id.id
+
def generate_requisition_from_so(self):
state = ['done', 'sale']
- if not self.sale_order_id:
- raise UserError('Sale Order Wajib Diisi dan Harus Draft')
- if self.sale_order_id.state in state:
- raise UserError('SO sudah Confirm, akan berakibat double Purchase melalui PJ')
- if not self.sale_order_id.order_line:
- raise UserError('Line SO masih kosong, harus diisi dulu')
+ # if not self.sale_order_id:
+ # raise UserError('Sale Order Wajib Diisi dan Harus Draft')
+ # if self.sale_order_id.state in state:
+ # raise UserError('SO sudah Confirm, akan berakibat double Purchase melalui PJ')
+ # if not self.sale_order_id.order_line:
+ # raise UserError('Line SO masih kosong, harus diisi dulu')
for order_line in self.sale_order_id.order_line:
+ price, vendor = self.get_price(order_line.product_id.id)
param = {
'requisition_id': self.id,
'product_id': order_line.product_id.id,
- 'partner_id': order_line.vendor_id.id,
'qty_purchase': order_line.product_uom_qty,
- 'price_unit': order_line.purchase_price,
- 'taxes_id': order_line.purchase_tax_id.id,
- 'subtotal': order_line.purchase_price * order_line.product_uom_qty,
- 'brand_id': order_line.product_id.x_manufacture.id
+ 'partner_id': vendor,
+ 'price_unit': price,
+ 'taxes_id': 14,
+ 'subtotal': price * order_line.product_uom_qty
}
self.env['requisition.line'].create([param])
@@ -90,8 +97,8 @@ class Requisition(models.Model):
self.merchandise_approve = True
def create_po_from_requisition(self):
- if not self.sales_approve and not self.merchandise_approve:
- raise UserError('Harus Di Approve oleh Darren atau Rafly')
+ # if not self.sales_approve and not self.merchandise_approve:
+ # raise UserError('Harus Di Approve oleh Darren atau Rafly')
if not self.requisition_lines:
raise UserError('Tidak ada Lines, belum bisa create PO')
if self.is_po:
@@ -133,7 +140,8 @@ class Requisition(models.Model):
'picking_type_id': 28, # indoteknik bandengan receipts
'date_order': current_time,
'sale_order_id': self.sale_order_id.id,
- 'note_description': 'from Purchase Requisition'
+ # 'source': 'requisition',
+ # 'note_description': 'from Purchase Requisition'
}
domain = [
@@ -148,7 +156,7 @@ class Requisition(models.Model):
# i start from zero (0)
for i in range(page):
new_po = self.env['purchase.order'].create([param_header])
- new_po.name = new_po.name + "/R/" + str(i + 1)
+ new_po.source = 'requisition'
po_ids.append(new_po.id)
lines = requisition_line.search(
domain,
@@ -169,8 +177,8 @@ class Requisition(models.Model):
'taxes_id': tax,
}
new_po_line = self.env['purchase.order.line'].create([param_line])
- line.current_po_id = new_po.id
- line.current_po_line_id = new_po_line.id
+ # line.current_po_id = new_po.id
+ # line.current_po_line_id = new_po_line.id
self.env['requisition.purchase.match'].create([{
'requisition_id': self.id,
@@ -275,7 +283,6 @@ class RequisitionLine(models.Model):
_inherit = ['mail.thread']
requisition_id = fields.Many2one('requisition', string='Ref', required=True, ondelete='cascade', index=True, copy=False)
- brand_id = fields.Many2one('x_manufactures', string='Brand')
product_id = fields.Many2one('product.product', string='Product', tracking=3,)
partner_id = fields.Many2one('res.partner', string='Vendor')
qty_purchase = fields.Float(string='Qty Purchase')
@@ -318,14 +325,12 @@ class RequisitionLine(models.Model):
@api.onchange('product_id')
def _onchange_product(self):
for line in self:
- line.brand_id = line.product_id.product_tmpl_id.x_manufacture.id
purchase_pricelist = self.env['purchase.pricelist'].search([
('product_id', '=', line.product_id.id)
- ],order='count_trx_po desc, count_trx_po_vendor desc', limit=1)
+ ], limit=1)
- price, taxes = line._get_valid_purchase_price(purchase_pricelist)
- line.price_unit = price
- line.taxes_id = taxes
+ # price, taxes = line._get_valid_purchase_price(purchase_pricelist)
+ line.price_unit = purchase_pricelist.price
line.partner_id = purchase_pricelist.vendor_id.id
@api.model
@@ -354,10 +359,10 @@ class RequisitionLine(models.Model):
message = f"Produk telah di-{action} : <br/>"
if action == 'Tambah':
# message += f"<br/> Product: {self.product_id.name}"
- message += f"Product: {self.product_id.name} <br/> Vendor: {self.partner_id.name} <br/> Qty: {self.qty_purchase} <br/> Price: {self.price_unit} <br/> Tax: {self.tax_id.name} <br/> Subtotal: {self.subtotal} <br/> Brand: {self.brand_id.x_name}"
+ message += f"Product: {self.product_id.name} <br/> Vendor: {self.partner_id.name} <br/> Qty: {self.qty_purchase} <br/> Price: {self.price_unit} <br/> Tax: {self.tax_id.name} <br/> Subtotal: {self.subtotal} <br/>"
elif action == 'Hapus':
# message += f"<br/> Deleted Product: {self.product_id.name}"
- message += f"<br/> Deleted Product: {self.product_id.name} <br/> Vendor: {self.partner_id.name} Qty: {self.qty_purchase} <br/> Price: {self.price_unit} <br/> Tax: {self.tax_id.name} <br/> Subtotal: {self.subtotal} <br/> Brand: {self.brand_id.x_name}"
+ message += f"<br/> Deleted Product: {self.product_id.name} <br/> Vendor: {self.partner_id.name} Qty: {self.qty_purchase} <br/> Price: {self.price_unit} <br/> Tax: {self.tax_id.name} <br/> Subtotal: {self.subtotal} <br/>"
else: # Updated
for field, old_value in old_values.items():
new_value = self[field]