def add_lcv_gl_entries(self, item, gl_entries): expenses_included_in_asset_valuation = self.get_company_default( "expenses_included_in_asset_valuation") if not is_cwip_accounting_enabled(item.asset_category): asset_account = get_asset_category_account(asset_category=item.asset_category, \ fieldname='fixed_asset_account', company=self.company) else: # This returns company's default cwip account asset_account = get_asset_account( "capital_work_in_progress_account", company=self.company) gl_entries.append( self.get_gl_dict( { "account": expenses_included_in_asset_valuation, "against": asset_account, "cost_center": item.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "credit": flt(item.landed_cost_voucher_amount), "project": item.project }, item=item)) gl_entries.append( self.get_gl_dict( { "account": asset_account, "against": expenses_included_in_asset_valuation, "cost_center": item.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": flt(item.landed_cost_voucher_amount), "project": item.project }, item=item))
def add_asset_gl_entries(self, item, gl_entries): arbnb_account = self.get_company_default("asset_received_but_not_billed") # This returns category's cwip account if not then fallback to company's default cwip account cwip_account = get_asset_account("capital_work_in_progress_account", asset_category = item.asset_category, \ company = self.company) asset_amount = flt(item.net_amount) + flt(item.item_tax_amount/self.conversion_rate) base_asset_amount = flt(item.base_net_amount + item.item_tax_amount) remarks = self.get("remarks") or _("Accounting Entry for Asset") cwip_account_currency = get_account_currency(cwip_account) # debit cwip account debit_in_account_currency = (base_asset_amount if cwip_account_currency == self.company_currency else asset_amount) self.add_gl_entry( gl_entries=gl_entries, account=cwip_account, cost_center=item.cost_center, debit=base_asset_amount, credit=0.0, remarks=remarks, against_account=arbnb_account, debit_in_account_currency=debit_in_account_currency, item=item) asset_rbnb_currency = get_account_currency(arbnb_account) # credit arbnb account credit_in_account_currency = (base_asset_amount if asset_rbnb_currency == self.company_currency else asset_amount) self.add_gl_entry( gl_entries=gl_entries, account=arbnb_account, cost_center=item.cost_center, debit=0.0, credit=base_asset_amount, remarks=remarks, against_account=cwip_account, credit_in_account_currency=credit_in_account_currency, item=item)
def add_lcv_gl_entries(self, item, gl_entries): expenses_included_in_asset_valuation = self.get_company_default( "expenses_included_in_asset_valuation") if not is_cwip_accounting_enabled(item.asset_category): asset_account = get_asset_category_account( asset_category=item.asset_category, fieldname="fixed_asset_account", company=self.company) else: # This returns company's default cwip account asset_account = get_asset_account( "capital_work_in_progress_account", company=self.company) remarks = self.get("remarks") or _("Accounting Entry for Stock") self.add_gl_entry( gl_entries=gl_entries, account=expenses_included_in_asset_valuation, cost_center=item.cost_center, debit=0.0, credit=flt(item.landed_cost_voucher_amount), remarks=remarks, against_account=asset_account, project=item.project, item=item, ) self.add_gl_entry( gl_entries=gl_entries, account=asset_account, cost_center=item.cost_center, debit=flt(item.landed_cost_voucher_amount), credit=0.0, remarks=remarks, against_account=expenses_included_in_asset_valuation, project=item.project, item=item, )
def get_asset_gl_entry(self, gl_entries): for d in self.get("items"): if d.is_fixed_asset: arbnb_account = self.get_company_default("asset_received_but_not_billed") # CWIP entry cwip_account = get_asset_account("capital_work_in_progress_account", d.asset, company = self.company) asset_amount = flt(d.net_amount) + flt(d.item_tax_amount/self.conversion_rate) base_asset_amount = flt(d.base_net_amount + d.item_tax_amount) cwip_account_currency = get_account_currency(cwip_account) gl_entries.append(self.get_gl_dict({ "account": cwip_account, "against": arbnb_account, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if cwip_account_currency == self.company_currency else asset_amount) })) # Asset received but not billed asset_rbnb_currency = get_account_currency(arbnb_account) gl_entries.append(self.get_gl_dict({ "account": arbnb_account, "against": cwip_account, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "credit": base_asset_amount, "credit_in_account_currency": (base_asset_amount if asset_rbnb_currency == self.company_currency else asset_amount) })) return gl_entries
def get_asset_gl_entry(self, gl_entries): for d in self.get("items"): if d.is_fixed_asset: arbnb_account = self.get_company_default("asset_received_but_not_billed") # CWIP entry cwip_account = get_asset_account("capital_work_in_progress_account", d.asset, company = self.company) asset_amount = flt(d.net_amount) + flt(d.item_tax_amount/self.conversion_rate) base_asset_amount = flt(d.base_net_amount + d.item_tax_amount) cwip_account_currency = get_account_currency(cwip_account) gl_entries.append(self.get_gl_dict({ "account": cwip_account, "against": arbnb_account, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if cwip_account_currency == self.company_currency else asset_amount) })) # Asset received but not billed asset_rbnb_currency = get_account_currency(arbnb_account) gl_entries.append(self.get_gl_dict({ "account": arbnb_account, "against": cwip_account, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "credit": base_asset_amount, "credit_in_account_currency": (base_asset_amount if asset_rbnb_currency == self.company_currency else asset_amount) })) return gl_entries
def get_asset_gl_entry(self, gl_entries): for item in self.get("items"): if item.is_fixed_asset: eiiav_account = self.get_company_default("expenses_included_in_asset_valuation") asset_amount = flt(item.net_amount) + flt(item.item_tax_amount/self.conversion_rate) base_asset_amount = flt(item.base_net_amount + item.item_tax_amount) if (not item.expense_account or frappe.db.get_value('Account', item.expense_account, 'account_type') not in ['Asset Received But Not Billed', 'Fixed Asset']): arbnb_account = self.get_company_default("asset_received_but_not_billed") item.expense_account = arbnb_account if not self.update_stock: asset_rbnb_currency = get_account_currency(item.expense_account) gl_entries.append(self.get_gl_dict({ "account": item.expense_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if asset_rbnb_currency == self.company_currency else asset_amount), "cost_center": item.cost_center })) if item.item_tax_amount: asset_eiiav_currency = get_account_currency(eiiav_account) gl_entries.append(self.get_gl_dict({ "account": eiiav_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "cost_center": item.cost_center, "credit": item.item_tax_amount, "credit_in_account_currency": (item.item_tax_amount if asset_eiiav_currency == self.company_currency else item.item_tax_amount / self.conversion_rate) })) else: cwip_account = get_asset_account("capital_work_in_progress_account", item.asset, company = self.company) cwip_account_currency = get_account_currency(cwip_account) gl_entries.append(self.get_gl_dict({ "account": cwip_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if cwip_account_currency == self.company_currency else asset_amount), "cost_center": self.cost_center })) if item.item_tax_amount and not cint(erpnext.is_perpetual_inventory_enabled(self.company)): asset_eiiav_currency = get_account_currency(eiiav_account) gl_entries.append(self.get_gl_dict({ "account": eiiav_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "cost_center": item.cost_center, "credit": item.item_tax_amount, "credit_in_account_currency": (item.item_tax_amount if asset_eiiav_currency == self.company_currency else item.item_tax_amount / self.conversion_rate) })) return gl_entries
def get_asset_gl_entry(self, gl_entries): arbnb_account = self.get_company_default("asset_received_but_not_billed") eiiav_account = self.get_company_default("expenses_included_in_asset_valuation") for item in self.get("items"): if item.is_fixed_asset: asset_amount = flt(item.net_amount) + flt(item.item_tax_amount/self.conversion_rate) base_asset_amount = flt(item.base_net_amount + item.item_tax_amount) item_exp_acc_type = frappe.db.get_value('Account', item.expense_account, 'account_type') if (not item.expense_account or item_exp_acc_type not in ['Asset Received But Not Billed', 'Fixed Asset']): item.expense_account = arbnb_account if not self.update_stock: arbnb_currency = get_account_currency(item.expense_account) gl_entries.append(self.get_gl_dict({ "account": item.expense_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if arbnb_currency == self.company_currency else asset_amount), "cost_center": item.cost_center, "project": item.project or self.project }, item=item)) if item.item_tax_amount: asset_eiiav_currency = get_account_currency(eiiav_account) gl_entries.append(self.get_gl_dict({ "account": eiiav_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "cost_center": item.cost_center, "project": item.project or self.project, "credit": item.item_tax_amount, "credit_in_account_currency": (item.item_tax_amount if asset_eiiav_currency == self.company_currency else item.item_tax_amount / self.conversion_rate) }, item=item)) else: cwip_account = get_asset_account("capital_work_in_progress_account", company = self.company) cwip_account_currency = get_account_currency(cwip_account) gl_entries.append(self.get_gl_dict({ "account": cwip_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if cwip_account_currency == self.company_currency else asset_amount), "cost_center": self.cost_center, "project": item.project or self.project }, item=item)) if item.item_tax_amount and not cint(erpnext.is_perpetual_inventory_enabled(self.company)): asset_eiiav_currency = get_account_currency(eiiav_account) gl_entries.append(self.get_gl_dict({ "account": eiiav_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "cost_center": item.cost_center, "credit": item.item_tax_amount, "project": item.project or self.project, "credit_in_account_currency": (item.item_tax_amount if asset_eiiav_currency == self.company_currency else item.item_tax_amount / self.conversion_rate) }, item=item)) # When update stock is checked # Assets are bought through this document then it will be linked to this document if self.update_stock: if flt(item.landed_cost_voucher_amount): gl_entries.append(self.get_gl_dict({ "account": eiiav_account, "against": cwip_account, "cost_center": item.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "credit": flt(item.landed_cost_voucher_amount), "project": item.project or self.project }, item=item)) gl_entries.append(self.get_gl_dict({ "account": cwip_account, "against": eiiav_account, "cost_center": item.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": flt(item.landed_cost_voucher_amount), "project": item.project or self.project }, item=item)) # update gross amount of assets bought through this document assets = frappe.db.get_all('Asset', filters={ 'purchase_invoice': self.name, 'item_code': item.item_code } ) for asset in assets: frappe.db.set_value("Asset", asset.name, "gross_purchase_amount", flt(item.valuation_rate)) frappe.db.set_value("Asset", asset.name, "purchase_receipt_amount", flt(item.valuation_rate)) return gl_entries
def get_gl_entries(self): gl_entries = [] repair_and_maintenance_account = frappe.db.get_value( 'Company', self.company, 'repair_and_maintenance_account') fixed_asset_account = get_asset_account("fixed_asset_account", asset=self.asset, company=self.company) expense_account = frappe.get_doc( 'Purchase Invoice', self.purchase_invoice).items[0].expense_account gl_entries.append( self.get_gl_dict( { "account": expense_account, "credit": self.repair_cost, "credit_in_account_currency": self.repair_cost, "against": repair_and_maintenance_account, "voucher_type": self.doctype, "voucher_no": self.name, "cost_center": self.cost_center, "posting_date": getdate(), "company": self.company }, item=self)) if self.get('stock_consumption'): # creating GL Entries for each row in Stock Items based on the Stock Entry created for it stock_entry = frappe.get_doc('Stock Entry', self.stock_entry) for item in stock_entry.items: gl_entries.append( self.get_gl_dict( { "account": item.expense_account, "credit": item.amount, "credit_in_account_currency": item.amount, "against": repair_and_maintenance_account, "voucher_type": self.doctype, "voucher_no": self.name, "cost_center": self.cost_center, "posting_date": getdate(), "company": self.company }, item=self)) gl_entries.append( self.get_gl_dict( { "account": fixed_asset_account, "debit": self.total_repair_cost, "debit_in_account_currency": self.total_repair_cost, "against": expense_account, "voucher_type": self.doctype, "voucher_no": self.name, "cost_center": self.cost_center, "posting_date": getdate(), "against_voucher_type": "Purchase Invoice", "against_voucher": self.purchase_invoice, "company": self.company }, item=self)) return gl_entries
def get_asset_gl_entry(self, gl_entries): for item in self.get("items"): if item.is_fixed_asset: eiiav_account = self.get_company_default("expenses_included_in_asset_valuation") asset_amount = flt(item.net_amount) + flt(item.item_tax_amount/self.conversion_rate) base_asset_amount = flt(item.base_net_amount + item.item_tax_amount) if (not item.expense_account or frappe.db.get_value('Account', item.expense_account, 'account_type') != 'Asset Received But Not Billed'): arbnb_account = self.get_company_default("asset_received_but_not_billed") item.expense_account = arbnb_account if not self.update_stock: asset_rbnb_currency = get_account_currency(item.expense_account) gl_entries.append(self.get_gl_dict({ "account": item.expense_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if asset_rbnb_currency == self.company_currency else asset_amount), "cost_center": item.cost_center })) if item.item_tax_amount: asset_eiiav_currency = get_account_currency(eiiav_account) gl_entries.append(self.get_gl_dict({ "account": eiiav_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "cost_center": item.cost_center, "credit": item.item_tax_amount, "credit_in_account_currency": (item.item_tax_amount if asset_eiiav_currency == self.company_currency else item.item_tax_amount / self.conversion_rate) })) else: cwip_account = get_asset_account("capital_work_in_progress_account", item.asset, company = self.company) cwip_account_currency = get_account_currency(cwip_account) gl_entries.append(self.get_gl_dict({ "account": cwip_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if cwip_account_currency == self.company_currency else asset_amount), "cost_center": self.cost_center })) if item.item_tax_amount and not cint(erpnext.is_perpetual_inventory_enabled(self.company)): asset_eiiav_currency = get_account_currency(eiiav_account) gl_entries.append(self.get_gl_dict({ "account": eiiav_account, "against": self.supplier, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "cost_center": item.cost_center, "credit": item.item_tax_amount, "credit_in_account_currency": (item.item_tax_amount if asset_eiiav_currency == self.company_currency else item.item_tax_amount / self.conversion_rate) })) return gl_entries
def get_asset_gl_entry(self, gl_entries, expenses_included_in_valuation=None): arbnb_account, cwip_account = None, None cwip_disabled = is_cwip_accounting_disabled() if not expenses_included_in_valuation: expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") for d in self.get("items"): if d.is_fixed_asset and not (arbnb_account and cwip_account): arbnb_account = self.get_company_default("asset_received_but_not_billed") # CWIP entry cwip_account = get_asset_account("capital_work_in_progress_account", d.asset, company = self.company) if d.is_fixed_asset and not cwip_disabled: asset_amount = flt(d.net_amount) + flt(d.item_tax_amount/self.conversion_rate) base_asset_amount = flt(d.base_net_amount + d.item_tax_amount) cwip_account_currency = get_account_currency(cwip_account) gl_entries.append(self.get_gl_dict({ "account": cwip_account, "against": arbnb_account, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "debit": base_asset_amount, "debit_in_account_currency": (base_asset_amount if cwip_account_currency == self.company_currency else asset_amount) }, item=d)) # Asset received but not billed asset_rbnb_currency = get_account_currency(arbnb_account) gl_entries.append(self.get_gl_dict({ "account": arbnb_account, "against": cwip_account, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Asset"), "credit": base_asset_amount, "credit_in_account_currency": (base_asset_amount if asset_rbnb_currency == self.company_currency else asset_amount) }, item=d)) if d.is_fixed_asset and flt(d.landed_cost_voucher_amount): asset_account = (get_asset_category_account(d.asset, 'fixed_asset_account', company = self.company) if cwip_disabled else cwip_account) gl_entries.append(self.get_gl_dict({ "account": expenses_included_in_valuation, "against": asset_account, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "credit": flt(d.landed_cost_voucher_amount), "project": d.project }, item=d)) gl_entries.append(self.get_gl_dict({ "account": asset_account, "against": expenses_included_in_valuation, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": flt(d.landed_cost_voucher_amount), "project": d.project }, item=d)) if d.asset: doc = frappe.get_doc("Asset", d.asset) frappe.db.set_value("Asset", d.asset, "gross_purchase_amount", doc.gross_purchase_amount + flt(d.landed_cost_voucher_amount)) frappe.db.set_value("Asset", d.asset, "purchase_receipt_amount", doc.purchase_receipt_amount + flt(d.landed_cost_voucher_amount)) return gl_entries