Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pos_registrierkasse/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

from . import models
from . import controllers

from . import wizard
77 changes: 13 additions & 64 deletions pos_registrierkasse/models/pos_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,19 @@
class CustomPOSOrder(models.Model):
_inherit = 'pos.order'

encrypted_revenue = fields.Char(string='Encrypted revenue counter', translate=True)
order_signature = fields.Char(string='Signature from signing unit', translate=True)
prev_order_signature = fields.Char(string='Signature of the previous invoice', translate=True)
machine_readable_code = fields.Char(string='The whole code sent to A-Trust', translate=True)
certificate_serial_number = fields.Char(string='Serial number of the certificate', translate=True)
encrypted_revenue = fields.Char(string='Encrypted revenue counter')
order_signature = fields.Char(string='Signature from signing unit')
prev_order_signature = fields.Char(string='Signature of the previous invoice')
machine_readable_code = fields.Char(string='The whole code sent to A-Trust')
certificate_serial_number = fields.Char(string='Serial number of the certificate')
registrierkasse_receipt_number = fields.Integer(string='Sequence of receipt specific to RKSV ', index=True)

sum_vat_normal = fields.Float(string='VAT Normal', digits=(16, 2), required=True, default=0)
sum_vat_discounted_1 = fields.Float(string='VAT Discounted 1', digits=(16, 2), required=True, default=0)
sum_vat_discounted_2 = fields.Float(string='VAT Discounted 2', digits=(16, 2), required=True, default=0)
sum_vat_null = fields.Float(string='VAT null', digits=(16, 2), required=True, default=0)
sum_vat_special = fields.Float(string='VAT special', digits=(16, 2), required=True, default=0)
sum_total_rksv = fields.Float(string='Total sum', digits=(16, 2), required=True, default=0)
sum_vat_normal = fields.Float(string='VAT Normal', digits=(16, 2), copy=False, required=True, default=0)
sum_vat_discounted_1 = fields.Float(string='VAT Discounted 1', digits=(16, 2), copy=False, required=True, default=0)
sum_vat_discounted_2 = fields.Float(string='VAT Discounted 2', digits=(16, 2), copy=False, required=True, default=0)
sum_vat_null = fields.Float(string='VAT null', digits=(16, 2), copy=False, required=True, default=0)
sum_vat_special = fields.Float(string='VAT special', digits=(16, 2), copy=False, required=True, default=0)
sum_total_rksv = fields.Float(string='Total sum', digits=(16, 2), copy=False, required=True, default=0)

def _generate_pos_reference(self, order):
"""Generate a consistent pos_reference for an order."""
Expand Down Expand Up @@ -170,57 +170,6 @@ def _process_order(self, *args, **kwargs):

return order_id

def _prepare_refund_values(self, current_session):
self.ensure_one()
values = super()._prepare_refund_values(current_session)
values.update({
'registrierkasse_receipt_number': None,
'order_signature': None,
'prev_order_signature': None,
'machine_readable_code': None,
'encrypted_revenue': None,
'certificate_serial_number': None,
})
return values

def _refund(self):
refund_orders = super()._refund()

for order in self:
refund_order = refund_orders.filtered(lambda r: r.refunded_order_id == order)
if not refund_order:
continue

config = refund_order.session_id.config_id
if not config.pos_use_registrierkasse:
continue

refund_order.write({
'sum_vat_normal': -order.sum_vat_normal,
'sum_vat_discounted_1': -order.sum_vat_discounted_1,
'sum_vat_discounted_2': -order.sum_vat_discounted_2,
'sum_vat_null': -order.sum_vat_null,
'sum_vat_special': -order.sum_vat_special,
})

refund_vals = {
'amount_total': refund_order.amount_total,
'date_order': refund_order.date_order,
'sum_vat_normal': refund_order.sum_vat_normal,
'sum_vat_discounted_1': refund_order.sum_vat_discounted_1,
'sum_vat_discounted_2': refund_order.sum_vat_discounted_2,
'sum_vat_null': refund_order.sum_vat_null,
'sum_vat_special': refund_order.sum_vat_special,
}

rksv_data = self._get_rksv_signature(config, refund_vals, is_refund=True)
refund_order.write(rksv_data)

new_ref = self._generate_pos_reference(refund_order)
refund_order.write({'pos_reference': new_ref})

return refund_orders

def unlink(self):
"""Prevent deletion of RKSV-signed orders."""
for order in self:
Expand All @@ -246,12 +195,12 @@ def action_retry_signing(self):
is_refund = self._is_rksv_refund(order.lines)

order_vals = {
'amount_total': order.amount_total,
'sum_total_rksv': order.amount_total,
**sums
}

try:
rksv_data = self._get_rksv_signature(config, order_vals, is_refund=is_refund)
order.write(rksv_data)
order.write(order_vals | rksv_data)
except Exception as e:
raise UserError(_("Signing failed: %s") % str(e))
1 change: 1 addition & 0 deletions pos_registrierkasse/wizard/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import pos_payment
12 changes: 12 additions & 0 deletions pos_registrierkasse/wizard/pos_payment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from odoo import models


class PosMakePayment(models.TransientModel):
_inherit = 'pos.make.payment'

def check(self):
res = super().check()
order = self.env['pos.order'].browse(self.env.context.get('active_id', False))
if order.state in {'paid', 'done', 'invoiced'}:
order.action_retry_signing()
return res