summaryrefslogtreecommitdiff
path: root/indoteknik_custom
diff options
context:
space:
mode:
authorHafidBuroiroh <hafidburoiroh09@gmail.com>2026-03-09 09:12:11 +0700
committerHafidBuroiroh <hafidburoiroh09@gmail.com>2026-03-09 09:12:11 +0700
commitd91af3da1edea3c6b8074726e5306ea42a7c0a4b (patch)
treea6151be9861950b004851db6cc69159b3a101a93 /indoteknik_custom
parentf687d197ead268040d7f396eb26ea0035a6dac35 (diff)
parenta637972fca56a9f2e62636f7639cf27de033b248 (diff)
Merge branch 'odoo-backup' of https://bitbucket.org/altafixco/indoteknik-addons into CR/Sourcing-Job
Diffstat (limited to 'indoteknik_custom')
-rw-r--r--indoteknik_custom/models/account_asset.py119
-rw-r--r--indoteknik_custom/models/account_move.py49
-rw-r--r--indoteknik_custom/models/commision.py2
-rwxr-xr-xindoteknik_custom/models/purchase_order.py6
-rw-r--r--indoteknik_custom/models/refund_sale_order.py14
-rwxr-xr-xindoteknik_custom/models/sale_order.py44
-rw-r--r--indoteknik_custom/models/tukar_guling_po.py2
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv2
-rw-r--r--indoteknik_custom/views/account_move.xml42
-rw-r--r--indoteknik_custom/views/account_move_line.xml43
-rw-r--r--indoteknik_custom/views/mail_template_efaktur.xml2
-rwxr-xr-xindoteknik_custom/views/purchase_order.xml1
-rw-r--r--indoteknik_custom/views/purchasing_job.xml24
13 files changed, 311 insertions, 39 deletions
diff --git a/indoteknik_custom/models/account_asset.py b/indoteknik_custom/models/account_asset.py
index 211ab229..dbcb6ba4 100644
--- a/indoteknik_custom/models/account_asset.py
+++ b/indoteknik_custom/models/account_asset.py
@@ -1,5 +1,7 @@
from odoo import fields, models, api, _
from odoo.exceptions import AccessError, UserError, ValidationError
+from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF
+from odoo.tools import float_compare, float_is_zero
class AccountAsset(models.Model):
@@ -14,3 +16,120 @@ class AccountAsset(models.Model):
if asset.value > 0:
raise UserError("Asset masih mempunyai Value")
asset.state = 'close'
+
+
+class AccountAssetDepreciationLine(models.Model):
+ _inherit = 'account.asset.depreciation.line'
+
+ def create_move(self, post_move=True):
+ created_moves = self.env['account.move']
+ prec = self.env['decimal.precision'].precision_get('Account')
+ if self.mapped('move_id'):
+ raise UserError(_(
+ 'This depreciation is already linked to a journal entry! Please post or delete it.'))
+ for line in self:
+ category_id = line.asset_id.category_id
+ depreciation_date = self.env.context.get(
+ 'depreciation_date') or line.depreciation_date or fields.Date.context_today(
+ self)
+ company_currency = line.asset_id.company_id.currency_id
+ current_currency = line.asset_id.currency_id
+ amount = current_currency.with_context(
+ date=depreciation_date).compute(line.amount, company_currency)
+ asset_name = line.asset_id.name + ' (%s/%s)' % (
+ line.sequence, len(line.asset_id.depreciation_line_ids))
+ partner = self.env['res.partner']._find_accounting_partner(
+ line.asset_id.partner_id)
+ move_line_1 = {
+ 'name': asset_name,
+ 'account_id': category_id.account_depreciation_id.id,
+ 'debit': 0.0 if float_compare(amount, 0.0,
+ precision_digits=prec) > 0 else -amount,
+ 'credit': amount if float_compare(amount, 0.0,
+ precision_digits=prec) > 0 else 0.0,
+ 'journal_id': category_id.journal_id.id,
+ 'partner_id': partner.id,
+ 'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'sale' else False,
+ 'currency_id': company_currency != current_currency and current_currency.id or False,
+ 'amount_currency': company_currency != current_currency and - 1.0 * line.amount or 0.0,
+ }
+ move_line_2 = {
+ 'name': asset_name,
+ 'account_id': category_id.account_depreciation_expense_id.id,
+ 'credit': 0.0 if float_compare(amount, 0.0,
+ precision_digits=prec) > 0 else -amount,
+ 'debit': amount if float_compare(amount, 0.0,
+ precision_digits=prec) > 0 else 0.0,
+ 'journal_id': category_id.journal_id.id,
+ 'partner_id': partner.id,
+ 'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'purchase' else False,
+ 'currency_id': company_currency != current_currency and current_currency.id or False,
+ 'amount_currency': company_currency != current_currency and line.amount or 0.0,
+ }
+ move_vals = {
+ 'ref': line.asset_id.code,
+ 'date': depreciation_date or False,
+ 'journal_id': category_id.journal_id.id,
+ 'line_ids': [(0, 0, move_line_1), (0, 0, move_line_2)],
+ }
+ move = self.env['account.move'].create(move_vals)
+ line.write({'move_id': move.id, 'move_check': True})
+ created_moves |= move
+
+ if post_move and created_moves:
+ created_moves.filtered(lambda m: any(
+ m.asset_depreciation_ids.mapped(
+ 'asset_id.category_id.open_asset'))).post()
+
+ for move in created_moves:
+ move.action_post()
+ return [x.id for x in created_moves]
+
+ def create_grouped_move(self, post_move=True):
+ if not self.exists():
+ return []
+
+ created_moves = self.env['account.move']
+ category_id = self[
+ 0].asset_id.category_id # we can suppose that all lines have the same category
+ depreciation_date = self.env.context.get(
+ 'depreciation_date') or fields.Date.context_today(self)
+ amount = 0.0
+ for line in self:
+ # Sum amount of all depreciation lines
+ company_currency = line.asset_id.company_id.currency_id
+ current_currency = line.asset_id.currency_id
+ amount += current_currency.compute(line.amount, company_currency)
+
+ name = category_id.name + _(' (grouped)')
+ move_line_1 = {
+ 'name': name,
+ 'account_id': category_id.account_depreciation_id.id,
+ 'debit': 0.0,
+ 'credit': amount,
+ 'journal_id': category_id.journal_id.id,
+ 'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'sale' else False,
+ }
+ move_line_2 = {
+ 'name': name,
+ 'account_id': category_id.account_depreciation_expense_id.id,
+ 'credit': 0.0,
+ 'debit': amount,
+ 'journal_id': category_id.journal_id.id,
+ 'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'purchase' else False,
+ }
+ move_vals = {
+ 'ref': category_id.name,
+ 'date': depreciation_date or False,
+ 'journal_id': category_id.journal_id.id,
+ 'line_ids': [(0, 0, move_line_1), (0, 0, move_line_2)],
+ }
+ move = self.env['account.move'].create(move_vals)
+ self.write({'move_id': move.id, 'move_check': True})
+ created_moves |= move
+
+ if post_move and created_moves:
+ self.post_lines_and_close_asset()
+ created_moves.post()
+ created_moves.action_post()
+ return [x.id for x in created_moves] \ No newline at end of file
diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py
index 42467b78..723f225c 100644
--- a/indoteknik_custom/models/account_move.py
+++ b/indoteknik_custom/models/account_move.py
@@ -601,6 +601,7 @@ class AccountMove(models.Model):
template.send_mail(record.id, email_values=email_values, force_send=True)
elif record.partner_id.id in special_partner_ids:
+ cust_ref = record.sale_id.client_order_ref if record.sale_id and record.sale_id.client_order_ref else ''
attachment = self.generate_attachment(record)
email_list = [record.partner_id.email] if record.partner_id.email else []
if record.real_invoice_id and record.real_invoice_id.email:
@@ -610,7 +611,7 @@ class AccountMove(models.Model):
'email_to': ",".join(set(email_list)),
'attachment_ids': [(4, attachment.id)]
}
- template.send_mail(record.id, email_values=email_values, force_send=True)
+ template.with_context(cust_ref=cust_ref).send_mail(record.id, email_values=email_values, force_send=True)
# @api.model
# def create(self, vals):
@@ -785,6 +786,24 @@ class AccountMove(models.Model):
if rec.statement_line_id and not rec.statement_line_id.statement_id.is_edit and rec.statement_line_id.statement_id.state == 'confirm':
raise UserError('Bank Statement di Lock, Minta admin reconcile untuk unlock')
return res
+
+ def action_open_change_date_wizard(self):
+ if not self.env.user.is_accounting:
+ raise UserError('Hanya Accounting yang bisa edit tanggal journal entry')
+ non_draft = self.filtered(lambda m: m.state != 'draft')
+ if non_draft:
+ raise UserError('Hanya invoice dengan status draft yang bisa diubah tanggalnya. Mohon reset ke draft terlebih dahulu.')
+ return{
+ 'name': 'Change Date Journal Entry',
+ 'type': 'ir.actions.act_window',
+ 'view_mode': 'form',
+ 'res_model': 'account.move.change.date.wizard',
+ 'target': 'new',
+ 'context':{
+ 'active_ids': self.ids,
+ 'active_model': self._name,
+ }
+ }
def action_post(self):
if self._name != 'account.move':
@@ -996,3 +1015,31 @@ class SyncPromiseDateWizardLine(models.TransientModel):
date_terima_tukar_faktur = fields.Date(related="invoice_id.date_terima_tukar_faktur", string="Tanggal Terima Tukar Faktur", readonly=True)
amount_total = fields.Monetary(related="invoice_id.amount_total", string="Total", readonly=True)
currency_id = fields.Many2one(related="invoice_id.currency_id", readonly=True)
+
+class AccountMoveChangeDateWizard(models.TransientModel):
+ _name = "account.move.change.date.wizard"
+ _description = "Account Move Change Date Wizard"
+
+ # move_id = fields.Many2one('account.move', string="Journal Entry", required=True)
+ new_date = fields.Date(string="New Date", required=True)
+
+ def action_change_date(self):
+ if not self.env.user.is_accounting:
+ raise UserError('Hanya Accounting yang bisa ubah tanggal')
+
+ active_ids = self.env.context.get('active_ids', [])
+ moves = self.env['account.move'].browse(active_ids)
+
+ if not moves:
+ raise UserError("Tidak ada journal entry yang dipilih.")
+
+ non_draft_moves = moves.filtered(lambda m: m.state != 'draft')
+ if non_draft_moves:
+ raise UserError("Hanya journal entry dengan status 'Draft' yang dapat diubah tanggalnya.")
+
+ for move in moves:
+ move.write({'date': self.new_date})
+ move.message_post(body="Tanggal berhasil diubah")
+
+ return {'type': 'ir.actions.act_window_close'}
+ \ No newline at end of file
diff --git a/indoteknik_custom/models/commision.py b/indoteknik_custom/models/commision.py
index 983c07fe..afd36bc7 100644
--- a/indoteknik_custom/models/commision.py
+++ b/indoteknik_custom/models/commision.py
@@ -443,7 +443,7 @@ class CustomerCommision(models.Model):
self.approved_by = (self.approved_by + ', ' if self.approved_by else '') + self.env.user.name
self.date_approved_pimpinan = now_naive
self.position_pimpinan = 'Pimpinan'
- elif self.status == 'pengajuan4' and (self.env.user.id == 1272 or self.env.user.has_group('indoteknik_custom.group_role_it')):
+ elif self.status == 'pengajuan4' and (self.env.user.id in [1272,14075,571] or self.env.user.has_group('indoteknik_custom.group_role_it')):
for line in self.commision_lines:
line.invoice_id.is_customer_commision = True
if self.commision_type == 'fee':
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py
index a345b96b..244575ae 100755
--- a/indoteknik_custom/models/purchase_order.py
+++ b/indoteknik_custom/models/purchase_order.py
@@ -1446,8 +1446,8 @@ class PurchaseOrder(models.Model):
send_email = True
break
- if self.partner_id.id == 5571 and not self.revisi_po:
- self.action_create_order_altama()
+ # if self.partner_id.id == 5571 and not self.revisi_po:
+ # self.action_create_order_altama()
if send_email:
if self.is_local_env():
@@ -1484,6 +1484,8 @@ class PurchaseOrder(models.Model):
# if len(self) == 1:
# _logger.info("Redirecting ke BU")
# return self.action_view_related_bu()
+ if self.partner_id.id == 5571 and not self.revisi_po:
+ self.action_create_order_altama()
return res
diff --git a/indoteknik_custom/models/refund_sale_order.py b/indoteknik_custom/models/refund_sale_order.py
index 4c3ca52e..6acd0b59 100644
--- a/indoteknik_custom/models/refund_sale_order.py
+++ b/indoteknik_custom/models/refund_sale_order.py
@@ -680,6 +680,20 @@ class RefundSaleOrder(models.Model):
('journal_id', '=', 13),
('state', '=', 'posted'),
])
+ if rec.sale_order_ids:
+ so_records = rec.sale_order_ids
+ so_names = so_records.mapped('name')
+ domain = [
+ ('journal_id', '=', 13),
+ ('state', '=', 'posted'),
+ ('sale_id', '=', False),
+ ('ref', 'ilike', 'selisih'),
+ ]
+ domain += ['|'] * (len(so_names) - 1)
+ for name in so_names:
+ domain.append(('ref', 'ilike', name))
+
+ misc = self.env['account.move'].search(domain)
moves_ongkir = self.env['account.move']
if rec.sale_order_ids:
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 92efa3bd..031007ae 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -156,7 +156,7 @@ class SaleOrder(models.Model):
total_margin_excl_third_party = fields.Float('Before Margin', help="Before Margin in Sales Order Header")
approval_status = fields.Selection([
- ('pengajuan0', 'Approval Team Sales'),
+ ('pengajuan0', 'Approval Leader Team Sales'),
('pengajuan1', 'Approval Manager'),
('pengajuan2', 'Approval Pimpinan'),
('approved', 'Approved'),
@@ -2391,12 +2391,15 @@ class SaleOrder(models.Model):
self.check_credit_limit()
self.check_limit_so_to_invoice()
order.approval_status = 'pengajuan0'
- order.message_post(body="Mengajukan approval ke Team Sales_")
+ order.message_post(body="Mengajukan approval ke Leader Team Sales_")
+ return self._create_approval_notification('Team Sales')
+ elif order._requires_approval_team_sales():
+ self.check_product_bom()
+ self.check_credit_limit()
+ self.check_limit_so_to_invoice()
+ order.approval_status = 'pengajuan0'
+ order.message_post(body="Mengajukan approval ke Leader Team Sales")
return self._create_approval_notification('Team Sales')
- elif order._requires_approval_margin_leader():
- order.approval_status = 'pengajuan2'
- order.message_post(body="Mengajukan approval ke Pimpinan")
- return self._create_approval_notification('Pimpinan')
elif order._requires_approval_margin_manager():
self.check_product_bom()
self.check_credit_limit()
@@ -2404,13 +2407,11 @@ class SaleOrder(models.Model):
order.approval_status = 'pengajuan1'
order.message_post(body="Mengajukan approval ke Sales Manager")
return self._create_approval_notification('Sales Manager')
- elif order._requires_approval_team_sales():
- self.check_product_bom()
- self.check_credit_limit()
- self.check_limit_so_to_invoice()
- order.approval_status = 'pengajuan0'
- order.message_post(body="Mengajukan approval ke Team Sales")
- return self._create_approval_notification('Team Sales')
+ elif order._requires_approval_margin_leader():
+ order.approval_status = 'pengajuan2'
+ order.message_post(body="Mengajukan approval ke Pimpinan")
+ return self._create_approval_notification('Pimpinan')
+
# elif value_trigger:
# self.check_product_bom()
# self.check_credit_limit()
@@ -2685,18 +2686,19 @@ class SaleOrder(models.Model):
value_trigger = order._requires_approval_by_value()
if value_trigger:
order.approval_status = 'pengajuan0'
- order.message_post(body="Mengajukan approval ke Team Sales")
+ order.message_post(body="Mengajukan approval ke Leader Team Sales")
return self._create_approval_notification('Team Sales')
- elif order._requires_approval_margin_leader():
- order.approval_status = 'pengajuan2'
- return self._create_approval_notification('Pimpinan')
- elif order._requires_approval_margin_manager():
- order.approval_status = 'pengajuan1'
- return self._create_approval_notification('Sales Manager')
elif value_trigger or order._requires_approval_team_sales():
order.approval_status = 'pengajuan0'
- order.message_post(body="Mengajukan approval ke Team Sales")
+ order.message_post(body="Mengajukan approval ke Leader Team Sales")
return self._create_approval_notification('Team Sales')
+ elif order._requires_approval_margin_manager():
+ order.approval_status = 'pengajuan1'
+ return self._create_approval_notification('Sales Manager')
+ elif order._requires_approval_margin_leader():
+ order.approval_status = 'pengajuan2'
+ return self._create_approval_notification('Pimpinan')
+
# elif value_trigger:
# order.approval_status = 'pengajuan0'
# order.message_post(body="Mengajukan approval ke Team Sales (Total SO > 50jt)")
diff --git a/indoteknik_custom/models/tukar_guling_po.py b/indoteknik_custom/models/tukar_guling_po.py
index 1ee10679..9038dd28 100644
--- a/indoteknik_custom/models/tukar_guling_po.py
+++ b/indoteknik_custom/models/tukar_guling_po.py
@@ -533,7 +533,7 @@ class TukarGulingPO(models.Model):
('state', '=', 'done'),
('picking_type_id.id', '=', 75)
])
- if self.state == 'aproved' and total_put > 0 and put == total_put:
+ if self.state == 'approved' and total_put > 0 and put == total_put:
self.state = 'done'
diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv
index 2a1764f0..b8a1fd6f 100755
--- a/indoteknik_custom/security/ir.model.access.csv
+++ b/indoteknik_custom/security/ir.model.access.csv
@@ -231,3 +231,5 @@ access_sourcing_job_order_line_template_wizard,sourcing.job.order.line.template.
access_sjo_give_wizard_user,sjo.give.wizard user,model_sjo_give_wizard,base.group_user,1,1,1,1
access_sjo_reject_give_wizard_user,sjo.reject.give.wizard user,model_sjo_reject_give_wizard,base.group_user,1,1,1,1
access_token_log,access.token.log,model_token_log,,1,1,1,1
+
+access_account_move_change_date_wizard,access.account.move.change.date.wizard,model_account_move_change_date_wizard,,1,1,1,1
diff --git a/indoteknik_custom/views/account_move.xml b/indoteknik_custom/views/account_move.xml
index c5f9580c..4b9f5316 100644
--- a/indoteknik_custom/views/account_move.xml
+++ b/indoteknik_custom/views/account_move.xml
@@ -218,6 +218,48 @@
<field name="code">action = records.export_faktur_to_xml()</field>
</record>
+ <record id="action_set_to_draft_journal_entry" model="ir.actions.server">
+ <field name="name">Set to Draft</field>
+ <field name="model_id" ref="account.model_account_move" />
+ <field name="binding_model_id" ref="account.model_account_move" />
+ <field name="state">code</field>
+ <field name="code">action = records.button_draft()</field>
+ </record>
+
+ <!-- <record id="action_account_move_change_date_wizard" model="ir.actions.act_window">
+ <field name="name">Change Date</field>
+ <field name="res_model">account.move.change.date.wizard</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ <field name="binding_model_id" ref="account.model_account_move"/>
+ <field name="binding_view_types">list</field>
+ </record> -->
+
+ <record id="action_change_date" model="ir.actions.server">
+ <field name="name">Change Date</field>
+ <field name="model_id" ref="account.model_account_move"/>
+ <field name="binding_model_id" ref="account.model_account_move"/>
+ <field name="state">code</field>
+ <field name="code">action = records.action_open_change_date_wizard()</field>
+ </record>
+
+ <record id="view_account_move_change_date_wizard_form" model="ir.ui.view">
+ <field name="name">account.move.change.date.wizard.form</field>
+ <field name="model">account.move.change.date.wizard</field>
+ <field name="arch" type="xml">
+ <form string="Change Date">
+ <p>Ubah tanggal journal yang dipilih, pastikan untuk memeriksa kembali tanggal yang akan diubah sebelum mengkonfirmasi perubahan.</p>
+ <group>
+ <field name="new_date"/>
+ </group>
+ <footer>
+ <button name="action_change_date" string="Confirm" type="object" class="btn-primary"/>
+ <button string="Cancel" class="btn-secondary" special="cancel"/>
+ </footer>
+ </form>
+ </field>
+ </record>
+
<record id="view_sync_promise_date_wizard_form" model="ir.ui.view">
<field name="name">sync.promise.date.wizard.form</field>
<field name="model">sync.promise.date.wizard</field>
diff --git a/indoteknik_custom/views/account_move_line.xml b/indoteknik_custom/views/account_move_line.xml
index 346494f3..1e4b258e 100644
--- a/indoteknik_custom/views/account_move_line.xml
+++ b/indoteknik_custom/views/account_move_line.xml
@@ -24,6 +24,49 @@
</xpath>
</field>
</record>
+ <record id="view_move_line_tree_grouped_partner_inherit" model="ir.ui.view">
+ <field name="name">account.move.line.tree.grouped.partner.inherit</field>
+ <field name="model">account.move.line</field>
+ <field name="inherit_id" ref="account.view_move_line_tree_grouped"/>
+ <field name="arch" type="xml">
+ <xpath expr="//field[@name='analytic_tag_ids']" position="replace">
+ <field name="analytic_tag_ids"
+ widget="many2many_tags"
+ optional="hide"/>
+ </xpath>
+ </field>
+ </record>
+
+ <record id="view_account_move_line_filter_inherit" model="ir.ui.view">
+ <field name="name">account.move.line.filter.inherit</field>
+ <field name="model">account.move.line</field>
+ <field name="inherit_id" ref="account.view_account_move_line_filter"/>
+ <field name="arch" type="xml">
+ <xpath expr="//search" position="inside">
+ <field name="analytic_tag_ids"
+ string="Analytic Tag"
+ filter_domain="[('analytic_tag_ids.name','ilike', self)]"/>
+ </xpath>
+ <!-- <xpath expr="//search" position="inside">
+ <field name="analytic_account_id"
+ string="Analytic Account"
+ filter_domain="[('analytic_account_id.name','ilike', self)]"/>
+
+ </xpath>
+ <xpath expr="//search/group" position="inside">
+ <filter string="Analytic Tag"
+ name="group_by_analytic_tag"
+ domain="[]"
+ context="{'group_by': 'analytic_tag_ids'}"/>
+ </xpath>
+ <xpath expr="//search/group" position="inside">
+ <filter string="Analytic Account"
+ name="group_by_analytic_account"
+ domain="[]"
+ context="{'group_by': 'analytic_account_id'}"/>
+ </xpath> -->
+ </field>
+ </record>
</data>
<data>
<record id="action_gl_reconcile_server" model="ir.actions.server">
diff --git a/indoteknik_custom/views/mail_template_efaktur.xml b/indoteknik_custom/views/mail_template_efaktur.xml
index b0637691..ea473364 100644
--- a/indoteknik_custom/views/mail_template_efaktur.xml
+++ b/indoteknik_custom/views/mail_template_efaktur.xml
@@ -11,7 +11,7 @@
<field name="email_to">${object.partner_id.email|safe}</field>
<field name="body_html" type="html">
<p>Dengan Hormat Bpk/Ibu ${object.partner_id.name},</p>
- <p>Terlampir Faktur Pajak atas Invoice ${object.name}.</p>
+ <p>Terlampir Faktur Pajak atas Invoice ${object.name}${ ' (%s)' % ctx.get('cust_ref') if ctx.get('cust_ref') else '' }</p>
<p><strong>Keterangan:</strong></p>
<p>Mohon dicek langsung faktur pajak terlampir, terutama informasi nomor NPWP dan alamat NPWP serta nama pembelian barang. Jika ada yang tidak sesuai, mohon segera menginformasikan kepada kami paling lambat 1 (satu) minggu dari tanggal email ini. Revisi faktur pajak tidak dapat kami proses apabila sudah melewati 1 (satu) minggu. Harap maklum.</p>
<p>Mohon balas email ini jika sudah menerima, terima kasih.</p>
diff --git a/indoteknik_custom/views/purchase_order.xml b/indoteknik_custom/views/purchase_order.xml
index 9651cdd6..581690a1 100755
--- a/indoteknik_custom/views/purchase_order.xml
+++ b/indoteknik_custom/views/purchase_order.xml
@@ -51,6 +51,7 @@
string="Create Order Altama"
class="oe_highlight"
icon="fa-cloud-upload"
+ confirm="Yakin ingin Membuat PO ini ke Altama?"
attrs="{'invisible': [('partner_id', '!=', 5571)]}"
/>
<button name="action_get_order_altama"
diff --git a/indoteknik_custom/views/purchasing_job.xml b/indoteknik_custom/views/purchasing_job.xml
index 8e1eb3b6..16fbb01a 100644
--- a/indoteknik_custom/views/purchasing_job.xml
+++ b/indoteknik_custom/views/purchasing_job.xml
@@ -7,20 +7,20 @@
<tree decoration-info="(check_pj == False)" create="false" multi_edit="1">
<field name="product_id"/>
<field name="vendor_id"/>
- <field name="purchase_representative_id"/>
- <field name="brand"/>
- <field name="item_code"/>
- <field name="product"/>
- <field name="onhand"/>
- <field name="incoming"/>
- <field name="outgoing"/>
- <field name="status_apo" invisible="1"/>
- <field name="action"/>
+ <field name="purchase_representative_id" optional="hide"/>
+ <field name="brand" optional="hide"/>
+ <field name="item_code" optional="hide"/>
+ <field name="product" optional="hide"/>
+ <field name="onhand" optional="hide"/>
+ <field name="incoming" optional="hide"/>
+ <field name="outgoing" optional="hide"/>
+ <field name="status_apo" optional="hide" invisible="1"/>
+ <field name="action" optional="hide"/>
<field name="note" optional="hide"/>
- <field name="note_detail"/>
+ <field name="note_detail" optional="hide"/>
<field name="date_po" optional="hide"/>
- <field name="so_number"/>
- <field name="check_pj" invisible="1"/>
+ <field name="so_number" optional="hide"/>
+ <field name="check_pj" optional="hide" invisible="1"/>
<button name="action_open_job_detail"
string="📄"
type="object"