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 | |
| parent | f4ff9e2abad82f07e039c388af5e82034ae30694 (diff) | |
print picking list
Diffstat (limited to 'fixco_custom')
| -rwxr-xr-x | fixco_custom/__manifest__.py | 2 | ||||
| -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 | ||||
| -rwxr-xr-x | fixco_custom/security/ir.model.access.csv | 5 | ||||
| -rw-r--r-- | fixco_custom/views/account_move.xml | 1 | ||||
| -rwxr-xr-x | fixco_custom/views/detail_order.xml | 12 | ||||
| -rw-r--r-- | fixco_custom/views/ir_sequence.xml | 10 | ||||
| -rw-r--r-- | fixco_custom/views/print_picking_list.xml | 62 | ||||
| -rwxr-xr-x | fixco_custom/views/stock_picking.xml | 8 | ||||
| -rw-r--r-- | fixco_custom/views/stock_picking_print_picking_list.xml | 32 |
15 files changed, 214 insertions, 3 deletions
diff --git a/fixco_custom/__manifest__.py b/fixco_custom/__manifest__.py index f464112..83d085a 100755 --- a/fixco_custom/__manifest__.py +++ b/fixco_custom/__manifest__.py @@ -25,6 +25,8 @@ 'views/purchase_pricelist.xml', 'views/shipment_group.xml', 'views/stock_picking_shipment_group.xml', + 'views/stock_picking_print_picking_list.xml', + 'views/print_picking_list.xml', ], 'demo': [], 'css': [], 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', + } + + diff --git a/fixco_custom/security/ir.model.access.csv b/fixco_custom/security/ir.model.access.csv index e40c7d1..ef91758 100755 --- a/fixco_custom/security/ir.model.access.csv +++ b/fixco_custom/security/ir.model.access.csv @@ -13,4 +13,7 @@ access_purchase_pricelist,access.purchase.pricelist,model_purchase_pricelist,,1, access_shipment_group,access.shipment.group,model_shipment_group,,1,1,1,1 access_shipment_group_line,access.shipment.group.line,model_shipment_group_line,,1,1,1,1 access_stock_picking_shipment_group,access.stock.picking.shipment_group,model_stock_picking_shipment_group,,1,1,1,1 -access_bundling_line,access.bundling.line,model_bundling_line,,1,1,1,1
\ No newline at end of file +access_bundling_line,access.bundling.line,model_bundling_line,,1,1,1,1 +access_print_picking_list,access.shipment.group,model_print_picking_list,,1,1,1,1 +access_print_picking_list_line,access.shipment.group.line,model_print_picking_list_line,,1,1,1,1 +access_stock_picking_print_picking_list,access.stock.picking.print_picking_list,model_stock_picking_print_picking_list,,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 7e24873..97414e6 100644 --- a/fixco_custom/views/account_move.xml +++ b/fixco_custom/views/account_move.xml @@ -8,6 +8,7 @@ <field name="arch" type="xml"> <field name="payment_reference" position="after"> <field name="invoice_marketplace" readonly="1"/> + <field name="transaction_type" readonly="1"/> </field> <field name="partner_id" position="after"> <field name="address" readonly="1"/> diff --git a/fixco_custom/views/detail_order.xml b/fixco_custom/views/detail_order.xml index 711f908..60a335c 100755 --- a/fixco_custom/views/detail_order.xml +++ b/fixco_custom/views/detail_order.xml @@ -20,6 +20,18 @@ <field name="model">detail.order</field> <field name="arch" type="xml"> <form> + <header> + <button name="execute_queue" + string="Create Detail Order" + type="object" + attrs="{'readonly': [('detail_order', '!=', False)]}" + /> + <button name="execute_queue_detail" + string="Create SO" + type="object" + attrs="{'invisible': [('sale_id', '!=', False)]}" + /> + </header> <sheet> <group> <group> diff --git a/fixco_custom/views/ir_sequence.xml b/fixco_custom/views/ir_sequence.xml index 9de8525..10cc807 100644 --- a/fixco_custom/views/ir_sequence.xml +++ b/fixco_custom/views/ir_sequence.xml @@ -20,5 +20,15 @@ <field name="number_next">1</field> <field name="number_increment">1</field> </record> + + <record id="sequence_print_picking_list" model="ir.sequence"> + <field name="name">Print Picking List</field> + <field name="code">print.picking.list</field> + <field name="active">TRUE</field> + <field name="prefix">PPL/%(year)s/</field> + <field name="padding">5</field> + <field name="number_next">1</field> + <field name="number_increment">1</field> + </record> </data> </odoo>
\ No newline at end of file diff --git a/fixco_custom/views/print_picking_list.xml b/fixco_custom/views/print_picking_list.xml new file mode 100644 index 0000000..a6a33b5 --- /dev/null +++ b/fixco_custom/views/print_picking_list.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<odoo> + <record id="print_picking_list_tree" model="ir.ui.view"> + <field name="name">print.picking.list.tree</field> + <field name="model">print.picking.list</field> + <field name="arch" type="xml"> + <tree default_order="create_date desc"> + <field name="number"/> + </tree> + </field> + </record> + + <record id="print_picking_list_line_tree" model="ir.ui.view"> + <field name="name">print.picking.list.line.tree</field> + <field name="model">print.picking.list.line</field> + <field name="arch" type="xml"> + <tree editable="bottom"> + <field name="invoice_marketplace" readonly="1"/> + </tree> + </field> + </record> + + <record id="print_picking_list_form" model="ir.ui.view"> + <field name="name">print.picking.list.form</field> + <field name="model">print.picking.list</field> + <field name="arch" type="xml"> + <form> + <sheet> + <group> + <group> + <field name="number" readonly="1"/> + </group> + </group> + <notebook> + <page string="Line"> + <field name="print_picking_list_line"/> + </page> + </notebook> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids" widget="mail_followers"/> + <field name="message_ids" widget="mail_thread"/> + </div> + </form> + </field> + </record> + + <record id="print_picking_list_action" model="ir.actions.act_window"> + <field name="name">Print Picking List</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">print.picking.list</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem + action="print_picking_list_action" + id="print_picking_list" + parent="stock.menu_stock_warehouse_mgmt" + name="Print Picking List" + sequence="1" + /> +</odoo> diff --git a/fixco_custom/views/stock_picking.xml b/fixco_custom/views/stock_picking.xml index 446e735..21d0aae 100755 --- a/fixco_custom/views/stock_picking.xml +++ b/fixco_custom/views/stock_picking.xml @@ -55,6 +55,14 @@ <field name="state">code</field> <field name="code">action = records.open_form_shipment_group()</field> </record> + + <record id="stock_picking_print_picking_list_ir_actions_server" model="ir.actions.server"> + <field name="name">Print Picking List</field> + <field name="model_id" ref="stock.model_stock_picking"/> + <field name="binding_model_id" ref="stock.model_stock_picking"/> + <field name="state">code</field> + <field name="code">action = records.open_form_print_picking_list()</field> + </record> <record id="check_product_tree" model="ir.ui.view"> <field name="name">check.product.tree</field> diff --git a/fixco_custom/views/stock_picking_print_picking_list.xml b/fixco_custom/views/stock_picking_print_picking_list.xml new file mode 100644 index 0000000..1903c8f --- /dev/null +++ b/fixco_custom/views/stock_picking_print_picking_list.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <data> + <record id="view_stock_picking_print_picking_list_form" model="ir.ui.view"> + <field name="name">Stock Picking Print Picking List</field> + <field name="model">stock.picking.print_picking_list</field> + <field name="arch" type="xml"> + <form string="Create Print Picking List"> + <sheet> + <div class="oe_title"> + <h2>Create Print Picking List for Selected Stock Picking</h2> + </div> + </sheet> + <footer> + <button name="create_print_picking_list" string="Create Print Picking List" type="object" + class="btn-primary" default_focus="1"/> + <button string="Cancel" class="btn-secondary" special="cancel"/> + </footer> + </form> + </field> + </record> + + <record id="action_stock_picking_print_picking_list" model="ir.actions.act_window"> + <field name="name">Create Print Picking List</field> + <field name="res_model">stock.picking.print_picking_list</field> + <field name="type">ir.actions.act_window</field> + <field name="view_mode">form</field> + <field name="view_id" ref="view_stock_picking_print_picking_list_form"/> + <field name="target">new</field> + </record> + </data> +</odoo>
\ No newline at end of file |
