summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndriFP <andrifebriyadiputra@gmail.com>2025-04-22 12:28:04 +0700
committerAndriFP <andrifebriyadiputra@gmail.com>2025-04-22 12:28:04 +0700
commit2f16e84dcceec98e3dd49cbbbf57457d00989a04 (patch)
tree3c43b3efe7aac4d1fa94ef27c24155106fbc650f
parent06dfcab31167bfcd99272e2e0a5d2df13377f9ad (diff)
(miqdad) add xpdc
-rwxr-xr-xindoteknik_custom/models/sale_order.py79
-rwxr-xr-xindoteknik_custom/views/sale_order.xml706
2 files changed, 434 insertions, 351 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 92581678..2061c686 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -67,6 +67,17 @@ class ShippingOption(models.Model):
class SaleOrder(models.Model):
_inherit = "sale.order"
+ ongkir_ke_xpdc = fields.Float(string='Ongkir ke Ekspedisi', help='Biaya ongkir ekspedisi', copy=False, index=True, tracking=3)
+
+ metode_kirim_ke_xpdc = fields.Selection([
+ ('indoteknik_deliv', 'Indoteknik Delivery'),
+ ('lalamove', 'Lalamove'),
+ ('grab', 'Grab'),
+ ('gojek', 'Gojek'),
+ ('deliveree', 'Deliveree'),
+ ('other', 'Other'),
+ ], string='Metode Kirim Ke Ekspedisi', copy=False, index=True, tracking=3)
+
koli_lines = fields.One2many('sales.order.koli', 'sale_order_id', string='Sales Order Koli', auto_join=True)
fulfillment_line_v2 = fields.One2many('sales.order.fulfillment.v2', 'sale_order_id', string='Fullfillment2')
fullfillment_line = fields.One2many('sales.order.fullfillment', 'sales_order_id', string='Fullfillment')
@@ -315,17 +326,7 @@ class SaleOrder(models.Model):
"sale_order_id": self.id,
})
self.shipping_option_id = shipping_option.id
- self.message_post(
- body=(
- f"<b>Estimasi pengiriman Indoteknik berhasil:</b><br/>"
- f"Layanan: {shipping_option.name}<br/>"
- f"ETD: {shipping_option.etd}<br/>"
- f"Biaya: Rp {shipping_option.price:,}<br/>"
- f"Provider: {shipping_option.provider}"
- ),
- message_type="comment",
- )
-
+
def action_estimate_shipping(self):
if self.carrier_id.id in [1, 151]:
self.action_indoteknik_estimate_shipping()
@@ -364,8 +365,6 @@ class SaleOrder(models.Model):
shipping_options.append((service, description, etd, value, courier['code']))
self.env["shipping.option"].search([('sale_order_id', '=', self.id)]).unlink()
-
- _logger.info(f"Shipping options: {shipping_options}")
for service, description, etd, value, provider in shipping_options:
self.env["shipping.option"].create({
@@ -375,23 +374,12 @@ class SaleOrder(models.Model):
"etd": etd,
"sale_order_id": self.id,
})
-
self.shipping_option_id = self.env["shipping.option"].search([('sale_order_id', '=', self.id)], limit=1).id
- _logger.info(f"Shipping option SO ID: {self.shipping_option_id}")
-
- self.message_post(
- body=f"Estimasi Ongkos Kirim: Rp{self.delivery_amt}<br/>Detail Lain:<br/>"
- f"{'<br/>'.join([f'Service: {s[0]}, Description: {s[1]}, ETD: {s[2]} hari, Cost: Rp {s[3]}' for s in shipping_options])}",
- message_type="comment"
- )
-
- # self.message_post(body=f"Estimasi Ongkos Kirim: Rp{self.delivery_amt}<br/>Detail Lain:<br/>{'<br/>'.join([f'Service: {s[0]}, Description: {s[1]}, ETD: {s[2]} hari, Cost: Rp {s[3]}' for s in shipping_options])}", message_type="comment")
-
+ self.message_post(body=f"Estimasi Ongkos Kirim: Rp{self.delivery_amt}<br/>Detail Lain:<br/>{'<br/>'.join([f'Service: {s[0]}, Description: {s[1]}, ETD: {s[2]} hari, Cost: Rp {s[3]}' for s in shipping_options])}")
else:
raise UserError("Gagal mendapatkan estimasi ongkir.")
-
def _call_rajaongkir_api(self, total_weight, destination_subsdistrict_id):
url = 'https://pro.rajaongkir.com/api/cost'
@@ -495,7 +483,7 @@ class SaleOrder(models.Model):
def _compute_date_kirim(self):
for rec in self:
- picking = self.env['stock.picking'].search([('sale_id', '=', rec.id), ('state', 'not in', ['cancel'])], order='date_doc_kirim desc', limit=1)
+ picking = self.env['stock.picking'].search([('sale_id', '=', rec.id), ('state', 'not in', ['cancel']), ('name', 'not ilike', 'BU/PICK/%')], order='date_doc_kirim desc', limit=1)
rec.date_kirim_ril = picking.date_doc_kirim
rec.date_status_done = picking.date_done
rec.date_driver_arrival = picking.driver_arrival_date
@@ -694,30 +682,12 @@ class SaleOrder(models.Model):
# @api.constrains('delivery_amt', 'carrier_id', 'shipping_cost_covered')
def _validate_delivery_amt(self):
- is_indoteknik = self.carrier_id.id == 1 or self.shipping_cost_covered == 'indoteknik'
- is_active_id = not self.env.context.get('active_id', [])
-
- if is_indoteknik and is_active_id:
- if self.delivery_amt == 0:
- if self.carrier_id.id == 1:
- raise UserError('Untuk Kurir Indoteknik Delivery, estimasi ongkos kirim belum diisi.')
- else:
- raise UserError('Untuk Shipping Covered Indoteknik, estimasi ongkos kirim belum diisi.')
-
- if self.delivery_amt < 5000:
- if self.carrier_id.id == 1:
- raise UserError('Untuk Kurir Indoteknik Delivery, estimasi ongkos kirim belum memenuhi tarif minimum.')
+ if self.delivery_amt < 1:
+ if(self.carrier_id.id == 1 or self.shipping_cost_covered == 'indoteknik') and not self.env.context.get('active_id', []):
+ if(self.carrier_id.id == 1):
+ raise UserError('Untuk Kurir Indoteknik Delivery, Estimasi Ongkos Kirim Harus di isi')
else:
- raise UserError('Untuk Shipping Covered Indoteknik, estimasi ongkos kirim belum memenuhi tarif minimum.')
-
-
- # if self.delivery_amt < 5000:
- # if (self.carrier_id.id == 1 or self.shipping_cost_covered == 'indoteknik') and not self.env.context.get('active_id', []):
- # if self.carrier_id.id == 1:
- # raise UserError('Untuk Kurir Indoteknik Delivery, estimasi ongkos kirim belum memenuhi jumlah minimum.')
- # else:
- # raise UserError('Untuk Shipping Covered Indoteknik, estimasi ongkos kirim belum memenuhi jumlah minimum.')
-
+ raise UserError('Untuk Shipping Covered Indoteknik, Estimasi Ongkos Kirim Harus di isi')
def override_allow_create_invoice(self):
if not self.env.user.is_accounting:
@@ -1467,12 +1437,21 @@ class SaleOrder(models.Model):
# partner.npwp = self.npwp
# partner.sppkp = self.sppkp
# partner.email = self.email
-
+
def _compute_total_margin(self):
for order in self:
total_margin = sum(line.item_margin for line in order.order_line if line.product_id)
+ #hitung nek onk
+ if order.ongkir_ke_xpdc:
+ total_margin -= order.ongkir_ke_xpdc
+
order.total_margin = total_margin
+ # def _compute_total_margin(self):
+ # for order in self:
+ # total_margin = sum(line.item_margin for line in order.order_line if line.product_id)
+ # order.total_margin = total_margin
+
def _compute_total_percent_margin(self):
for order in self:
if order.amount_untaxed == 0:
diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml
index f1b72af3..79a095fb 100755
--- a/indoteknik_custom/views/sale_order.xml
+++ b/indoteknik_custom/views/sale_order.xml
@@ -1,181 +1,214 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<record id="sale_order_form_view_inherit" model="ir.ui.view">
<field name="name">Sale Order</field>
<field name="model">sale.order</field>
- <field name="inherit_id" ref="sale.view_order_form"/>
+ <field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<button id="action_confirm" position="after">
<button name="calculate_line_no"
- string="Create No"
- type="object"
+ string="Create No"
+ type="object"
/>
<button name="sale_order_approve"
- string="Ask Approval"
- type="object"
- attrs="{'invisible': [('approval_status', '=', ['approved'])]}"
+ string="Ask Approval"
+ type="object"
+ attrs="{'invisible': [('approval_status', '=', ['approved'])]}"
/>
<button name="action_web_approve"
- string="Web Approve"
- type="object"
- attrs="{'invisible': ['|', '|', ('create_uid', '!=', 25), ('web_approval', '!=', False), ('state', '!=', 'draft')]}"
+ string="Web Approve"
+ type="object"
+ attrs="{'invisible': ['|', '|', ('create_uid', '!=', 25), ('web_approval', '!=', False), ('state', '!=', 'draft')]}"
/>
- <button name="indoteknik_custom.action_view_uangmuka_penjualan" string="UangMuka"
- type="action" attrs="{'invisible': [('approval_status', '!=', 'approved')]}"/>
+ <button name="indoteknik_custom.action_view_uangmuka_penjualan"
+ string="UangMuka"
+ type="action" attrs="{'invisible': [('approval_status', '!=', 'approved')]}" />
</button>
<field name="payment_term_id" position="after">
- <field name="create_uid" invisible="1"/>
- <field name="create_date" invisible="1"/>
- <field name="shipping_cost_covered" attrs="{'required': ['|', ('create_date', '&gt;', '2023-06-15'), ('create_date', '=', False)]}"/>
- <field name="shipping_paid_by" attrs="{'required': ['|', ('create_date', '&gt;', '2023-06-15'), ('create_date', '=', False)]}"/>
- <field name="delivery_amt"/>
- <field name="fee_third_party"/>
- <field name="biaya_lain_lain"/>
- <field name="total_percent_margin"/>
- <field name="total_margin_excl_third_party" readonly="1"/>
- <field name="type_promotion"/>
- <label for="voucher_id"/>
+ <field name="create_uid" invisible="1" />
+ <field name="create_date" invisible="1" />
+ <field name="shipping_cost_covered"
+ attrs="{'required': ['|', ('create_date', '&gt;', '2023-06-15'), ('create_date', '=', False)]}" />
+ <field name="shipping_paid_by"
+ attrs="{'required': ['|', ('create_date', '&gt;', '2023-06-15'), ('create_date', '=', False)]}" />
+ <field name="delivery_amt" />
+ <field name="ongkir_ke_xpdc" />
+ <field name="metode_kirim_ke_xpdc" />
+ <field name="fee_third_party" />
+ <field name="biaya_lain_lain" />
+ <field name="total_percent_margin" />
+ <field name="total_margin_excl_third_party" readonly="1" />
+ <field name="type_promotion" />
+ <label for="voucher_id" />
<div class="o_row">
- <field name="voucher_id" id="voucher_id" attrs="{'readonly': ['|', ('state', 'not in', ['draft', 'sent']), ('applied_voucher_id', '!=', False)]}"/>
+ <field name="voucher_id" id="voucher_id"
+ attrs="{'readonly': ['|', ('state', 'not in', ['draft', 'sent']), ('applied_voucher_id', '!=', False)]}" />
<field name="applied_voucher_id" invisible="1" />
- <button name="action_apply_voucher" type="object" string="Apply" confirm="Anda yakin untuk menggunakan voucher?" help="Apply the selected voucher" class="btn-link mb-1 px-0" icon="fa-plus"
+ <button name="action_apply_voucher" type="object" string="Apply"
+ confirm="Anda yakin untuk menggunakan voucher?"
+ help="Apply the selected voucher" class="btn-link mb-1 px-0"
+ icon="fa-plus"
attrs="{'invisible': ['|', '|', ('voucher_id', '=', False), ('state', 'not in', ['draft', 'sent']), ('applied_voucher_id', '!=', False)]}"
/>
- <button name="cancel_voucher" type="object" string="Cancel" confirm="Anda yakin untuk membatalkan penggunaan voucher?" help="Cancel applied voucher" class="btn-link mb-1 px-0" icon="fa-times"
+ <button name="cancel_voucher" type="object" string="Cancel"
+ confirm="Anda yakin untuk membatalkan penggunaan voucher?"
+ help="Cancel applied voucher" class="btn-link mb-1 px-0" icon="fa-times"
attrs="{'invisible': ['|', ('applied_voucher_id', '=', False), ('state', 'not in', ['draft','sent'])]}"
/>
</div>
- <label for="voucher_shipping_id"/>
+ <label for="voucher_shipping_id" />
<div class="o_row">
- <field name="voucher_shipping_id" id="voucher_shipping_id" attrs="{'readonly': ['|', ('state', 'not in', ['draft', 'sent']), ('applied_voucher_shipping_id', '!=', False)]}"/>
+ <field name="voucher_shipping_id" id="voucher_shipping_id"
+ attrs="{'readonly': ['|', ('state', 'not in', ['draft', 'sent']), ('applied_voucher_shipping_id', '!=', False)]}" />
<field name="applied_voucher_shipping_id" invisible="1" />
- <button name="action_apply_voucher_shipping" type="object" string="Apply" confirm="Anda yakin untuk menggunakan voucher?" help="Apply the selected voucher" class="btn-link mb-1 px-0" icon="fa-plus"
+ <button name="action_apply_voucher_shipping" type="object" string="Apply"
+ confirm="Anda yakin untuk menggunakan voucher?"
+ help="Apply the selected voucher" class="btn-link mb-1 px-0"
+ icon="fa-plus"
attrs="{'invisible': ['|', '|', ('voucher_id', '=', False), ('state', 'not in', ['draft', 'sent']), ('applied_voucher_shipping_id', '!=', False)]}"
/>
- <button name="cancel_voucher_shipping" type="object" string="Cancel" confirm="Anda yakin untuk membatalkan penggunaan voucher?" help="Cancel applied voucher" class="btn-link mb-1 px-0" icon="fa-times"
+ <button name="cancel_voucher_shipping" type="object" string="Cancel"
+ confirm="Anda yakin untuk membatalkan penggunaan voucher?"
+ help="Cancel applied voucher" class="btn-link mb-1 px-0" icon="fa-times"
attrs="{'invisible': ['|', ('applied_voucher_shipping_id', '=', False), ('state', 'not in', ['draft','sent'])]}"
/>
</div>
<button name="calculate_selling_price"
- string="Calculate Selling Price"
- type="object"
+ string="Calculate Selling Price"
+ type="object"
/>
</field>
<field name="source_id" position="attributes">
<attribute name="invisible">1</attribute>
</field>
<field name="user_id" position="after">
- <field name="helper_by_id" readonly="1"/>
- <field name="compute_fullfillment" invisible="1"/>
+ <field name="helper_by_id" readonly="1" />
+ <field name="compute_fullfillment" invisible="1" />
</field>
<field name="tag_ids" position="after">
- <field name="eta_date_start"/>
- <t t-esc="' to '"/>
- <field name="eta_date" readonly="1"/>
+ <field name="eta_date_start" />
+ <t t-esc="' to '" />
+ <field name="eta_date" readonly="1" />
<field name="expected_ready_to_ship" />
- <field name="flash_sale"/>
- <field name="margin_after_delivery_purchase"/>
- <field name="percent_margin_after_delivery_purchase"/>
- <field name="total_weight"/>
- <field name="pareto_status"/>
+ <field name="flash_sale" />
+ <field name="margin_after_delivery_purchase" />
+ <field name="percent_margin_after_delivery_purchase" />
+ <field name="total_weight" />
+ <field name="pareto_status" />
</field>
<field name="analytic_account_id" position="after">
- <field name="customer_type" required="1"/>
- <field name="npwp" placeholder='99.999.999.9-999.999' required="1"/>
- <field name="sppkp" attrs="{'required': [('customer_type', '=', 'pkp')]}"/>
- <field name="email" required="1"/>
- <field name="unreserve_id"/>
- <field name="due_id" readonly="1"/>
- <field name="vendor_approval_id" readonly="1" widget="many2many_tags"/>
- <field name="source_id" domain="[('id', 'in', [32, 59, 60, 61])]" required="1"/>
+ <field name="customer_type" required="1" />
+ <field name="npwp" placeholder='99.999.999.9-999.999' required="1" />
+ <field name="sppkp" attrs="{'required': [('customer_type', '=', 'pkp')]}" />
+ <field name="email" required="1" />
+ <field name="unreserve_id" />
+ <field name="due_id" readonly="1" />
+ <field name="vendor_approval_id" readonly="1" widget="many2many_tags" />
+ <field name="source_id" domain="[('id', 'in', [32, 59, 60, 61])]" required="1" />
<button name="override_allow_create_invoice"
- string="Override Create Invoice"
- type="object"
+ string="Override Create Invoice"
+ type="object"
/>
- <button string="Estimate Shipping" type="object" name="action_estimate_shipping"/>
-
+ <button string="Estimate Shipping" type="object" name="action_estimate_shipping" />
</field>
<field name="partner_shipping_id" position="after">
- <field name="real_shipping_id"/>
- <field name="real_invoice_id"/>
+ <field name="real_shipping_id" />
+ <field name="real_invoice_id" />
<field name="approval_status" />
- <field name="sales_tax_id" domain="[('type_tax_use','=','sale'), ('active', '=', True)]" required="1"/>
- <field name="carrier_id" required="1"/>
- <field name="delivery_service_type" readonly="1"/>
- <field name="shipping_option_id"/>
+ <field name="sales_tax_id"
+ domain="[('type_tax_use','=','sale'), ('active', '=', True)]" required="1" />
+ <field name="carrier_id" required="1" />
+ <field name="delivery_service_type" readonly="1" />
+ <field name="shipping_option_id" />
</field>
<field name="medium_id" position="after">
- <field name="date_doc_kirim" readonly="1"/>
- <field name="notification" readonly="1"/>
+ <field name="date_doc_kirim" readonly="1" />
+ <field name="notification" readonly="1" />
</field>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']" position="attributes">
+ <xpath expr="//form/sheet/notebook/page/field[@name='order_line']"
+ position="attributes">
<attribute name="attrs">
{'readonly': [('state', 'in', ('done','cancel'))]}
</attribute>
</xpath>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree" position="inside">
- <field name="desc_updatable" invisible="1"/>
+ <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree"
+ position="inside">
+ <field name="desc_updatable" invisible="1" />
</xpath>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='name']" position="attributes">
+ <xpath
+ expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='name']"
+ position="attributes">
<attribute name="modifiers">
{'readonly': [('desc_updatable', '=', False)]}
</attribute>
</xpath>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='price_unit']" position="attributes">
+ <xpath
+ expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='price_unit']"
+ position="attributes">
<attribute name="attrs">
{
- 'readonly': [
- '|',
- ('qty_invoiced', '>', 0),
- ('parent.approval_status', '!=', False)
- ]
+ 'readonly': [
+ '|',
+ ('qty_invoiced', '>', 0),
+ ('parent.approval_status', '!=', False)
+ ]
}
</attribute>
</xpath>
<div name="invoice_lines" position="before">
- <div name="vendor_id" groups="base.group_no_one" attrs="{'invisible': [('display_type', '!=', False)]}">
- <label for="vendor_id"/>
+ <div name="vendor_id" groups="base.group_no_one"
+ attrs="{'invisible': [('display_type', '!=', False)]}">
+ <label for="vendor_id" />
<div name="vendor_id">
- <field name="vendor_id"
- attrs="{'readonly': [('parent.approval_status', '=', 'approved')]}"
- domain="[('parent_id', '=', False)]"
- options="{'no_create': True}" class="oe_inline" />
+ <field name="vendor_id"
+ attrs="{'readonly': [('parent.approval_status', '=', 'approved')]}"
+ domain="[('parent_id', '=', False)]"
+ options="{'no_create': True}" class="oe_inline" />
</div>
</div>
</div>
-
+
<div name="invoice_lines" position="before">
- <div name="purchase_price" groups="base.group_no_one" attrs="{'invisible': [('display_type', '!=', False)]}">
- <label for="purchase_price"/>
- <field name="purchase_price"/>
+ <div name="purchase_price" groups="base.group_no_one"
+ attrs="{'invisible': [('display_type', '!=', False)]}">
+ <label for="purchase_price" />
+ <field name="purchase_price" />
</div>
</div>
<div name="invoice_lines" position="before">
- <div name="purchase_tax_id" groups="base.group_no_one" attrs="{'invisible': [('display_type', '!=', False)]}">
- <label for="purchase_tax_id"/>
+ <div name="purchase_tax_id" groups="base.group_no_one"
+ attrs="{'invisible': [('display_type', '!=', False)]}">
+ <label for="purchase_tax_id" />
<div name="purchase_tax_id">
- <field name="purchase_tax_id"/>
+ <field name="purchase_tax_id" />
</div>
</div>
</div>
<div name="invoice_lines" position="before">
- <div name="item_percent_margin" groups="base.group_no_one" attrs="{'invisible': [('display_type', '!=', False)]}">
- <label for="item_percent_margin"/>
- <field name="item_percent_margin"/>
+ <div name="item_percent_margin" groups="base.group_no_one"
+ attrs="{'invisible': [('display_type', '!=', False)]}">
+ <label for="item_percent_margin" />
+ <field name="item_percent_margin" />
</div>
</div>
<div name="invoice_lines" position="before">
- <div name="price_subtotal" groups="base.group_no_one" attrs="{'invisible': [('display_type', '!=', False)]}">
- <label for="price_subtotal"/>
- <field name="price_subtotal"/>
+ <div name="price_subtotal" groups="base.group_no_one"
+ attrs="{'invisible': [('display_type', '!=', False)]}">
+ <label for="price_subtotal" />
+ <field name="price_subtotal" />
</div>
</div>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='price_total']" position="after">
- <field name="qty_free_bu" optional="hide"/>
- <field name="vendor_id" attrs="{'readonly': [('parent.approval_status', '=', 'approved')], 'invisible': [('display_type', '!=', False)]}" domain="[('parent_id', '=', False)]" options="{'no_create':True}"/>
- <field name="vendor_md_id" optional="hide"/>
- <field name="purchase_price" attrs="
+ <xpath
+ expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='price_total']"
+ position="after">
+ <field name="qty_free_bu" optional="hide" />
+ <field name="vendor_id"
+ attrs="{'readonly': [('parent.approval_status', '=', 'approved')], 'invisible': [('display_type', '!=', False)]}"
+ domain="[('parent_id', '=', False)]" options="{'no_create':True}" />
+ <field name="vendor_md_id" optional="hide" />
+ <field name="purchase_price"
+ attrs="
{
'readonly': [
'|',
@@ -183,56 +216,72 @@
('parent.approval_status', '!=', False)
]
}
- "/>
- <field name="purchase_price_md" optional="hide"/>
- <field name="purchase_tax_id" attrs="{'readonly': [('parent.approval_status', '!=', False)]}" domain="[('type_tax_use','=','purchase')]" options="{'no_create':True}"/>
- <field name="item_percent_margin"/>
- <field name="item_margin" optional="hide"/>
- <field name="margin_md" optional="hide"/>
- <field name="note" optional="hide"/>
- <field name="note_procurement" optional="hide"/>
- <field name="vendor_subtotal" optional="hide"/>
- <field name="weight" optional="hide"/>
- <field name="amount_voucher_disc" string="Voucher" readonly="1" optional="hide"/>
- <field name="order_promotion_id" string="Promotion" readonly="1" optional="hide"/>
+ " />
+ <field name="purchase_price_md" optional="hide" />
+ <field name="purchase_tax_id"
+ attrs="{'readonly': [('parent.approval_status', '!=', False)]}"
+ domain="[('type_tax_use','=','purchase')]" options="{'no_create':True}" />
+ <field name="item_percent_margin" />
+ <field name="item_margin" optional="hide" />
+ <field name="margin_md" optional="hide" />
+ <field name="note" optional="hide" />
+ <field name="note_procurement" optional="hide" />
+ <field name="vendor_subtotal" optional="hide" />
+ <field name="weight" optional="hide" />
+ <field name="amount_voucher_disc" string="Voucher" readonly="1" optional="hide" />
+ <field name="order_promotion_id" string="Promotion" readonly="1" optional="hide" />
</xpath>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='product_id']" position="before">
- <field name="line_no" readonly="1" optional="hide"/>
+ <xpath
+ expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='product_id']"
+ position="before">
+ <field name="line_no" readonly="1" optional="hide" />
</xpath>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='qty_delivered']" position="before">
- <field name="qty_reserved" invisible="1"/>
- <field name="reserved_from" readonly="1" optional="hide"/>
+ <xpath
+ expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='qty_delivered']"
+ position="before">
+ <field name="qty_reserved" invisible="1" />
+ <field name="reserved_from" readonly="1" optional="hide" />
</xpath>
- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
+ <xpath
+ expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='product_id']"
+ position="attributes">
<attribute name="options">{'no_create': True}</attribute>
</xpath>
- <!-- <xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='tax_id']" position="attributes">
+ <!-- <xpath
+ expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='tax_id']"
+ position="attributes">
<attribute name="required">1</attribute>
</xpath> -->
<field name="amount_total" position="after">
- <field name="grand_total"/>
+ <field name="grand_total" />
<label for="amount_voucher_disc" string="Voucher" />
<div>
- <field class="mb-0" name="amount_voucher_disc" string="Voucher" readonly="1"/>
- <div class="text-right mb-2"><small>*Hanya informasi</small></div>
+ <field class="mb-0" name="amount_voucher_disc" string="Voucher" readonly="1" />
+ <div class="text-right mb-2">
+ <small>*Hanya informasi</small>
+ </div>
</div>
<label for="amount_voucher_shipping_disc" string="Voucher Shipping" />
<div>
- <field class="mb-0" name="amount_voucher_shipping_disc" string="Voucher Shipping" readonly="1"/>
- <div class="text-right mb-2"><small>*Hanya informasi</small></div>
+ <field class="mb-0" name="amount_voucher_shipping_disc"
+ string="Voucher Shipping" readonly="1" />
+ <div class="text-right mb-2">
+ <small>*Hanya informasi</small>
+ </div>
</div>
- <field name="total_margin"/>
- <field name="total_percent_margin"/>
+ <field name="total_margin" />
+ <field name="total_percent_margin" />
</field>
<field name="effective_date" position="after">
- <field name="carrier_id"/>
- <field name="estimated_arrival_days"/>
- <field name="picking_iu_id"/>
- <field name="note_ekspedisi"/>
+ <field name="carrier_id" />
+ <field name="estimated_arrival_days" />
+ <field name="picking_iu_id" />
+ <field name="note_ekspedisi" />
</field>
<field name="carrier_id" position="attributes">
<attribute name="attrs">
- {'readonly': [('approval_status', '=', 'approved'), ('state', 'not in', ['cancel','draft'])]}
+ {'readonly': [('approval_status', '=', 'approved'), ('state', 'not in',
+ ['cancel','draft'])]}
</attribute>
</field>
@@ -240,22 +289,22 @@
<page string="Website" name="customer_purchase_order">
<group>
<group>
- <field name="partner_purchase_order_name" readonly="True"/>
- <field name="partner_purchase_order_description" readonly="True"/>
- <field name="partner_purchase_order_file" readonly="True"/>
- <field name="note_website" readonly="True"/>
- <field name="web_approval" readonly="True"/>
+ <field name="partner_purchase_order_name" readonly="True" />
+ <field name="partner_purchase_order_description" readonly="True" />
+ <field name="partner_purchase_order_file" readonly="True" />
+ <field name="note_website" readonly="True" />
+ <field name="web_approval" readonly="True" />
</group>
<group>
<button name="generate_payment_link_midtrans_sales_order"
- string="Create Payment Link"
- type="object"
+ string="Create Payment Link"
+ type="object"
/>
- <field name="payment_link_midtrans" readonly="True" widget="url"/>
- <field name="gross_amount" readonly="True"/>
- <field name="payment_type" readonly="True"/>
- <field name="payment_status" readonly="True"/>
- <field name="payment_qr_code" widget="image" readonly="True"/>
+ <field name="payment_link_midtrans" readonly="True" widget="url" />
+ <field name="gross_amount" readonly="True" />
+ <field name="payment_type" readonly="True" />
+ <field name="payment_status" readonly="True" />
+ <field name="payment_qr_code" widget="image" readonly="True" />
</group>
</group>
</page>
@@ -276,89 +325,91 @@
</field>
</page>
<page string="Matches PO" name="page_matches_po" invisible="1">
- <field name="order_sales_match_line" readonly="1"/>
+ <field name="order_sales_match_line" readonly="1" />
</page>
<!-- <page string="Fullfillment" name="page_sale_order_fullfillment">
<field name="fullfillment_line" readonly="1"/>
</page> -->
<page string="Fulfillment v2" name="page_sale_order_fullfillment2">
- <field name="fulfillment_line_v2" readonly="1"/>
+ <field name="fulfillment_line_v2" readonly="1" />
</page>
<page string="Reject Line" name="page_sale_order_reject_line">
- <field name="reject_line" readonly="1"/>
+ <field name="reject_line" readonly="1" />
</page>
<page string="Koli" name="page_sales_order_koli_line">
- <field name="koli_lines" readonly="1"/>
+ <field name="koli_lines" readonly="1" />
</page>
</page>
</field>
</record>
- <!-- Wizard for Reject Reason -->
- <record id="view_cancel_reason_order_form" model="ir.ui.view">
- <field name="name">cancel.reason.order.form</field>
- <field name="model">cancel.reason.order</field>
- <field name="arch" type="xml">
- <form string="Cancel Reason">
- <group>
- <field name="reason_cancel" widget="selection"/>
- <field name="attachment_bukti" widget="many2many_binary" required="1"/>
- <field name="nomor_so_pengganti" attrs="{'invisible': [('reason_cancel', '!=', 'ganti_quotation')]}"/>
- </group>
- <footer>
- <button string="Confirm" type="object" name="confirm_reject" class="btn-primary"/>
- <button string="Cancel" class="btn-secondary" special="cancel"/>
- </footer>
- </form>
- </field>
- </record>
+ <!-- Wizard for Reject Reason -->
+ <record id="view_cancel_reason_order_form" model="ir.ui.view">
+ <field name="name">cancel.reason.order.form</field>
+ <field name="model">cancel.reason.order</field>
+ <field name="arch" type="xml">
+ <form string="Cancel Reason">
+ <group>
+ <field name="reason_cancel" widget="selection" />
+ <field name="attachment_bukti" widget="many2many_binary" required="1" />
+ <field name="nomor_so_pengganti"
+ attrs="{'invisible': [('reason_cancel', '!=', 'ganti_quotation')]}" />
+ </group>
+ <footer>
+ <button string="Confirm" type="object" name="confirm_reject"
+ class="btn-primary" />
+ <button string="Cancel" class="btn-secondary" special="cancel" />
+ </footer>
+ </form>
+ </field>
+ </record>
- <record id="action_cancel_reason_order" model="ir.actions.act_window">
- <field name="name">Cancel Reason</field>
- <field name="res_model">cancel.reason.order</field>
- <field name="view_mode">form</field>
- <field name="target">new</field>
- </record>
+ <record id="action_cancel_reason_order" model="ir.actions.act_window">
+ <field name="name">Cancel Reason</field>
+ <field name="res_model">cancel.reason.order</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
</data>
<data>
<record id="sale_order_tree_view_inherit" model="ir.ui.view">
<field name="name">Sale Order</field>
<field name="model">sale.order</field>
- <field name="inherit_id" ref="sale.view_quotation_tree_with_onboarding"/>
+ <field name="inherit_id" ref="sale.view_quotation_tree_with_onboarding" />
<field name="arch" type="xml">
<field name="state" position="after">
<field name="approval_status" />
- <field name="client_order_ref"/>
- <field name="payment_type" optional="hide"/>
- <field name="payment_status" optional="hide"/>
- <field name="pareto_status" optional="hide"/>
- <field name="shipping_method_picking" optional="hide"/>
+ <field name="client_order_ref" />
+ <field name="payment_type" optional="hide" />
+ <field name="payment_status" optional="hide" />
+ <field name="pareto_status" optional="hide" />
+ <field name="shipping_method_picking" optional="hide" />
</field>
</field>
</record>
<record id="sales_order_tree_view_inherit" model="ir.ui.view">
<field name="name">Sale Order</field>
<field name="model">sale.order</field>
- <field name="inherit_id" ref="sale.view_order_tree"/>
+ <field name="inherit_id" ref="sale.view_order_tree" />
<field name="arch" type="xml">
<field name="state" position="after">
<field name="approval_status" />
- <field name="client_order_ref"/>
- <field name="so_status"/>
- <field name="date_status_done"/>
- <field name="date_kirim_ril"/>
- <field name="date_driver_departure"/>
- <field name="date_driver_arrival"/>
- <field name="payment_type" optional="hide"/>
- <field name="payment_status" optional="hide"/>
- <field name="pareto_status" optional="hide"/>
+ <field name="client_order_ref" />
+ <field name="so_status" />
+ <field name="date_status_done" />
+ <field name="date_kirim_ril" />
+ <field name="date_driver_departure" />
+ <field name="date_driver_arrival" />
+ <field name="payment_type" optional="hide" />
+ <field name="payment_status" optional="hide" />
+ <field name="pareto_status" optional="hide" />
</field>
</field>
</record>
<record id="sale_order_multi_update_ir_actions_server" model="ir.actions.server">
<field name="name">Mark As Cancel</field>
- <field name="model_id" ref="sale.model_sale_order"/>
- <field name="binding_model_id" ref="sale.model_sale_order"/>
+ <field name="model_id" ref="sale.model_sale_order" />
+ <field name="binding_model_id" ref="sale.model_sale_order" />
<field name="binding_view_types">form,list</field>
<field name="state">code</field>
<field name="code">action = records.open_form_multi_update_state()</field>
@@ -366,46 +417,81 @@
<record id="sale_order_update_multi_actions_server" model="ir.actions.server">
<field name="name">Mark As Completed</field>
- <field name="model_id" ref="sale.model_sale_order"/>
- <field name="binding_model_id" ref="sale.model_sale_order"/>
+ <field name="model_id" ref="sale.model_sale_order" />
+ <field name="binding_model_id" ref="sale.model_sale_order" />
<field name="state">code</field>
<field name="code">action = records.open_form_multi_update_status()</field>
</record>
<record id="mail_template_sale_order_web_approve_notification" model="mail.template">
<field name="name">Sale Order: Web Approve Notification</field>
- <field name="model_id" ref="indoteknik_custom.model_sale_order"/>
+ <field name="model_id" ref="indoteknik_custom.model_sale_order" />
<field name="subject">Permintaan Persetujuan Pesanan ${object.name} di Indoteknik.com</field>
<field name="email_from">sales@indoteknik.com</field>
<field name="email_to">${object.partner_id.email | safe}</field>
<field name="email_cc">${object.partner_id.get_approve_partner_ids("email_comma_sep")}</field>
<field name="body_html" type="html">
- <table border="0" cellpadding="0" cellspacing="0" style="padding: 16px 0; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
- <tr><td align="center">
- <table border="0" cellpadding="0" cellspacing="0" width="590" style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
- <tbody>
- <tr>
- <td align="center" style="min-width: 590px;">
- <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
- <tr><td style="padding-bottom: 24px;">Dear ${(object.partner_id.get_main_parent()).name},</td></tr>
+ <table border="0" cellpadding="0" cellspacing="0"
+ style="padding: 16px 0; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
+ <tr>
+ <td align="center">
+ <table border="0" cellpadding="0" cellspacing="0" width="590"
+ style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
+ <tbody>
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0"
+ width="590"
+ style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr>
+ <td style="padding-bottom: 24px;">
+ Dear
+ ${(object.partner_id.get_main_parent()).name},</td>
+ </tr>
- <tr><td style="padding-bottom: 16px;">Ini adalah konfirmasi pesanan dari ${object.partner_id.name | safe} untuk nomor pesanan ${object.name} yang memerlukan persetujuan agar dapat diproses.</td></tr>
- <tr><td style="padding-bottom: 16px;">
- <a href="https://indoteknik.com/my/quotations/${object.id}" style="color: white; background-color: #C53030; border: none; border-radius: 6px; padding: 4px 8px; width: fit-content; display: block;">
- Lihat Pesanan
- </a>
- </td></tr>
- <tr><td style="padding-bottom: 16px;">Mohon segera melakukan tinjauan terhadap pesanan ini dan memberikan persetujuan. Terima kasih atas perhatian dan kerjasama Anda. Kami berharap dapat segera melanjutkan proses pesanan ini setelah mendapatkan persetujuan Anda.</td></tr>
+ <tr>
+ <td style="padding-bottom: 16px;">Ini adalah
+ konfirmasi pesanan dari
+ ${object.partner_id.name | safe} untuk nomor
+ pesanan ${object.name} yang memerlukan
+ persetujuan agar dapat diproses.</td>
+ </tr>
+ <tr>
+ <td style="padding-bottom: 16px;">
+ <a
+ href="https://indoteknik.com/my/quotations/${object.id}"
+ style="color: white; background-color: #C53030; border: none; border-radius: 6px; padding: 4px 8px; width: fit-content; display: block;">
+ Lihat Pesanan
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding-bottom: 16px;">Mohon segera
+ melakukan tinjauan terhadap pesanan ini dan
+ memberikan persetujuan. Terima kasih atas
+ perhatian dan kerjasama Anda. Kami berharap
+ dapat segera melanjutkan proses pesanan ini
+ setelah mendapatkan persetujuan Anda.</td>
+ </tr>
- <tr><td style="padding-bottom: 2px;">Hormat kami,</td></tr>
- <tr><td style="padding-bottom: 2px;">PT. Indoteknik Dotcom Gemilang</td></tr>
- <tr><td style="padding-bottom: 2px;">sales@indoteknik.com</td></tr>
- </table>
- </td>
- </tr>
- </tbody>
- </table>
- </td></tr>
+ <tr>
+ <td style="padding-bottom: 2px;">Hormat kami,</td>
+ </tr>
+ <tr>
+ <td style="padding-bottom: 2px;">PT. Indoteknik
+ Dotcom Gemilang</td>
+ </tr>
+ <tr>
+ <td style="padding-bottom: 2px;">
+ sales@indoteknik.com</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
</table>
</field>
</record>
@@ -417,11 +503,11 @@
<field name="model">sales.order.purchase.match</field>
<field name="arch" type="xml">
<tree editable="top" create="false" delete="false">
- <field name="purchase_order_id" readonly="1"/>
- <field name="purchase_line_id" readonly="1"/>
- <field name="product_id" readonly="1"/>
- <field name="qty_so" readonly="1"/>
- <field name="qty_po" readonly="1"/>
+ <field name="purchase_order_id" readonly="1" />
+ <field name="purchase_line_id" readonly="1" />
+ <field name="product_id" readonly="1" />
+ <field name="qty_so" readonly="1" />
+ <field name="qty_po" readonly="1" />
</tree>
</field>
</record>
@@ -433,9 +519,9 @@
<field name="model">sales.order.koli</field>
<field name="arch" type="xml">
<tree editable="top" create="false" delete="false">
- <field name="koli_id" readonly="1"/>
- <field name="picking_id" readonly="1"/>
- <field name="state" readonly="1"/>
+ <field name="koli_id" readonly="1" />
+ <field name="picking_id" readonly="1" />
+ <field name="state" readonly="1" />
</tree>
</field>
</record>
@@ -444,32 +530,32 @@
<data>
</data>
- <record id="sales_order_fulfillment_v2_tree" model="ir.ui.view">
- <field name="name">sales.order.fulfillment.v2.tree</field>
- <field name="model">sales.order.fulfillment.v2</field>
- <field name="arch" type="xml">
- <tree editable="top" create="false">
- <field name="product_id" readonly="1"/>
- <field name="so_qty" readonly="1" optional="show"/>
- <field name="reserved_stock_qty" readonly="1" optional="show"/>
- <field name="delivered_qty" readonly="1" optional="hide"/>
- <field name="po_ids" widget="many2many_tags" readonly="1" optional="show"/>
- <field name="po_qty" readonly="1" optional="show"/>
- <field name="received_qty" readonly="1" optional="show"/>
- <field name="purchaser" readonly="1" optional="hide"/>
- </tree>
- </field>
- </record>
+ <record id="sales_order_fulfillment_v2_tree" model="ir.ui.view">
+ <field name="name">sales.order.fulfillment.v2.tree</field>
+ <field name="model">sales.order.fulfillment.v2</field>
+ <field name="arch" type="xml">
+ <tree editable="top" create="false">
+ <field name="product_id" readonly="1" />
+ <field name="so_qty" readonly="1" optional="show" />
+ <field name="reserved_stock_qty" readonly="1" optional="show" />
+ <field name="delivered_qty" readonly="1" optional="hide" />
+ <field name="po_ids" widget="many2many_tags" readonly="1" optional="show" />
+ <field name="po_qty" readonly="1" optional="show" />
+ <field name="received_qty" readonly="1" optional="show" />
+ <field name="purchaser" readonly="1" optional="hide" />
+ </tree>
+ </field>
+ </record>
<data>
<record id="sales_order_fullfillmet_tree" model="ir.ui.view">
<field name="name">sales.order.fullfillment.tree</field>
<field name="model">sales.order.fullfillment</field>
<field name="arch" type="xml">
<tree editable="top" create="false">
- <field name="product_id" readonly="1"/>
- <field name="reserved_from" readonly="1"/>
- <field name="qty_fullfillment" readonly="1"/>
- <field name="user_id" readonly="1"/>
+ <field name="product_id" readonly="1" />
+ <field name="reserved_from" readonly="1" />
+ <field name="qty_fullfillment" readonly="1" />
+ <field name="user_id" readonly="1" />
</tree>
</field>
</record>
@@ -481,9 +567,9 @@
<field name="model">sales.order.reject</field>
<field name="arch" type="xml">
<tree editable="top" create="false">
- <field name="product_id" readonly="1"/>
- <field name="qty_reject" readonly="1"/>
- <field name="reason_reject" readonly="1"/>
+ <field name="product_id" readonly="1" />
+ <field name="qty_reject" readonly="1" />
+ <field name="reason_reject" readonly="1" />
</tree>
</field>
</record>
@@ -492,8 +578,8 @@
<data>
<record id="sale_order_multi_create_uangmuka_ir_actions_server" model="ir.actions.server">
<field name="name">Uang Muka</field>
- <field name="model_id" ref="sale.model_sale_order"/>
- <field name="binding_model_id" ref="sale.model_sale_order"/>
+ <field name="model_id" ref="sale.model_sale_order" />
+ <field name="binding_model_id" ref="sale.model_sale_order" />
<field name="state">code</field>
<field name="code">action = records.open_form_multi_create_uang_muka()</field>
</record>
@@ -502,66 +588,84 @@
<data>
<record id="mail_template_sale_order_notification_to_salesperson" model="mail.template">
<field name="name">Sale Order: Notification to Salesperson</field>
- <field name="model_id" ref="sale.model_sale_order"/>
+ <field name="model_id" ref="sale.model_sale_order" />
<field name="subject">Konsolidasi Pengiriman</field>
<field name="email_from">sales@indoteknik.com</field>
<field name="email_to">${object.user_id.login | safe}</field>
<field name="body_html" type="html">
- <table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
- <tr><td align="center">
- <table border="0" cellpadding="0" cellspacing="0" width="590" style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
- <!-- HEADER -->
- <tbody>
- <tr>
- <td align="center" style="min-width: 590px;">
- <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
- <tr>
- <td valign="middle">
- <span></span>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <!-- CONTENT -->
- <tr>
- <td align="center" style="min-width: 590px;">
- <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
- <tr><td style="padding-bottom: 24px;">Dear ${salesperson_name},</td></tr>
-
- <tr><td style="padding-bottom: 16px;">Terdapat pesanan dari BP ${business_partner} untuk site ${site} dengan total belanja ${sum_total_amount} dari list SO dibawah ini:</td></tr>
-
- <tr>
- <td>
- <table border="1" cellpadding="5" cellspacing="0">
- <thead>
- <tr>
- <th>Nama Pesanan</th>
- <th>Nama Perusahaan Induk</th>
- <th>Nama Situs</th>
- <th>Total Pembelian</th>
- </tr>
- </thead>
- <tbody>
- ${table_content}
- </tbody>
- </table>
- </td>
- </tr>
-
- <tr>
- <td style="text-align:center;">
- <hr width="100%"
- style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <!-- CONTENT -->
- </tbody>
- </table>
- </td></tr>
+ <table border="0" cellpadding="0" cellspacing="0"
+ style="padding-top: 16px; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
+ <tr>
+ <td align="center">
+ <table border="0" cellpadding="0" cellspacing="0" width="590"
+ style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
+ <!-- HEADER -->
+ <tbody>
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0"
+ width="590"
+ style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr>
+ <td valign="middle">
+ <span></span>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0"
+ width="590"
+ style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr>
+ <td style="padding-bottom: 24px;">Dear
+ ${salesperson_name},</td>
+ </tr>
+
+ <tr>
+ <td style="padding-bottom: 16px;">Terdapat
+ pesanan dari BP ${business_partner} untuk
+ site ${site} dengan total belanja
+ ${sum_total_amount} dari list SO dibawah
+ ini:</td>
+ </tr>
+
+ <tr>
+ <td>
+ <table border="1" cellpadding="5"
+ cellspacing="0">
+ <thead>
+ <tr>
+ <th>Nama Pesanan</th>
+ <th>Nama Perusahaan Induk</th>
+ <th>Nama Situs</th>
+ <th>Total Pembelian</th>
+ </tr>
+ </thead>
+ <tbody>
+ ${table_content}
+ </tbody>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td style="text-align:center;">
+ <hr width="100%"
+ style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ </tbody>
+ </table>
+ </td>
+ </tr>
</table>
</field>
</record>