Rabu, 06 September 2023

Print Invoice POS odoo

Tujuan akhir user ingin download invoice dan tidak download invoice setelah melakukan validasi pembayana di POS

tahapan : 

  1. Menambahkan kolom download_invoice dengan type boolean dan parameter default=True
from odoo import models, fields, _

class PosConfig(models.Model):
_inherit = "pos.config"
download_invoice = fields.Boolean(default=True)
  1. Replace fungsi push_and_invoice_order yang ada di Posmodel

    models.PosModel = models.PosModel.extend({
    push_and_invoice_order: function (order) {
    var self = this;
    return new Promise((resolve, reject) => {
    if (!order.get_client()) {
    reject({ code: 400, message: 'Missing Customer', data: {} });
    } else {
    var order_id = self.db.add_order(order.export_as_JSON());
    self.flush_mutex.exec(async () => {
    try {
    const server_ids = await self._flush_orders([self.db.get_order(order_id)], {
    timeout: 30000,
    to_invoice: true,
    });
    if (server_ids.length) {
    const [orderWithInvoice] = await self.rpc({
    method: 'read',
    model: 'pos.order',
    args: [server_ids, ['account_move']],
    kwargs: { load: false },
    });
    if(!self.config.download_invoice){
    resolve(server_ids)
    }else{
    await self
    .do_action('account.account_invoices', {
    additional_context: {
    active_ids: [orderWithInvoice.account_move],
    },
    })
    .catch(() => {
    reject({ code: 401, message: 'Backend Invoice', data: { order: order } });
    });
    }
    } else {
    reject({ code: 401, message: 'Backend Invoice', data: { order: order } });
    }
    resolve(server_ids);
    } catch (error) {
    reject(error);
    }
    });
    }
    });
    },
    });
Terimakasih

Tidak ada komentar:

Posting Komentar