Files
odoo-usability/pos_check_deposit/odoo-pos_check_deposit.diff
2024-12-24 12:29:14 +01:00

93 lines
5.4 KiB
Diff

diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py
index 546dbece6c4..0add2935f52 100644
--- a/addons/point_of_sale/models/pos_session.py
+++ b/addons/point_of_sale/models/pos_session.py
@@ -1123,8 +1123,13 @@ class PosSession(models.Model):
if not payment_method.journal_id:
return self.env['account.move.line']
outstanding_account = payment_method.outstanding_account_id
- accounting_partner = self.env["res.partner"]._find_accounting_partner(payment.partner_id)
- destination_account = accounting_partner.property_account_receivable_id
+ # HACK for pos_check_deposit
+ if payment.partner_id:
+ accounting_partner = self.env["res.partner"]._find_accounting_partner(payment.partner_id)
+ destination_account = accounting_partner.property_account_receivable_id
+ else:
+ accounting_partner = False
+ destination_account = self._get_receivable_account(payment_method)
if float_compare(amounts['amount'], 0, precision_rounding=self.currency_id.rounding) < 0:
# revert the accounts because account.payment doesn't accept negative amount.
@@ -1132,7 +1137,8 @@ class PosSession(models.Model):
account_payment = self.env['account.payment'].create({
'amount': abs(amounts['amount']),
- 'partner_id': payment.partner_id.id,
+ # HACK for pos_check_deposit
+ 'partner_id': accounting_partner and accounting_partner.id or False,
'journal_id': payment_method.journal_id.id,
'force_outstanding_account_id': outstanding_account.id,
'destination_account_id': destination_account.id,
@@ -1141,7 +1147,8 @@ class PosSession(models.Model):
'pos_session_id': self.id,
})
account_payment.action_post()
- return account_payment.move_id.line_ids.filtered(lambda line: line.account_id == accounting_partner.property_account_receivable_id)
+ # HACK for pos_check_deposit
+ return account_payment.move_id.line_ids.filtered(lambda line: line.account_id == destination_account)
def _create_cash_statement_lines_and_cash_move_lines(self, data):
# Create the split and combine cash statement lines and account move lines.
@@ -1292,8 +1299,8 @@ class PosSession(models.Model):
lines.filtered(lambda line: not line.reconciled).reconcile()
for payment, lines in payment_to_receivable_lines.items():
- if payment.partner_id.property_account_receivable_id.reconcile:
- lines.filtered(lambda line: not line.reconciled).reconcile()
+ # HACK for pos_check_deposit
+ lines.filtered(lambda line: line.account_id.reconcile and not line.reconciled).reconcile()
# Reconcile invoice payments' receivable lines. But we only do when the account is reconcilable.
# Though `account_default_pos_receivable_account_id` should be of type receivable, there is currently
@@ -1333,16 +1340,17 @@ class PosSession(models.Model):
return self._credit_amounts(partial_args, amount, amount_converted)
def _get_split_receivable_vals(self, payment, amount, amount_converted):
- accounting_partner = self.env["res.partner"]._find_accounting_partner(payment.partner_id)
- if not accounting_partner:
- raise UserError(_("You have enabled the \"Identify Customer\" option for %(payment_method)s payment method,"
- "but the order %(order)s does not contain a customer.",
- payment_method=payment.payment_method_id.name,
- order=payment.pos_order_id.name))
+ # HACK for pos_check_deposit
+ if payment.partner_id:
+ accounting_partner = self.env["res.partner"]._find_accounting_partner(payment.partner_id)
+ account_id = accounting_partner.property_account_receivable_id.id
+ else:
+ accounting_partner = False
+ account_id = self._get_receivable_account(payment.payment_method_id).id
partial_vals = {
- 'account_id': accounting_partner.property_account_receivable_id.id,
+ 'account_id': account_id,
'move_id': self.move_id.id,
- 'partner_id': accounting_partner.id,
+ 'partner_id': accounting_partner and accounting_partner.id or False,
'name': '%s - %s' % (self.name, payment.payment_method_id.name),
}
return self._debit_amounts(partial_vals, amount, amount_converted)
diff --git a/addons/point_of_sale/static/src/app/screens/payment_screen/payment_screen.js b/addons/point_of_sale/static/src/app/screens/payment_screen/payment_screen.js
index c94484b8a26..39d3b66cc63 100644
--- a/addons/point_of_sale/static/src/app/screens/payment_screen/payment_screen.js
+++ b/addons/point_of_sale/static/src/app/screens/payment_screen/payment_screen.js
@@ -407,8 +407,9 @@ export class PaymentScreen extends Component {
}
}
async _askForCustomerIfRequired() {
+ // HACK for pos_check_deposit
const splitPayments = this.paymentLines.filter(
- (payment) => payment.payment_method_id.split_transactions
+ (payment) => payment.payment_method_id.identify_customer
);
if (splitPayments.length && !this.currentOrder.get_partner()) {
const paymentMethod = splitPayments[0].payment_method_id;