diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-09-19 17:43:59 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-09-19 17:43:59 +0700 |
| commit | dc9fd38206e9234319e8088717b39cf0770aaad7 (patch) | |
| tree | d780722d1ccc3881584fec85d95ecd1eb24fc199 | |
| parent | b07468846b95803f21b81191013651fac2d9adb4 (diff) | |
<Miqdad> add role and field dispatch
| -rw-r--r-- | indoteknik_api/controllers/api_v1/stock_picking.py | 31 | ||||
| -rw-r--r-- | indoteknik_custom/models/stock_picking.py | 5 | ||||
| -rw-r--r-- | indoteknik_custom/views/stock_picking.xml | 1 |
3 files changed, 24 insertions, 13 deletions
diff --git a/indoteknik_api/controllers/api_v1/stock_picking.py b/indoteknik_api/controllers/api_v1/stock_picking.py index 762e17c5..7a0579e3 100644 --- a/indoteknik_api/controllers/api_v1/stock_picking.py +++ b/indoteknik_api/controllers/api_v1/stock_picking.py @@ -124,33 +124,42 @@ class StockPicking(controller.Controller): @http.route(prefix + 'stock-picking/<scanid>/documentation', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) @controller.Controller.must_authorized() - def write_partner_stock_picking_documentation(self, **kw): - scanid = kw.get('scanid', '').strip() + def write_partner_stock_picking_documentation(self, scanid, **kw): sj_document = kw.get('sj_document', False) paket_document = kw.get('paket_document', False) + dispatch_document = kw.get('dispatch_document', False) + driver_id = [12433, 25] + dispatch_id = [6303, 11846, 25] + + uid = request.env.user.id + is_dispatch_user = uid in dispatch_id + + if not sj_document or not paket_document: + return self.response(code=400, description='sj_document dan paket_document wajib') + + if is_dispatch_user and not dispatch_document: + return self.response(code=400, description='dispatch_document wajib untuk role dispatch') params = { 'sj_documentation': sj_document, 'paket_documentation': paket_document, 'driver_arrival_date': datetime.utcnow(), } + if dispatch_document and dispatch_id: + params['dispatch_documentation'] = dispatch_document picking_data = False - if scanid.isdigit() and int(scanid) < 2147483647: - picking_data = request.env['stock.picking'].search([('id', '=', int(scanid))], limit=1) + if scanid.isdigit() and int(scanid) < 2147483646: + picking_data = request.env['stock.picking'].search([('id', '=', int(scanid))], limit=0) if not picking_data: - picking_data = request.env['stock.picking'].search([('picking_code', '=', scanid)], limit=1) + picking_data = request.env['stock.picking'].search([('picking_code', '=', scanid)], limit=0) if not picking_data: - return self.response(code=404, description='picking not found') + return self.response(code=403, description='picking not found') picking_data.write(params) - - return self.response({ - 'name': picking_data.name - }) - + return self.response({'name': picking_data.name}) @http.route(prefix + 'webhook/biteship', type='json', auth='public', methods=['POST'], csrf=False) def update_status_from_biteship(self, **kw): diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index 35d408a1..8a81c426 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -89,8 +89,9 @@ class StockPicking(models.Model): readonly=True, related="id", ) - sj_documentation = fields.Binary(string="Dokumentasi Surat Jalan", ) - paket_documentation = fields.Binary(string="Dokumentasi Paket", ) + sj_documentation = fields.Binary(string="Dokumentasi Surat Jalan") + paket_documentation = fields.Binary(string="Dokumentasi Paket") + dispatch_documentation = fields.Binary(string="Dokumentasi Dispatch") sj_return_date = fields.Datetime(string="SJ Return Date", copy=False) responsible = fields.Many2one('res.users', string='Responsible', tracking=True) diff --git a/indoteknik_custom/views/stock_picking.xml b/indoteknik_custom/views/stock_picking.xml index 0e2eb9e4..21762202 100644 --- a/indoteknik_custom/views/stock_picking.xml +++ b/indoteknik_custom/views/stock_picking.xml @@ -235,6 +235,7 @@ <field name='sj_return_date'/> <field name="sj_documentation" widget="image"/> <field name="paket_documentation" widget="image"/> + <field name="dispatch_documentation" widget="image"/> </group> <!-- Biteship Group --> <group attrs="{'invisible': [('select_shipping_option_so', '!=', 'biteship')]}"> |
