19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:32:12 +01:00
parent 79f83631d5
commit 73afc09215
6267 changed files with 1534193 additions and 1130106 deletions

View file

@ -0,0 +1,11 @@
import { PosConfig } from "@point_of_sale/../tests/unit/data/pos_config.data";
PosConfig._records = PosConfig._records.map((config) => {
if (config.id === 1) {
return {
...config,
down_payment_product_id: 105,
};
}
return config;
});

View file

@ -0,0 +1,15 @@
import { patch } from "@web/core/utils/patch";
import { PosOrderLine } from "@point_of_sale/../tests/unit/data/pos_order_line.data";
patch(PosOrderLine.prototype, {
_load_pos_data_fields() {
return [
...super._load_pos_data_fields(),
"sale_order_origin_id",
"sale_order_line_id",
"down_payment_details",
"settled_order_id",
"settled_invoice_id",
];
},
});

View file

@ -0,0 +1,8 @@
import { patch } from "@web/core/utils/patch";
import { PosSession } from "@point_of_sale/../tests/unit/data/pos_session.data";
patch(PosSession.prototype, {
_load_pos_data_models() {
return [...super._load_pos_data_models(), "sale.order", "sale.order.line"];
},
});

View file

@ -0,0 +1,17 @@
import { ProductProduct } from "@point_of_sale/../tests/unit/data/product_product.data";
ProductProduct._records = [
...ProductProduct._records,
{
id: 105,
product_tmpl_id: 105,
lst_price: 0,
standard_price: 0,
display_name: "Down Payment (POS)",
product_tag_ids: [],
barcode: false,
default_code: false,
product_template_attribute_value_ids: [],
product_template_variant_value_ids: [],
},
];

View file

@ -0,0 +1,46 @@
import { patch } from "@web/core/utils/patch";
import { ProductTemplate } from "@point_of_sale/../tests/unit/data/product_template.data";
patch(ProductTemplate.prototype, {
_load_pos_data_fields() {
return [...super._load_pos_data_fields(), "sale_line_warn_msg", "invoice_policy"];
},
});
ProductTemplate._records = [
...ProductTemplate._records,
{
id: 105,
display_name: "Down Payment (POS)",
standard_price: 0,
categ_id: false,
pos_categ_ids: [],
taxes_id: [],
barcode: false,
name: "Down Payment (POS)",
list_price: 0,
is_favorite: false,
default_code: false,
to_weight: false,
uom_id: 1,
description_sale: false,
description: false,
tracking: "none",
type: "service",
service_tracking: "no",
is_storable: false,
write_date: "2025-07-03 17:04:14",
color: 0,
pos_sequence: 5,
available_in_pos: true,
attribute_line_ids: [],
active: true,
image_128: false,
sequence: 1,
combo_ids: [],
product_variant_ids: [7],
public_description: false,
pos_optional_product_ids: [],
product_tag_ids: [],
},
];

View file

@ -0,0 +1,8 @@
import { patch } from "@web/core/utils/patch";
import { ResPartner as MailResPartner } from "@mail/../tests/mock_server/mock_models/res_partner";
patch(MailResPartner.prototype, {
_load_pos_data_fields() {
return [...super._load_pos_data_fields(), "sale_warn_msg"];
},
});

View file

@ -0,0 +1,69 @@
import { patch } from "@web/core/utils/patch";
import { hootPosModels } from "@point_of_sale/../tests/unit/data/generate_model_definitions";
import { models } from "@web/../tests/web_test_helpers";
export class SaleOrder extends models.ServerModel {
_name = "sale.order";
_load_pos_data_fields() {
return [
"name",
"state",
"user_id",
"order_line",
"partner_id",
"pricelist_id",
"fiscal_position_id",
"amount_total",
"amount_untaxed",
"amount_unpaid",
"picking_ids",
"partner_shipping_id",
"partner_invoice_id",
"date_order",
"write_date",
];
}
_records = [
{
id: 1,
name: "S00001",
state: "sale",
order_line: [1, 2],
partner_id: 3,
pricelist_id: 1,
fiscal_position_id: 1,
amount_total: 650,
amount_untaxed: 500,
amount_unpaid: 650,
partner_shipping_id: 3,
partner_invoice_id: 3,
date_order: "2025-07-03 17:04:14",
write_date: "2025-07-03 17:04:14",
},
];
async load_sale_order_from_pos(id, config_id) {
const order = this.env["sale.order"].find((order) => order.id === id);
const orderLines = this.env["sale.order.line"].filter((line) =>
order.order_line.includes(line.id)
);
const partner = this.env["res.partner"].find((partner) => partner.id === order.partner_id);
const productProducts = this.env["product.product"].filter((product) =>
orderLines.map((line) => line.product_id).includes(product.id)
);
const productTemplates = this.env["product.template"].filter((template) =>
productProducts.map((p) => p.product_tmpl_id).includes(template.id)
);
return {
"sale.order": [order],
"sale.order.line": orderLines,
"res.partner": [partner],
"product.product": productProducts,
"product.template": productTemplates,
};
}
}
patch(hootPosModels, [...hootPosModels, SaleOrder]);

View file

@ -0,0 +1,83 @@
import { patch } from "@web/core/utils/patch";
import { hootPosModels } from "@point_of_sale/../tests/unit/data/generate_model_definitions";
import { models, MockServer } from "@web/../tests/web_test_helpers";
export class SaleOrderLine extends models.ServerModel {
_name = "sale.order.line";
_load_pos_data_fields() {
return [
"discount",
"display_name",
"price_total",
"price_unit",
"product_id",
"product_uom_qty",
"qty_delivered",
"qty_invoiced",
"qty_to_invoice",
"display_type",
"name",
"tax_ids",
"is_downpayment",
"extra_tax_data",
"write_date",
"is_repair_line",
];
}
_records = [
{
id: 1,
display_name: "Product 1",
product_id: 5,
product_uom_qty: 5,
price_unit: 100,
price_total: 500,
discount: 0,
qty_delivered: 0,
qty_invoiced: 0,
qty_to_invoice: 5,
display_type: false,
name: "Product 1",
tax_ids: [],
is_downpayment: false,
extra_tax_data: {},
write_date: "2025-07-03 17:04:14",
},
{
id: 2,
display_name: "Product 2",
product_id: 6,
product_uom_qty: 3,
price_unit: 50,
price_total: 150,
discount: 0,
qty_delivered: 0,
qty_invoiced: 0,
qty_to_invoice: 3,
display_type: false,
name: "Product 2",
tax_ids: [],
is_downpayment: false,
extra_tax_data: {},
write_date: "2025-07-03 17:04:14",
},
];
async read_converted(ids) {
const model = MockServer.env[this._name];
const posFields = model._load_pos_data_fields();
const records = model.search_read(
[["id", "in", ids]],
posFields,
false,
false,
false,
false
);
return records;
}
}
patch(hootPosModels, [...hootPosModels, SaleOrderLine]);