[perpetual accounting] gl entry: sync stock and account balance
This commit is contained in:
parent
939b1523e9
commit
d47419483e
@ -17,28 +17,22 @@
|
||||
from __future__ import unicode_literals
|
||||
import webnotes
|
||||
from webnotes.utils import cint, flt, cstr
|
||||
from webnotes import msgprint, _
|
||||
import webnotes.defaults
|
||||
|
||||
from controllers.accounts_controller import AccountsController
|
||||
|
||||
class StockController(AccountsController):
|
||||
def get_gl_entries_for_stock(self, against_stock_account, amount=None,
|
||||
stock_in_hand_account=None, cost_center=None, warehouse_list=None):
|
||||
if not cost_center:
|
||||
cost_center = self.get_company_default("stock_adjustment_cost_center")
|
||||
|
||||
acc_diff = {}
|
||||
if warehouse_list:
|
||||
from accounts.utils import get_stock_and_account_difference
|
||||
acc_diff = get_stock_and_account_difference(warehouse_list)
|
||||
elif amount and stock_in_hand_account:
|
||||
acc_diff = {stock_in_hand_account: amount}
|
||||
|
||||
gl_entries = []
|
||||
for account, amount in acc_diff.items():
|
||||
gl_entries += [
|
||||
def get_gl_entries_for_stock(self, against_stock_account, amount, warehouse=None,
|
||||
stock_in_hand_account=None, cost_center=None):
|
||||
if not stock_in_hand_account and warehouse:
|
||||
stock_in_hand_account = webnotes.conn.get_value("Warehouse", warehouse, "account")
|
||||
|
||||
if amount:
|
||||
gl_entries = [
|
||||
# stock in hand account
|
||||
self.get_gl_dict({
|
||||
"account": account,
|
||||
"account": stock_in_hand_account,
|
||||
"against": against_stock_account,
|
||||
"debit": amount,
|
||||
"remarks": self.doc.remarks or "Accounting Entry for Stock",
|
||||
@ -47,16 +41,38 @@ class StockController(AccountsController):
|
||||
# account against stock in hand
|
||||
self.get_gl_dict({
|
||||
"account": against_stock_account,
|
||||
"against": account,
|
||||
"against": stock_in_hand_account,
|
||||
"credit": amount,
|
||||
"cost_center": cost_center or None,
|
||||
"remarks": self.doc.remarks or "Accounting Entry for Stock",
|
||||
}, self.doc.docstatus == 2),
|
||||
]
|
||||
|
||||
return gl_entries
|
||||
return gl_entries
|
||||
|
||||
def sync_stock_account_balance(self, warehouse_list, cost_center=None, posting_date=None):
|
||||
from accounts.utils import get_stock_and_account_difference
|
||||
acc_diff = get_stock_and_account_difference(warehouse_list)
|
||||
|
||||
if not cost_center:
|
||||
cost_center = self.get_company_default("cost_center")
|
||||
|
||||
gl_entries = []
|
||||
for account, diff in acc_diff.items():
|
||||
if diff:
|
||||
stock_adjustment_account = self.get_company_default("stock_adjustment_account")
|
||||
gl_entries += self.get_gl_entries_for_stock(stock_adjustment_account, diff,
|
||||
stock_in_hand_account=account, cost_center=cost_center)
|
||||
|
||||
if gl_entries:
|
||||
from accounts.general_ledger import make_gl_entries
|
||||
|
||||
if posting_date:
|
||||
for entries in gl_entries:
|
||||
entries["posting_date"] = posting_date
|
||||
|
||||
make_gl_entries(gl_entries)
|
||||
|
||||
def get_sl_entries(self, d, args):
|
||||
sl_dict = {
|
||||
"item_code": d.item_code,
|
||||
@ -84,6 +100,17 @@ class StockController(AccountsController):
|
||||
if sl_entries:
|
||||
from webnotes.model.code import get_obj
|
||||
get_obj('Stock Ledger').update_stock(sl_entries, is_amended)
|
||||
|
||||
def validate_warehouse_with_company(self, warehouse_list):
|
||||
warehouse_list = list(set(filter(lambda x: x not in ["", None], warehouse_list)))
|
||||
valid_warehouses = webnotes.conn.sql_list("""select name from `tabWarehouse`
|
||||
where company=%s""", self.doc.company)
|
||||
|
||||
invalid_warehouses = filter(lambda x: x not in valid_warehouses, warehouse_list)
|
||||
if invalid_warehouses:
|
||||
print invalid_warehouses, valid_warehouses, warehouse_list
|
||||
msgprint(_("Following warehouses not belong to the company") + ": " +
|
||||
self.doc.company + "\n" + "\n".join(invalid_warehouses), raise_exception=1)
|
||||
|
||||
def get_stock_ledger_entries(self, item_list=None, warehouse_list=None):
|
||||
if not (item_list and warehouse_list):
|
||||
|
Loading…
Reference in New Issue
Block a user