You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.2 KiB
83 lines
3.2 KiB
# Copyright 2021 Le Filament (<http://www.le-filament.com>)
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo import fields, models, api
|
|
from datetime import datetime
|
|
|
|
|
|
class PosOrderLine(models.Model):
|
|
_inherit = 'pos.order.line'
|
|
|
|
# ------------------------------------------------------
|
|
# Fields declaration
|
|
# ------------------------------------------------------
|
|
caisse_id = fields.Char('Id de la caisse')
|
|
# ------------------------------------------------------
|
|
# SQL Constraints
|
|
# ------------------------------------------------------
|
|
|
|
# ------------------------------------------------------
|
|
# Default methods
|
|
# ------------------------------------------------------
|
|
|
|
# ------------------------------------------------------
|
|
# Computed fields / Search Fields
|
|
# ------------------------------------------------------
|
|
|
|
# ------------------------------------------------------
|
|
# Onchange / Constraints
|
|
# ------------------------------------------------------
|
|
|
|
# ------------------------------------------------------
|
|
# CRUD methods (ORM overrides)
|
|
# ------------------------------------------------------
|
|
@api.model
|
|
def create(self, values):
|
|
res = super(PosOrderLine, self).create(values)
|
|
if res.container_id:
|
|
today = datetime.today().isoformat('T')[:19]
|
|
|
|
weight_str = str(int(res.qty * 1000))
|
|
# weight_str = str(res.qty * 1000).zfill(5)
|
|
|
|
prod = (res.product_id.default_code).zfill(5)
|
|
ean13 = "26" + prod + weight_str.zfill(5) + "4"
|
|
|
|
weight_brut_str = str(int((res.container_weight + res.qty) * 1000))
|
|
|
|
ean13_verif = "2600999" + weight_brut_str.zfill(5) + "4"
|
|
|
|
seller_id = self.env['product.supplierinfo'].search([
|
|
("product_tmpl_id", '=', res.product_id.product_tmpl_id.id)],
|
|
limit=1)
|
|
|
|
nomenclature = self.env['barcode.nomenclature'].browse(1)
|
|
ean13_digit = nomenclature.sanitize_ean(ean13)
|
|
ean13_verif_digit = nomenclature.sanitize_ean(ean13_verif)
|
|
|
|
vals = {
|
|
"date_iso": today,
|
|
'qrcode': 'https://qr.mayam.fr/' + str(res.container_id.barcode),
|
|
"container_ean13": res.container_id.barcode,
|
|
"product_id": res.product_id.id,
|
|
"name": res.product_id.name,
|
|
"price_net": res.price_subtotal,
|
|
"price_product": res.price_unit,
|
|
"weight_net": res.qty,
|
|
"weight_tare": res.container_weight,
|
|
"seller_name": seller_id.name.name,
|
|
"seller_code": seller_id.product_code,
|
|
"ean13": ean13_digit,
|
|
"ean13_verif": ean13_verif_digit,
|
|
"is_pos": True,
|
|
"balance_id": res.caisse_id
|
|
}
|
|
self.env['pos.transaction'].create(vals)
|
|
return res
|
|
# ------------------------------------------------------
|
|
# Actions
|
|
# ------------------------------------------------------
|
|
|
|
# ------------------------------------------------------
|
|
# Business methods
|
|
# ------------------------------------------------------
|