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

Automatic Invoice POS odoo v15

Tujuan akhir adalah membuat tombol invoice pada view PaymentScreen menjadi warna hijau [set setting secara automatis] need result :
tahapan pertama : 
1. menambahkan kolom / field dengan nama automatic_invoice dengan type Boolean parameter tambahan default = True 
from odoo import models, fields, _

class PosConfig(models.Model):
_inherit = "pos.config"
automatic_invoice = fields.Boolean(default=True)
2. tampilkan pada pos config form / view 
<odoo>
<record id="pos_config_view_form_inherit_pos_deposit" model="ir.ui.view">
<field name="name">pos.config.form.inherit.pos.discount</field>
<field name="model">pos.config</field>
<field name="inherit_id" ref="point_of_sale.pos_config_view_form" />
<field name="arch" type="xml">
<div id="company" position="after">
<div class="col-12 col-lg-6 o_setting_box" name="automatic_in_invoice">
<div class="o_setting_left_pane">
<field name="automatic_invoice"/>
</div>
<div class="o_setting_right_pane">
<label for="automatic_invoice"/>
</div>
</div>
</div>
</field>
</record>
</odoo>

3. saat load posmodel set invoice menjadi True
var _super_order = models.Order.prototype;
models.Order = models.Order.extend({
model: models.Orderline,
initialize: function(attr,options) {
_super_order.initialize.apply(this,arguments);
if(this.pos.config.automatic_invoice){
this.set_to_invoice(true);
}
this.save_to_db();
},
});
Terimakasih