From 3d953861edbdc072e612ef0663a185f0f64c60ae Mon Sep 17 00:00:00 2001 From: Mqdd Date: Tue, 6 Jan 2026 10:25:31 +0700 Subject: done action get picking --- fixco_custom/models/print_picking_list.py | 33 +++++++++++++++++++++++++++++-- fixco_custom/views/print_picking_list.xml | 14 ++++++++++--- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/fixco_custom/models/print_picking_list.py b/fixco_custom/models/print_picking_list.py index 6998526..0fa3af6 100644 --- a/fixco_custom/models/print_picking_list.py +++ b/fixco_custom/models/print_picking_list.py @@ -19,7 +19,29 @@ class PrintPickingList(models.Model): vals['number'] = self.env['ir.sequence'].next_by_code('print.picking.list') or '0' result = super(PrintPickingList, self).create(vals) return result - + + def action_get_picking(self): + for record in self: + if not record.print_picking_list_line: + raise UserError("Tidak ada line.") + + for line in record.print_picking_list_line: + if not line.invoice_marketplace: + raise UserError( + "Invoice Marketplace kosong di salah satu line." + ) + + picking = self.env['stock.picking'].search([ + ('invoice_mp', '=', line.invoice_marketplace) + ], limit=1) + + if not picking: + raise UserError( + f"BU/OUT tidak ditemukan untuk Invoice Marketplace: {line.invoice_marketplace}" + ) + + line.picking_id = picking.id + class PrintPickingListLine(models.Model): _name = 'print.picking.list.line' _description = 'Print Picking List Line' @@ -27,4 +49,11 @@ class PrintPickingListLine(models.Model): print_picking_list_id = fields.Many2one('print.picking.list', string='Ref', required=True, ondelete='cascade', index=True, copy=False) invoice_marketplace = fields.Char(string='Invoice Marketplace') - + # picking_id = fields.Many2one('stock.picking', string='BU/OUT', compute='_compute_picking_id') + picking_id = fields.Many2one('stock.picking', string='BU/OUT') + + # @api.depends('invoice_marketplace') + # def _compute_picking_id(self): + # for line in self: + # picking = self.env['stock.picking'].search([('invoice_mp', '=', line.invoice_marketplace)], limit=1) + # line.picking_id = picking.id if picking else False diff --git a/fixco_custom/views/print_picking_list.xml b/fixco_custom/views/print_picking_list.xml index a6a33b5..1bbf715 100644 --- a/fixco_custom/views/print_picking_list.xml +++ b/fixco_custom/views/print_picking_list.xml @@ -15,7 +15,8 @@ print.picking.list.line - + + @@ -25,15 +26,22 @@ print.picking.list
+
+
- + - + -- cgit v1.2.3 From 2c860562b22cf562dd7e51bda853ff9bb602a549 Mon Sep 17 00:00:00 2001 From: Mqdd Date: Tue, 6 Jan 2026 11:41:39 +0700 Subject: fix sequence ppl --- fixco_custom/models/print_picking_list.py | 12 +++++++----- fixco_custom/views/ir_sequence.xml | 10 +++++----- fixco_custom/views/print_picking_list.xml | 16 ++++++++++------ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/fixco_custom/models/print_picking_list.py b/fixco_custom/models/print_picking_list.py index 0fa3af6..512468d 100644 --- a/fixco_custom/models/print_picking_list.py +++ b/fixco_custom/models/print_picking_list.py @@ -7,18 +7,20 @@ _logger = logging.getLogger(__name__) class PrintPickingList(models.Model): _name = "print.picking.list" + _rec_name = 'name' _description = "Print Picking List" _inherit = ['mail.thread'] - _rec_name = 'number' + _order = 'id desc' - number = fields.Char(string='Document No', index=True, copy=False, readonly=True, tracking=True) + name = fields.Char(string='Name', index=True, copy=False, readonly=True) + user_id = fields.Many2one('res.users', string='Created By', default=lambda self: self.env.user, readonly=True) print_picking_list_line = fields.One2many('print.picking.list.line', 'print_picking_list_id', string='Print Picking List Lines', auto_join=True) @api.model def create(self, vals): - vals['number'] = self.env['ir.sequence'].next_by_code('print.picking.list') or '0' - result = super(PrintPickingList, self).create(vals) - return result + if not vals.get('name') or vals['name'] == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code('print.picking.list') or 'new' + return super(PrintPickingList, self).create(vals) def action_get_picking(self): for record in self: diff --git a/fixco_custom/views/ir_sequence.xml b/fixco_custom/views/ir_sequence.xml index e4845f7..59572d2 100644 --- a/fixco_custom/views/ir_sequence.xml +++ b/fixco_custom/views/ir_sequence.xml @@ -11,7 +11,7 @@ 1 4 - + Upload Payments upload.payments @@ -33,7 +33,7 @@ 1 4 - + Shipment Group shipment.group @@ -44,7 +44,7 @@ 1 4 - + Print Picking List print.picking.list @@ -53,7 +53,7 @@ 5 1 1 - 4 + @@ -78,4 +78,4 @@ 4 - \ No newline at end of file + diff --git a/fixco_custom/views/print_picking_list.xml b/fixco_custom/views/print_picking_list.xml index 1bbf715..5e945ac 100644 --- a/fixco_custom/views/print_picking_list.xml +++ b/fixco_custom/views/print_picking_list.xml @@ -4,8 +4,9 @@ print.picking.list.tree print.picking.list - - + + + @@ -34,10 +35,13 @@ /> - - - - +
+

+ +

+
+ + -- cgit v1.2.3 From 4c43a3f542de0d0dea89c514f0e038459415b544 Mon Sep 17 00:00:00 2001 From: Mqdd Date: Tue, 6 Jan 2026 13:48:56 +0700 Subject: fix wkwkwk --- fixco_custom/models/print_picking_list.py | 11 +++++------ .../models/stock_picking_print_picking_list.py | 19 ++++++++++++------- fixco_custom/views/print_picking_list.xml | 9 +++++++-- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/fixco_custom/models/print_picking_list.py b/fixco_custom/models/print_picking_list.py index 512468d..41ba77f 100644 --- a/fixco_custom/models/print_picking_list.py +++ b/fixco_custom/models/print_picking_list.py @@ -52,10 +52,9 @@ class PrintPickingListLine(models.Model): print_picking_list_id = fields.Many2one('print.picking.list', string='Ref', required=True, ondelete='cascade', index=True, copy=False) invoice_marketplace = fields.Char(string='Invoice Marketplace') # picking_id = fields.Many2one('stock.picking', string='BU/OUT', compute='_compute_picking_id') + product_id = fields.Many2one('product.product', string='Product') picking_id = fields.Many2one('stock.picking', string='BU/OUT') - - # @api.depends('invoice_marketplace') - # def _compute_picking_id(self): - # for line in self: - # picking = self.env['stock.picking'].search([('invoice_mp', '=', line.invoice_marketplace)], limit=1) - # line.picking_id = picking.id if picking else False + qty_done = fields.Float(string='Quantity Done', readonly=True) + qty_reserved = fields.Float(string='Quantity Reserved', readonly=True) + uom_id = fields.Many2one('uom.uom', string='Uom') + schedule_date = fields.Datetime(string='Scheduled Date') diff --git a/fixco_custom/models/stock_picking_print_picking_list.py b/fixco_custom/models/stock_picking_print_picking_list.py index 7cc7995..83a034b 100644 --- a/fixco_custom/models/stock_picking_print_picking_list.py +++ b/fixco_custom/models/stock_picking_print_picking_list.py @@ -11,14 +11,21 @@ class StockPickingPrintPickingList(models.TransientModel): raise UserError("No stock picking selected.") pickings = self.env['stock.picking'].browse(picking_ids) - + print_picking_list = self.env['print.picking.list'].create({}) for picking in pickings: - self.env['print.picking.list.line'].create({ - 'print_picking_list_id': print_picking_list.id, - 'invoice_marketplace': picking.invoice_mp, - }) + for line in picking.move_line_ids: + self.env['print.picking.list.line'].create({ + 'print_picking_list_id': print_picking_list.id, + 'invoice_marketplace': picking.invoice_mp, + 'product_id': line.product_id.id, + 'qty_done': line.qty_done, + 'qty_reserved': line.product_uom_qty, + 'uom_id': line.product_uom_id.id, + 'picking_id': picking.id, + 'schedule_date': picking.scheduled_date, + }) return { 'type': 'ir.actions.act_window', @@ -27,5 +34,3 @@ class StockPickingPrintPickingList(models.TransientModel): 'res_id': print_picking_list.id, 'target': 'current', } - - diff --git a/fixco_custom/views/print_picking_list.xml b/fixco_custom/views/print_picking_list.xml index 5e945ac..12892ab 100644 --- a/fixco_custom/views/print_picking_list.xml +++ b/fixco_custom/views/print_picking_list.xml @@ -17,7 +17,12 @@ + + + + + @@ -27,13 +32,13 @@ print.picking.list -
+

-- cgit v1.2.3 From cae55aa3ec4af039d7361fbcb2327335a693d31e Mon Sep 17 00:00:00 2001 From: Mqdd Date: Thu, 8 Jan 2026 11:37:03 +0700 Subject: fix qweb print picking list --- fixco_custom/__manifest__.py | 1 + fixco_custom/models/print_picking_list.py | 41 +----- fixco_custom/security/ir.model.access.csv | 3 +- fixco_custom/views/print_picking_list.xml | 31 +---- fixco_custom/views/report_picking_list_new.xml | 177 +++++++++++++++++++++++++ 5 files changed, 192 insertions(+), 61 deletions(-) create mode 100644 fixco_custom/views/report_picking_list_new.xml diff --git a/fixco_custom/__manifest__.py b/fixco_custom/__manifest__.py index 4925d69..c1aa655 100755 --- a/fixco_custom/__manifest__.py +++ b/fixco_custom/__manifest__.py @@ -51,6 +51,7 @@ 'views/upload_cancel_picking.xml', 'views/queue_job.xml', 'views/purchase_order_multi_bills.xml', + 'views/report_picking_list_new.xml', ], 'demo': [], 'css': [], diff --git a/fixco_custom/models/print_picking_list.py b/fixco_custom/models/print_picking_list.py index 41ba77f..2b1605a 100644 --- a/fixco_custom/models/print_picking_list.py +++ b/fixco_custom/models/print_picking_list.py @@ -7,42 +7,18 @@ _logger = logging.getLogger(__name__) class PrintPickingList(models.Model): _name = "print.picking.list" - _rec_name = 'name' _description = "Print Picking List" _inherit = ['mail.thread'] - _order = 'id desc' + _rec_name = 'number' - name = fields.Char(string='Name', index=True, copy=False, readonly=True) - user_id = fields.Many2one('res.users', string='Created By', default=lambda self: self.env.user, readonly=True) + number = fields.Char(string='Document No', index=True, copy=False, readonly=True, tracking=True) print_picking_list_line = fields.One2many('print.picking.list.line', 'print_picking_list_id', string='Print Picking List Lines', auto_join=True) @api.model def create(self, vals): - if not vals.get('name') or vals['name'] == 'New': - vals['name'] = self.env['ir.sequence'].next_by_code('print.picking.list') or 'new' - return super(PrintPickingList, self).create(vals) - - def action_get_picking(self): - for record in self: - if not record.print_picking_list_line: - raise UserError("Tidak ada line.") - - for line in record.print_picking_list_line: - if not line.invoice_marketplace: - raise UserError( - "Invoice Marketplace kosong di salah satu line." - ) - - picking = self.env['stock.picking'].search([ - ('invoice_mp', '=', line.invoice_marketplace) - ], limit=1) - - if not picking: - raise UserError( - f"BU/OUT tidak ditemukan untuk Invoice Marketplace: {line.invoice_marketplace}" - ) - - line.picking_id = picking.id + vals['number'] = self.env['ir.sequence'].next_by_code('print.picking.list') or '0' + result = super(PrintPickingList, self).create(vals) + return result class PrintPickingListLine(models.Model): _name = 'print.picking.list.line' @@ -51,10 +27,3 @@ class PrintPickingListLine(models.Model): print_picking_list_id = fields.Many2one('print.picking.list', string='Ref', required=True, ondelete='cascade', index=True, copy=False) invoice_marketplace = fields.Char(string='Invoice Marketplace') - # picking_id = fields.Many2one('stock.picking', string='BU/OUT', compute='_compute_picking_id') - product_id = fields.Many2one('product.product', string='Product') - picking_id = fields.Many2one('stock.picking', string='BU/OUT') - qty_done = fields.Float(string='Quantity Done', readonly=True) - qty_reserved = fields.Float(string='Quantity Reserved', readonly=True) - uom_id = fields.Many2one('uom.uom', string='Uom') - schedule_date = fields.Datetime(string='Scheduled Date') diff --git a/fixco_custom/security/ir.model.access.csv b/fixco_custom/security/ir.model.access.csv index a0ac394..91c309e 100755 --- a/fixco_custom/security/ir.model.access.csv +++ b/fixco_custom/security/ir.model.access.csv @@ -38,6 +38,7 @@ access_invoice_reklas,access.invoice.reklas,model_invoice_reklas,,1,1,1,1 access_uangmuka_pembelian,access.uangmuka.pembelian,model_uangmuka_pembelian,,1,1,1,1 access_coretax_faktur,access.coretax.faktur,model_coretax_faktur,,1,1,1,1 access_report.fixco_custom.report_picking_list_custom,access.report.fixco_custom.report_picking_list_custom,model_report_fixco_custom_report_picking_list_custom,,1,1,1,1 +access_report.fixco_custom.report_picking_list_custom_new,access.report.fixco_custom.report_picking_list_custom_new,model_report_fixco_custom_report_picking_list_custom_new,,1,1,1,1 access_token_log,access.token.log,model_token_log,,1,1,1,1 access_purchase_pricelist_wizard,purchase.pricelist.wizard,model_purchase_pricelist_wizard,,1,1,1,1 access_stock_return_picking,stock.return.picking,model_stock_return_picking,,1,1,1,1 @@ -45,4 +46,4 @@ access_stock_return_picking_line,stock.return.picking.line,model_stock_return_pi access_upload_cancel_picking,access.upload.cancel.picking,model_upload_cancel_picking,,1,1,1,1 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 \ No newline at end of file +access_purchase_order_multi_bills,access.purchase.order.multi_bills,model_purchase_order_multi_bills,,1,1,1,1 diff --git a/fixco_custom/views/print_picking_list.xml b/fixco_custom/views/print_picking_list.xml index 12892ab..fe826d0 100644 --- a/fixco_custom/views/print_picking_list.xml +++ b/fixco_custom/views/print_picking_list.xml @@ -4,9 +4,8 @@ print.picking.list.tree print.picking.list - - - + + @@ -16,13 +15,7 @@ print.picking.list.line - - - - - - - + @@ -32,21 +25,11 @@ print.picking.list - -
-

- -

-
- - + + + + diff --git a/fixco_custom/views/report_picking_list_new.xml b/fixco_custom/views/report_picking_list_new.xml new file mode 100644 index 0000000..a91be31 --- /dev/null +++ b/fixco_custom/views/report_picking_list_new.xml @@ -0,0 +1,177 @@ + + + + + Print Picking List new + stock.picking + qweb-pdf + fixco_custom.report_picking_list_custom_new + fixco_custom.report_picking_list_custom_new + 'Print Picking List new- %s - %s' % (object.partner_id.name or '', object.name) + + + report + + + + -- cgit v1.2.3 From c0f4b808b0bb51145f68c64c83a9f901404bdd1b Mon Sep 17 00:00:00 2001 From: Mqdd Date: Thu, 8 Jan 2026 11:38:33 +0700 Subject: add new model --- fixco_custom/models/stock_picking.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/fixco_custom/models/stock_picking.py b/fixco_custom/models/stock_picking.py index 7437ca5..76c2ecf 100755 --- a/fixco_custom/models/stock_picking.py +++ b/fixco_custom/models/stock_picking.py @@ -125,10 +125,10 @@ class StockPicking(models.Model): origin = self.origin or '' if any(prefix in origin for prefix in ['PO/', 'SO/']) and not self.check_product_lines and not self.name.startswith('BU/INT'): raise UserError(_("Belum ada check product, gabisa validate")) - + if self.name.startswith('BU/INT') and self.picking_type_code == 'internal' and self.env.user.id not in [10,15,2] and self.location_dest_id.id == 86: raise UserError(_("Hanya bang rafly hanggara yang bisa validate")) - + res = super(StockPicking, self).button_validate() @@ -388,7 +388,7 @@ class StockPicking(models.Model): if 'Blibli' in self.partner_id.name or 'BLIBLI' in self.partner_id.name: self.get_shipping_parameter_blibli() return - + order_id = self.order_reference authorization = self.sign_request(1) @@ -569,7 +569,7 @@ class StockPicking(models.Model): if 'Blibli' in self.partner_id.name or 'BLIBLI' in self.partner_id.name: self.ship_order_blibli() return - + order_id = self.order_reference authorization = self.sign_request(2) # index 2 -> ship-order @@ -904,7 +904,7 @@ class StockPicking(models.Model): except Exception as e: raise UserError(_("Error: %s") % str(e)) - + def sign_request(self, array_num): signData = '$'.join(['POST', Request_URI[array_num]]) + '$' authorization = ACCESS_KEY + ':' + base64.b64encode( @@ -1178,3 +1178,21 @@ class PickingReportCustom(models.AbstractModel): 'docs': pickings, 'was_printed_map': was_printed_map, } + +class PickingReportCustomNew(models.AbstractModel): + _name = 'report.fixco_custom.report_picking_list_custom_new' + _description = 'asjdkla' + + def _get_report_values(self, docids, data=None): + pickings = self.env['stock.picking'].browse(docids) + + was_printed_map = {p.id: p.is_printed for p in pickings} + + pickings.write({'is_printed': True}) + + return { + 'doc_ids': docids, + 'doc_model': 'stock.picking', + 'docs': pickings, + 'was_printed_map': was_printed_map, + } -- cgit v1.2.3 From 6659dcfa24fb1a1923f47be4e0b697489dd0a3bf Mon Sep 17 00:00:00 2001 From: Mqdd Date: Thu, 8 Jan 2026 11:39:09 +0700 Subject: balikin --- fixco_custom/models/stock_picking_print_picking_list.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/fixco_custom/models/stock_picking_print_picking_list.py b/fixco_custom/models/stock_picking_print_picking_list.py index 83a034b..13b27b1 100644 --- a/fixco_custom/models/stock_picking_print_picking_list.py +++ b/fixco_custom/models/stock_picking_print_picking_list.py @@ -15,17 +15,10 @@ class StockPickingPrintPickingList(models.TransientModel): print_picking_list = self.env['print.picking.list'].create({}) for picking in pickings: - for line in picking.move_line_ids: - self.env['print.picking.list.line'].create({ - 'print_picking_list_id': print_picking_list.id, - 'invoice_marketplace': picking.invoice_mp, - 'product_id': line.product_id.id, - 'qty_done': line.qty_done, - 'qty_reserved': line.product_uom_qty, - 'uom_id': line.product_uom_id.id, - 'picking_id': picking.id, - 'schedule_date': picking.scheduled_date, - }) + self.env['print.picking.list.line'].create({ + 'print_picking_list_id': print_picking_list.id, + 'invoice_marketplace': picking.invoice_mp, + }) return { 'type': 'ir.actions.act_window', -- cgit v1.2.3