feat: update billed amount in PO and PR

(cherry picked from commit 9f6535472d)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
This commit is contained in:
Gursheen Anand
2024-02-25 11:59:44 +05:30
committed by Mergify
parent 317738dc36
commit 019d8f92fe
2 changed files with 206 additions and 0 deletions

View File

@@ -22,6 +22,8 @@
"is_paid",
"is_return",
"return_against",
"update_billed_amount_in_purchase_order",
"update_billed_amount_in_purchase_receipt",
"apply_tds",
"tax_withholding_category",
"amended_from",
@@ -410,6 +412,20 @@
"read_only": 1,
"search_index": 1
},
{
"default": "0",
"depends_on": "eval: doc.is_return",
"fieldname": "update_billed_amount_in_purchase_order",
"fieldtype": "Check",
"label": "Update Billed Amount in Purchase Order"
},
{
"default": "1",
"depends_on": "eval: doc.is_return",
"fieldname": "update_billed_amount_in_purchase_receipt",
"fieldtype": "Check",
"label": "Update Billed Amount in Purchase Receipt"
},
{
"fieldname": "section_addresses",
"fieldtype": "Section Break",
@@ -1594,7 +1610,11 @@
"idx": 204,
"is_submittable": 1,
"links": [],
<<<<<<< HEAD
"modified": "2023-11-03 15:47:30.319200",
=======
"modified": "2024-02-25 11:20:28.366808",
>>>>>>> 9f6535472d (feat: update billed amount in PO and PR)
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice",

View File

@@ -54,6 +54,180 @@ form_grid_templates = {"items": "templates/form_grid/item_grid.html"}
class PurchaseInvoice(BuyingController):
<<<<<<< HEAD
=======
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.advance_tax.advance_tax import AdvanceTax
from erpnext.accounts.doctype.payment_schedule.payment_schedule import PaymentSchedule
from erpnext.accounts.doctype.pricing_rule_detail.pricing_rule_detail import PricingRuleDetail
from erpnext.accounts.doctype.purchase_invoice_advance.purchase_invoice_advance import (
PurchaseInvoiceAdvance,
)
from erpnext.accounts.doctype.purchase_invoice_item.purchase_invoice_item import (
PurchaseInvoiceItem,
)
from erpnext.accounts.doctype.purchase_taxes_and_charges.purchase_taxes_and_charges import (
PurchaseTaxesandCharges,
)
from erpnext.accounts.doctype.tax_withheld_vouchers.tax_withheld_vouchers import (
TaxWithheldVouchers,
)
from erpnext.buying.doctype.purchase_receipt_item_supplied.purchase_receipt_item_supplied import (
PurchaseReceiptItemSupplied,
)
additional_discount_percentage: DF.Float
address_display: DF.SmallText | None
advance_tax: DF.Table[AdvanceTax]
advances: DF.Table[PurchaseInvoiceAdvance]
against_expense_account: DF.SmallText | None
allocate_advances_automatically: DF.Check
amended_from: DF.Link | None
apply_discount_on: DF.Literal["", "Grand Total", "Net Total"]
apply_tds: DF.Check
auto_repeat: DF.Link | None
base_discount_amount: DF.Currency
base_grand_total: DF.Currency
base_in_words: DF.Data | None
base_net_total: DF.Currency
base_paid_amount: DF.Currency
base_rounded_total: DF.Currency
base_rounding_adjustment: DF.Currency
base_tax_withholding_net_total: DF.Currency
base_taxes_and_charges_added: DF.Currency
base_taxes_and_charges_deducted: DF.Currency
base_total: DF.Currency
base_total_taxes_and_charges: DF.Currency
base_write_off_amount: DF.Currency
bill_date: DF.Date | None
bill_no: DF.Data | None
billing_address: DF.Link | None
billing_address_display: DF.SmallText | None
buying_price_list: DF.Link | None
cash_bank_account: DF.Link | None
clearance_date: DF.Date | None
company: DF.Link | None
contact_display: DF.SmallText | None
contact_email: DF.SmallText | None
contact_mobile: DF.SmallText | None
contact_person: DF.Link | None
conversion_rate: DF.Float
cost_center: DF.Link | None
credit_to: DF.Link
currency: DF.Link | None
disable_rounded_total: DF.Check
discount_amount: DF.Currency
due_date: DF.Date | None
from_date: DF.Date | None
grand_total: DF.Currency
group_same_items: DF.Check
hold_comment: DF.SmallText | None
ignore_default_payment_terms_template: DF.Check
ignore_pricing_rule: DF.Check
in_words: DF.Data | None
incoterm: DF.Link | None
inter_company_invoice_reference: DF.Link | None
is_internal_supplier: DF.Check
is_old_subcontracting_flow: DF.Check
is_opening: DF.Literal["No", "Yes"]
is_paid: DF.Check
is_return: DF.Check
is_subcontracted: DF.Check
items: DF.Table[PurchaseInvoiceItem]
language: DF.Data | None
letter_head: DF.Link | None
mode_of_payment: DF.Link | None
named_place: DF.Data | None
naming_series: DF.Literal["ACC-PINV-.YYYY.-", "ACC-PINV-RET-.YYYY.-"]
net_total: DF.Currency
on_hold: DF.Check
only_include_allocated_payments: DF.Check
other_charges_calculation: DF.LongText | None
outstanding_amount: DF.Currency
paid_amount: DF.Currency
party_account_currency: DF.Link | None
payment_schedule: DF.Table[PaymentSchedule]
payment_terms_template: DF.Link | None
per_received: DF.Percent
plc_conversion_rate: DF.Float
posting_date: DF.Date
posting_time: DF.Time | None
price_list_currency: DF.Link | None
pricing_rules: DF.Table[PricingRuleDetail]
project: DF.Link | None
rejected_warehouse: DF.Link | None
release_date: DF.Date | None
remarks: DF.SmallText | None
repost_required: DF.Check
represents_company: DF.Link | None
return_against: DF.Link | None
rounded_total: DF.Currency
rounding_adjustment: DF.Currency
scan_barcode: DF.Data | None
select_print_heading: DF.Link | None
set_from_warehouse: DF.Link | None
set_posting_time: DF.Check
set_warehouse: DF.Link | None
shipping_address: DF.Link | None
shipping_address_display: DF.SmallText | None
shipping_rule: DF.Link | None
status: DF.Literal[
"",
"Draft",
"Return",
"Debit Note Issued",
"Submitted",
"Paid",
"Partly Paid",
"Unpaid",
"Overdue",
"Cancelled",
"Internal Transfer",
]
subscription: DF.Link | None
supplied_items: DF.Table[PurchaseReceiptItemSupplied]
supplier: DF.Link
supplier_address: DF.Link | None
supplier_group: DF.Link | None
supplier_name: DF.Data | None
supplier_warehouse: DF.Link | None
tax_category: DF.Link | None
tax_id: DF.ReadOnly | None
tax_withheld_vouchers: DF.Table[TaxWithheldVouchers]
tax_withholding_category: DF.Link | None
tax_withholding_net_total: DF.Currency
taxes: DF.Table[PurchaseTaxesandCharges]
taxes_and_charges: DF.Link | None
taxes_and_charges_added: DF.Currency
taxes_and_charges_deducted: DF.Currency
tc_name: DF.Link | None
terms: DF.TextEditor | None
title: DF.Data | None
to_date: DF.Date | None
total: DF.Currency
total_advance: DF.Currency
total_net_weight: DF.Float
total_qty: DF.Float
total_taxes_and_charges: DF.Currency
unrealized_profit_loss_account: DF.Link | None
update_billed_amount_in_purchase_order: DF.Check
update_billed_amount_in_purchase_receipt: DF.Check
update_stock: DF.Check
use_company_roundoff_cost_center: DF.Check
use_transaction_date_exchange_rate: DF.Check
write_off_account: DF.Link | None
write_off_amount: DF.Currency
write_off_cost_center: DF.Link | None
# end: auto-generated types
>>>>>>> 9f6535472d (feat: update billed amount in PO and PR)
def __init__(self, *args, **kwargs):
super(PurchaseInvoice, self).__init__(*args, **kwargs)
self.status_updater = [
@@ -514,6 +688,11 @@ class PurchaseInvoice(BuyingController):
super(PurchaseInvoice, self).on_submit()
self.check_prev_docstatus()
if self.is_return and not self.update_billed_amount_in_purchase_order:
# NOTE status updating bypassed for is_return
self.status_updater = []
self.update_status_updater_args()
self.update_prevdoc_status()
@@ -1264,6 +1443,10 @@ class PurchaseInvoice(BuyingController):
self.check_on_hold_or_closed_status()
if self.is_return and not self.update_billed_amount_in_purchase_order:
# NOTE status updating bypassed for is_return
self.status_updater = []
self.update_status_updater_args()
self.update_prevdoc_status()
@@ -1357,6 +1540,9 @@ class PurchaseInvoice(BuyingController):
frappe.throw(_("Supplier Invoice No exists in Purchase Invoice {0}").format(pi))
def update_billing_status_in_pr(self, update_modified=True):
if self.is_return and not self.update_billed_amount_in_purchase_receipt:
return
updated_pr = []
po_details = []