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))
Beispiel #2
0
	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)
Beispiel #3
0
    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,
        )
Beispiel #4
0
	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
Beispiel #7
0
	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
Beispiel #8
0
    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
Beispiel #9
0
	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
Beispiel #10
0
	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