summaryrefslogtreecommitdiff
path: root/fixco_custom/models
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-06-13 14:35:38 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-06-13 14:35:38 +0700
commit55936047e729cadcd462a57c7838f77f7c57ee1a (patch)
tree9fabbef497dc1e555e88083581cf18be41c6db95 /fixco_custom/models
parentf4ff9e2abad82f07e039c388af5e82034ae30694 (diff)
print picking list
Diffstat (limited to 'fixco_custom/models')
-rwxr-xr-xfixco_custom/models/__init__.py2
-rw-r--r--fixco_custom/models/account_move.py7
-rwxr-xr-xfixco_custom/models/detail_order.py2
-rw-r--r--fixco_custom/models/print_picking_list.py30
-rwxr-xr-xfixco_custom/models/sale.py1
-rwxr-xr-xfixco_custom/models/stock_picking.py12
-rw-r--r--fixco_custom/models/stock_picking_print_picking_list.py31
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',
+ }
+
+