diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-13 14:35:38 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-13 14:35:38 +0700 |
| commit | 55936047e729cadcd462a57c7838f77f7c57ee1a (patch) | |
| tree | 9fabbef497dc1e555e88083581cf18be41c6db95 /fixco_custom/models | |
| parent | f4ff9e2abad82f07e039c388af5e82034ae30694 (diff) | |
print picking list
Diffstat (limited to 'fixco_custom/models')
| -rwxr-xr-x | fixco_custom/models/__init__.py | 2 | ||||
| -rw-r--r-- | fixco_custom/models/account_move.py | 7 | ||||
| -rwxr-xr-x | fixco_custom/models/detail_order.py | 2 | ||||
| -rw-r--r-- | fixco_custom/models/print_picking_list.py | 30 | ||||
| -rwxr-xr-x | fixco_custom/models/sale.py | 1 | ||||
| -rwxr-xr-x | fixco_custom/models/stock_picking.py | 12 | ||||
| -rw-r--r-- | fixco_custom/models/stock_picking_print_picking_list.py | 31 |
7 files changed, 83 insertions, 2 deletions
diff --git a/fixco_custom/models/__init__.py b/fixco_custom/models/__init__.py index ae6b655..9eba2c6 100755 --- a/fixco_custom/models/__init__.py +++ b/fixco_custom/models/__init__.py @@ -11,3 +11,5 @@ from . import upload_payments from . import purchase_pricelist from . import shipment_group from . import stock_picking_shipment_group +from . import print_picking_list +from . import stock_picking_print_picking_list diff --git a/fixco_custom/models/account_move.py b/fixco_custom/models/account_move.py index 3f52319..82223b6 100644 --- a/fixco_custom/models/account_move.py +++ b/fixco_custom/models/account_move.py @@ -17,4 +17,9 @@ class AccountMove(models.Model): invoice_marketplace = fields.Char('Invoice Marketplace') address = fields.Char('Address') sale_id = fields.Many2one('sale.order', string='Sale Order') - picking_id = fields.Many2one('stock.picking', string='Picking')
\ No newline at end of file + picking_id = fields.Many2one('stock.picking', string='Picking') + transaction_type = fields.Selection( + [('digunggung', 'Digunggung'), + ('difaktur', 'Faktur Pajak')], + string='Transaction Type' + )
\ No newline at end of file diff --git a/fixco_custom/models/detail_order.py b/fixco_custom/models/detail_order.py index e3370b0..2c82db6 100755 --- a/fixco_custom/models/detail_order.py +++ b/fixco_custom/models/detail_order.py @@ -182,7 +182,7 @@ class DetailOrder(models.Model): 'product_id': bline.variant_id.id if bline.variant_id else product.id, 'product_uom_qty': bline.product_uom_qty * item.get('quantity') if bline.product_uom_qty else item.get('quantity'), 'price_unit': bline.price * bline.product_uom_qty if bline.price else item.get('actualPrice'), - 'name': f"{bline.master_sku} (Bundle Component)" if bline.master_sku else product.name, + 'name': f"{bline.variant_id.display_name} (Bundle Component)" if bline.variant_id.display_name else product.name, })) continue diff --git a/fixco_custom/models/print_picking_list.py b/fixco_custom/models/print_picking_list.py new file mode 100644 index 0000000..6998526 --- /dev/null +++ b/fixco_custom/models/print_picking_list.py @@ -0,0 +1,30 @@ +from odoo import models, api, fields +from odoo.exceptions import AccessError, UserError, ValidationError +from datetime import timedelta, date +import logging + +_logger = logging.getLogger(__name__) + +class PrintPickingList(models.Model): + _name = "print.picking.list" + _description = "Print Picking List" + _inherit = ['mail.thread'] + _rec_name = 'number' + + 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): + 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' + _description = 'Print Picking List Line' + _order = 'print_picking_list_id, id' + + 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') + diff --git a/fixco_custom/models/sale.py b/fixco_custom/models/sale.py index b36f4b5..bc7a734 100755 --- a/fixco_custom/models/sale.py +++ b/fixco_custom/models/sale.py @@ -34,6 +34,7 @@ class SaleOrder(models.Model): 'ref': self.client_order_ref or '', 'move_type': 'out_invoice', 'narration': self.note, + 'transaction_type': self.partner_invoice_id.transaction_type, 'invoice_marketplace': self.invoice_mp, 'address': self.address, 'sale_id': self.id, diff --git a/fixco_custom/models/stock_picking.py b/fixco_custom/models/stock_picking.py index 15dcd27..78d4c16 100755 --- a/fixco_custom/models/stock_picking.py +++ b/fixco_custom/models/stock_picking.py @@ -51,6 +51,18 @@ class StockPicking(models.Model): } } + def open_form_print_picking_list(self): + return { + 'name': _('Create Print Picking List'), + 'type': 'ir.actions.act_window', + 'res_model': 'stock.picking.print_picking_list', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'picking_ids': self.ids, + } + } + def label_ginee(self): try: order_id = self.order_reference diff --git a/fixco_custom/models/stock_picking_print_picking_list.py b/fixco_custom/models/stock_picking_print_picking_list.py new file mode 100644 index 0000000..7cc7995 --- /dev/null +++ b/fixco_custom/models/stock_picking_print_picking_list.py @@ -0,0 +1,31 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import UserError + +class StockPickingPrintPickingList(models.TransientModel): + _name = 'stock.picking.print_picking_list' + _description = 'Stock Picking Shipment Group' + + def create_print_picking_list(self): + picking_ids = self.env.context.get('picking_ids') + if not picking_ids: + 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, + }) + + return { + 'type': 'ir.actions.act_window', + 'res_model': 'print.picking.list', + 'view_mode': 'form', + 'res_id': print_picking_list.id, + 'target': 'current', + } + + |
