From 1418dbbb581228383df151f1f8df6fc48a0fb9cc Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 9 Feb 2024 13:49:36 +0700 Subject: change request logbook sj --- indoteknik_custom/models/logbook_sj.py | 45 ++++++++++++------------ indoteknik_custom/models/report_logbook_sj.py | 50 +++++++++++++++++++++------ indoteknik_custom/views/ir_sequence.xml | 10 ++++++ indoteknik_custom/views/report_logbook_sj.xml | 28 +++++++++------ 4 files changed, 89 insertions(+), 44 deletions(-) diff --git a/indoteknik_custom/models/logbook_sj.py b/indoteknik_custom/models/logbook_sj.py index 567f1ae3..bf4acd14 100644 --- a/indoteknik_custom/models/logbook_sj.py +++ b/indoteknik_custom/models/logbook_sj.py @@ -18,31 +18,27 @@ class LogbookSJ(models.TransientModel): current_time = datetime.utcnow() report_logbook_ids = [] + parameters_header = { + 'date': current_time, + } + + report_logbook = self.env['report.logbook.sj'].create([parameters_header]) for line in logbook_line: - nomor_sj = line.name - picking = self.env['stock.picking'].search([ - ('picking_code', '=', nomor_sj), - ]) - parameters_header = { - 'name': nomor_sj, - 'date': current_time, - 'name_picking': picking.name, - 'partner_id': picking.partner_id.id, + picking = self.env['stock.picking'].search([('picking_code', '=', line.name)], limit=1) + stock = picking + + data = { + 'picking_id': stock.id, + 'name': stock.name, + 'driver_id': stock.driver_id.id, + 'departure_date': stock.driver_departure_date, + 'arrival_date': stock.driver_arrival_date, + 'carrier_id': stock.carrier_id.id, + 'tracking_no': stock.delivery_tracking_no, + 'partner_id': stock.partner_id.id, + 'report_logbook_sj_id': report_logbook.id } - - report_logbook = self.env['report.logbook.sj'].create([parameters_header]) - - - for stock in picking.move_line_ids_without_package: - data = { - 'product_id': stock.product_id.id, - 'location_id': stock.location_id.id, - 'product_uom_qty': stock.product_uom_qty, - 'qty_done': stock.qty_done, - 'product_uom_id': stock.product_uom_id.id, - 'report_logbook_sj_id': report_logbook.id - } - self.env['report.logbook.sj.line'].create([data]) + self.env['report.logbook.sj.line'].create([data]) report_logbook_ids.append(report_logbook.id) line.unlink() @@ -68,6 +64,7 @@ class LogbookSJLine(models.TransientModel): tracking_no = fields.Char(string='Tracking No') logbook_sj_id = fields.Many2one('logbook.sj', string='Logbook SJ') partner_id = fields.Many2one('res.partner', string='Customer') + picking_id = fields.Many2one('res.partner', string='Customer') @api.onchange('name') def onchange_name(self): @@ -94,6 +91,8 @@ class LogbookSJLine(models.TransientModel): self.partner_id = picking.partner_id + self.picking_id = picking.id + delivery_type = self.get_delivery_type(picking.driver_departure_date, picking.driver_arrival_date) if delivery_type != 'departure': self.departure_date = picking.driver_departure_date.astimezone(timezone('Asia/Jakarta')).strftime('%Y-%m-%d %H:%M:%S') diff --git a/indoteknik_custom/models/report_logbook_sj.py b/indoteknik_custom/models/report_logbook_sj.py index d2008608..5ff56c9a 100644 --- a/indoteknik_custom/models/report_logbook_sj.py +++ b/indoteknik_custom/models/report_logbook_sj.py @@ -6,29 +6,59 @@ from datetime import datetime class ReportLogbookSJ(models.Model): _name = 'report.logbook.sj' - name = fields.Char(string='Nomor SJ', default='Logbook SJ') - date = fields.Datetime(string='Date') - name_picking = fields.Char(string='Picking Name') - partner_id = fields.Many2one('res.partner', string='Customer') + name = fields.Char(string='Name', default='Logbook SJ') + date = fields.Datetime(string='Date Created') + date_approve = fields.Datetime(string='Date Approve') approve_by_finance = fields.Boolean(string='Approve By Finance') + approve_by = fields.Many2one(comodel_name='res.users', string='Approve By') report_logbook_sj_line = fields.One2many( comodel_name='report.logbook.sj.line', inverse_name='report_logbook_sj_id', string='Logbook SJ Line' ) + state = fields.Selection( + [('belum_terima', 'Belum Terima'), + ('terima_sebagian', 'Terima Sebagian'), + ('terima_semua', 'Sudah di terima semua'), + ], + default='terima_semua', + string='Status', + tracking=True + ) + + @api.model + def create(self, vals): + vals['name'] = self.env['ir.sequence'].next_by_code('report.logbook.sj') or '0' + result = super(ReportLogbookSJ, self).create(vals) + return result def approve(self): + current_time = datetime.utcnow() if self.env.user.is_accounting: self.approve_by_finance = True + self.date_approve = current_time + self.approve_by = self.env.user.id + if any(line.not_exist for line in self.report_logbook_sj_line): + if all(line.not_exist for line in self.report_logbook_sj_line): + self.state = 'belum_terima' + else: + self.state = 'terima_sebagian' + else: + self.state = 'terima_semua' else: raise UserError('Hanya Accounting yang bisa Approve') class ReportLogbookSJLine(models.Model): _name = 'report.logbook.sj.line' - product_id = fields.Many2one(comodel_name='product.product', string='Product') - location_id = fields.Many2one(comodel_name='stock.location', string='From') - product_uom_qty = fields.Float(string='Reserved') - qty_done = fields.Float(string='Done') - product_uom_id = fields.Many2one('uom.uom', string='Unit of Measure') - report_logbook_sj_id = fields.Many2one('report.logbook.sj', string='Logbook SJ') \ No newline at end of file + name = fields.Char(string='SJ Number') + driver_id = fields.Many2one(comodel_name='res.users', string='Driver') + departure_date = fields.Char(string='Departure Date') + arrival_date = fields.Char(string='Arrival Date') + carrier_id = fields.Many2one('delivery.carrier', string='Shipping Method') + tracking_no = fields.Char(string='Tracking No') + logbook_sj_id = fields.Many2one('report.logbook.sj', string='Logbook SJ') # Corrected model name + partner_id = fields.Many2one('res.partner', string='Customer') + picking_id = fields.Many2one('stock.picking', string='Picking') + report_logbook_sj_id = fields.Many2one('report.logbook.sj', string='Logbook SJ') + not_exist = fields.Boolean(string='Not Exist') diff --git a/indoteknik_custom/views/ir_sequence.xml b/indoteknik_custom/views/ir_sequence.xml index 86259b12..56921839 100644 --- a/indoteknik_custom/views/ir_sequence.xml +++ b/indoteknik_custom/views/ir_sequence.xml @@ -10,6 +10,16 @@ 1 1 + + + Logbook SJ + report.logbook.sj + TRUE + LSJ/%(year)s/ + 5 + 1 + 1 + Stock Picking Code diff --git a/indoteknik_custom/views/report_logbook_sj.xml b/indoteknik_custom/views/report_logbook_sj.xml index 52e00d17..ea58aefd 100644 --- a/indoteknik_custom/views/report_logbook_sj.xml +++ b/indoteknik_custom/views/report_logbook_sj.xml @@ -6,10 +6,11 @@ + - + - + @@ -18,12 +19,16 @@ report.logbook.sj.line.tree report.logbook.sj.line - - - - - - + + + + + + + + + + @@ -35,7 +40,7 @@
@@ -45,11 +50,12 @@ + - - + + -- cgit v1.2.3