diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2023-06-27 09:54:00 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2023-06-27 09:54:00 +0700 |
| commit | 9704530832cbb70a8209e556a9a67a25fe8c11fc (patch) | |
| tree | 0c92d7c479fd81d998d2cc0dec8334b9dc6fa48c /indoteknik_custom/models/requisition.py | |
| parent | 72888c5c59078195420f6a6da3ae1c65766390d7 (diff) | |
| parent | 45dc1483342d9ec195c53711b5194e7ddf88b343 (diff) | |
Merge branch 'release' into nathan-dev
Diffstat (limited to 'indoteknik_custom/models/requisition.py')
| -rw-r--r-- | indoteknik_custom/models/requisition.py | 63 |
1 files changed, 61 insertions, 2 deletions
diff --git a/indoteknik_custom/models/requisition.py b/indoteknik_custom/models/requisition.py index 5bb3272e..19f0ba7e 100644 --- a/indoteknik_custom/models/requisition.py +++ b/indoteknik_custom/models/requisition.py @@ -26,6 +26,43 @@ class Requisition(models.Model): result = super(Requisition, self).create(vals) return result + def create_requisition_from_sales_with_price(self): + if self.requisition_lines: + raise UserError('Sudah digenerate sebelumnya, hapus line terlebih dahulu') + if not self.sale_order_id: + raise UserError('Sale Order harus diisi') + if self.is_po: + raise UserError('Sudah jadi PO, tidak bisa di create ulang PO nya') + + count = 0 + for order_line in self.sale_order_id.order_line: + # get purchase price altama, if nothing, then get other cheaper, if nothing then last po + purchase_price = order_line.purchase_price + vendor_id = order_line.vendor_id.id + + # get qty available bandengan + qty_available = order_line.product_id.qty_onhand_bandengan + order_line.product_id.qty_incoming_bandengan - order_line.product_id.outgoing_qty + suggest = 'harus beli' + if qty_available > order_line.product_qty: + suggest = 'masih cukup' + + self.env['requisition.line'].create([{ + 'requisition_id': self.id, + 'partner_id': vendor_id, + 'brand_id': order_line.product_id.product_tmpl_id.x_manufacture.id, + 'product_id': order_line.product_id.id, + 'qty_purchase': order_line.product_uom_qty, + 'tax_id': order_line.purchase_tax_id.id, + 'price_unit': purchase_price, + 'subtotal': purchase_price * order_line.product_uom_qty, + 'source': 'sales', + 'qty_available_store': qty_available, + 'suggest': suggest, + }]) + count+=1 + _logger.info('Create Requisition %s' % order_line.product_id.name) + self.notification = "Requisition Created %s lines" % count + def create_requisition_from_sales(self): if self.requisition_lines: raise UserError('Sudah digenerate sebelumnya, hapus line terlebih dahulu') @@ -44,6 +81,12 @@ class Requisition(models.Model): purchase_price = 0 vendor_id = 0 + # get qty available bandengan + qty_available = order_line.product_id.qty_onhand_bandengan + order_line.product_id.qty_incoming_bandengan - order_line.product_id.outgoing_qty + suggest = 'harus beli' + if qty_available > order_line.product_qty: + suggest = 'masih cukup' + purchase_pricelist = self.env['purchase.pricelist'].search([ ('product_id.id', '=', order_line.product_id.id), ('vendor_id.id', '=', 5571) @@ -78,7 +121,9 @@ class Requisition(models.Model): 'tax_id': order_line.purchase_tax_id.id, 'price_unit': purchase_price, 'subtotal': purchase_price * order_line.product_uom_qty, - 'source': source + 'source': source, + 'qty_available_store': qty_available, + 'suggest': suggest, }]) count+=1 _logger.info('Create Requisition %s' % order_line.product_id.name) @@ -127,6 +172,12 @@ class Requisition(models.Model): # new_po = self.env['purchase.order'].create([param_header]) brand_id = product.brand_id.id count += 10 + + qty_available = product.product_id.qty_onhand_bandengan + product.product_id.qty_incoming_bandengan - product.product_id.outgoing_qty + suggest = 'harus beli' + if qty_available > product.qty_purchase: + suggest = 'masih cukup' + param_line = { 'order_id': new_po.id, 'sequence': count, @@ -134,7 +185,9 @@ class Requisition(models.Model): 'product_qty': product.qty_purchase, 'product_uom_qty': product.qty_purchase, 'price_unit': product.last_price, - 'taxes_id': product.tax_id + 'taxes_id': product.tax_id, + 'qty_available_store': qty_available, + 'suggest': suggest, } new_line = self.env['purchase.order.line'].create([param_line]) product.current_po_id = new_po.id @@ -163,6 +216,12 @@ class RequisitionLine(models.Model): current_po_id = fields.Many2one('purchase.order', string='Current') current_po_line_id = fields.Many2one('purchase.order.line', string='Current Line') source = fields.Char(string='Source', help='data harga diambil darimana') + qty_available_store = fields.Float(string='Available') + suggest = fields.Char(string='Suggest') + + @api.onchange('price_unit') + def _onchange_price_unit(self): + self.subtotal = self.price_unit * self.qty_purchase class RequisitionPurchaseMatch(models.Model): _name = 'requisition.purchase.match' |
