Compare commits
136 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
399a3097e8 | ||
|
|
c8f5c3cdbe | ||
|
|
e83d506319 | ||
|
|
690bcd7b66 | ||
|
|
f18d285eab | ||
|
|
7887ccb441 | ||
|
|
d57b57a21d | ||
|
|
5cc0531d27 | ||
|
|
0e5cdc8495 | ||
|
|
b80d892eab | ||
|
|
185af03fb2 | ||
|
|
abcbbc63d8 | ||
|
|
6871c74ce1 | ||
|
|
d0a44ca85c | ||
|
|
83db3e3ddb | ||
|
|
cc11045fd3 | ||
|
|
1b5afe737f | ||
|
|
3d65d9602e | ||
|
|
9440d080d4 | ||
|
|
9269c86339 | ||
|
|
7c82d616c9 | ||
|
|
f227379d2f | ||
|
|
eba88919c1 | ||
|
|
3408432b50 | ||
|
|
a0949158b7 | ||
|
|
ea91d2aaf1 | ||
|
|
de992abf83 | ||
|
|
5d8635a8dc | ||
|
|
7e911bae95 | ||
|
|
0676cf6d3f | ||
|
|
b74ae7aa31 | ||
|
|
0ad7db3bbd | ||
|
|
db74e316d2 | ||
|
|
1897360e4b | ||
|
|
e7fb957415 | ||
|
|
2f4567fa3c | ||
|
|
0a7abc188e | ||
|
|
5eeef7f065 | ||
|
|
7d36875d6f | ||
|
|
2fa718705a | ||
|
|
b1fdbf2335 | ||
|
|
2277922313 | ||
|
|
3e1029309c | ||
|
|
aa5deaa070 | ||
|
|
6b5d51ca22 | ||
|
|
2c114b5bb5 | ||
|
|
bd38a79e5e | ||
|
|
ccd9fd3e94 | ||
|
|
4215b3afc3 | ||
|
|
f60f111afe | ||
|
|
6fe0a3cee3 | ||
|
|
f004077734 | ||
|
|
6c5cfd2148 | ||
|
|
6c1011df92 | ||
|
|
1582a0ce78 | ||
|
|
b5b821363d | ||
|
|
399afc87ef | ||
|
|
8c842af172 | ||
|
|
bf836277f9 | ||
|
|
10d1806d81 | ||
|
|
bc41ce95fc | ||
|
|
4948d336c4 | ||
|
|
be2527d93d | ||
|
|
7f5bb1c8aa | ||
|
|
a8d40e4409 | ||
|
|
e9b4686fec | ||
|
|
5086ef2499 | ||
|
|
8a55d9a795 | ||
|
|
1caca80203 | ||
|
|
9114c26857 | ||
|
|
941a965af4 | ||
|
|
4acd431b92 | ||
|
|
fad0d566f9 | ||
|
|
e2d4079363 | ||
|
|
b9ce1f590b | ||
|
|
36463ed790 | ||
|
|
3c8838816d | ||
|
|
11e50a8eee | ||
|
|
9de4c60bd6 | ||
|
|
5288bdeabb | ||
|
|
f5804438bb | ||
|
|
6e06357dc5 | ||
|
|
28913b97b0 | ||
|
|
c59cd46391 | ||
|
|
dda239fd49 | ||
|
|
b86a6ce26a | ||
|
|
ee212e7bb5 | ||
|
|
4952c7b3b5 | ||
|
|
4e61536f50 | ||
|
|
f2886f152b | ||
|
|
b5c56f6cea | ||
|
|
80e95388f5 | ||
|
|
daed0b655a | ||
|
|
fbb994c731 | ||
|
|
10b155a486 | ||
|
|
ce6eda709b | ||
|
|
14e1d20df3 | ||
|
|
da8a02d56e | ||
|
|
16343683d9 | ||
|
|
2bdc017aff | ||
|
|
16e05c321c | ||
|
|
23d7919865 | ||
|
|
38265efc39 | ||
|
|
2d414706dc | ||
|
|
d85e4b0d46 | ||
|
|
45d03af8f6 | ||
|
|
73a3a2a131 | ||
|
|
73804580d4 | ||
|
|
259f9779db | ||
|
|
14e0e58a7d | ||
|
|
5eb373f7b5 | ||
|
|
4595c30a7b | ||
|
|
fc2dd44694 | ||
|
|
053c54017e | ||
|
|
af473d78f2 | ||
|
|
26d096aa87 | ||
|
|
476c613ba6 | ||
|
|
2348a5f592 | ||
|
|
9d8d045c66 | ||
|
|
63914dd55b | ||
|
|
93a8042f08 | ||
|
|
b2f32dac1b | ||
|
|
577a3acaac | ||
|
|
5e46ce8a50 | ||
|
|
3b7342b7b5 | ||
|
|
531077e504 | ||
|
|
147918ed66 | ||
|
|
9bbfca9226 | ||
|
|
f1a07ff105 | ||
|
|
fb6e434315 | ||
|
|
3811d96feb | ||
|
|
1017615d02 | ||
|
|
056d627f46 | ||
|
|
663bfeacf4 | ||
|
|
e918ebd721 | ||
|
|
0dc18f0102 |
@@ -4,7 +4,7 @@
|
||||
|
||||
Includes Accounting, Inventory, CRM, Sales, Purchase, Projects, HRMS. Built on Python / MariaDB.
|
||||
|
||||
ERPNext is built on [frappe](https://github.com/frappe/frappe)
|
||||
ERPNext is built on [frappe](https://github.com/frappe/frappe) Python Framework.
|
||||
|
||||
- [User Guide](http://erpnext.org/user-guide.html)
|
||||
- [Getting Help](http://erpnext.org/getting-help.html)
|
||||
@@ -21,7 +21,7 @@ Use the bench, https://github.com/frappe/bench
|
||||
|
||||
1. go to "/login"
|
||||
1. Administrator user name: "Administrator"
|
||||
1. Administrator passowrd "admin"
|
||||
1. Administrator password: "admin"
|
||||
|
||||
### Download and Install
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
__version__ = '4.6.1'
|
||||
__version__ = '4.13.0'
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.utils import flt, cstr, cint, getdate, add_days, formatdate
|
||||
from frappe.utils import flt, cstr, cint, getdate
|
||||
from frappe import msgprint, throw, _
|
||||
from frappe.model.document import Document
|
||||
|
||||
@@ -176,15 +176,7 @@ class Account(Document):
|
||||
frappe.throw(_("Due Date cannot be before Posting Date"))
|
||||
|
||||
elif credit_days is not None and diff > credit_days:
|
||||
is_credit_controller = frappe.db.get_value("Accounts Settings", None,
|
||||
"credit_controller") in frappe.user.get_roles()
|
||||
|
||||
if is_credit_controller:
|
||||
msgprint(_("Note: Due Date exceeds the allowed credit days by {0} day(s)").format(
|
||||
diff - credit_days))
|
||||
else:
|
||||
max_due_date = formatdate(add_days(posting_date, credit_days))
|
||||
frappe.throw(_("Due Date cannot be after {0}").format(max_due_date))
|
||||
msgprint(_("Note: Due Date exceeds the allowed credit days by {0} day(s)").format(diff - credit_days))
|
||||
|
||||
def validate_trash(self):
|
||||
"""checks gl entries and if child exists"""
|
||||
|
||||
@@ -124,6 +124,10 @@ def update_outstanding_amt(account, against_voucher_type, against_voucher, on_ca
|
||||
from `tabGL Entry` where voucher_type = 'Journal Voucher' and voucher_no = %s
|
||||
and account = %s and ifnull(against_voucher, '') = ''""",
|
||||
(against_voucher, account))[0][0])
|
||||
if not against_voucher_amount:
|
||||
frappe.throw(_("Against Journal Voucher {0} is already adjusted against some other voucher")
|
||||
.format(against_voucher))
|
||||
|
||||
bal = against_voucher_amount + bal
|
||||
if against_voucher_amount < 0:
|
||||
bal = -bal
|
||||
|
||||
@@ -213,10 +213,11 @@ cur_frm.cscript.voucher_type = function(doc, cdt, cdn) {
|
||||
return;
|
||||
|
||||
var update_jv_details = function(doc, r) {
|
||||
$.each(r.message, function(i, d) {
|
||||
var jvdetail = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
|
||||
jvdetail.account = d.account;
|
||||
jvdetail.balance = d.balance;
|
||||
var jvdetail = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
|
||||
$.each(r, function(i, d) {
|
||||
var row = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
|
||||
row.account = d.account;
|
||||
row.balance = d.balance;
|
||||
});
|
||||
refresh_field("entries");
|
||||
}
|
||||
@@ -231,7 +232,7 @@ cur_frm.cscript.voucher_type = function(doc, cdt, cdn) {
|
||||
},
|
||||
callback: function(r) {
|
||||
if(r.message) {
|
||||
update_jv_details(doc, r);
|
||||
update_jv_details(doc, [r.message]);
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -245,7 +246,7 @@ cur_frm.cscript.voucher_type = function(doc, cdt, cdn) {
|
||||
callback: function(r) {
|
||||
frappe.model.clear_table(doc, "entries");
|
||||
if(r.message) {
|
||||
update_jv_details(doc, r);
|
||||
update_jv_details(doc, r.message);
|
||||
}
|
||||
cur_frm.set_value("is_opening", "Yes")
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.utils import cint, cstr, flt, fmt_money, formatdate, getdate
|
||||
from frappe.utils import cstr, flt, fmt_money, formatdate, getdate
|
||||
from frappe import msgprint, _, scrub
|
||||
from erpnext.setup.utils import get_company_currency
|
||||
|
||||
@@ -13,10 +13,6 @@ from erpnext.controllers.accounts_controller import AccountsController
|
||||
class JournalVoucher(AccountsController):
|
||||
def __init__(self, arg1, arg2=None):
|
||||
super(JournalVoucher, self).__init__(arg1, arg2)
|
||||
self.master_type = {}
|
||||
self.credit_days_for = {}
|
||||
self.credit_days_global = -1
|
||||
self.is_approving_authority = -1
|
||||
|
||||
def validate(self):
|
||||
if not self.is_opening:
|
||||
@@ -40,7 +36,7 @@ class JournalVoucher(AccountsController):
|
||||
|
||||
def on_submit(self):
|
||||
if self.voucher_type in ['Bank Voucher', 'Contra Voucher', 'Journal Entry']:
|
||||
self.check_credit_days()
|
||||
self.check_reference_date()
|
||||
self.make_gl_entries()
|
||||
self.check_credit_limit()
|
||||
self.update_advance_paid()
|
||||
@@ -88,15 +84,24 @@ class JournalVoucher(AccountsController):
|
||||
def validate_against_jv(self):
|
||||
for d in self.get('entries'):
|
||||
if d.against_jv:
|
||||
account_root_type = frappe.db.get_value("Account", d.account, "root_type")
|
||||
if account_root_type == "Asset" and flt(d.debit) > 0:
|
||||
frappe.throw(_("For {0}, only credit entries can be linked against another debit entry")
|
||||
.format(d.account))
|
||||
elif account_root_type == "Liability" and flt(d.credit) > 0:
|
||||
frappe.throw(_("For {0}, only debit entries can be linked against another credit entry")
|
||||
.format(d.account))
|
||||
|
||||
if d.against_jv == self.name:
|
||||
frappe.throw(_("You can not enter current voucher in 'Against Journal Voucher' column"))
|
||||
|
||||
against_entries = frappe.db.sql("""select * from `tabJournal Voucher Detail`
|
||||
where account = %s and docstatus = 1 and parent = %s
|
||||
and ifnull(against_jv, '') = ''""", (d.account, d.against_jv), as_dict=True)
|
||||
and ifnull(against_jv, '') = '' and ifnull(against_invoice, '') = ''
|
||||
and ifnull(against_voucher, '') = ''""", (d.account, d.against_jv), as_dict=True)
|
||||
|
||||
if not against_entries:
|
||||
frappe.throw(_("Journal Voucher {0} does not have account {1} or already matched")
|
||||
frappe.throw(_("Journal Voucher {0} does not have account {1} or already matched against other voucher")
|
||||
.format(d.against_jv, d.account))
|
||||
else:
|
||||
dr_or_cr = "debit" if d.credit > 0 else "credit"
|
||||
@@ -153,7 +158,7 @@ class JournalVoucher(AccountsController):
|
||||
and voucher_account != d.account:
|
||||
frappe.throw(_("Row {0}: Account {1} does not match with {2} {3} account") \
|
||||
.format(d.idx, d.account, doctype, field_dict.get(doctype)))
|
||||
|
||||
|
||||
if against_field in ["against_sales_order", "against_purchase_order"]:
|
||||
if voucher_account != account_master_name:
|
||||
frappe.throw(_("Row {0}: Account {1} does not match with {2} {3} Name") \
|
||||
@@ -165,7 +170,7 @@ class JournalVoucher(AccountsController):
|
||||
|
||||
def validate_against_invoice_fields(self, doctype, payment_against_voucher):
|
||||
for voucher_no, payment_list in payment_against_voucher.items():
|
||||
voucher_properties = frappe.db.get_value(doctype, voucher_no,
|
||||
voucher_properties = frappe.db.get_value(doctype, voucher_no,
|
||||
["docstatus", "outstanding_amount"])
|
||||
|
||||
if voucher_properties[0] != 1:
|
||||
@@ -177,7 +182,7 @@ class JournalVoucher(AccountsController):
|
||||
|
||||
def validate_against_order_fields(self, doctype, payment_against_voucher):
|
||||
for voucher_no, payment_list in payment_against_voucher.items():
|
||||
voucher_properties = frappe.db.get_value(doctype, voucher_no,
|
||||
voucher_properties = frappe.db.get_value(doctype, voucher_no,
|
||||
["docstatus", "per_billed", "status", "advance_paid", "grand_total"])
|
||||
|
||||
if voucher_properties[0] != 1:
|
||||
@@ -280,71 +285,38 @@ class JournalVoucher(AccountsController):
|
||||
|
||||
def set_print_format_fields(self):
|
||||
for d in self.get('entries'):
|
||||
result = frappe.db.get_value("Account", d.account,
|
||||
["account_type", "master_type"])
|
||||
acc = frappe.db.get_value("Account", d.account, ["account_type", "master_type"], as_dict=1)
|
||||
|
||||
if not result:
|
||||
continue
|
||||
if not acc: continue
|
||||
|
||||
account_type, master_type = result
|
||||
|
||||
if master_type in ['Supplier', 'Customer']:
|
||||
if acc.master_type in ['Supplier', 'Customer']:
|
||||
if not self.pay_to_recd_from:
|
||||
self.pay_to_recd_from = frappe.db.get_value(master_type,
|
||||
' - '.join(d.account.split(' - ')[:-1]),
|
||||
master_type == 'Customer' and 'customer_name' or 'supplier_name')
|
||||
self.pay_to_recd_from = frappe.db.get_value(acc.master_type, ' - '.join(d.account.split(' - ')[:-1]),
|
||||
acc.master_type == 'Customer' and 'customer_name' or 'supplier_name')
|
||||
if self.voucher_type in ["Credit Note", "Debit Note"]:
|
||||
self.set_total_amount(d.debit or d.credit)
|
||||
|
||||
if account_type in ['Bank', 'Cash']:
|
||||
company_currency = get_company_currency(self.company)
|
||||
amt = flt(d.debit) and d.debit or d.credit
|
||||
self.total_amount = fmt_money(amt, currency=company_currency)
|
||||
from frappe.utils import money_in_words
|
||||
self.total_amount_in_words = money_in_words(amt, company_currency)
|
||||
if acc.account_type in ['Bank', 'Cash']:
|
||||
self.set_total_amount(d.debit or d.credit)
|
||||
|
||||
def check_credit_days(self):
|
||||
date_diff = 0
|
||||
def set_total_amount(self, amt):
|
||||
company_currency = get_company_currency(self.company)
|
||||
self.total_amount = fmt_money(amt, currency=company_currency)
|
||||
from frappe.utils import money_in_words
|
||||
self.total_amount_in_words = money_in_words(amt, company_currency)
|
||||
|
||||
def check_reference_date(self):
|
||||
if self.cheque_date:
|
||||
date_diff = (getdate(self.cheque_date)-getdate(self.posting_date)).days
|
||||
for d in self.get("entries"):
|
||||
due_date = None
|
||||
if d.against_invoice and flt(d.credit) > 0:
|
||||
due_date = frappe.db.get_value("Sales Invoice", d.against_invoice, "due_date")
|
||||
elif d.against_voucher and flt(d.debit) > 0:
|
||||
due_date = frappe.db.get_value("Purchase Invoice", d.against_voucher, "due_date")
|
||||
|
||||
if date_diff <= 0: return
|
||||
|
||||
# Get List of Customer Account
|
||||
acc_list = filter(lambda d: frappe.db.get_value("Account", d.account,
|
||||
"master_type")=='Customer', self.get('entries'))
|
||||
|
||||
for d in acc_list:
|
||||
credit_days = self.get_credit_days_for(d.account)
|
||||
# Check credit days
|
||||
if credit_days > 0 and not self.get_authorized_user() and cint(date_diff) > credit_days:
|
||||
msgprint(_("Maximum allowed credit is {0} days after posting date").format(credit_days),
|
||||
raise_exception=1)
|
||||
|
||||
def get_credit_days_for(self, ac):
|
||||
if not self.credit_days_for.has_key(ac):
|
||||
self.credit_days_for[ac] = cint(frappe.db.get_value("Account", ac, "credit_days"))
|
||||
|
||||
if not self.credit_days_for[ac]:
|
||||
if self.credit_days_global==-1:
|
||||
self.credit_days_global = cint(frappe.db.get_value("Company",
|
||||
self.company, "credit_days"))
|
||||
|
||||
return self.credit_days_global
|
||||
else:
|
||||
return self.credit_days_for[ac]
|
||||
|
||||
def get_authorized_user(self):
|
||||
if self.is_approving_authority==-1:
|
||||
self.is_approving_authority = 0
|
||||
|
||||
# Fetch credit controller role
|
||||
approving_authority = frappe.db.get_value("Accounts Settings", None,
|
||||
"credit_controller")
|
||||
|
||||
# Check logged-in user is authorized
|
||||
if approving_authority in frappe.user.get_roles():
|
||||
self.is_approving_authority = 1
|
||||
|
||||
return self.is_approving_authority
|
||||
if due_date and getdate(self.cheque_date) > getdate(due_date):
|
||||
msgprint(_("Note: Reference Date {0} is after invoice due date {1}")
|
||||
.format(formatdate(self.cheque_date), formatdate(due_date)))
|
||||
|
||||
def make_gl_entries(self, cancel=0, adv_adj=0):
|
||||
from erpnext.accounts.general_ledger import make_gl_entries
|
||||
@@ -377,7 +349,7 @@ class JournalVoucher(AccountsController):
|
||||
for d in self.get("entries"):
|
||||
master_type, master_name = frappe.db.get_value("Account", d.account,
|
||||
["master_type", "master_name"])
|
||||
if master_type == "Customer" and master_name:
|
||||
if master_type == "Customer" and master_name and flt(d.debit) > 0:
|
||||
super(JournalVoucher, self).check_credit_limit(d.account)
|
||||
|
||||
def get_balance(self):
|
||||
@@ -532,9 +504,10 @@ def get_against_sales_invoice(doctype, txt, searchfield, start, page_len, filter
|
||||
(filters["account"], "%%%s%%" % txt, start, page_len))
|
||||
|
||||
def get_against_jv(doctype, txt, searchfield, start, page_len, filters):
|
||||
return frappe.db.sql("""select jv.name, jv.posting_date, jv.user_remark
|
||||
from `tabJournal Voucher` jv, `tabJournal Voucher Detail` jv_detail
|
||||
where jv_detail.parent = jv.name and jv_detail.account = %s and jv.docstatus = 1
|
||||
return frappe.db.sql("""select distinct jv.name, jv.posting_date, jv.user_remark
|
||||
from `tabJournal Voucher` jv, `tabJournal Voucher Detail` jvd
|
||||
where jvd.parent = jv.name and jvd.account = %s and jv.docstatus = 1
|
||||
and (ifnull(jvd.against_invoice, '') = '' and ifnull(jvd.against_voucher, '') = '' and ifnull(jvd.against_jv, '') = '' )
|
||||
and jv.%s like %s order by jv.name desc limit %s, %s""" %
|
||||
("%s", searchfield, "%s", "%s", "%s"),
|
||||
(filters["account"], "%%%s%%" % txt, start, page_len))
|
||||
|
||||
@@ -19,9 +19,9 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
this.frm.set_query('bank_cash_account', function() {
|
||||
if(!me.frm.doc.company) {
|
||||
msgprint(__("Please select company first"));
|
||||
@@ -35,12 +35,8 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
var help_content = '<i class="icon-hand-right"></i> ' + __("Note") + ':<br>'+
|
||||
'<ul>' + __("If you are unable to match the exact amount, then amend your Journal Voucher and split rows such that payment amount match the invoice amount.") + '</ul>';
|
||||
this.frm.set_value("reconcile_help", help_content);
|
||||
},
|
||||
|
||||
|
||||
get_unreconciled_entries: function() {
|
||||
var me = this;
|
||||
return this.frm.call({
|
||||
@@ -48,12 +44,12 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
|
||||
method: 'get_unreconciled_entries',
|
||||
callback: function(r, rt) {
|
||||
var invoices = [];
|
||||
|
||||
|
||||
$.each(me.frm.doc.payment_reconciliation_invoices || [], function(i, row) {
|
||||
if (row.invoice_number && !inList(invoices, row.invoice_number))
|
||||
if (row.invoice_number && !inList(invoices, row.invoice_number))
|
||||
invoices.push(row.invoice_number);
|
||||
});
|
||||
|
||||
|
||||
frappe.meta.get_docfield("Payment Reconciliation Payment", "invoice_number",
|
||||
me.frm.doc.name).options = invoices.join("\n");
|
||||
|
||||
@@ -79,4 +75,4 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
|
||||
|
||||
$.extend(cur_frm.cscript, new erpnext.accounts.PaymentReconciliationController({frm: cur_frm}));
|
||||
|
||||
cur_frm.add_fetch('party_account', 'master_type', 'party_type')
|
||||
cur_frm.add_fetch('party_account', 'master_type', 'party_type')
|
||||
|
||||
@@ -118,19 +118,12 @@
|
||||
"options": "Payment Reconciliation Invoice",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "reconcile_help",
|
||||
"fieldtype": "Small Text",
|
||||
"label": "",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"hide_toolbar": 1,
|
||||
"icon": "icon-resize-horizontal",
|
||||
"issingle": 1,
|
||||
"modified": "2014-07-31 05:43:03.410832",
|
||||
"modified": "2014-10-16 17:51:44.367107",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Payment Reconciliation",
|
||||
|
||||
@@ -96,13 +96,14 @@ class PaymentReconciliation(Document):
|
||||
|
||||
payment_amount = payment_amount[0][0] if payment_amount else 0
|
||||
|
||||
if d.invoice_amount > payment_amount:
|
||||
if d.invoice_amount - payment_amount > 0.005:
|
||||
non_reconciled_invoices.append({
|
||||
'voucher_no': d.voucher_no,
|
||||
'voucher_type': d.voucher_type,
|
||||
'posting_date': d.posting_date,
|
||||
'invoice_amount': flt(d.invoice_amount),
|
||||
'outstanding_amount': d.invoice_amount - payment_amount})
|
||||
'outstanding_amount': flt(d.invoice_amount - payment_amount, 2)
|
||||
})
|
||||
|
||||
self.add_invoice_entries(non_reconciled_invoices)
|
||||
|
||||
@@ -124,7 +125,7 @@ class PaymentReconciliation(Document):
|
||||
dr_or_cr = "credit" if self.party_type == "Customer" else "debit"
|
||||
lst = []
|
||||
for e in self.get('payment_reconciliation_payments'):
|
||||
if e.invoice_type and e.invoice_number:
|
||||
if e.invoice_type and e.invoice_number and e.allocated_amount:
|
||||
lst.append({
|
||||
'voucher_no' : e.journal_voucher,
|
||||
'voucher_detail_no' : e.voucher_detail_number,
|
||||
@@ -134,7 +135,7 @@ class PaymentReconciliation(Document):
|
||||
'is_advance' : e.is_advance,
|
||||
'dr_or_cr' : dr_or_cr,
|
||||
'unadjusted_amt' : flt(e.amount),
|
||||
'allocated_amt' : flt(e.amount)
|
||||
'allocated_amt' : flt(e.allocated_amount)
|
||||
})
|
||||
|
||||
if lst:
|
||||
@@ -162,18 +163,23 @@ class PaymentReconciliation(Document):
|
||||
|
||||
invoices_to_reconcile = []
|
||||
for p in self.get("payment_reconciliation_payments"):
|
||||
if p.invoice_type and p.invoice_number:
|
||||
if p.invoice_type and p.invoice_number and p.allocated_amount:
|
||||
invoices_to_reconcile.append(p.invoice_number)
|
||||
|
||||
if p.invoice_number not in unreconciled_invoices.get(p.invoice_type, {}):
|
||||
frappe.throw(_("{0}: {1} not found in Invoice Details table")
|
||||
.format(p.invoice_type, p.invoice_number))
|
||||
|
||||
if p.amount > unreconciled_invoices.get(p.invoice_type, {}).get(p.invoice_number):
|
||||
frappe.throw(_("Row {0}: Payment amount must be less than or equals to invoice outstanding amount. Please refer Note below.").format(p.idx))
|
||||
if flt(p.allocated_amount) > flt(p.amount):
|
||||
frappe.throw(_("Row {0}: Allocated amount {1} must be less than or equals to JV amount {2}")
|
||||
.format(p.idx, p.allocated_amount, p.amount))
|
||||
|
||||
if flt(p.allocated_amount) > unreconciled_invoices.get(p.invoice_type, {}).get(p.invoice_number):
|
||||
frappe.throw(_("Row {0}: Allocated amount {1} must be less than or equals to invoice outstanding amount {2}")
|
||||
.format(p.idx, p.allocated_amount, unreconciled_invoices.get(p.invoice_type, {}).get(p.invoice_number)))
|
||||
|
||||
if not invoices_to_reconcile:
|
||||
frappe.throw(_("Please select Invoice Type and Invoice Number in atleast one row"))
|
||||
frappe.throw(_("Please select Allocated Amount, Invoice Type and Invoice Number in atleast one row"))
|
||||
|
||||
def check_condition(self, dr_or_cr):
|
||||
cond = self.from_date and " and posting_date >= '" + self.from_date + "'" or ""
|
||||
|
||||
@@ -53,11 +53,20 @@
|
||||
"label": "Column Break",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "allocated_amount",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 1,
|
||||
"label": "Allocated amount",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"default": "Sales Invoice",
|
||||
"fieldname": "invoice_type",
|
||||
"fieldtype": "Select",
|
||||
"in_list_view": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Invoice Type",
|
||||
"options": "\nSales Invoice\nPurchase Invoice\nJournal Voucher",
|
||||
"permlevel": 0,
|
||||
@@ -95,7 +104,7 @@
|
||||
}
|
||||
],
|
||||
"istable": 1,
|
||||
"modified": "2014-07-21 16:53:56.206169",
|
||||
"modified": "2014-10-16 17:40:54.040194",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Payment Reconciliation Payment",
|
||||
|
||||
@@ -42,9 +42,6 @@ frappe.ui.form.on("Payment Tool", "received_or_paid", function(frm) {
|
||||
erpnext.payment_tool.check_mandatory_to_set_button(frm);
|
||||
});
|
||||
|
||||
// Fetch bank/cash account based on payment mode
|
||||
cur_frm.add_fetch("payment_mode", "default_account", "payment_account");
|
||||
|
||||
// Set party account name
|
||||
frappe.ui.form.on("Payment Tool", "customer", function(frm) {
|
||||
erpnext.payment_tool.set_party_account(frm);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _, scrub
|
||||
from frappe import _
|
||||
from frappe.utils import flt
|
||||
from frappe.model.document import Document
|
||||
import json
|
||||
@@ -93,7 +93,7 @@ def get_orders_to_be_billed(party_type, party_name):
|
||||
and docstatus = 1
|
||||
and ifnull(status, "") != "Stopped"
|
||||
and ifnull(grand_total, 0) > ifnull(advance_paid, 0)
|
||||
and ifnull(per_billed, 0) < 100.0
|
||||
and abs(100 - ifnull(per_billed, 0)) > 0.01
|
||||
""" % (voucher_type, 'customer' if party_type == "Customer" else 'supplier', '%s'),
|
||||
party_name, as_dict = True)
|
||||
|
||||
|
||||
@@ -800,7 +800,8 @@
|
||||
"fieldtype": "Date",
|
||||
"label": "From Date",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0
|
||||
"permlevel": 0,
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
@@ -810,7 +811,8 @@
|
||||
"fieldtype": "Date",
|
||||
"label": "To Date",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0
|
||||
"permlevel": 0,
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
@@ -878,7 +880,7 @@
|
||||
"icon": "icon-file-text",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-10-08 14:23:20.234176",
|
||||
"modified": "2014-11-27 17:28:20.133701",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Purchase Invoice",
|
||||
|
||||
@@ -233,6 +233,11 @@ erpnext.POS = Class.extend({
|
||||
},
|
||||
make_item_list: function() {
|
||||
var me = this;
|
||||
if(!this.price_list) {
|
||||
msgprint(__("Price List not found or disabled"));
|
||||
return;
|
||||
}
|
||||
|
||||
me.item_timeout = null;
|
||||
frappe.call({
|
||||
method: 'erpnext.accounts.doctype.sales_invoice.pos.get_items',
|
||||
|
||||
@@ -7,7 +7,7 @@ import frappe.defaults
|
||||
from frappe.utils import cint, cstr, flt
|
||||
from frappe import _, msgprint, throw
|
||||
from erpnext.accounts.party import get_party_account, get_due_date
|
||||
from erpnext.controllers.stock_controller import update_gl_entries_after, block_negative_stock
|
||||
from erpnext.controllers.stock_controller import update_gl_entries_after
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
|
||||
from erpnext.controllers.selling_controller import SellingController
|
||||
@@ -456,8 +456,8 @@ class SalesInvoice(SellingController):
|
||||
|
||||
self.make_sl_entries(sl_entries)
|
||||
|
||||
def make_gl_entries(self, repost_future_gle=True, allow_negative_stock=False):
|
||||
gl_entries = self.get_gl_entries(allow_negative_stock=allow_negative_stock)
|
||||
def make_gl_entries(self, repost_future_gle=True):
|
||||
gl_entries = self.get_gl_entries()
|
||||
|
||||
if gl_entries:
|
||||
from erpnext.accounts.general_ledger import make_gl_entries
|
||||
@@ -476,7 +476,7 @@ class SalesInvoice(SellingController):
|
||||
items, warehouses = self.get_items_and_warehouses()
|
||||
update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items)
|
||||
|
||||
def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False):
|
||||
def get_gl_entries(self, warehouse_account=None):
|
||||
from erpnext.accounts.general_ledger import merge_similar_entries
|
||||
|
||||
gl_entries = []
|
||||
@@ -485,7 +485,7 @@ class SalesInvoice(SellingController):
|
||||
|
||||
self.make_tax_gl_entries(gl_entries)
|
||||
|
||||
self.make_item_gl_entries(gl_entries, allow_negative_stock)
|
||||
self.make_item_gl_entries(gl_entries)
|
||||
|
||||
# merge gl entries before adding pos entries
|
||||
gl_entries = merge_similar_entries(gl_entries)
|
||||
@@ -520,7 +520,7 @@ class SalesInvoice(SellingController):
|
||||
})
|
||||
)
|
||||
|
||||
def make_item_gl_entries(self, gl_entries, allow_negative_stock=False):
|
||||
def make_item_gl_entries(self, gl_entries):
|
||||
# income account gl entries
|
||||
for item in self.get("entries"):
|
||||
if flt(item.base_amount):
|
||||
@@ -537,7 +537,7 @@ class SalesInvoice(SellingController):
|
||||
# expense account gl entries
|
||||
if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) \
|
||||
and cint(self.update_stock):
|
||||
gl_entries += super(SalesInvoice, self).get_gl_entries(allow_negative_stock=allow_negative_stock)
|
||||
gl_entries += super(SalesInvoice, self).get_gl_entries()
|
||||
|
||||
def make_pos_gl_entries(self, gl_entries):
|
||||
if cint(self.is_pos) and self.cash_bank_account and self.paid_amount:
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
"doc_type": "Journal Voucher",
|
||||
"docstatus": 0,
|
||||
"doctype": "Print Format",
|
||||
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"<strong>\" + doc.total_amount + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n <div class=\"row\">\n <div class=\"col-sm-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n\n",
|
||||
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"<strong>\" + frappe.utils.cstr(doc.total_amount) + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n <div class=\"row\">\n <div class=\"col-sm-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n\n",
|
||||
"idx": 2,
|
||||
"modified": "2014-08-29 13:20:15.789533",
|
||||
"modified": "2014-10-17 17:20:02.740340",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Credit Note",
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
"doc_type": "Journal Voucher",
|
||||
"docstatus": 0,
|
||||
"doctype": "Print Format",
|
||||
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Receipt Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Received On\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Received From\"), doc.pay_to_recd_from),\n (_(\"Amount\"), \"<strong>\" + doc.total_amount + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-sm-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n",
|
||||
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Receipt Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Received On\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Received From\"), doc.pay_to_recd_from),\n (_(\"Amount\"), \"<strong>\" + doc.total_amount or 0 + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-sm-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n",
|
||||
"idx": 1,
|
||||
"modified": "2014-08-29 15:55:34.248384",
|
||||
"modified": "2014-11-04 11:25:57.560873",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Payment Receipt Voucher",
|
||||
|
||||
@@ -13,17 +13,17 @@ class AccountsReceivableReport(object):
|
||||
self.age_as_on = getdate(nowdate()) \
|
||||
if self.filters.report_date > getdate(nowdate()) \
|
||||
else self.filters.report_date
|
||||
|
||||
|
||||
def run(self):
|
||||
customer_naming_by = frappe.db.get_value("Selling Settings", None, "cust_master_name")
|
||||
return self.get_columns(customer_naming_by), self.get_data(customer_naming_by)
|
||||
|
||||
|
||||
def get_columns(self, customer_naming_by):
|
||||
columns = [
|
||||
_("Posting Date") + ":Date:80", _("Account") + ":Link/Account:150",
|
||||
_("Voucher Type") + "::110", _("Voucher No") + ":Dynamic Link/Voucher Type:120",
|
||||
_("Due Date") + ":Date:80",
|
||||
_("Invoiced Amount") + ":Currency:100", _("Payment Received") + ":Currency:100",
|
||||
_("Due Date") + ":Date:80",
|
||||
_("Invoiced Amount") + ":Currency:100", _("Payment Received") + ":Currency:100",
|
||||
_("Outstanding Amount") + ":Currency:100", _("Age") + ":Int:50", "0-30:Currency:100",
|
||||
"30-60:Currency:100", "60-90:Currency:100", _("90-Above") + ":Currency:100",
|
||||
_("Customer") + ":Link/Customer:200"
|
||||
@@ -69,27 +69,27 @@ class AccountsReceivableReport(object):
|
||||
# returns a distinct list
|
||||
return list(set([(e.voucher_type, e.voucher_no) for e in self.get_gl_entries()
|
||||
if getdate(e.posting_date) > report_date]))
|
||||
|
||||
|
||||
def get_entries_till(self, report_date):
|
||||
# returns a generator
|
||||
return (e for e in self.get_gl_entries()
|
||||
return (e for e in self.get_gl_entries()
|
||||
if getdate(e.posting_date) <= report_date)
|
||||
|
||||
|
||||
def is_receivable(self, gle, future_vouchers):
|
||||
return (
|
||||
# advance
|
||||
(not gle.against_voucher) or
|
||||
(not gle.against_voucher) or
|
||||
|
||||
# against sales order
|
||||
(gle.against_voucher_type == "Sales Order") or
|
||||
|
||||
|
||||
# sales invoice
|
||||
(gle.against_voucher==gle.voucher_no and gle.debit > 0) or
|
||||
|
||||
(gle.against_voucher==gle.voucher_no and gle.debit > 0) or
|
||||
|
||||
# entries adjusted with future vouchers
|
||||
((gle.against_voucher_type, gle.against_voucher) in future_vouchers)
|
||||
)
|
||||
|
||||
|
||||
def get_outstanding_amount(self, gle, report_date):
|
||||
payment_received = 0.0
|
||||
for e in self.get_gl_entries_for(gle.account, gle.voucher_type, gle.voucher_no):
|
||||
@@ -97,7 +97,7 @@ class AccountsReceivableReport(object):
|
||||
payment_received += (flt(e.credit) - flt(e.debit))
|
||||
|
||||
return flt(gle.debit) - flt(gle.credit) - payment_received
|
||||
|
||||
|
||||
def get_customer(self, account):
|
||||
return self.get_account_map().get(account, {}).get("customer") or ""
|
||||
|
||||
@@ -106,25 +106,25 @@ class AccountsReceivableReport(object):
|
||||
|
||||
def get_territory(self, account):
|
||||
return self.get_account_map().get(account, {}).get("territory") or ""
|
||||
|
||||
|
||||
def get_account_map(self):
|
||||
if not hasattr(self, "account_map"):
|
||||
self.account_map = dict(((r.name, r) for r in frappe.db.sql("""select
|
||||
self.account_map = dict(((r.name, r) for r in frappe.db.sql("""select
|
||||
acc.name, cust.name as customer, cust.customer_name, cust.territory
|
||||
from `tabAccount` acc left join `tabCustomer` cust
|
||||
from `tabAccount` acc left join `tabCustomer` cust
|
||||
on cust.name=acc.master_name where acc.master_type="Customer" """, as_dict=True)))
|
||||
|
||||
|
||||
return self.account_map
|
||||
|
||||
|
||||
def get_due_date(self, gle):
|
||||
if not hasattr(self, "invoice_due_date_map"):
|
||||
# TODO can be restricted to posting date
|
||||
self.invoice_due_date_map = dict(frappe.db.sql("""select name, due_date
|
||||
from `tabSales Invoice` where docstatus=1"""))
|
||||
|
||||
|
||||
return gle.voucher_type == "Sales Invoice" \
|
||||
and self.invoice_due_date_map.get(gle.voucher_no) or ""
|
||||
|
||||
|
||||
def get_gl_entries(self):
|
||||
if not hasattr(self, "gl_entries"):
|
||||
conditions, values = self.prepare_conditions()
|
||||
@@ -132,15 +132,15 @@ class AccountsReceivableReport(object):
|
||||
where docstatus < 2 {0} order by posting_date, account""".format(conditions),
|
||||
values, as_dict=True)
|
||||
return self.gl_entries
|
||||
|
||||
|
||||
def prepare_conditions(self):
|
||||
conditions = [""]
|
||||
values = {}
|
||||
|
||||
|
||||
if self.filters.company:
|
||||
conditions.append("company=%(company)s")
|
||||
values["company"] = self.filters.company
|
||||
|
||||
|
||||
if self.filters.account:
|
||||
conditions.append("account=%(account)s")
|
||||
values["account"] = self.filters.account
|
||||
@@ -149,11 +149,11 @@ class AccountsReceivableReport(object):
|
||||
if not account_map:
|
||||
frappe.throw(_("No Customer Accounts found."))
|
||||
else:
|
||||
accounts_list = ['"{0}"'.format(ac) for ac in account_map]
|
||||
accounts_list = ['"{0}"'.format(ac.replace('"', '\"')) for ac in account_map]
|
||||
conditions.append("account in ({0})".format(", ".join(accounts_list)))
|
||||
|
||||
|
||||
return " and ".join(conditions), values
|
||||
|
||||
|
||||
def get_gl_entries_for(self, account, against_voucher_type, against_voucher):
|
||||
if not hasattr(self, "gl_entries_map"):
|
||||
self.gl_entries_map = {}
|
||||
@@ -163,7 +163,7 @@ class AccountsReceivableReport(object):
|
||||
.setdefault(gle.against_voucher_type, {})\
|
||||
.setdefault(gle.against_voucher, [])\
|
||||
.append(gle)
|
||||
|
||||
|
||||
return self.gl_entries_map.get(account, {})\
|
||||
.get(against_voucher_type, {})\
|
||||
.get(against_voucher, [])
|
||||
@@ -176,15 +176,15 @@ def get_ageing_data(age_as_on, entry_date, outstanding_amount):
|
||||
outstanding_range = [0.0, 0.0, 0.0, 0.0]
|
||||
if not (age_as_on and entry_date):
|
||||
return [0] + outstanding_range
|
||||
|
||||
|
||||
age = (getdate(age_as_on) - getdate(entry_date)).days or 0
|
||||
index = None
|
||||
for i, days in enumerate([30, 60, 90]):
|
||||
if age <= days:
|
||||
index = i
|
||||
break
|
||||
|
||||
|
||||
if index is None: index = 3
|
||||
outstanding_range[index] = outstanding_amount
|
||||
|
||||
|
||||
return [age] + outstanding_range
|
||||
|
||||
@@ -210,14 +210,15 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
|
||||
calculate_totals: function() {
|
||||
var tax_count = this.frm.tax_doclist.length;
|
||||
this.frm.doc.grand_total = flt(tax_count ?
|
||||
this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total,
|
||||
precision("grand_total"));
|
||||
this.frm.doc.grand_total_import = flt(this.frm.doc.grand_total /
|
||||
this.frm.doc.conversion_rate, precision("grand_total_import"));
|
||||
this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total);
|
||||
this.frm.doc.grand_total_import = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate);
|
||||
|
||||
this.frm.doc.total_tax = flt(this.frm.doc.grand_total - this.frm.doc.net_total,
|
||||
precision("total_tax"));
|
||||
|
||||
this.frm.doc.grand_total = flt(this.frm.doc.grand_total, precision("grand_total"));
|
||||
this.frm.doc.grand_total_import = flt(this.frm.doc.grand_total_import, precision("grand_total_import"));
|
||||
|
||||
// rounded totals
|
||||
if(frappe.meta.get_docfield(this.frm.doc.doctype, "rounded_total", this.frm.doc.name)) {
|
||||
this.frm.doc.rounded_total = Math.round(this.frm.doc.grand_total);
|
||||
|
||||
@@ -3,15 +3,13 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.utils import cstr, flt
|
||||
from frappe.utils import flt
|
||||
from frappe import _
|
||||
|
||||
from erpnext.stock.doctype.item.item import get_last_purchase_details
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
|
||||
class PurchaseCommon(BuyingController):
|
||||
|
||||
def update_last_purchase_rate(self, obj, is_submit):
|
||||
"""updates last_purchase_rate in item table for each item"""
|
||||
|
||||
@@ -123,27 +121,6 @@ class PurchaseCommon(BuyingController):
|
||||
else:
|
||||
chk_dupl_itm.append(f)
|
||||
|
||||
def get_qty(self, curr_doctype, ref_tab_fname, ref_tab_dn, ref_doc_tname, transaction, curr_parent_name):
|
||||
# Get total Quantities of current doctype (eg. PR) except for qty of this transaction
|
||||
#------------------------------
|
||||
# please check as UOM changes from Material Request - Purchase Order ,so doing following else uom should be same .
|
||||
# i.e. in PO uom is NOS then in PR uom should be NOS
|
||||
# but if in Material Request uom KG it can change in PO
|
||||
|
||||
get_qty = (transaction == 'Material Request - Purchase Order') and 'qty * conversion_factor' or 'qty'
|
||||
qty = frappe.db.sql("""select sum(%s) from `tab%s` where %s = %s and
|
||||
docstatus = 1 and parent != %s""" % (get_qty, curr_doctype, ref_tab_fname, '%s', '%s'),
|
||||
(ref_tab_dn, curr_parent_name))
|
||||
qty = qty and flt(qty[0][0]) or 0
|
||||
|
||||
# get total qty of ref doctype
|
||||
#--------------------
|
||||
max_qty = frappe.db.sql("""select qty from `tab%s` where name = %s
|
||||
and docstatus = 1""" % (ref_doc_tname, '%s'), ref_tab_dn)
|
||||
max_qty = max_qty and flt(max_qty[0][0]) or 0
|
||||
|
||||
return cstr(qty)+'~~~'+cstr(max_qty)
|
||||
|
||||
def check_for_stopped_status(self, doctype, docname):
|
||||
stopped = frappe.db.sql("""select name from `tab%s` where name = %s and
|
||||
status = 'Stopped'""" % (doctype, '%s'), docname)
|
||||
|
||||
@@ -685,7 +685,8 @@
|
||||
"label": "Recurring Type",
|
||||
"no_copy": 1,
|
||||
"options": "Monthly\nQuarterly\nHalf-yearly\nYearly",
|
||||
"permlevel": 0
|
||||
"permlevel": 0,
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
@@ -695,7 +696,8 @@
|
||||
"fieldtype": "Date",
|
||||
"label": "From Date",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0
|
||||
"permlevel": 0,
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
@@ -705,7 +707,8 @@
|
||||
"fieldtype": "Date",
|
||||
"label": "To Date",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0
|
||||
"permlevel": 0,
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
@@ -772,7 +775,7 @@
|
||||
"icon": "icon-file-text",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-10-08 14:23:29.718779",
|
||||
"modified": "2014-11-27 17:27:38.839440",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Buying",
|
||||
"name": "Purchase Order",
|
||||
|
||||
@@ -96,50 +96,45 @@ class PurchaseOrder(BuyingController):
|
||||
check_list.append(d.prevdoc_docname)
|
||||
pc_obj.check_for_stopped_status( d.prevdoc_doctype, d.prevdoc_docname)
|
||||
|
||||
def update_requested_qty(self):
|
||||
material_request_map = {}
|
||||
for d in self.get("po_details"):
|
||||
if d.prevdoc_doctype and d.prevdoc_doctype == "Material Request" and d.prevdoc_detail_docname:
|
||||
material_request_map.setdefault(d.prevdoc_docname, []).append(d.prevdoc_detail_docname)
|
||||
|
||||
def update_bin(self, is_submit, is_stopped = 0):
|
||||
from erpnext.stock.utils import update_bin
|
||||
pc_obj = frappe.get_doc('Purchase Common')
|
||||
for d in self.get('po_details'):
|
||||
#1. Check if is_stock_item == 'Yes'
|
||||
if frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes":
|
||||
# this happens when item is changed from non-stock to stock item
|
||||
if not d.warehouse:
|
||||
continue
|
||||
for mr, mr_item_rows in material_request_map.items():
|
||||
if mr and mr_item_rows:
|
||||
mr_obj = frappe.get_doc("Material Request", mr)
|
||||
|
||||
ind_qty, po_qty = 0, flt(d.qty) * flt(d.conversion_factor)
|
||||
if is_stopped:
|
||||
po_qty = flt(d.qty) > flt(d.received_qty) and \
|
||||
flt( flt(flt(d.qty) - flt(d.received_qty))*flt(d.conversion_factor)) or 0
|
||||
if mr_obj.status in ["Stopped", "Cancelled"]:
|
||||
frappe.throw(_("Material Request {0} is cancelled or stopped").format(mr), frappe.InvalidStatusError)
|
||||
|
||||
# No updates in Material Request on Stop / Unstop
|
||||
if cstr(d.prevdoc_doctype) == 'Material Request' and not is_stopped:
|
||||
# get qty and pending_qty of prevdoc
|
||||
curr_ref_qty = pc_obj.get_qty(d.doctype, 'prevdoc_detail_docname',
|
||||
d.prevdoc_detail_docname, 'Material Request Item',
|
||||
'Material Request - Purchase Order', self.name)
|
||||
max_qty, qty, curr_qty = flt(curr_ref_qty.split('~~~')[1]), \
|
||||
flt(curr_ref_qty.split('~~~')[0]), 0
|
||||
mr_obj.update_requested_qty(mr_item_rows)
|
||||
|
||||
if flt(qty) + flt(po_qty) > flt(max_qty):
|
||||
curr_qty = flt(max_qty) - flt(qty)
|
||||
# special case as there is no restriction
|
||||
# for Material Request - Purchase Order
|
||||
curr_qty = curr_qty > 0 and curr_qty or 0
|
||||
else:
|
||||
curr_qty = flt(po_qty)
|
||||
def update_ordered_qty(self, po_item_rows=None):
|
||||
"""update requested qty (before ordered_qty is updated)"""
|
||||
from erpnext.stock.utils import get_bin
|
||||
|
||||
ind_qty = -flt(curr_qty)
|
||||
def _update_ordered_qty(item_code, warehouse):
|
||||
ordered_qty = frappe.db.sql("""
|
||||
select sum((po_item.qty - ifnull(po_item.received_qty, 0))*po_item.conversion_factor)
|
||||
from `tabPurchase Order Item` po_item, `tabPurchase Order` po
|
||||
where po_item.item_code=%s and po_item.warehouse=%s
|
||||
and po_item.qty > ifnull(po_item.received_qty, 0) and po_item.parent=po.name
|
||||
and po.status!='Stopped' and po.docstatus=1""", (item_code, warehouse))
|
||||
|
||||
# Update ordered_qty and indented_qty in bin
|
||||
args = {
|
||||
"item_code": d.item_code,
|
||||
"warehouse": d.warehouse,
|
||||
"ordered_qty": (is_submit and 1 or -1) * flt(po_qty),
|
||||
"indented_qty": (is_submit and 1 or -1) * flt(ind_qty),
|
||||
"posting_date": self.transaction_date
|
||||
}
|
||||
update_bin(args)
|
||||
bin_doc = get_bin(item_code, warehouse)
|
||||
bin_doc.ordered_qty = flt(ordered_qty[0][0]) if ordered_qty else 0
|
||||
bin_doc.save()
|
||||
|
||||
item_wh_list = []
|
||||
for d in self.get("po_details"):
|
||||
if (not po_item_rows or d.name in po_item_rows) and [d.item_code, d.warehouse] not in item_wh_list \
|
||||
and frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes" and d.warehouse:
|
||||
item_wh_list.append([d.item_code, d.warehouse])
|
||||
|
||||
for item_code, warehouse in item_wh_list:
|
||||
_update_ordered_qty(item_code, warehouse)
|
||||
|
||||
def check_modified_date(self):
|
||||
mod_db = frappe.db.sql("select modified from `tabPurchase Order` where name = %s",
|
||||
@@ -152,13 +147,11 @@ class PurchaseOrder(BuyingController):
|
||||
|
||||
def update_status(self, status):
|
||||
self.check_modified_date()
|
||||
# step 1:=> Set Status
|
||||
frappe.db.set(self,'status',cstr(status))
|
||||
|
||||
# step 2:=> Update Bin
|
||||
self.update_bin(is_submit = (status == 'Submitted') and 1 or 0, is_stopped = 1)
|
||||
self.update_requested_qty()
|
||||
self.update_ordered_qty()
|
||||
|
||||
# step 3:=> Acknowledge user
|
||||
msgprint(_("Status of {0} {1} is now {2}").format(self.doctype, self.name, status))
|
||||
|
||||
def on_submit(self):
|
||||
@@ -167,7 +160,8 @@ class PurchaseOrder(BuyingController):
|
||||
purchase_controller = frappe.get_doc("Purchase Common")
|
||||
|
||||
self.update_prevdoc_status()
|
||||
self.update_bin(is_submit = 1, is_stopped = 0)
|
||||
self.update_requested_qty()
|
||||
self.update_ordered_qty()
|
||||
|
||||
frappe.get_doc('Authorization Control').validate_approving_authority(self.doctype,
|
||||
self.company, self.grand_total)
|
||||
@@ -192,8 +186,13 @@ class PurchaseOrder(BuyingController):
|
||||
throw(_("Purchase Invoice {0} is already submitted").format(", ".join(submitted)))
|
||||
|
||||
frappe.db.set(self,'status','Cancelled')
|
||||
|
||||
self.update_prevdoc_status()
|
||||
self.update_bin( is_submit = 0, is_stopped = 0)
|
||||
|
||||
# Must be called after updating ordered qty in Material Request
|
||||
self.update_requested_qty()
|
||||
self.update_ordered_qty()
|
||||
|
||||
pc_obj.update_last_purchase_rate(self, is_submit = 0)
|
||||
|
||||
def on_update(self):
|
||||
@@ -248,7 +247,7 @@ def make_purchase_invoice(source_name, target_doc=None):
|
||||
def update_item(obj, target, source_parent):
|
||||
target.amount = flt(obj.amount) - flt(obj.billed_amt)
|
||||
target.base_amount = target.amount * flt(source_parent.conversion_rate)
|
||||
target.qty = target.amount / flt(obj.rate) if flt(obj.rate) else flt(obj.qty)
|
||||
target.qty = target.amount / flt(obj.rate) if (flt(obj.rate) and flt(obj.billed_amt)) else flt(obj.qty)
|
||||
|
||||
doc = get_mapped_doc("Purchase Order", source_name, {
|
||||
"Purchase Order": {
|
||||
|
||||
@@ -29,8 +29,7 @@ class TestPurchaseOrder(unittest.TestCase):
|
||||
frappe.get_doc(pr).insert()
|
||||
|
||||
def test_ordered_qty(self):
|
||||
frappe.db.sql("delete from tabBin")
|
||||
|
||||
existing_ordered_qty = self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC")
|
||||
from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt
|
||||
|
||||
po = frappe.copy_doc(test_records[0]).insert()
|
||||
@@ -43,8 +42,7 @@ class TestPurchaseOrder(unittest.TestCase):
|
||||
po.get("po_details")[0].item_code = "_Test Item"
|
||||
po.submit()
|
||||
|
||||
self.assertEquals(frappe.db.get_value("Bin", {"item_code": "_Test Item",
|
||||
"warehouse": "_Test Warehouse - _TC"}, "ordered_qty"), 10)
|
||||
self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty + 10)
|
||||
|
||||
pr = make_purchase_receipt(po.name)
|
||||
|
||||
@@ -56,8 +54,9 @@ class TestPurchaseOrder(unittest.TestCase):
|
||||
pr.insert()
|
||||
pr.submit()
|
||||
|
||||
self.assertEquals(flt(frappe.db.get_value("Bin", {"item_code": "_Test Item",
|
||||
"warehouse": "_Test Warehouse - _TC"}, "ordered_qty")), 6.0)
|
||||
po.load_from_db()
|
||||
self.assertEquals(po.get("po_details")[0].received_qty, 4)
|
||||
self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty + 6)
|
||||
|
||||
frappe.db.set_value('Item', '_Test Item', 'tolerance', 50)
|
||||
|
||||
@@ -68,8 +67,16 @@ class TestPurchaseOrder(unittest.TestCase):
|
||||
pr1.insert()
|
||||
pr1.submit()
|
||||
|
||||
self.assertEquals(flt(frappe.db.get_value("Bin", {"item_code": "_Test Item",
|
||||
"warehouse": "_Test Warehouse - _TC"}, "ordered_qty")), 0.0)
|
||||
po.load_from_db()
|
||||
self.assertEquals(po.get("po_details")[0].received_qty, 12)
|
||||
self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty)
|
||||
|
||||
pr1.load_from_db()
|
||||
pr1.cancel()
|
||||
|
||||
po.load_from_db()
|
||||
self.assertEquals(po.get("po_details")[0].received_qty, 4)
|
||||
self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty + 6)
|
||||
|
||||
def test_make_purchase_invoice(self):
|
||||
from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_invoice
|
||||
@@ -111,7 +118,10 @@ class TestPurchaseOrder(unittest.TestCase):
|
||||
from erpnext.controllers.tests.test_recurring_document import test_recurring_document
|
||||
test_recurring_document(self, test_records)
|
||||
|
||||
def _get_ordered_qty(self, item_code, warehouse):
|
||||
return flt(frappe.db.get_value("Bin", {"item_code": item_code, "warehouse": warehouse}, "ordered_qty"))
|
||||
|
||||
test_dependencies = ["BOM"]
|
||||
|
||||
test_dependencies = ["BOM", "Item Price"]
|
||||
|
||||
test_records = frappe.get_test_records('Purchase Order')
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
// License: GNU General Public License v3. See license.txt
|
||||
|
||||
{% include 'setup/doctype/contact_control/contact_control.js' %};
|
||||
|
||||
cur_frm.cscript.refresh = function(doc, dt, dn) {
|
||||
cur_frm.cscript.make_dashboard(doc);
|
||||
|
||||
@@ -17,15 +15,13 @@ cur_frm.cscript.refresh = function(doc, dt, dn) {
|
||||
}
|
||||
else{
|
||||
unhide_field(['address_html','contact_html']);
|
||||
// make lists
|
||||
cur_frm.cscript.make_address(doc,dt,dn);
|
||||
cur_frm.cscript.make_contact(doc,dt,dn);
|
||||
|
||||
erpnext.utils.render_address_and_contact(cur_frm)
|
||||
|
||||
cur_frm.communication_view = new frappe.views.CommunicationList({
|
||||
list: frappe.get_list("Communication", {"supplier": doc.name}),
|
||||
parent: cur_frm.fields_dict.communication_html.wrapper,
|
||||
doc: doc
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,45 +57,6 @@ cur_frm.cscript.make_dashboard = function(doc) {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
cur_frm.cscript.make_address = function() {
|
||||
if(!cur_frm.address_list) {
|
||||
cur_frm.address_list = new frappe.ui.Listing({
|
||||
parent: cur_frm.fields_dict['address_html'].wrapper,
|
||||
page_length: 5,
|
||||
new_doctype: "Address",
|
||||
get_query: function() {
|
||||
return "select name, address_type, address_line1, address_line2, city, state, country, pincode, fax, email_id, phone, is_primary_address, is_shipping_address from tabAddress where supplier='" +
|
||||
cur_frm.doc.name.replace(/'/g, "\\'") + "' and docstatus != 2 order by is_primary_address desc"
|
||||
},
|
||||
as_dict: 1,
|
||||
no_results_message: __('No addresses created'),
|
||||
render_row: cur_frm.cscript.render_address_row,
|
||||
});
|
||||
// note: render_address_row is defined in contact_control.js
|
||||
}
|
||||
cur_frm.address_list.run();
|
||||
}
|
||||
|
||||
cur_frm.cscript.make_contact = function() {
|
||||
if(!cur_frm.contact_list) {
|
||||
cur_frm.contact_list = new frappe.ui.Listing({
|
||||
parent: cur_frm.fields_dict['contact_html'].wrapper,
|
||||
page_length: 5,
|
||||
new_doctype: "Contact",
|
||||
get_query: function() {
|
||||
return "select name, first_name, last_name, email_id, phone, mobile_no, department, designation, is_primary_contact from tabContact where supplier='" +
|
||||
cur_frm.doc.name.replace(/'/g, "\\'") + "' and docstatus != 2 order by is_primary_contact desc"
|
||||
},
|
||||
as_dict: 1,
|
||||
no_results_message: __('No contacts created'),
|
||||
render_row: cur_frm.cscript.render_contact_row,
|
||||
});
|
||||
// note: render_contact_row is defined in contact_control.js
|
||||
}
|
||||
cur_frm.contact_list.run();
|
||||
}
|
||||
|
||||
cur_frm.fields_dict['default_price_list'].get_query = function(doc, cdt, cdn) {
|
||||
return{
|
||||
filters:{'buying': 1}
|
||||
|
||||
@@ -9,10 +9,14 @@ from frappe.utils import cint
|
||||
from frappe import msgprint, _
|
||||
from frappe.model.naming import make_autoname
|
||||
from erpnext.accounts.party import create_party_account
|
||||
from erpnext.utilities.address_and_contact import load_address_and_contact
|
||||
|
||||
from erpnext.utilities.transaction_base import TransactionBase
|
||||
|
||||
class Supplier(TransactionBase):
|
||||
def onload(self):
|
||||
"""Load address and contacts in `__onload`"""
|
||||
load_address_and_contact(self, "supplier")
|
||||
|
||||
def autoname(self):
|
||||
supp_master_name = frappe.defaults.get_global_default('supp_master_name')
|
||||
|
||||
@@ -437,7 +437,7 @@ class AccountsController(TransactionBase):
|
||||
for order, jv_list in order_jv_map.items():
|
||||
for jv in jv_list:
|
||||
if not advance_jv_against_si or jv not in advance_jv_against_si:
|
||||
frappe.throw(_("Journal Voucher {0} is linked against Order {1}, hence it must be fetched as advance in Invoice as well.")
|
||||
frappe.msgprint(_("Journal Voucher {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.")
|
||||
.format(jv, order))
|
||||
|
||||
|
||||
|
||||
@@ -110,13 +110,13 @@ class BuyingController(StockController):
|
||||
self.round_floats_in(self, ["net_total", "net_total_import"])
|
||||
|
||||
def calculate_totals(self):
|
||||
self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist
|
||||
else self.net_total, self.precision("grand_total"))
|
||||
self.grand_total_import = flt(self.grand_total / self.conversion_rate,
|
||||
self.precision("grand_total_import"))
|
||||
self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist else self.net_total)
|
||||
self.grand_total_import = flt(self.grand_total / self.conversion_rate)
|
||||
|
||||
self.total_tax = flt(self.grand_total - self.net_total,
|
||||
self.precision("total_tax"))
|
||||
self.total_tax = flt(self.grand_total - self.net_total, self.precision("total_tax"))
|
||||
|
||||
self.grand_total = flt(self.grand_total, self.precision("grand_total"))
|
||||
self.grand_total_import = flt(self.grand_total_import, self.precision("grand_total_import"))
|
||||
|
||||
if self.meta.get_field("rounded_total"):
|
||||
self.rounded_total = rounded(self.grand_total)
|
||||
@@ -269,7 +269,7 @@ class BuyingController(StockController):
|
||||
# get raw materials rate
|
||||
if self.doctype == "Purchase Receipt":
|
||||
from erpnext.stock.utils import get_incoming_rate
|
||||
item_rate = get_incoming_rate({
|
||||
rm.rate = get_incoming_rate({
|
||||
"item_code": bom_item.item_code,
|
||||
"warehouse": self.supplier_warehouse,
|
||||
"posting_date": self.posting_date,
|
||||
@@ -277,10 +277,9 @@ class BuyingController(StockController):
|
||||
"qty": -1 * required_qty,
|
||||
"serial_no": rm.serial_no
|
||||
})
|
||||
if not item_rate:
|
||||
from erpnext.controllers.stock_controller import get_valuation_rate
|
||||
item_rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse)
|
||||
rm.rate = item_rate or bom_item.rate
|
||||
if not rm.rate:
|
||||
from erpnext.stock.stock_ledger import get_valuation_rate
|
||||
rm.rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse)
|
||||
else:
|
||||
rm.rate = bom_item.rate
|
||||
|
||||
|
||||
@@ -216,17 +216,17 @@ class SellingController(StockController):
|
||||
self.round_floats_in(self, ["net_total", "net_total_export"])
|
||||
|
||||
def calculate_totals(self):
|
||||
self.grand_total = flt(self.tax_doclist and \
|
||||
self.tax_doclist[-1].total or self.net_total, self.precision("grand_total"))
|
||||
self.grand_total_export = flt(self.grand_total / self.conversion_rate,
|
||||
self.precision("grand_total_export"))
|
||||
self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist else self.net_total)
|
||||
|
||||
self.other_charges_total = flt(self.grand_total - self.net_total,
|
||||
self.precision("other_charges_total"))
|
||||
self.grand_total_export = flt(self.grand_total / self.conversion_rate)
|
||||
|
||||
self.other_charges_total_export = flt(self.grand_total_export -
|
||||
self.net_total_export + flt(self.discount_amount),
|
||||
self.precision("other_charges_total_export"))
|
||||
self.other_charges_total = flt(self.grand_total - self.net_total, self.precision("other_charges_total"))
|
||||
|
||||
self.other_charges_total_export = flt(self.grand_total_export - self.net_total_export +
|
||||
flt(self.discount_amount), self.precision("other_charges_total_export"))
|
||||
|
||||
self.grand_total = flt(self.grand_total, self.precision("grand_total"))
|
||||
self.grand_total_export = flt(self.grand_total_export, self.precision("grand_total_export"))
|
||||
|
||||
self.rounded_total = rounded(self.grand_total)
|
||||
self.rounded_total_export = rounded(self.grand_total_export)
|
||||
|
||||
@@ -11,7 +11,7 @@ from erpnext.controllers.accounts_controller import AccountsController
|
||||
from erpnext.accounts.general_ledger import make_gl_entries, delete_gl_entries, process_gl_map
|
||||
|
||||
class StockController(AccountsController):
|
||||
def make_gl_entries(self, repost_future_gle=True, allow_negative_stock=False):
|
||||
def make_gl_entries(self, repost_future_gle=True):
|
||||
if self.docstatus == 2:
|
||||
delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
|
||||
|
||||
@@ -19,18 +19,16 @@ class StockController(AccountsController):
|
||||
warehouse_account = get_warehouse_account()
|
||||
|
||||
if self.docstatus==1:
|
||||
gl_entries = self.get_gl_entries(warehouse_account, allow_negative_stock=allow_negative_stock)
|
||||
gl_entries = self.get_gl_entries(warehouse_account)
|
||||
make_gl_entries(gl_entries)
|
||||
|
||||
if repost_future_gle:
|
||||
items, warehouses = self.get_items_and_warehouses()
|
||||
update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items,
|
||||
warehouse_account, allow_negative_stock)
|
||||
warehouse_account)
|
||||
|
||||
def get_gl_entries(self, warehouse_account=None, default_expense_account=None,
|
||||
default_cost_center=None, allow_negative_stock=False):
|
||||
|
||||
# block_negative_stock(allow_negative_stock)
|
||||
default_cost_center=None):
|
||||
|
||||
if not warehouse_account:
|
||||
warehouse_account = get_warehouse_account()
|
||||
@@ -49,17 +47,12 @@ class StockController(AccountsController):
|
||||
|
||||
self.check_expense_account(detail)
|
||||
|
||||
stock_value_difference = flt(sle.stock_value_difference, 2)
|
||||
if not stock_value_difference:
|
||||
valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse)
|
||||
stock_value_difference = flt(sle.actual_qty)*flt(valuation_rate)
|
||||
|
||||
gl_list.append(self.get_gl_dict({
|
||||
"account": warehouse_account[sle.warehouse],
|
||||
"against": detail.expense_account,
|
||||
"cost_center": detail.cost_center,
|
||||
"remarks": self.get("remarks") or "Accounting Entry for Stock",
|
||||
"debit": stock_value_difference
|
||||
"debit": flt(sle.stock_value_difference, 2)
|
||||
}))
|
||||
|
||||
# to target warehouse / expense account
|
||||
@@ -68,7 +61,7 @@ class StockController(AccountsController):
|
||||
"against": warehouse_account[sle.warehouse],
|
||||
"cost_center": detail.cost_center,
|
||||
"remarks": self.get("remarks") or "Accounting Entry for Stock",
|
||||
"credit": stock_value_difference
|
||||
"credit": flt(sle.stock_value_difference, 2)
|
||||
}))
|
||||
elif sle.warehouse not in warehouse_with_no_account:
|
||||
warehouse_with_no_account.append(sle.warehouse)
|
||||
@@ -182,7 +175,7 @@ class StockController(AccountsController):
|
||||
_(self.doctype), self.name, item.get("item_code")))
|
||||
|
||||
def get_sl_entries(self, d, args):
|
||||
sl_dict = {
|
||||
sl_dict = frappe._dict({
|
||||
"item_code": d.get("item_code", None),
|
||||
"warehouse": d.get("warehouse", None),
|
||||
"posting_date": self.posting_date,
|
||||
@@ -199,7 +192,7 @@ class StockController(AccountsController):
|
||||
"serial_no": d.get("serial_no"),
|
||||
"project": d.get("project_name"),
|
||||
"is_cancelled": self.docstatus==2 and "Yes" or "No"
|
||||
}
|
||||
})
|
||||
|
||||
sl_dict.update(args)
|
||||
return sl_dict
|
||||
@@ -224,7 +217,7 @@ class StockController(AccountsController):
|
||||
return serialized_items
|
||||
|
||||
def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for_items=None,
|
||||
warehouse_account=None, allow_negative_stock=False):
|
||||
warehouse_account=None):
|
||||
def _delete_gl_entries(voucher_type, voucher_no):
|
||||
frappe.db.sql("""delete from `tabGL Entry`
|
||||
where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no))
|
||||
@@ -238,12 +231,12 @@ def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for
|
||||
for voucher_type, voucher_no in future_stock_vouchers:
|
||||
existing_gle = gle.get((voucher_type, voucher_no), [])
|
||||
voucher_obj = frappe.get_doc(voucher_type, voucher_no)
|
||||
expected_gle = voucher_obj.get_gl_entries(warehouse_account, allow_negative_stock=allow_negative_stock)
|
||||
expected_gle = voucher_obj.get_gl_entries(warehouse_account)
|
||||
if expected_gle:
|
||||
if not existing_gle or not compare_existing_and_expected_gle(existing_gle,
|
||||
expected_gle):
|
||||
_delete_gl_entries(voucher_type, voucher_no)
|
||||
voucher_obj.make_gl_entries(repost_future_gle=False, allow_negative_stock=allow_negative_stock)
|
||||
voucher_obj.make_gl_entries(repost_future_gle=False)
|
||||
else:
|
||||
_delete_gl_entries(voucher_type, voucher_no)
|
||||
|
||||
@@ -295,31 +288,3 @@ def get_warehouse_account():
|
||||
warehouse_account = dict(frappe.db.sql("""select master_name, name from tabAccount
|
||||
where account_type = 'Warehouse' and ifnull(master_name, '') != ''"""))
|
||||
return warehouse_account
|
||||
|
||||
def block_negative_stock(allow_negative_stock=False):
|
||||
if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) and not allow_negative_stock:
|
||||
if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")):
|
||||
frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings"))
|
||||
|
||||
def get_valuation_rate(item_code, warehouse):
|
||||
last_valuation_rate = frappe.db.sql("""select valuation_rate
|
||||
from `tabStock Ledger Entry`
|
||||
where item_code = %s and warehouse = %s
|
||||
and ifnull(valuation_rate, 0) > 0
|
||||
order by posting_date desc, posting_time desc, name desc limit 1""", (item_code, warehouse))
|
||||
|
||||
if not last_valuation_rate:
|
||||
last_valuation_rate = frappe.db.sql("""select valuation_rate
|
||||
from `tabStock Ledger Entry`
|
||||
where item_code = %s and ifnull(valuation_rate, 0) > 0
|
||||
order by posting_date desc, posting_time desc, name desc limit 1""", item_code)
|
||||
|
||||
valuation_rate = flt(last_valuation_rate[0][0]) if last_valuation_rate else 0
|
||||
|
||||
if not valuation_rate:
|
||||
valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate")
|
||||
|
||||
if not valuation_rate:
|
||||
frappe.throw(_("Purchase rate for item: {0} not found, which is required to book accounting entry. Please mention item price against a buying price list.").format(item_code))
|
||||
|
||||
return valuation_rate
|
||||
|
||||
@@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors"
|
||||
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
|
||||
app_icon = "icon-th"
|
||||
app_color = "#e74c3c"
|
||||
app_version = "4.6.1"
|
||||
app_version = "4.13.0"
|
||||
|
||||
error_report_email = "support@erpnext.com"
|
||||
|
||||
@@ -47,8 +47,8 @@ doc_events = {
|
||||
"on_update": "erpnext.home.make_comment_feed"
|
||||
},
|
||||
"Stock Entry": {
|
||||
"on_submit": "erpnext.stock.doctype.material_request.material_request.update_completed_qty",
|
||||
"on_cancel": "erpnext.stock.doctype.material_request.material_request.update_completed_qty"
|
||||
"on_submit": "erpnext.stock.doctype.material_request.material_request.update_completed_and_requested_qty",
|
||||
"on_cancel": "erpnext.stock.doctype.material_request.material_request.update_completed_and_requested_qty"
|
||||
},
|
||||
"User": {
|
||||
"validate": "erpnext.hr.doctype.employee.employee.validate_employee_role",
|
||||
|
||||
@@ -1,9 +1,21 @@
|
||||
{
|
||||
"autoname": "EXP.######",
|
||||
"autoname": "naming_series:",
|
||||
"creation": "2013-01-10 16:34:14",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"fields": [
|
||||
{
|
||||
"default": "EXP",
|
||||
"fieldname": "naming_series",
|
||||
"fieldtype": "Select",
|
||||
"label": "Series",
|
||||
"no_copy": 1,
|
||||
"options": "EXP",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 1,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"default": "Draft",
|
||||
"depends_on": "eval:!doc.__islocal",
|
||||
@@ -190,7 +202,7 @@
|
||||
"icon": "icon-money",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-08-27 07:08:48.454580",
|
||||
"modified": "2014-11-24 18:25:53.038826",
|
||||
"modified_by": "Administrator",
|
||||
"module": "HR",
|
||||
"name": "Expense Claim",
|
||||
|
||||
@@ -104,9 +104,32 @@ cur_frm.cscript.calculate_total_days = function(doc, dt, dn) {
|
||||
if(cint(doc.half_day) == 1) set_multiple(dt,dn,{total_leave_days:0.5});
|
||||
else{
|
||||
// server call is done to include holidays in leave days calculations
|
||||
return get_server_fields('get_total_leave_days', '', '', doc, dt, dn, 1);
|
||||
return frappe.call({
|
||||
method: 'erpnext.hr.doctype.leave_application.leave_application.get_total_leave_days',
|
||||
args: {leave_app: doc},
|
||||
callback: function(response) {
|
||||
if (response && response.message) {
|
||||
cur_frm.set_value('total_leave_days', response.message.total_leave_days);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cur_frm.fields_dict.employee.get_query = erpnext.queries.employee;
|
||||
|
||||
frappe.ui.form.on("Leave Application", "leave_approver", function(frm) {
|
||||
frappe.call({
|
||||
"method": "frappe.client.get",
|
||||
args: {
|
||||
doctype: "User",
|
||||
name: frm.doc.leave_approver
|
||||
},
|
||||
callback: function (data) {
|
||||
frappe.model.set_value(frm.doctype, frm.docname, "leave_approver_name",
|
||||
data.message.first_name
|
||||
+ (data.message.last_name ? (" " + data.message.last_name) : ""))
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
@@ -24,6 +24,13 @@
|
||||
"options": "User",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "leave_approver_name",
|
||||
"fieldtype": "Read Only",
|
||||
"label": "Leave Approver Name",
|
||||
"permlevel": 0,
|
||||
"precision": ""
|
||||
},
|
||||
{
|
||||
"fieldname": "leave_type",
|
||||
"fieldtype": "Link",
|
||||
@@ -184,7 +191,7 @@
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"max_attachments": 3,
|
||||
"modified": "2014-09-09 05:35:31.531651",
|
||||
"modified": "2014-12-09 16:33:29.626849",
|
||||
"modified_by": "Administrator",
|
||||
"module": "HR",
|
||||
"name": "Leave Application",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
import frappe, json
|
||||
from frappe import _
|
||||
|
||||
from frappe.utils import cint, cstr, date_diff, flt, formatdate, getdate, get_url_to_form, \
|
||||
@@ -77,26 +77,10 @@ class LeaveApplication(Document):
|
||||
LeaveDayBlockedError)
|
||||
|
||||
def get_holidays(self):
|
||||
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2, `tabEmployee` e1
|
||||
where e1.name = %s and h1.parent = h2.name and e1.holiday_list = h2.name
|
||||
and h1.holiday_date between %s and %s""", (self.employee, self.from_date, self.to_date))
|
||||
if not tot_hol:
|
||||
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2
|
||||
where h1.parent = h2.name and h1.holiday_date between %s and %s
|
||||
and ifnull(h2.is_default,0) = 1 and h2.fiscal_year = %s""",
|
||||
(self.from_date, self.to_date, self.fiscal_year))
|
||||
return tot_hol and flt(tot_hol[0][0]) or 0
|
||||
return get_holidays(self)
|
||||
|
||||
def get_total_leave_days(self):
|
||||
"""Calculates total leave days based on input and holidays"""
|
||||
ret = {'total_leave_days' : 0.5}
|
||||
if not self.half_day:
|
||||
tot_days = date_diff(self.to_date, self.from_date) + 1
|
||||
holidays = self.get_holidays()
|
||||
ret = {
|
||||
'total_leave_days' : flt(tot_days)-flt(holidays)
|
||||
}
|
||||
return ret
|
||||
return get_total_leave_days(self)
|
||||
|
||||
def validate_to_date(self):
|
||||
if self.from_date and self.to_date and \
|
||||
@@ -216,6 +200,35 @@ class LeaveApplication(Document):
|
||||
post(**{"txt": args.message, "contact": args.message_to, "subject": args.subject,
|
||||
"notify": cint(self.follow_via_email)})
|
||||
|
||||
def get_holidays(leave_app):
|
||||
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2, `tabEmployee` e1
|
||||
where e1.name = %s and h1.parent = h2.name and e1.holiday_list = h2.name
|
||||
and h1.holiday_date between %s and %s""", (leave_app.employee, leave_app.from_date,
|
||||
leave_app.to_date))
|
||||
# below line is needed. If an employee hasn't been assigned with any holiday list then above will return 0 rows.
|
||||
if not tot_hol:
|
||||
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2
|
||||
where h1.parent = h2.name and h1.holiday_date between %s and %s
|
||||
and ifnull(h2.is_default,0) = 1 and h2.fiscal_year = %s""",
|
||||
(leave_app.from_date, leave_app.to_date, leave_app.fiscal_year))
|
||||
return tot_hol and tot_hol[0][0] or 0
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_total_leave_days(leave_app):
|
||||
# Parse Leave Application if neccessary
|
||||
if isinstance(leave_app, str) or isinstance(leave_app, unicode):
|
||||
leave_app = frappe.get_doc(json.loads(leave_app))
|
||||
|
||||
"""Calculates total leave days based on input and holidays"""
|
||||
ret = {'total_leave_days' : 0.5}
|
||||
if not leave_app.half_day:
|
||||
tot_days = date_diff(leave_app.to_date, leave_app.from_date) + 1
|
||||
holidays = leave_app.get_holidays()
|
||||
ret = {
|
||||
'total_leave_days' : flt(tot_days)-flt(holidays)
|
||||
}
|
||||
return ret
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_leave_balance(employee, leave_type, fiscal_year):
|
||||
leave_all = frappe.db.sql("""select total_leaves_allocated
|
||||
|
||||
@@ -156,7 +156,7 @@ class SalarySlip(TransactionBase):
|
||||
/ cint(self.total_days_in_month), 2)
|
||||
elif not self.payment_days:
|
||||
d.e_modified_amount = 0
|
||||
else:
|
||||
elif not d.e_modified_amount:
|
||||
d.e_modified_amount = d.e_amount
|
||||
self.gross_pay += flt(d.e_modified_amount)
|
||||
|
||||
@@ -168,7 +168,7 @@ class SalarySlip(TransactionBase):
|
||||
/ cint(self.total_days_in_month), 2)
|
||||
elif not self.payment_days:
|
||||
d.d_modified_amount = 0
|
||||
else:
|
||||
elif not d.d_modified_amount:
|
||||
d.d_modified_amount = d.d_amount
|
||||
|
||||
self.total_deduction += flt(d.d_modified_amount)
|
||||
|
||||
@@ -85,4 +85,7 @@ erpnext.patches.v4_2.seprate_manufacture_and_repack
|
||||
execute:frappe.delete_doc("Report", "Warehouse-Wise Stock Balance")
|
||||
execute:frappe.delete_doc("DocType", "Purchase Request")
|
||||
execute:frappe.delete_doc("DocType", "Purchase Request Item")
|
||||
erpnext.patches.v4_2.recalculate_bom_cost
|
||||
erpnext.patches.v4_2.recalculate_bom_cost
|
||||
erpnext.patches.v4_2.fix_gl_entries_for_stock_transactions
|
||||
erpnext.patches.v4_2.update_requested_and_ordered_qty
|
||||
execute:frappe.delete_doc("DocType", "Contact Control")
|
||||
|
||||
@@ -7,45 +7,46 @@ from frappe.utils import flt
|
||||
|
||||
def execute():
|
||||
from erpnext.utilities.repost_stock import repost
|
||||
repost()
|
||||
repost(allow_zero_rate=True, only_actual=True)
|
||||
|
||||
warehouse_account = frappe.db.sql("""select name, master_name from tabAccount
|
||||
where ifnull(account_type, '') = 'Warehouse'""")
|
||||
warehouses = [d[1] for d in warehouse_account]
|
||||
accounts = [d[0] for d in warehouse_account]
|
||||
if warehouse_account:
|
||||
warehouses = [d[1] for d in warehouse_account]
|
||||
accounts = [d[0] for d in warehouse_account]
|
||||
|
||||
stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no
|
||||
from `tabStock Ledger Entry` sle
|
||||
where sle.warehouse in (%s)
|
||||
order by sle.posting_date""" %
|
||||
', '.join(['%s']*len(warehouses)), tuple(warehouses))
|
||||
stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no
|
||||
from `tabStock Ledger Entry` sle
|
||||
where sle.warehouse in (%s)
|
||||
order by sle.posting_date""" %
|
||||
', '.join(['%s']*len(warehouses)), tuple(warehouses))
|
||||
|
||||
rejected = []
|
||||
for voucher_type, voucher_no in stock_vouchers:
|
||||
stock_bal = frappe.db.sql("""select sum(stock_value_difference) from `tabStock Ledger Entry`
|
||||
where voucher_type=%s and voucher_no =%s and warehouse in (%s)""" %
|
||||
('%s', '%s', ', '.join(['%s']*len(warehouses))), tuple([voucher_type, voucher_no] + warehouses))
|
||||
rejected = []
|
||||
for voucher_type, voucher_no in stock_vouchers:
|
||||
stock_bal = frappe.db.sql("""select sum(stock_value_difference) from `tabStock Ledger Entry`
|
||||
where voucher_type=%s and voucher_no =%s and warehouse in (%s)""" %
|
||||
('%s', '%s', ', '.join(['%s']*len(warehouses))), tuple([voucher_type, voucher_no] + warehouses))
|
||||
|
||||
account_bal = frappe.db.sql("""select ifnull(sum(ifnull(debit, 0) - ifnull(credit, 0)), 0)
|
||||
from `tabGL Entry`
|
||||
where voucher_type=%s and voucher_no =%s and account in (%s)
|
||||
group by voucher_type, voucher_no""" %
|
||||
('%s', '%s', ', '.join(['%s']*len(accounts))), tuple([voucher_type, voucher_no] + accounts))
|
||||
account_bal = frappe.db.sql("""select ifnull(sum(ifnull(debit, 0) - ifnull(credit, 0)), 0)
|
||||
from `tabGL Entry`
|
||||
where voucher_type=%s and voucher_no =%s and account in (%s)
|
||||
group by voucher_type, voucher_no""" %
|
||||
('%s', '%s', ', '.join(['%s']*len(accounts))), tuple([voucher_type, voucher_no] + accounts))
|
||||
|
||||
if stock_bal and account_bal and abs(flt(stock_bal[0][0]) - flt(account_bal[0][0])) > 0.1:
|
||||
try:
|
||||
print voucher_type, voucher_no, stock_bal[0][0], account_bal[0][0]
|
||||
if stock_bal and account_bal and abs(flt(stock_bal[0][0]) - flt(account_bal[0][0])) > 0.1:
|
||||
try:
|
||||
print voucher_type, voucher_no, stock_bal[0][0], account_bal[0][0]
|
||||
|
||||
frappe.db.sql("""delete from `tabGL Entry`
|
||||
where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no))
|
||||
frappe.db.sql("""delete from `tabGL Entry`
|
||||
where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no))
|
||||
|
||||
voucher = frappe.get_doc(voucher_type, voucher_no)
|
||||
voucher.make_gl_entries(repost_future_gle=False, allow_negative_stock=True)
|
||||
frappe.db.commit()
|
||||
except Exception, e:
|
||||
print frappe.get_traceback()
|
||||
rejected.append([voucher_type, voucher_no])
|
||||
frappe.db.rollback()
|
||||
voucher = frappe.get_doc(voucher_type, voucher_no)
|
||||
voucher.make_gl_entries(repost_future_gle=False)
|
||||
frappe.db.commit()
|
||||
except Exception, e:
|
||||
print frappe.get_traceback()
|
||||
rejected.append([voucher_type, voucher_no])
|
||||
frappe.db.rollback()
|
||||
|
||||
print "Failed to repost: "
|
||||
print rejected
|
||||
print "Failed to repost: "
|
||||
print rejected
|
||||
|
||||
24
erpnext/patches/v4_2/update_requested_and_ordered_qty.py
Normal file
24
erpnext/patches/v4_2/update_requested_and_ordered_qty.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
from erpnext.utilities.repost_stock import update_bin_qty, get_indented_qty, get_ordered_qty
|
||||
|
||||
count=0
|
||||
for item_code, warehouse in frappe.db.sql("""select distinct item_code, warehouse from
|
||||
(select item_code, warehouse from tabBin
|
||||
union
|
||||
select item_code, warehouse from `tabStock Ledger Entry`) a"""):
|
||||
try:
|
||||
count += 1
|
||||
update_bin_qty(item_code, warehouse, {
|
||||
"indented_qty": get_indented_qty(item_code, warehouse),
|
||||
"ordered_qty": get_ordered_qty(item_code, warehouse)
|
||||
})
|
||||
if count % 200 == 0:
|
||||
frappe.db.commit()
|
||||
except:
|
||||
frappe.db.rollback()
|
||||
@@ -16,6 +16,15 @@ class TestTimeLog(unittest.TestCase):
|
||||
self.assertRaises(OverlapError, ts.insert)
|
||||
|
||||
frappe.db.sql("delete from `tabTime Log`")
|
||||
|
||||
def test_negative_hours(self):
|
||||
frappe.db.sql("delete from `tabTime Log`")
|
||||
test_time_log = frappe.new_doc("Time Log")
|
||||
test_time_log.activity_type = "Communication"
|
||||
test_time_log.from_time = "2013-01-01 11:00:00.000000"
|
||||
test_time_log.to_time = "2013-01-01 10:00:00.000000"
|
||||
self.assertRaises(frappe.ValidationError, test_time_log.save)
|
||||
frappe.db.sql("delete from `tabTime Log`")
|
||||
|
||||
test_records = frappe.get_test_records('Time Log')
|
||||
test_ignore = ["Time Log Batch", "Sales Invoice"]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"allow_import": 1,
|
||||
"allow_import": 1,
|
||||
"autoname": "naming_series:",
|
||||
"creation": "2013-04-03 16:38:41",
|
||||
"description": "Log of Activities performed by users against Tasks that can be used for tracking time, billing.",
|
||||
@@ -25,14 +25,6 @@
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "hours",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 1,
|
||||
"label": "Hours",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "to_time",
|
||||
"fieldtype": "Datetime",
|
||||
@@ -42,6 +34,14 @@
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "hours",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 1,
|
||||
"label": "Hours",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_3",
|
||||
"fieldtype": "Column Break",
|
||||
@@ -151,7 +151,7 @@
|
||||
"icon": "icon-time",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-08-04 05:23:15.740050",
|
||||
"modified": "2014-10-22 16:53:26.993828",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Projects",
|
||||
"name": "Time Log",
|
||||
|
||||
@@ -19,10 +19,12 @@ class TimeLog(Document):
|
||||
self.set_status()
|
||||
self.validate_overlap()
|
||||
self.calculate_total_hours()
|
||||
|
||||
|
||||
def calculate_total_hours(self):
|
||||
from frappe.utils import time_diff_in_hours
|
||||
self.hours = time_diff_in_hours(self.to_time, self.from_time)
|
||||
if self.hours < 0:
|
||||
frappe.throw(_("'From Time' cannot be later than 'To Time'"))
|
||||
|
||||
def set_status(self):
|
||||
self.status = {
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
"public/js/feature_setup.js",
|
||||
"public/js/utils.js",
|
||||
"public/js/queries.js",
|
||||
"public/js/utils/party.js"
|
||||
"public/js/utils/party.js",
|
||||
"public/js/templates/address_list.html",
|
||||
"public/js/templates/contact_list.html"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -131,6 +131,7 @@ erpnext.StockAnalytics = erpnext.StockGridReport.extend({
|
||||
|
||||
if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
|
||||
var item = me.item_by_name[sl.item_code];
|
||||
if(item.closing_qty_value==undefined) item.closing_qty_value = 0;
|
||||
|
||||
if(me.value_or_qty!="Quantity") {
|
||||
var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
|
||||
|
||||
20
erpnext/public/js/templates/address_list.html
Normal file
20
erpnext/public/js/templates/address_list.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<p><button class="btn btn-sm btn-default btn-address">
|
||||
<i class="icon-plus"></i> New Address</button></p>
|
||||
{% for(var i=0, l=addr_list.length; i<l; i++) { %}
|
||||
<hr>
|
||||
<a href="#Form/Address/{%= addr_list[i].name %}" class="btn btn-sm btn-default pull-right">
|
||||
{%= __("Edit") %}</a>
|
||||
<p><b>{%= i+1 %}. {%= addr_list[i].address_type %}</b></p>
|
||||
<div style="padding-left: 15px;">
|
||||
<div>
|
||||
{% if(addr_list[i].is_primary_address) { %}<span class="label label-info">
|
||||
{%= __("Primary") %}</span>{% } %}
|
||||
{% if(addr_list[i].is_shipping_address) { %}<span class="label label-default">
|
||||
{%= __("Shipping") %}</span>{% } %}
|
||||
</div>
|
||||
<p style="margin-top: 5px;">{%= addr_list[i].display %}</p>
|
||||
</div>
|
||||
{% } %}
|
||||
{% if(!addr_list.length) { %}
|
||||
<p class="text-muted">{%= __("No address added yet.") %}</p>
|
||||
{% } %}
|
||||
28
erpnext/public/js/templates/contact_list.html
Normal file
28
erpnext/public/js/templates/contact_list.html
Normal file
@@ -0,0 +1,28 @@
|
||||
<p><button class="btn btn-sm btn-default btn-contact">
|
||||
<i class="icon-plus"></i> New Contact</button></p>
|
||||
{% for(var i=0, l=contact_list.length; i<l; i++) { %}
|
||||
<hr>
|
||||
<a href="#Form/Contact/{%= contact_list[i].name %}" class="btn btn-sm btn-default pull-right">
|
||||
{%= __("Edit") %}</a>
|
||||
<p><b>{%= i+1 %}. {%= contact_list[i].first_name %} {%= contact_list[i].last_name %}</b></p>
|
||||
<div style="padding-left: 15px;">
|
||||
<div>
|
||||
{% if(contact_list[i].is_primary_contact) { %}<span class="label label-info">
|
||||
{%= __("Primary") %}</span>{% } %}
|
||||
</div>
|
||||
<p style="padding-top: 5px;">
|
||||
{% if(contact_list[i].phone) { %}
|
||||
{%= __("Phone") %}: {%= contact_list[i].phone %}<br>
|
||||
{% } %}
|
||||
{% if(contact_list[i].mobile_no) { %}
|
||||
{%= __("Mobile No.") %}: {%= contact_list[i].mobile_no %}<br>
|
||||
{% } %}
|
||||
{% if(contact_list[i].email_id) { %}
|
||||
{%= __("Email ID") %}: {%= contact_list[i].email_id %}
|
||||
{% } %}
|
||||
</p>
|
||||
</div>
|
||||
{% } %}
|
||||
{% if(!contact_list.length) { %}
|
||||
<p class="text-muted">{%= __("No contacts added yet.") %}</p>
|
||||
{% } %}
|
||||
@@ -81,5 +81,28 @@ $.extend(erpnext, {
|
||||
|
||||
d.show();
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
erpnext.utils = {
|
||||
render_address_and_contact: function(frm) {
|
||||
// render address
|
||||
$(frm.fields_dict['address_html'].wrapper)
|
||||
.html(frappe.render(frappe.templates.address_list,
|
||||
cur_frm.doc.__onload))
|
||||
.find(".btn-address").on("click", function() {
|
||||
new_doc("Address");
|
||||
});
|
||||
|
||||
// render contact
|
||||
if(frm.fields_dict['contact_html']) {
|
||||
$(frm.fields_dict['contact_html'].wrapper)
|
||||
.html(frappe.render(frappe.templates.contact_list,
|
||||
cur_frm.doc.__onload))
|
||||
.find(".btn-contact").on("click", function() {
|
||||
new_doc("Contact");
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
// License: GNU General Public License v3. See license.txt
|
||||
|
||||
{% include 'setup/doctype/contact_control/contact_control.js' %};
|
||||
|
||||
cur_frm.cscript.onload = function(doc, dt, dn) {
|
||||
cur_frm.cscript.load_defaults(doc, dt, dn);
|
||||
}
|
||||
@@ -32,8 +30,8 @@ cur_frm.cscript.refresh = function(doc, dt, dn) {
|
||||
}else{
|
||||
unhide_field(['address_html','contact_html']);
|
||||
// make lists
|
||||
cur_frm.cscript.make_address(doc, dt, dn);
|
||||
cur_frm.cscript.make_contact(doc, dt, dn);
|
||||
|
||||
erpnext.utils.render_address_and_contact(cur_frm)
|
||||
|
||||
cur_frm.communication_view = new frappe.views.CommunicationList({
|
||||
parent: cur_frm.fields_dict.communication_html.wrapper,
|
||||
@@ -79,44 +77,6 @@ cur_frm.cscript.setup_dashboard = function(doc) {
|
||||
});
|
||||
}
|
||||
|
||||
cur_frm.cscript.make_address = function() {
|
||||
if(!cur_frm.address_list) {
|
||||
cur_frm.address_list = new frappe.ui.Listing({
|
||||
parent: cur_frm.fields_dict['address_html'].wrapper,
|
||||
page_length: 5,
|
||||
new_doctype: "Address",
|
||||
get_query: function() {
|
||||
return "select name, address_type, address_line1, address_line2, city, state, country, pincode, fax, email_id, phone, is_primary_address, is_shipping_address from tabAddress where customer='" +
|
||||
cur_frm.doc.name.replace(/'/g, "\\'") + "' and docstatus != 2 order by is_primary_address desc"
|
||||
},
|
||||
as_dict: 1,
|
||||
no_results_message: __('No addresses created'),
|
||||
render_row: cur_frm.cscript.render_address_row,
|
||||
});
|
||||
// note: render_address_row is defined in contact_control.js
|
||||
}
|
||||
cur_frm.address_list.run();
|
||||
}
|
||||
|
||||
cur_frm.cscript.make_contact = function() {
|
||||
if(!cur_frm.contact_list) {
|
||||
cur_frm.contact_list = new frappe.ui.Listing({
|
||||
parent: cur_frm.fields_dict['contact_html'].wrapper,
|
||||
page_length: 5,
|
||||
new_doctype: "Contact",
|
||||
get_query: function() {
|
||||
return "select name, first_name, last_name, email_id, phone, mobile_no, department, designation, is_primary_contact from tabContact where customer='" +
|
||||
cur_frm.doc.name.replace(/'/g, "\\'") + "' and docstatus != 2 order by is_primary_contact desc"
|
||||
},
|
||||
as_dict: 1,
|
||||
no_results_message: __('No contacts created'),
|
||||
render_row: cur_frm.cscript.render_contact_row,
|
||||
});
|
||||
// note: render_contact_row is defined in contact_control.js
|
||||
}
|
||||
cur_frm.contact_list.run();
|
||||
}
|
||||
|
||||
cur_frm.fields_dict['customer_group'].get_query = function(doc, dt, dn) {
|
||||
return{
|
||||
filters:{'is_group': 'No'}
|
||||
|
||||
@@ -7,11 +7,14 @@ from frappe.model.naming import make_autoname
|
||||
from frappe import msgprint, _
|
||||
import frappe.defaults
|
||||
|
||||
|
||||
from erpnext.utilities.transaction_base import TransactionBase
|
||||
from erpnext.utilities.address_and_contact import load_address_and_contact
|
||||
from erpnext.accounts.party import create_party_account
|
||||
|
||||
class Customer(TransactionBase):
|
||||
def onload(self):
|
||||
"""Load address and contacts in `__onload`"""
|
||||
load_address_and_contact(self, "customer")
|
||||
|
||||
def autoname(self):
|
||||
cust_master_name = frappe.defaults.get_global_default('cust_master_name')
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
// License: GNU General Public License v3. See license.txt
|
||||
|
||||
{% include 'setup/doctype/contact_control/contact_control.js' %};
|
||||
|
||||
frappe.provide("erpnext");
|
||||
erpnext.LeadController = frappe.ui.form.Controller.extend({
|
||||
setup: function() {
|
||||
@@ -42,33 +40,10 @@ erpnext.LeadController = frappe.ui.form.Controller.extend({
|
||||
});
|
||||
|
||||
if(!this.frm.doc.__islocal) {
|
||||
this.make_address_list();
|
||||
erpnext.utils.render_address_and_contact(cur_frm);
|
||||
}
|
||||
},
|
||||
|
||||
make_address_list: function() {
|
||||
var me = this;
|
||||
if(!this.frm.address_list) {
|
||||
this.frm.address_list = new frappe.ui.Listing({
|
||||
parent: this.frm.fields_dict['address_html'].wrapper,
|
||||
page_length: 5,
|
||||
new_doctype: "Address",
|
||||
get_query: function() {
|
||||
return 'select name, address_type, address_line1, address_line2, \
|
||||
city, state, country, pincode, fax, email_id, phone, \
|
||||
is_primary_address, is_shipping_address from tabAddress \
|
||||
where lead="'+me.frm.doc.name+'" and docstatus != 2 \
|
||||
order by is_primary_address, is_shipping_address desc'
|
||||
},
|
||||
as_dict: 1,
|
||||
no_results_message: __('No addresses created'),
|
||||
render_row: this.render_address_row,
|
||||
});
|
||||
// note: render_address_row is defined in contact_control.js
|
||||
}
|
||||
this.frm.address_list.run();
|
||||
},
|
||||
|
||||
create_customer: function() {
|
||||
frappe.model.open_mapped_doc({
|
||||
method: "erpnext.selling.doctype.lead.lead.make_customer",
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"description": "Add to calendar on this date",
|
||||
"fieldname": "contact_date",
|
||||
"fieldtype": "Date",
|
||||
"fieldtype": "Datetime",
|
||||
"in_filter": 1,
|
||||
"label": "Next Contact Date",
|
||||
"no_copy": 1,
|
||||
@@ -368,7 +368,7 @@
|
||||
],
|
||||
"icon": "icon-user",
|
||||
"idx": 1,
|
||||
"modified": "2014-08-12 05:22:18.801092",
|
||||
"modified": "2014-12-01 08:22:23.286314",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Selling",
|
||||
"name": "Lead",
|
||||
|
||||
@@ -9,11 +9,13 @@ from frappe import session
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
|
||||
from erpnext.controllers.selling_controller import SellingController
|
||||
from erpnext.utilities.address_and_contact import load_address_and_contact
|
||||
|
||||
class Lead(SellingController):
|
||||
def onload(self):
|
||||
customer = frappe.db.get_value("Customer", {"lead_name": self.name})
|
||||
self.get("__onload").is_customer = customer
|
||||
load_address_and_contact(self, "lead")
|
||||
|
||||
def validate(self):
|
||||
self._prev = frappe._dict({
|
||||
@@ -43,6 +45,7 @@ class Lead(SellingController):
|
||||
def add_calendar_event(self, opts=None, force=False):
|
||||
super(Lead, self).add_calendar_event({
|
||||
"owner": self.lead_owner,
|
||||
"starts_on": self.contact_date,
|
||||
"subject": ('Contact ' + cstr(self.lead_name)),
|
||||
"description": ('Contact ' + cstr(self.lead_name)) + \
|
||||
(self.contact_by and ('. By : ' + cstr(self.contact_by)) or '')
|
||||
|
||||
@@ -372,7 +372,7 @@
|
||||
{
|
||||
"description": "Your sales person will get a reminder on this date to contact the customer",
|
||||
"fieldname": "contact_date",
|
||||
"fieldtype": "Date",
|
||||
"fieldtype": "Datetime",
|
||||
"label": "Next Contact Date",
|
||||
"oldfieldname": "contact_date",
|
||||
"oldfieldtype": "Date",
|
||||
@@ -416,7 +416,7 @@
|
||||
"icon": "icon-info-sign",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-08-12 05:21:51.282397",
|
||||
"modified": "2014-12-01 08:46:35.331148",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Selling",
|
||||
"name": "Opportunity",
|
||||
|
||||
@@ -57,6 +57,7 @@ class Opportunity(TransactionBase):
|
||||
opts = frappe._dict()
|
||||
|
||||
opts.description = ""
|
||||
opts.contact_date = self.contact_date
|
||||
|
||||
if self.customer:
|
||||
if self.contact_person:
|
||||
|
||||
@@ -23,7 +23,7 @@ class Quotation(SellingController):
|
||||
self.validate_order_type()
|
||||
self.validate_for_items()
|
||||
self.validate_uom_is_integer("stock_uom", "qty")
|
||||
self.quotation_to = "Customer" if self.customer else "Lead"
|
||||
self.validate_quotation_to()
|
||||
|
||||
def has_sales_order(self):
|
||||
return frappe.db.get_value("Sales Order Item", {"prevdoc_docname": self.name, "docstatus": 1})
|
||||
@@ -54,6 +54,13 @@ class Quotation(SellingController):
|
||||
if is_sales_item == 'No':
|
||||
frappe.throw(_("Item {0} must be Sales Item").format(d.item_code))
|
||||
|
||||
def validate_quotation_to(self):
|
||||
if self.customer:
|
||||
self.quotation_to = "Customer"
|
||||
self.lead = None
|
||||
elif self.lead:
|
||||
self.quotation_to = "Lead"
|
||||
|
||||
def update_opportunity(self):
|
||||
for opportunity in list(set([d.prevdoc_docname for d in self.get("quotation_details")])):
|
||||
if opportunity:
|
||||
@@ -139,8 +146,8 @@ def _make_sales_order(source_name, target_doc=None, ignore_permissions=False):
|
||||
return doclist
|
||||
|
||||
def _make_customer(source_name, ignore_permissions=False):
|
||||
quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type"])
|
||||
if quotation and quotation[0]:
|
||||
quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type", "customer"])
|
||||
if quotation and quotation[0] and not quotation[2]:
|
||||
lead_name = quotation[0]
|
||||
customer_name = frappe.db.get_value("Customer", {"lead_name": lead_name},
|
||||
["name", "customer_name"], as_dict=True)
|
||||
|
||||
@@ -157,7 +157,7 @@ class SalesOrder(SellingController):
|
||||
|
||||
self.check_credit(self.grand_total)
|
||||
|
||||
frappe.get_doc('Authorization Control').validate_approving_authority(self.doctype, self.grand_total, self)
|
||||
frappe.get_doc('Authorization Control').validate_approving_authority(self.doctype, self.company, self.grand_total, self)
|
||||
|
||||
self.update_prevdoc_status('submit')
|
||||
frappe.db.set(self, 'status', 'Submitted')
|
||||
@@ -329,7 +329,7 @@ def make_sales_invoice(source_name, target_doc=None):
|
||||
def update_item(source, target, source_parent):
|
||||
target.amount = flt(source.amount) - flt(source.billed_amt)
|
||||
target.base_amount = target.amount * flt(source_parent.conversion_rate)
|
||||
target.qty = source.rate and target.amount / flt(source.rate) or source.qty
|
||||
target.qty = target.amount / flt(source.rate) if (source.rate and source.billed_amt) else source.qty
|
||||
|
||||
doclist = get_mapped_doc("Sales Order", source_name, {
|
||||
"Sales Order": {
|
||||
@@ -357,17 +357,6 @@ def make_sales_invoice(source_name, target_doc=None):
|
||||
}
|
||||
}, target_doc, postprocess)
|
||||
|
||||
def set_advance_vouchers(source, target):
|
||||
advance_voucher_list = []
|
||||
|
||||
advance_voucher = frappe.db.sql("""
|
||||
select
|
||||
t1.name as voucher_no, t1.posting_date, t1.remark, t2.account,
|
||||
t2.name as voucher_detail_no, {amount_query} as payment_amount, t2.is_advance
|
||||
from
|
||||
`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
|
||||
""")
|
||||
|
||||
return doclist
|
||||
|
||||
@frappe.whitelist()
|
||||
|
||||
@@ -341,11 +341,8 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
|
||||
var me = this;
|
||||
var tax_count = this.frm.tax_doclist.length;
|
||||
|
||||
this.frm.doc.grand_total = flt(
|
||||
tax_count ? this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total,
|
||||
precision("grand_total"));
|
||||
this.frm.doc.grand_total_export = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate,
|
||||
precision("grand_total_export"));
|
||||
this.frm.doc.grand_total = flt(tax_count ? this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total);
|
||||
this.frm.doc.grand_total_export = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate);
|
||||
|
||||
this.frm.doc.other_charges_total = flt(this.frm.doc.grand_total - this.frm.doc.net_total,
|
||||
precision("other_charges_total"));
|
||||
@@ -353,6 +350,9 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
|
||||
this.frm.doc.net_total_export + flt(this.frm.doc.discount_amount),
|
||||
precision("other_charges_total_export"));
|
||||
|
||||
this.frm.doc.grand_total = flt(this.frm.doc.grand_total, precision("grand_total"));
|
||||
this.frm.doc.grand_total_export = flt(this.frm.doc.grand_total_export, precision("grand_total_export"));
|
||||
|
||||
this.frm.doc.rounded_total = Math.round(this.frm.doc.grand_total);
|
||||
this.frm.doc.rounded_total_export = Math.round(this.frm.doc.grand_total_export);
|
||||
},
|
||||
@@ -587,16 +587,18 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
|
||||
});
|
||||
|
||||
frappe.ui.form.on(cur_frm.doctype,"project_name", function(frm) {
|
||||
frappe.call({
|
||||
method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
|
||||
args: { project_name: frm.doc.project_name },
|
||||
callback: function(r, rt) {
|
||||
if(!r.exc) {
|
||||
$.each(frm.doc[cur_frm.cscript.fname] || [], function(i, row) {
|
||||
frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
|
||||
msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
|
||||
})
|
||||
if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
|
||||
frappe.call({
|
||||
method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
|
||||
args: { project_name: frm.doc.project_name },
|
||||
callback: function(r, rt) {
|
||||
if(!r.exc) {
|
||||
$.each(frm.doc[cur_frm.cscript.fname] || [], function(i, row) {
|
||||
frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
|
||||
msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -98,9 +98,12 @@ class AuthorizationControl(TransactionBase):
|
||||
if doc_obj:
|
||||
price_list_rate, base_rate = 0, 0
|
||||
for d in doc_obj.get(doc_obj.fname):
|
||||
if d.base_price_list_rate and d.base_rate:
|
||||
price_list_rate += flt(d.base_price_list_rate)
|
||||
if d.base_rate:
|
||||
price_list_rate += flt(d.base_price_list_rate) or flt(d.base_rate)
|
||||
base_rate += flt(d.base_rate)
|
||||
if doc_obj.get("discount_amount"):
|
||||
base_rate -= flt(doc_obj.discount_amount)
|
||||
|
||||
if price_list_rate: av_dis = 100 - flt(base_rate * 100 / price_list_rate)
|
||||
|
||||
final_based_on = ['Grand Total','Average Discount','Customerwise Discount','Itemwise Discount']
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
[To deprecate] Common scripts for Contacts.
|
||||
@@ -1 +0,0 @@
|
||||
from __future__ import unicode_literals
|
||||
@@ -1,161 +0,0 @@
|
||||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
// License: GNU General Public License v3. See license.txt
|
||||
|
||||
if(cur_frm.fields_dict['territory']) {
|
||||
cur_frm.fields_dict['territory'].get_query = function(doc, dt, dn) {
|
||||
return {
|
||||
filters: {
|
||||
'is_group': "No"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cur_frm.cscript.render_contact_row = function(wrapper, data) {
|
||||
// prepare data
|
||||
data.fullname = (data.first_name || '')
|
||||
+ (data.last_name ? ' ' + data.last_name : '');
|
||||
data.primary = data.is_primary_contact ? ' [Primary]' : '';
|
||||
|
||||
// prepare description
|
||||
var description = [];
|
||||
$.each([
|
||||
['phone', 'Tel'],
|
||||
['mobile_no', 'Mobile'],
|
||||
['email_id', 'Email'],
|
||||
['department', 'Department'],
|
||||
['designation', 'Designation']],
|
||||
function(i, v) {
|
||||
if(v[0] && data[v[0]]) {
|
||||
description.push(repl('<h6>%(label)s:</h6> %(value)s', {
|
||||
label: v[1],
|
||||
value: data[v[0]],
|
||||
}));
|
||||
}
|
||||
});
|
||||
data.description = description.join('<br />');
|
||||
|
||||
cur_frm.cscript.render_row_in_wrapper(wrapper, data, 'Contact');
|
||||
}
|
||||
|
||||
cur_frm.cscript.render_address_row = function(wrapper, data) {
|
||||
// prepare data
|
||||
data.fullname = data.address_type;
|
||||
data.primary = '';
|
||||
if (data.is_primary_address) data.primary += ' [Preferred for Billing]';
|
||||
if (data.is_shipping_address) data.primary += ' [Preferred for Shipping]';
|
||||
|
||||
// prepare address
|
||||
var address = [];
|
||||
$.each(['address_line1', 'address_line2', 'city', 'state', 'country', 'pincode'],
|
||||
function(i, v) {
|
||||
if(data[v]) address.push(data[v]);
|
||||
});
|
||||
|
||||
data.address = address.join('<br />');
|
||||
data.address = "<p class='address-list'>" + data.address + "</p>";
|
||||
|
||||
// prepare description
|
||||
var description = [];
|
||||
$.each([
|
||||
['address', 'Address'],
|
||||
['phone', 'Tel'],
|
||||
['fax', 'Fax'],
|
||||
['email_id', 'Email']],
|
||||
function(i, v) {
|
||||
if(data[v[0]]) {
|
||||
description.push(repl('<h6>%(label)s:</h6> %(value)s', {
|
||||
label: v[1],
|
||||
value: data[v[0]],
|
||||
}));
|
||||
}
|
||||
});
|
||||
data.description = description.join('<br />');
|
||||
|
||||
cur_frm.cscript.render_row_in_wrapper(wrapper, data, 'Address');
|
||||
|
||||
$(wrapper).find('p.address-list').css({
|
||||
'padding-left': '10px',
|
||||
'margin-bottom': '-10px'
|
||||
});
|
||||
}
|
||||
|
||||
cur_frm.cscript.render_row_in_wrapper = function(wrapper, data, doctype) {
|
||||
// render
|
||||
var $wrapper = $(wrapper);
|
||||
|
||||
data.doctype = doctype.toLowerCase();
|
||||
|
||||
$wrapper.append(repl("\
|
||||
<h4><a class='link_type'>%(fullname)s</a>%(primary)s</h4>\
|
||||
<div class='description'>\
|
||||
<p>%(description)s</p>\
|
||||
<p><a class='delete link_type'>delete this %(doctype)s</a></p>\
|
||||
</div>", data));
|
||||
|
||||
// make link
|
||||
$wrapper.find('h4 a.link_type').click(function() {
|
||||
loaddoc(doctype, data.name);
|
||||
});
|
||||
|
||||
// css
|
||||
$wrapper.css({ 'margin': '0px' });
|
||||
$wrapper.find('div.description').css({
|
||||
'padding': '5px 2px',
|
||||
'line-height': '150%',
|
||||
});
|
||||
$wrapper.find('h6').css({ 'display': 'inline-block' });
|
||||
|
||||
// show delete
|
||||
var $delete_doc = $wrapper.find('a.delete');
|
||||
if (frappe.model.can_delete(doctype))
|
||||
$delete_doc.toggle(true);
|
||||
else
|
||||
$delete_doc.toggle(false);
|
||||
|
||||
$delete_doc.css({ 'padding-left': '0px' });
|
||||
|
||||
$delete_doc.click(function() {
|
||||
cur_frm.cscript.delete_doc(doctype, data.name);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
cur_frm.cscript.delete_doc = function(doctype, name) {
|
||||
// confirm deletion
|
||||
var go_ahead = confirm(__("Delete {0} {1}?", [doctype, name]));
|
||||
if (!go_ahead) return;
|
||||
|
||||
frappe.model.delete_doc(doctype, name, function(r) {
|
||||
if (!r.exc) {
|
||||
var list_name = doctype.toLowerCase() + '_list';
|
||||
cur_frm[list_name].run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Render List
|
||||
cur_frm.cscript.render_list = function(doc, doctype, wrapper, ListView, make_new_doc) {
|
||||
frappe.model.with_doctype(doctype, function(r) {
|
||||
if((r && r['403']) || frappe.boot.user.all_read.indexOf(doctype)===-1) {
|
||||
return;
|
||||
}
|
||||
var RecordListView = frappe.views.RecordListView.extend({
|
||||
default_docstatus: ['0', '1', '2'],
|
||||
default_filters: [
|
||||
[doctype, doc.doctype.toLowerCase().replace(" ", "_"), '=', doc.name],
|
||||
],
|
||||
});
|
||||
|
||||
if (make_new_doc) {
|
||||
RecordListView = RecordListView.extend({
|
||||
make_new_doc: make_new_doc,
|
||||
});
|
||||
}
|
||||
|
||||
var record_list_view = new RecordListView(doctype, wrapper, ListView);
|
||||
if (!cur_frm[doctype.toLowerCase().replace(" ", "_") + "_list"]) {
|
||||
cur_frm[doctype.toLowerCase().replace(" ", "_") + "_list"] = record_list_view;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"creation": "2012-03-27 14:36:19.000000",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "header",
|
||||
"fieldtype": "Text",
|
||||
"in_list_view": 1,
|
||||
"label": "Header",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "customer_intro",
|
||||
"fieldtype": "Text",
|
||||
"in_list_view": 1,
|
||||
"label": "Customer Intro",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "supplier_intro",
|
||||
"fieldtype": "Text",
|
||||
"in_list_view": 1,
|
||||
"label": "Supplier Intro",
|
||||
"permlevel": 0
|
||||
}
|
||||
],
|
||||
"idx": 1,
|
||||
"in_create": 1,
|
||||
"issingle": 1,
|
||||
"modified": "2013-12-20 19:23:02.000000",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Setup",
|
||||
"name": "Contact Control",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"create": 0,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"role": "System Manager",
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"read_only": 1
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ContactControl(Document):
|
||||
pass
|
||||
@@ -1,12 +1,6 @@
|
||||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
// License: GNU General Public License v3. See license.txt
|
||||
|
||||
{% include 'setup/doctype/contact_control/contact_control.js' %};
|
||||
|
||||
cur_frm.cscript.onload = function(doc,dt,dn){
|
||||
|
||||
}
|
||||
|
||||
cur_frm.cscript.refresh = function(doc,dt,dn){
|
||||
|
||||
if(doc.__islocal){
|
||||
@@ -15,8 +9,8 @@ cur_frm.cscript.refresh = function(doc,dt,dn){
|
||||
else{
|
||||
unhide_field(['address_html', 'contact_html']);
|
||||
// make lists
|
||||
cur_frm.cscript.make_address(doc,dt,dn);
|
||||
cur_frm.cscript.make_contact(doc,dt,dn);
|
||||
|
||||
erpnext.utils.render_address_and_contact(cur_frm)
|
||||
|
||||
if (doc.show_in_website) {
|
||||
cur_frm.set_intro(__("Published on website at: {0}",
|
||||
@@ -25,57 +19,6 @@ cur_frm.cscript.refresh = function(doc,dt,dn){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cur_frm.cscript.make_address = function() {
|
||||
if(!cur_frm.address_list) {
|
||||
cur_frm.address_list = new frappe.ui.Listing({
|
||||
parent: cur_frm.fields_dict['address_html'].wrapper,
|
||||
page_length: 2,
|
||||
new_doctype: "Address",
|
||||
custom_new_doc: function(doctype) {
|
||||
var address = frappe.model.make_new_doc_and_get_name('Address');
|
||||
address = locals['Address'][address];
|
||||
address.sales_partner = cur_frm.doc.name;
|
||||
address.address_title = cur_frm.doc.name;
|
||||
address.address_type = "Office";
|
||||
frappe.set_route("Form", "Address", address.name);
|
||||
},
|
||||
get_query: function() {
|
||||
return "select name, address_type, address_line1, address_line2, city, state, country, pincode, fax, email_id, phone, is_primary_address, is_shipping_address from tabAddress where sales_partner='" +
|
||||
cur_frm.doc.name.replace(/'/g, "\\'") + "' and docstatus != 2 order by is_primary_address desc"
|
||||
},
|
||||
as_dict: 1,
|
||||
no_results_message: __('No addresses created'),
|
||||
render_row: cur_frm.cscript.render_address_row,
|
||||
});
|
||||
}
|
||||
cur_frm.address_list.run();
|
||||
}
|
||||
|
||||
cur_frm.cscript.make_contact = function() {
|
||||
if(!cur_frm.contact_list) {
|
||||
cur_frm.contact_list = new frappe.ui.Listing({
|
||||
parent: cur_frm.fields_dict['contact_html'].wrapper,
|
||||
page_length: 2,
|
||||
new_doctype: "Contact",
|
||||
custom_new_doc: function(doctype) {
|
||||
var contact = frappe.model.make_new_doc_and_get_name('Contact');
|
||||
contact = locals['Contact'][contact];
|
||||
contact.sales_partner = cur_frm.doc.name;
|
||||
frappe.set_route("Form", "Contact", contact.name);
|
||||
},
|
||||
get_query: function() {
|
||||
return "select name, first_name, last_name, email_id, phone, mobile_no, department, designation, is_primary_contact from tabContact where sales_partner='" +
|
||||
cur_frm.doc.name.replace(/'/g, "\\'") + "' and docstatus != 2 order by is_primary_contact desc"
|
||||
},
|
||||
as_dict: 1,
|
||||
no_results_message: __('No contacts created'),
|
||||
render_row: cur_frm.cscript.render_contact_row,
|
||||
});
|
||||
}
|
||||
cur_frm.contact_list.run();
|
||||
}
|
||||
|
||||
cur_frm.fields_dict['partner_target_details'].grid.get_field("item_group").get_query = function(doc, dt, dn) {
|
||||
return{
|
||||
filters:{ 'is_group': "No" }
|
||||
|
||||
@@ -5,11 +5,16 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.utils import cstr, filter_strip_join
|
||||
from frappe.website.website_generator import WebsiteGenerator
|
||||
from erpnext.utilities.address_and_contact import load_address_and_contact
|
||||
|
||||
class SalesPartner(WebsiteGenerator):
|
||||
page_title_field = "partner_name"
|
||||
condition_field = "show_in_website"
|
||||
template = "templates/generators/sales_partner.html"
|
||||
def onload(self):
|
||||
"""Load address and contacts in `__onload`"""
|
||||
load_address_and_contact(self, "sales_partner")
|
||||
|
||||
def autoname(self):
|
||||
self.name = self.partner_name
|
||||
|
||||
|
||||
@@ -59,15 +59,18 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
|
||||
title: __("Select Your Language"),
|
||||
icon: "icon-globe",
|
||||
fields: [
|
||||
{"fieldname": "language", "label": __("Language"), "fieldtype": "Select",
|
||||
{
|
||||
"fieldname": "language", "label": __("Language"), "fieldtype": "Select",
|
||||
options: ["english", "العربية", "deutsch", "ελληνικά", "español", "français", "हिंदी", "hrvatski",
|
||||
"italiano", "nederlands", "polski", "português brasileiro", "português", "српски", "தமிழ்",
|
||||
"ไทย", "中国(简体)", "中國(繁體)"], reqd:1},
|
||||
"italiano", "nederlands", "polski", "português brasileiro", "português", "српски", "தமிழ்",
|
||||
"ไทย", "中国(简体)", "中國(繁體)"],
|
||||
reqd:1, "default": "english"
|
||||
},
|
||||
],
|
||||
help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."),
|
||||
onload: function(slide) {
|
||||
slide.get_input("language").on("change", function() {
|
||||
var lang = $(this).val();
|
||||
var lang = $(this).val() || "english";
|
||||
frappe._messages = {};
|
||||
frappe.call({
|
||||
method: "erpnext.setup.page.setup_wizard.setup_wizard.load_messages",
|
||||
|
||||
@@ -71,7 +71,7 @@ def setup_account(args=None):
|
||||
|
||||
frappe.db.set_default('desktop:home_page', 'desktop')
|
||||
|
||||
website_maker(args.company_name, args.company_tagline, args.name)
|
||||
website_maker(args.company_name.strip(), args.company_tagline, args.name)
|
||||
create_logo(args)
|
||||
|
||||
frappe.clear_cache()
|
||||
@@ -135,7 +135,7 @@ def create_fiscal_year_and_company(args):
|
||||
frappe.get_doc({
|
||||
"doctype":"Company",
|
||||
'domain': args.get("industry"),
|
||||
'company_name':args.get('company_name'),
|
||||
'company_name':args.get('company_name').strip(),
|
||||
'abbr':args.get('company_abbr'),
|
||||
'default_currency':args.get('currency'),
|
||||
'country': args.get('country'),
|
||||
@@ -166,7 +166,7 @@ def set_defaults(args):
|
||||
global_defaults.update({
|
||||
'current_fiscal_year': args.curr_fiscal_year,
|
||||
'default_currency': args.get('currency'),
|
||||
'default_company':args.get('company_name'),
|
||||
'default_company':args.get('company_name').strip(),
|
||||
"country": args.get("country"),
|
||||
})
|
||||
|
||||
@@ -285,7 +285,7 @@ def create_taxes(args):
|
||||
try:
|
||||
frappe.get_doc({
|
||||
"doctype":"Account",
|
||||
"company": args.get("company_name"),
|
||||
"company": args.get("company_name").strip(),
|
||||
"parent_account": _("Duties and Taxes") + " - " + args.get("company_abbr"),
|
||||
"account_name": args.get("tax_" + str(i)),
|
||||
"group_or_ledger": "Ledger",
|
||||
@@ -345,7 +345,7 @@ def create_customers(args):
|
||||
"customer_type": "Company",
|
||||
"customer_group": _("Commercial"),
|
||||
"territory": args.get("country"),
|
||||
"company": args.get("company_name")
|
||||
"company": args.get("company_name").strip()
|
||||
}).insert()
|
||||
|
||||
if args.get("customer_contact_" + str(i)):
|
||||
@@ -365,7 +365,7 @@ def create_suppliers(args):
|
||||
"doctype":"Supplier",
|
||||
"supplier_name": supplier,
|
||||
"supplier_type": _("Local"),
|
||||
"company": args.get("company_name")
|
||||
"company": args.get("company_name").strip()
|
||||
}).insert()
|
||||
|
||||
if args.get("supplier_contact_" + str(i)):
|
||||
|
||||
@@ -52,11 +52,15 @@ class DeliveryNote(SellingController):
|
||||
else:
|
||||
df.delete_key("__print_hide")
|
||||
|
||||
toggle_print_hide(self.meta, "currency")
|
||||
|
||||
item_meta = frappe.get_meta("Delivery Note Item")
|
||||
for fieldname in ("rate", "amount", "price_list_rate", "discount_percentage"):
|
||||
toggle_print_hide(item_meta, fieldname)
|
||||
print_hide_fields = {
|
||||
"parent": ["grand_total_export", "rounded_total_export", "in_words_export", "currency", "net_total_export"],
|
||||
"items": ["rate", "amount", "price_list_rate", "discount_percentage"]
|
||||
}
|
||||
|
||||
for key, fieldname in print_hide_fields.items():
|
||||
for f in fieldname:
|
||||
toggle_print_hide(self.meta if key == "parent" else item_meta, f)
|
||||
|
||||
def get_portal_page(self):
|
||||
return "shipment" if self.docstatus==1 else None
|
||||
@@ -245,7 +249,7 @@ class DeliveryNote(SellingController):
|
||||
sl_entries = []
|
||||
for d in self.get_item_list():
|
||||
if frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes" \
|
||||
and d.warehouse:
|
||||
and d.warehouse and flt(d['qty']):
|
||||
self.update_reserved_qty(d)
|
||||
|
||||
sl_entries.append(self.get_sl_entries(d, {
|
||||
@@ -377,7 +381,8 @@ def make_packing_slip(source_name, target_doc=None):
|
||||
"Delivery Note": {
|
||||
"doctype": "Packing Slip",
|
||||
"field_map": {
|
||||
"name": "delivery_note"
|
||||
"name": "delivery_note",
|
||||
"letter_head": "letter_head"
|
||||
},
|
||||
"validation": {
|
||||
"docstatus": ["=", 0]
|
||||
|
||||
@@ -16,5 +16,11 @@
|
||||
"item_code": "_Test Item 2",
|
||||
"price_list": "_Test Price List Rest of the World",
|
||||
"price_list_rate": 20
|
||||
},
|
||||
{
|
||||
"doctype": "Item Price",
|
||||
"item_code": "_Test Item Home Desktop 100",
|
||||
"price_list": "_Test Price List",
|
||||
"price_list_rate": 1000
|
||||
}
|
||||
]
|
||||
|
||||
@@ -79,30 +79,9 @@ class MaterialRequest(BuyingController):
|
||||
# NOTE: Since Item BOM and FG quantities are combined, using current data, it cannot be validated
|
||||
# Though the creation of Material Request from a Production Plan can be rethought to fix this
|
||||
|
||||
def update_bin(self, is_submit, is_stopped):
|
||||
""" Update Quantity Requested for Purchase in Bin for Material Request of type 'Purchase'"""
|
||||
|
||||
from erpnext.stock.utils import update_bin
|
||||
for d in self.get('indent_details'):
|
||||
if frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes":
|
||||
if not d.warehouse:
|
||||
frappe.throw(_("Warehouse required for stock Item {0}").format(d.item_code))
|
||||
|
||||
qty =flt(d.qty)
|
||||
if is_stopped:
|
||||
qty = (d.qty > d.ordered_qty) and flt(flt(d.qty) - flt(d.ordered_qty)) or 0
|
||||
|
||||
args = {
|
||||
"item_code": d.item_code,
|
||||
"warehouse": d.warehouse,
|
||||
"indented_qty": (is_submit and 1 or -1) * flt(qty),
|
||||
"posting_date": self.transaction_date
|
||||
}
|
||||
update_bin(args)
|
||||
|
||||
def on_submit(self):
|
||||
frappe.db.set(self, 'status', 'Submitted')
|
||||
self.update_bin(is_submit = 1, is_stopped = 0)
|
||||
self.update_requested_qty()
|
||||
|
||||
def check_modified_date(self):
|
||||
mod_db = frappe.db.sql("""select modified from `tabMaterial Request` where name = %s""",
|
||||
@@ -115,23 +94,18 @@ class MaterialRequest(BuyingController):
|
||||
|
||||
def update_status(self, status):
|
||||
self.check_modified_date()
|
||||
self.update_bin(is_submit = (status == 'Submitted') and 1 or 0, is_stopped = 1)
|
||||
self.update_requested_qty()
|
||||
frappe.db.set(self, 'status', cstr(status))
|
||||
frappe.msgprint(_("Status updated to {0}").format(_(status)))
|
||||
|
||||
def on_cancel(self):
|
||||
# Step 1:=> Get Purchase Common Obj
|
||||
pc_obj = frappe.get_doc('Purchase Common')
|
||||
|
||||
# Step 2:=> Check for stopped status
|
||||
pc_obj.check_for_stopped_status(self.doctype, self.name)
|
||||
|
||||
# Step 3:=> Check if Purchase Order has been submitted against current Material Request
|
||||
pc_obj.check_docstatus(check = 'Next', doctype = 'Purchase Order', docname = self.name, detail_doctype = 'Purchase Order Item')
|
||||
# Step 4:=> Update Bin
|
||||
self.update_bin(is_submit = 0, is_stopped = (cstr(self.status) == 'Stopped') and 1 or 0)
|
||||
|
||||
# Step 5:=> Set Status
|
||||
self.update_requested_qty()
|
||||
|
||||
frappe.db.set(self,'status','Cancelled')
|
||||
|
||||
def update_completed_qty(self, mr_items=None):
|
||||
@@ -162,56 +136,47 @@ class MaterialRequest(BuyingController):
|
||||
self.per_ordered = flt((per_ordered / flt(len(item_doclist))) * 100.0, 2)
|
||||
frappe.db.set_value(self.doctype, self.name, "per_ordered", self.per_ordered)
|
||||
|
||||
def update_completed_qty(doc, method):
|
||||
if doc.doctype == "Stock Entry":
|
||||
def update_requested_qty(self, mr_item_rows=None):
|
||||
"""update requested qty (before ordered_qty is updated)"""
|
||||
from erpnext.stock.utils import get_bin
|
||||
|
||||
def _update_requested_qty(item_code, warehouse):
|
||||
requested_qty = frappe.db.sql("""select sum(mr_item.qty - ifnull(mr_item.ordered_qty, 0))
|
||||
from `tabMaterial Request Item` mr_item, `tabMaterial Request` mr
|
||||
where mr_item.item_code=%s and mr_item.warehouse=%s
|
||||
and mr_item.qty > ifnull(mr_item.ordered_qty, 0) and mr_item.parent=mr.name
|
||||
and mr.status!='Stopped' and mr.docstatus=1""", (item_code, warehouse))
|
||||
|
||||
bin_doc = get_bin(item_code, warehouse)
|
||||
bin_doc.indented_qty = flt(requested_qty[0][0]) if requested_qty else 0
|
||||
bin_doc.save()
|
||||
|
||||
item_wh_list = []
|
||||
for d in self.get("indent_details"):
|
||||
if (not mr_item_rows or d.name in mr_item_rows) and [d.item_code, d.warehouse] not in item_wh_list \
|
||||
and frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes" and d.warehouse:
|
||||
item_wh_list.append([d.item_code, d.warehouse])
|
||||
|
||||
for item_code, warehouse in item_wh_list:
|
||||
_update_requested_qty(item_code, warehouse)
|
||||
|
||||
def update_completed_and_requested_qty(stock_entry, method):
|
||||
if stock_entry.doctype == "Stock Entry":
|
||||
material_request_map = {}
|
||||
|
||||
for d in doc.get("mtn_details"):
|
||||
for d in stock_entry.get("mtn_details"):
|
||||
if d.material_request:
|
||||
material_request_map.setdefault(d.material_request, []).append(d.material_request_item)
|
||||
|
||||
for mr_name, mr_items in material_request_map.items():
|
||||
mr_obj = frappe.get_doc("Material Request", mr_name)
|
||||
for mr, mr_item_rows in material_request_map.items():
|
||||
if mr and mr_item_rows:
|
||||
mr_obj = frappe.get_doc("Material Request", mr)
|
||||
|
||||
if mr_obj.status in ["Stopped", "Cancelled"]:
|
||||
frappe.throw(_("Material Request {0} is cancelled or stopped").format(mr_obj.name),
|
||||
frappe.InvalidStatusError)
|
||||
if mr_obj.status in ["Stopped", "Cancelled"]:
|
||||
frappe.throw(_("Material Request {0} is cancelled or stopped").format(mr), frappe.InvalidStatusError)
|
||||
|
||||
_update_requested_qty(doc, mr_obj, mr_items)
|
||||
|
||||
# update ordered percentage and qty
|
||||
mr_obj.update_completed_qty(mr_items)
|
||||
|
||||
def _update_requested_qty(doc, mr_obj, mr_items):
|
||||
"""update requested qty (before ordered_qty is updated)"""
|
||||
from erpnext.stock.utils import update_bin
|
||||
for mr_item_name in mr_items:
|
||||
mr_item = mr_obj.get("indent_details", {"name": mr_item_name})
|
||||
se_detail = doc.get("mtn_details", {"material_request": mr_obj.name,
|
||||
"material_request_item": mr_item_name})
|
||||
|
||||
if mr_item and se_detail:
|
||||
mr_item = mr_item[0]
|
||||
se_detail = se_detail[0]
|
||||
mr_item.ordered_qty = flt(mr_item.ordered_qty)
|
||||
mr_item.qty = flt(mr_item.qty)
|
||||
se_detail.transfer_qty = flt(se_detail.transfer_qty)
|
||||
|
||||
if se_detail.docstatus == 2 and mr_item.ordered_qty > mr_item.qty \
|
||||
and se_detail.transfer_qty == mr_item.ordered_qty:
|
||||
add_indented_qty = mr_item.qty
|
||||
elif se_detail.docstatus == 1 and \
|
||||
mr_item.ordered_qty + se_detail.transfer_qty > mr_item.qty:
|
||||
add_indented_qty = mr_item.qty - mr_item.ordered_qty
|
||||
else:
|
||||
add_indented_qty = se_detail.transfer_qty
|
||||
|
||||
update_bin({
|
||||
"item_code": se_detail.item_code,
|
||||
"warehouse": se_detail.t_warehouse,
|
||||
"indented_qty": (se_detail.docstatus==2 and 1 or -1) * add_indented_qty,
|
||||
"posting_date": doc.posting_date,
|
||||
})
|
||||
mr_obj.update_completed_qty(mr_item_rows)
|
||||
mr_obj.update_requested_qty(mr_item_rows)
|
||||
|
||||
def set_missing_values(source, target_doc):
|
||||
target_doc.run_method("set_missing_values")
|
||||
@@ -240,7 +205,8 @@ def make_purchase_order(source_name, target_doc=None):
|
||||
["uom", "stock_uom"],
|
||||
["uom", "uom"]
|
||||
],
|
||||
"postprocess": update_item
|
||||
"postprocess": update_item,
|
||||
"condition": lambda doc: doc.ordered_qty < doc.qty
|
||||
}
|
||||
}, target_doc, set_missing_values)
|
||||
|
||||
@@ -278,7 +244,8 @@ def make_purchase_order_based_on_supplier(source_name, target_doc=None):
|
||||
["uom", "stock_uom"],
|
||||
["uom", "uom"]
|
||||
],
|
||||
"postprocess": update_item
|
||||
"postprocess": update_item,
|
||||
"condition": lambda doc: doc.ordered_qty < doc.qty
|
||||
}
|
||||
}, target_doc, postprocess)
|
||||
|
||||
@@ -350,7 +317,8 @@ def make_stock_entry(source_name, target_doc=None):
|
||||
"uom": "stock_uom",
|
||||
"warehouse": "t_warehouse"
|
||||
},
|
||||
"postprocess": update_item
|
||||
"postprocess": update_item,
|
||||
"condition": lambda doc: doc.ordered_qty < doc.qty
|
||||
}
|
||||
}, target_doc, set_missing_values)
|
||||
|
||||
|
||||
@@ -58,12 +58,6 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(se.doctype, "Stock Entry")
|
||||
self.assertEquals(len(se.get("mtn_details")), len(mr.get("indent_details")))
|
||||
|
||||
def _test_requested_qty(self, qty1, qty2):
|
||||
self.assertEqual(flt(frappe.db.get_value("Bin", {"item_code": "_Test Item Home Desktop 100",
|
||||
"warehouse": "_Test Warehouse - _TC"}, "indented_qty")), qty1)
|
||||
self.assertEqual(flt(frappe.db.get_value("Bin", {"item_code": "_Test Item Home Desktop 200",
|
||||
"warehouse": "_Test Warehouse - _TC"}, "indented_qty")), qty2)
|
||||
|
||||
def _insert_stock_entry(self, qty1, qty2):
|
||||
se = frappe.get_doc({
|
||||
"company": "_Test Company",
|
||||
@@ -103,7 +97,8 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
se.submit()
|
||||
|
||||
def test_completed_qty_for_purchase(self):
|
||||
frappe.db.sql("""delete from `tabBin`""")
|
||||
existing_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
existing_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
# submit material request of type Purchase
|
||||
mr = frappe.copy_doc(test_records[0])
|
||||
@@ -115,8 +110,6 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
# map a purchase order
|
||||
from erpnext.stock.doctype.material_request.material_request import make_purchase_order
|
||||
po_doc = make_purchase_order(mr.name)
|
||||
@@ -149,7 +142,12 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.per_ordered, 50)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 27.0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 1.5)
|
||||
self._test_requested_qty(27.0, 1.5)
|
||||
|
||||
current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
self.assertEquals(current_requested_qty_item1, existing_requested_qty_item1 + 27.0)
|
||||
self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2 + 1.5)
|
||||
|
||||
po.cancel()
|
||||
# check if per complete is as expected
|
||||
@@ -158,11 +156,15 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, None)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, None)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
self.assertEquals(current_requested_qty_item1, existing_requested_qty_item1 + 54.0)
|
||||
self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2 + 3.0)
|
||||
|
||||
def test_completed_qty_for_transfer(self):
|
||||
frappe.db.sql("""delete from `tabBin`""")
|
||||
frappe.db.sql("""delete from `tabStock Ledger Entry`""")
|
||||
existing_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
existing_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
# submit material request of type Purchase
|
||||
mr = frappe.copy_doc(test_records[0])
|
||||
@@ -175,7 +177,11 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
self.assertEquals(current_requested_qty_item1, existing_requested_qty_item1 + 54.0)
|
||||
self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2 + 3.0)
|
||||
|
||||
from erpnext.stock.doctype.material_request.material_request import make_stock_entry
|
||||
|
||||
@@ -226,7 +232,11 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 27.0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 1.5)
|
||||
|
||||
self._test_requested_qty(27.0, 1.5)
|
||||
current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
self.assertEquals(current_requested_qty_item1, existing_requested_qty_item1 + 27.0)
|
||||
self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2 + 1.5)
|
||||
|
||||
# check if per complete is as expected for Stock Entry cancelled
|
||||
se.cancel()
|
||||
@@ -235,11 +245,15 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
self.assertEquals(current_requested_qty_item1, existing_requested_qty_item1 + 54.0)
|
||||
self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2 + 3.0)
|
||||
|
||||
def test_completed_qty_for_over_transfer(self):
|
||||
frappe.db.sql("""delete from `tabBin`""")
|
||||
frappe.db.sql("""delete from `tabStock Ledger Entry`""")
|
||||
existing_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
existing_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
# submit material request of type Purchase
|
||||
mr = frappe.copy_doc(test_records[0])
|
||||
@@ -252,8 +266,6 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
# map a stock entry
|
||||
from erpnext.stock.doctype.material_request.material_request import make_stock_entry
|
||||
|
||||
@@ -297,7 +309,12 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.per_ordered, 100)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 60.0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 3.0)
|
||||
self._test_requested_qty(0.0, 0.0)
|
||||
|
||||
current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
self.assertEquals(current_requested_qty_item1, existing_requested_qty_item1)
|
||||
self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2)
|
||||
|
||||
# check if per complete is as expected for Stock Entry cancelled
|
||||
se.cancel()
|
||||
@@ -306,7 +323,11 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
|
||||
current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
|
||||
|
||||
self.assertEquals(current_requested_qty_item1, existing_requested_qty_item1 + 54.0)
|
||||
self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2 + 3.0)
|
||||
|
||||
def test_incorrect_mapping_of_stock_entry(self):
|
||||
# submit material request of type Purchase
|
||||
@@ -348,5 +369,9 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
mr.company = "_Test Company 1"
|
||||
self.assertRaises(InvalidWarehouseCompany, mr.insert)
|
||||
|
||||
def _get_requested_qty(self, item_code, warehouse):
|
||||
return flt(frappe.db.get_value("Bin", {"item_code": item_code, "warehouse": warehouse}, "indented_qty"))
|
||||
|
||||
|
||||
test_dependencies = ["Currency Exchange"]
|
||||
test_records = frappe.get_test_records('Material Request')
|
||||
|
||||
@@ -1,264 +1,281 @@
|
||||
{
|
||||
"autoname": "PS.#######",
|
||||
"creation": "2013-04-11 15:32:24",
|
||||
"description": "Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight.",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Transaction",
|
||||
"autoname": "PS.#######",
|
||||
"creation": "2013-04-11 15:32:24",
|
||||
"description": "Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight.",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Transaction",
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "packing_slip_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Packing Slip Items",
|
||||
"permlevel": 0,
|
||||
"fieldname": "packing_slip_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Packing Slip Items",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break0",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"fieldname": "column_break0",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "Indicates that the package is a part of this delivery (Only Draft)",
|
||||
"fieldname": "delivery_note",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 1,
|
||||
"label": "Delivery Note",
|
||||
"options": "Delivery Note",
|
||||
"permlevel": 0,
|
||||
"read_only": 0,
|
||||
"description": "Indicates that the package is a part of this delivery (Only Draft)",
|
||||
"fieldname": "delivery_note",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 1,
|
||||
"label": "Delivery Note",
|
||||
"options": "Delivery Note",
|
||||
"permlevel": 0,
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break1",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"fieldname": "column_break1",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "naming_series",
|
||||
"fieldtype": "Select",
|
||||
"label": "Series",
|
||||
"no_copy": 0,
|
||||
"options": "PS-",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 0,
|
||||
"fieldname": "naming_series",
|
||||
"fieldtype": "Select",
|
||||
"label": "Series",
|
||||
"no_copy": 0,
|
||||
"options": "PS-",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "section_break0",
|
||||
"fieldtype": "Section Break",
|
||||
"permlevel": 0,
|
||||
"fieldname": "section_break0",
|
||||
"fieldtype": "Section Break",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break2",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"fieldname": "column_break2",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "Identification of the package for the delivery (for print)",
|
||||
"fieldname": "from_case_no",
|
||||
"fieldtype": "Data",
|
||||
"in_list_view": 1,
|
||||
"label": "From Package No.",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"description": "Identification of the package for the delivery (for print)",
|
||||
"fieldname": "from_case_no",
|
||||
"fieldtype": "Data",
|
||||
"in_list_view": 1,
|
||||
"label": "From Package No.",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"width": "50px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break3",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"fieldname": "column_break3",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "If more than one package of the same type (for print)",
|
||||
"fieldname": "to_case_no",
|
||||
"fieldtype": "Data",
|
||||
"in_list_view": 1,
|
||||
"label": "To Package No.",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 0,
|
||||
"description": "If more than one package of the same type (for print)",
|
||||
"fieldname": "to_case_no",
|
||||
"fieldtype": "Data",
|
||||
"in_list_view": 1,
|
||||
"label": "To Package No.",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 0,
|
||||
"width": "50px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "package_item_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Package Item Details",
|
||||
"permlevel": 0,
|
||||
"fieldname": "package_item_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Package Item Details",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "get_items",
|
||||
"fieldtype": "Button",
|
||||
"label": "Get Items",
|
||||
"fieldname": "get_items",
|
||||
"fieldtype": "Button",
|
||||
"label": "Get Items",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "item_details",
|
||||
"fieldtype": "Table",
|
||||
"label": "Items",
|
||||
"options": "Packing Slip Item",
|
||||
"permlevel": 0,
|
||||
"fieldname": "item_details",
|
||||
"fieldtype": "Table",
|
||||
"label": "Items",
|
||||
"options": "Packing Slip Item",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "package_weight_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Package Weight Details",
|
||||
"permlevel": 0,
|
||||
"fieldname": "package_weight_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Package Weight Details",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "The net weight of this package. (calculated automatically as sum of net weight of items)",
|
||||
"fieldname": "net_weight_pkg",
|
||||
"fieldtype": "Float",
|
||||
"label": "Net Weight",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"description": "The net weight of this package. (calculated automatically as sum of net weight of items)",
|
||||
"fieldname": "net_weight_pkg",
|
||||
"fieldtype": "Float",
|
||||
"label": "Net Weight",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "net_weight_uom",
|
||||
"fieldtype": "Link",
|
||||
"label": "Net Weight UOM",
|
||||
"no_copy": 1,
|
||||
"options": "UOM",
|
||||
"permlevel": 0,
|
||||
"fieldname": "net_weight_uom",
|
||||
"fieldtype": "Link",
|
||||
"label": "Net Weight UOM",
|
||||
"no_copy": 1,
|
||||
"options": "UOM",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break4",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"fieldname": "column_break4",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "The gross weight of the package. Usually net weight + packaging material weight. (for print)",
|
||||
"fieldname": "gross_weight_pkg",
|
||||
"fieldtype": "Float",
|
||||
"label": "Gross Weight",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"description": "The gross weight of the package. Usually net weight + packaging material weight. (for print)",
|
||||
"fieldname": "gross_weight_pkg",
|
||||
"fieldtype": "Float",
|
||||
"label": "Gross Weight",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "gross_weight_uom",
|
||||
"fieldtype": "Link",
|
||||
"label": "Gross Weight UOM",
|
||||
"no_copy": 1,
|
||||
"options": "UOM",
|
||||
"permlevel": 0,
|
||||
"fieldname": "gross_weight_uom",
|
||||
"fieldtype": "Link",
|
||||
"label": "Gross Weight UOM",
|
||||
"no_copy": 1,
|
||||
"options": "UOM",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "misc_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Misc Details",
|
||||
"permlevel": 0,
|
||||
"fieldname": "letter_head_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Letter Head",
|
||||
"permlevel": 0,
|
||||
"precision": ""
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
"fieldname": "letter_head",
|
||||
"fieldtype": "Link",
|
||||
"label": "Letter Head",
|
||||
"options": "Letter Head",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "misc_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Misc Details",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "amended_from",
|
||||
"fieldtype": "Link",
|
||||
"ignore_user_permissions": 1,
|
||||
"label": "Amended From",
|
||||
"no_copy": 1,
|
||||
"options": "Packing Slip",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"fieldname": "amended_from",
|
||||
"fieldtype": "Link",
|
||||
"ignore_user_permissions": 1,
|
||||
"label": "Amended From",
|
||||
"no_copy": 1,
|
||||
"options": "Packing Slip",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"icon": "icon-suitcase",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-05-27 03:49:14.251039",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Packing Slip",
|
||||
"owner": "Administrator",
|
||||
],
|
||||
"icon": "icon-suitcase",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-11-13 16:50:50.423299",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Packing Slip",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"amend": 1,
|
||||
"apply_user_permissions": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Material User",
|
||||
"submit": 1,
|
||||
"amend": 1,
|
||||
"apply_user_permissions": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Material User",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"apply_user_permissions": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Sales User",
|
||||
"submit": 1,
|
||||
"amend": 1,
|
||||
"apply_user_permissions": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Sales User",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Material Master Manager",
|
||||
"submit": 1,
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Material Master Manager",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Material Manager",
|
||||
"submit": 1,
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Material Manager",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Sales Manager",
|
||||
"submit": 1,
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Sales Manager",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"read_only_onload": 1,
|
||||
],
|
||||
"read_only_onload": 1,
|
||||
"search_fields": "delivery_note"
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@ from frappe.utils import cstr, flt, cint
|
||||
|
||||
from frappe import _
|
||||
import frappe.defaults
|
||||
from erpnext.stock.utils import update_bin
|
||||
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
|
||||
@@ -157,29 +156,19 @@ class PurchaseReceipt(BuyingController):
|
||||
self.make_sl_entries(sl_entries)
|
||||
|
||||
def update_ordered_qty(self):
|
||||
stock_items = self.get_stock_items()
|
||||
po_map = {}
|
||||
for d in self.get("purchase_receipt_details"):
|
||||
if d.item_code in stock_items and d.warehouse \
|
||||
and cstr(d.prevdoc_doctype) == 'Purchase Order':
|
||||
if d.prevdoc_doctype and d.prevdoc_doctype == "Purchase Order" and d.prevdoc_detail_docname:
|
||||
po_map.setdefault(d.prevdoc_docname, []).append(d.prevdoc_detail_docname)
|
||||
|
||||
already_received_qty = self.get_already_received_qty(d.prevdoc_docname,
|
||||
d.prevdoc_detail_docname)
|
||||
po_qty, ordered_warehouse = self.get_po_qty_and_warehouse(d.prevdoc_detail_docname)
|
||||
for po, po_item_rows in po_map.items():
|
||||
if po and po_item_rows:
|
||||
po_obj = frappe.get_doc("Purchase Order", po)
|
||||
|
||||
if not ordered_warehouse:
|
||||
frappe.throw(_("Warehouse is missing in Purchase Order"))
|
||||
if po_obj.status in ["Stopped", "Cancelled"]:
|
||||
frappe.throw(_("Material Request {0} is cancelled or stopped").format(po), frappe.InvalidStatusError)
|
||||
|
||||
if already_received_qty + d.qty > po_qty:
|
||||
ordered_qty = - (po_qty - already_received_qty) * flt(d.conversion_factor)
|
||||
else:
|
||||
ordered_qty = - flt(d.qty) * flt(d.conversion_factor)
|
||||
|
||||
update_bin({
|
||||
"item_code": d.item_code,
|
||||
"warehouse": ordered_warehouse,
|
||||
"posting_date": self.posting_date,
|
||||
"ordered_qty": flt(ordered_qty) if self.docstatus==1 else -flt(ordered_qty)
|
||||
})
|
||||
po_obj.update_ordered_qty(po_item_rows)
|
||||
|
||||
def get_already_received_qty(self, po, po_detail):
|
||||
qty = frappe.db.sql("""select sum(qty) from `tabPurchase Receipt Item`
|
||||
@@ -265,11 +254,13 @@ class PurchaseReceipt(BuyingController):
|
||||
|
||||
frappe.db.set(self,'status','Cancelled')
|
||||
|
||||
self.update_ordered_qty()
|
||||
|
||||
self.update_stock_ledger()
|
||||
|
||||
self.update_prevdoc_status()
|
||||
|
||||
# Must be called after updating received qty in PO
|
||||
self.update_ordered_qty()
|
||||
|
||||
pc_obj.update_last_purchase_rate(self, 0)
|
||||
|
||||
self.make_gl_entries_on_cancel()
|
||||
@@ -283,11 +274,8 @@ class PurchaseReceipt(BuyingController):
|
||||
def get_rate(self,arg):
|
||||
return frappe.get_doc('Purchase Common').get_rate(arg,self)
|
||||
|
||||
def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False):
|
||||
def get_gl_entries(self, warehouse_account=None):
|
||||
from erpnext.accounts.general_ledger import process_gl_map
|
||||
from erpnext.controllers.stock_controller import block_negative_stock
|
||||
|
||||
# block_negative_stock(allow_negative_stock)
|
||||
|
||||
stock_rbnb = self.get_company_default("stock_received_but_not_billed")
|
||||
expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation")
|
||||
|
||||
@@ -151,6 +151,6 @@ def set_perpetual_inventory(enable=1):
|
||||
accounts_settings.save()
|
||||
|
||||
|
||||
test_dependencies = ["BOM"]
|
||||
test_dependencies = ["BOM", "Item Price"]
|
||||
|
||||
test_records = frappe.get_test_records('Purchase Receipt')
|
||||
|
||||
@@ -253,8 +253,9 @@ def update_serial_nos(sle, item_det):
|
||||
from frappe.model.naming import make_autoname
|
||||
serial_nos = []
|
||||
for i in xrange(cint(sle.actual_qty)):
|
||||
serial_nos.append(make_autoname(item_det.serial_no_series))
|
||||
serial_nos.append(make_autoname(item_det.serial_no_series, "Serial No"))
|
||||
frappe.db.set(sle, "serial_no", "\n".join(serial_nos))
|
||||
validate_serial_no(sle, item_det)
|
||||
|
||||
if sle.serial_no:
|
||||
serial_nos = get_serial_nos(sle.serial_no)
|
||||
|
||||
@@ -198,12 +198,12 @@ class StockReconciliation(StockController):
|
||||
"posting_time": self.posting_time
|
||||
})
|
||||
|
||||
def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False):
|
||||
def get_gl_entries(self, warehouse_account=None):
|
||||
if not self.cost_center:
|
||||
msgprint(_("Please enter Cost Center"), raise_exception=1)
|
||||
|
||||
return super(StockReconciliation, self).get_gl_entries(warehouse_account,
|
||||
self.expense_account, self.cost_center, allow_negative_stock=allow_negative_stock)
|
||||
self.expense_account, self.cost_center)
|
||||
|
||||
def validate_expense_account(self):
|
||||
if not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")):
|
||||
|
||||
@@ -12,9 +12,6 @@ from frappe.model.document import Document
|
||||
class StockSettings(Document):
|
||||
|
||||
def validate(self):
|
||||
if cint(self.allow_negative_stock) and cint(frappe.defaults.get_global_default("auto_accounting_for_stock")):
|
||||
frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory"))
|
||||
|
||||
for key in ["item_naming_by", "item_group", "stock_uom", "allow_negative_stock"]:
|
||||
frappe.db.set_default(key, self.get(key, ""))
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Average "age" of an Item in a particular Warehouse based on First-in-first-out (FIFO).
|
||||
@@ -1 +0,0 @@
|
||||
from __future__ import unicode_literals
|
||||
@@ -1,183 +0,0 @@
|
||||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
// License: GNU General Public License v3. See license.txt
|
||||
|
||||
|
||||
frappe.pages['stock-ageing'].onload = function(wrapper) {
|
||||
frappe.ui.make_app_page({
|
||||
parent: wrapper,
|
||||
title: __('Stock Ageing'),
|
||||
single_column: true
|
||||
});
|
||||
|
||||
new erpnext.StockAgeing(wrapper);
|
||||
|
||||
|
||||
wrapper.appframe.add_module_icon("Stock")
|
||||
|
||||
}
|
||||
|
||||
frappe.require("assets/erpnext/js/stock_grid_report.js");
|
||||
|
||||
erpnext.StockAgeing = erpnext.StockGridReport.extend({
|
||||
init: function(wrapper) {
|
||||
this._super({
|
||||
title: __("Stock Ageing"),
|
||||
page: wrapper,
|
||||
parent: $(wrapper).find('.layout-main'),
|
||||
appframe: wrapper.appframe,
|
||||
doctypes: ["Item", "Warehouse", "Stock Ledger Entry", "Item Group", "Brand", "Serial No"],
|
||||
})
|
||||
},
|
||||
setup_columns: function() {
|
||||
this.columns = [
|
||||
{id: "name", name: __("Item"), field: "name", width: 300,
|
||||
link_formatter: {
|
||||
open_btn: true,
|
||||
doctype: '"Item"'
|
||||
}},
|
||||
{id: "item_name", name: __("Item Name"), field: "item_name",
|
||||
width: 100, formatter: this.text_formatter},
|
||||
{id: "description", name: __("Description"), field: "description",
|
||||
width: 200, formatter: this.text_formatter},
|
||||
{id: "brand", name: __("Brand"), field: "brand", width: 100},
|
||||
{id: "average_age", name: __("Average Age"), field: "average_age",
|
||||
formatter: this.currency_formatter},
|
||||
{id: "earliest", name: __("Earliest"), field: "earliest",
|
||||
formatter: this.currency_formatter},
|
||||
{id: "latest", name: __("Latest"), field: "latest",
|
||||
formatter: this.currency_formatter},
|
||||
{id: "stock_uom", name: "UOM", field: "stock_uom", width: 100},
|
||||
];
|
||||
},
|
||||
filters: [
|
||||
{fieldtype:"Select", label: __("Warehouse"), link:"Warehouse",
|
||||
default_value: "Select Warehouse..."},
|
||||
{fieldtype:"Select", label: __("Brand"), link:"Brand",
|
||||
default_value: "Select Brand...", filter: function(val, item, opts) {
|
||||
return val == opts.default_value || item.brand == val;
|
||||
}, link_formatter: {filter_input: "brand"}},
|
||||
{fieldtype:"Select", label: __("Plot By"),
|
||||
options: ["Average Age", "Earliest", "Latest"]},
|
||||
{fieldtype:"Date", label: __("To Date")},
|
||||
{fieldtype:"Button", label: __("Refresh"), icon:"icon-refresh icon-white"},
|
||||
{fieldtype:"Button", label: __("Reset Filters"), icon: "icon-filter"}
|
||||
],
|
||||
setup_filters: function() {
|
||||
var me = this;
|
||||
this._super();
|
||||
this.trigger_refresh_on_change(["warehouse", "plot_by", "brand"]);
|
||||
this.show_zero_check();
|
||||
},
|
||||
init_filter_values: function() {
|
||||
this._super();
|
||||
this.filter_inputs.to_date.val(dateutil.obj_to_user(new Date()));
|
||||
},
|
||||
prepare_data: function() {
|
||||
var me = this;
|
||||
|
||||
if(!this.data) {
|
||||
me._data = frappe.report_dump.data["Item"];
|
||||
me.item_by_name = me.make_name_map(me._data);
|
||||
}
|
||||
|
||||
this.data = [].concat(this._data);
|
||||
|
||||
this.serialized_buying_rates = this.get_serialized_buying_rates();
|
||||
|
||||
$.each(this.data, function(i, d) {
|
||||
me.reset_item_values(d);
|
||||
});
|
||||
|
||||
this.prepare_balances();
|
||||
|
||||
// filter out brand
|
||||
this.data = $.map(this.data, function(d) {
|
||||
return me.apply_filter(d, "brand") ? d : null;
|
||||
});
|
||||
|
||||
// filter out rows with zero values
|
||||
this.data = $.map(this.data, function(d) {
|
||||
return me.apply_zero_filter(null, d, null, me) ? d : null;
|
||||
});
|
||||
},
|
||||
prepare_balances: function() {
|
||||
var me = this;
|
||||
var to_date = dateutil.str_to_obj(this.to_date);
|
||||
var data = frappe.report_dump.data["Stock Ledger Entry"];
|
||||
|
||||
this.item_warehouse = {};
|
||||
|
||||
for(var i=0, j=data.length; i<j; i++) {
|
||||
var sl = data[i];
|
||||
var posting_date = dateutil.str_to_obj(sl.posting_date);
|
||||
|
||||
if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
|
||||
var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
|
||||
|
||||
// call diff to build fifo stack in item_warehouse
|
||||
var diff = me.get_value_diff(wh, sl, true);
|
||||
|
||||
if(posting_date > to_date)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$.each(me.data, function(i, item) {
|
||||
var full_fifo_stack = [];
|
||||
if(me.is_default("warehouse")) {
|
||||
$.each(me.item_warehouse[item.name] || {}, function(i, wh) {
|
||||
full_fifo_stack = full_fifo_stack.concat(wh.fifo_stack || [])
|
||||
});
|
||||
} else {
|
||||
full_fifo_stack = me.get_item_warehouse(me.warehouse, item.name).fifo_stack || [];
|
||||
}
|
||||
|
||||
var age_qty = total_qty = 0.0;
|
||||
var min_age = max_age = null;
|
||||
|
||||
$.each(full_fifo_stack, function(i, batch) {
|
||||
var batch_age = dateutil.get_diff(me.to_date, batch[2]);
|
||||
age_qty += batch_age * batch[0];
|
||||
total_qty += batch[0];
|
||||
max_age = Math.max(max_age, batch_age);
|
||||
if(min_age===null) min_age=batch_age;
|
||||
else min_age = Math.min(min_age, batch_age);
|
||||
});
|
||||
|
||||
item.average_age = total_qty.toFixed(2)==0.0 ? 0
|
||||
: (age_qty / total_qty).toFixed(2);
|
||||
item.earliest = max_age || 0.0;
|
||||
item.latest = min_age || 0.0;
|
||||
});
|
||||
|
||||
this.data = this.data.sort(function(a, b) {
|
||||
var sort_by = me.plot_by.replace(" ", "_").toLowerCase();
|
||||
return b[sort_by] - a[sort_by];
|
||||
});
|
||||
},
|
||||
get_plot_data: function() {
|
||||
var data = [];
|
||||
var me = this;
|
||||
|
||||
data.push({
|
||||
label: me.plot_by,
|
||||
data: $.map(me.data, function(item, idx) {
|
||||
return [[idx+1, item[me.plot_by.replace(" ", "_").toLowerCase() ]]]
|
||||
}),
|
||||
bars: {show: true},
|
||||
});
|
||||
|
||||
return data.length ? data : false;
|
||||
},
|
||||
get_plot_options: function() {
|
||||
var me = this;
|
||||
return {
|
||||
grid: { hoverable: true, clickable: true },
|
||||
xaxis: {
|
||||
ticks: $.map(me.data, function(item, idx) { return [[idx+1, item.name]] }),
|
||||
max: 15
|
||||
},
|
||||
series: { downsample: { threshold: 1000 } }
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"creation": "2012-09-21 20:15:14.000000",
|
||||
"docstatus": 0,
|
||||
"doctype": "Page",
|
||||
"icon": "icon-table",
|
||||
"idx": 1,
|
||||
"modified": "2013-07-11 14:44:08.000000",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "stock-ageing",
|
||||
"owner": "Administrator",
|
||||
"page_name": "stock-ageing",
|
||||
"roles": [
|
||||
{
|
||||
"role": "Analytics"
|
||||
},
|
||||
{
|
||||
"role": "Material Manager"
|
||||
}
|
||||
],
|
||||
"standard": "Yes",
|
||||
"title": "Stock Ageing"
|
||||
}
|
||||
@@ -42,13 +42,12 @@ def get_columns():
|
||||
|
||||
def get_fifo_queue(filters):
|
||||
item_details = {}
|
||||
prev_qty = 0.0
|
||||
for d in get_stock_ledger_entries(filters):
|
||||
item_details.setdefault(d.name, {"details": d, "fifo_queue": []})
|
||||
fifo_queue = item_details[d.name]["fifo_queue"]
|
||||
|
||||
if d.voucher_type == "Stock Reconciliation":
|
||||
d.actual_qty = flt(d.qty_after_transaction) - flt(prev_qty)
|
||||
d.actual_qty = flt(d.qty_after_transaction) - flt(item_details[d.name].get("qty_after_transaction", 0))
|
||||
|
||||
if d.actual_qty > 0:
|
||||
fifo_queue.append([d.actual_qty, d.posting_date])
|
||||
@@ -66,7 +65,7 @@ def get_fifo_queue(filters):
|
||||
batch[0] -= qty_to_pop
|
||||
qty_to_pop = 0
|
||||
|
||||
prev_qty = d.qty_after_transaction
|
||||
item_details[d.name]["qty_after_transaction"] = d.qty_after_transaction
|
||||
|
||||
return item_details
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import frappe
|
||||
from frappe import _
|
||||
from frappe.utils import cint, flt, cstr, now
|
||||
from erpnext.stock.utils import get_valuation_method
|
||||
from erpnext.controllers.stock_controller import get_valuation_rate
|
||||
import json
|
||||
|
||||
# future reposting
|
||||
@@ -28,7 +27,7 @@ def make_sl_entries(sl_entries, is_amended=None):
|
||||
if sle.get('is_cancelled') == 'Yes':
|
||||
sle['actual_qty'] = -flt(sle['actual_qty'])
|
||||
|
||||
if sle.get("actual_qty") or sle.voucher_type=="Stock Reconciliation":
|
||||
if sle.get("actual_qty") or sle.get("voucher_type")=="Stock Reconciliation":
|
||||
sle_id = make_entry(sle)
|
||||
|
||||
args = sle.copy()
|
||||
@@ -59,7 +58,7 @@ def delete_cancelled_entry(voucher_type, voucher_no):
|
||||
frappe.db.sql("""delete from `tabStock Ledger Entry`
|
||||
where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no))
|
||||
|
||||
def update_entries_after(args, verbose=1):
|
||||
def update_entries_after(args, allow_zero_rate=False, verbose=1):
|
||||
"""
|
||||
update valution rate and qty after transaction
|
||||
from the current time-bucket onwards
|
||||
@@ -107,9 +106,9 @@ def update_entries_after(args, verbose=1):
|
||||
stock_queue = [[qty_after_transaction, valuation_rate]]
|
||||
else:
|
||||
if valuation_method == "Moving Average":
|
||||
valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate)
|
||||
valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate, allow_zero_rate)
|
||||
else:
|
||||
valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue)
|
||||
valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue, allow_zero_rate)
|
||||
|
||||
|
||||
qty_after_transaction += flt(sle.actual_qty)
|
||||
@@ -252,7 +251,7 @@ def get_serialized_values(qty_after_transaction, sle, valuation_rate):
|
||||
|
||||
return valuation_rate
|
||||
|
||||
def get_moving_average_values(qty_after_transaction, sle, valuation_rate):
|
||||
def get_moving_average_values(qty_after_transaction, sle, valuation_rate, allow_zero_rate):
|
||||
incoming_rate = flt(sle.incoming_rate)
|
||||
actual_qty = flt(sle.actual_qty)
|
||||
|
||||
@@ -266,18 +265,19 @@ def get_moving_average_values(qty_after_transaction, sle, valuation_rate):
|
||||
|
||||
if new_stock_qty:
|
||||
valuation_rate = new_stock_value / flt(new_stock_qty)
|
||||
elif not valuation_rate:
|
||||
valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse)
|
||||
elif not valuation_rate and qty_after_transaction <= 0:
|
||||
valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse, allow_zero_rate)
|
||||
|
||||
return abs(flt(valuation_rate))
|
||||
|
||||
def get_fifo_values(qty_after_transaction, sle, stock_queue):
|
||||
def get_fifo_values(qty_after_transaction, sle, stock_queue, allow_zero_rate):
|
||||
incoming_rate = flt(sle.incoming_rate)
|
||||
actual_qty = flt(sle.actual_qty)
|
||||
|
||||
intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse)
|
||||
|
||||
if actual_qty > 0:
|
||||
if not stock_queue:
|
||||
stock_queue.append([0, 0])
|
||||
|
||||
if stock_queue[-1][0] > 0:
|
||||
stock_queue.append([actual_qty, incoming_rate])
|
||||
else:
|
||||
@@ -289,12 +289,12 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue):
|
||||
else:
|
||||
qty_to_pop = abs(actual_qty)
|
||||
while qty_to_pop:
|
||||
intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse)
|
||||
if not stock_queue:
|
||||
stock_queue.append([0, get_valuation_rate(sle.item_code, sle.warehouse, allow_zero_rate)
|
||||
if qty_after_transaction <= 0 else 0])
|
||||
|
||||
batch = stock_queue[0]
|
||||
|
||||
# print qty_to_pop, batch
|
||||
|
||||
if qty_to_pop >= batch[0]:
|
||||
# consume current batch
|
||||
qty_to_pop = qty_to_pop - batch[0]
|
||||
@@ -318,11 +318,6 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue):
|
||||
|
||||
return abs(valuation_rate)
|
||||
|
||||
def intialize_stock_queue(stock_queue, item_code, warehouse):
|
||||
if not stock_queue:
|
||||
estimated_val_rate = get_valuation_rate(item_code, warehouse)
|
||||
stock_queue.append([0, estimated_val_rate])
|
||||
|
||||
def _raise_exceptions(args, verbose=1):
|
||||
deficiency = min(e["diff"] for e in _exceptions)
|
||||
msg = _("Negative Stock Error ({6}) for Item {0} in Warehouse {1} on {2} {3} in {4} {5}").format(args["item_code"],
|
||||
@@ -353,3 +348,26 @@ def get_previous_sle(args, for_update=False):
|
||||
"timestamp(posting_date, posting_time) <= timestamp(%(posting_date)s, %(posting_time)s)"],
|
||||
"desc", "limit 1", for_update=for_update)
|
||||
return sle and sle[0] or {}
|
||||
|
||||
def get_valuation_rate(item_code, warehouse, allow_zero_rate=False):
|
||||
last_valuation_rate = frappe.db.sql("""select valuation_rate
|
||||
from `tabStock Ledger Entry`
|
||||
where item_code = %s and warehouse = %s
|
||||
and ifnull(valuation_rate, 0) > 0
|
||||
order by posting_date desc, posting_time desc, name desc limit 1""", (item_code, warehouse))
|
||||
|
||||
if not last_valuation_rate:
|
||||
last_valuation_rate = frappe.db.sql("""select valuation_rate
|
||||
from `tabStock Ledger Entry`
|
||||
where item_code = %s and ifnull(valuation_rate, 0) > 0
|
||||
order by posting_date desc, posting_time desc, name desc limit 1""", item_code)
|
||||
|
||||
valuation_rate = flt(last_valuation_rate[0][0]) if last_valuation_rate else 0
|
||||
|
||||
if not valuation_rate:
|
||||
valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate")
|
||||
|
||||
if not allow_zero_rate and not valuation_rate and cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")):
|
||||
frappe.throw(_("Purchase rate for item: {0} not found, which is required to book accounting entry (expense). Please mention item price against a buying price list.").format(item_code))
|
||||
|
||||
return valuation_rate
|
||||
|
||||
@@ -100,7 +100,7 @@ def get_fifo_rate(previous_stock_queue, qty):
|
||||
"""get FIFO (average) Rate from Queue"""
|
||||
if qty >= 0:
|
||||
total = sum(f[0] for f in previous_stock_queue)
|
||||
return total and sum(f[0] * f[1] for f in previous_stock_queue) / flt(total) or 0.0
|
||||
return sum(flt(f[0]) * flt(f[1]) for f in previous_stock_queue) / flt(total) if total else 0.0
|
||||
else:
|
||||
available_qty_for_outgoing, outgoing_cost = 0, 0
|
||||
qty_to_pop = abs(qty)
|
||||
|
||||
@@ -51,9 +51,14 @@ cur_frm.fields_dict['serial_no'].get_query = function(doc, cdt, cdn) {
|
||||
['Serial No', 'docstatus', '!=', 2],
|
||||
['Serial No', 'status', '=', "Delivered"]
|
||||
];
|
||||
if(doc.item_code) cond = ['Serial No', 'item_code', '=', doc.item_code];
|
||||
if(doc.customer) cond = ['Serial No', 'customer', '=', doc.customer];
|
||||
filter.push(cond);
|
||||
if(doc.item_code) {
|
||||
cond = ['Serial No', 'item_code', '=', doc.item_code];
|
||||
filter.push(cond);
|
||||
}
|
||||
if(doc.customer) {
|
||||
cond = ['Serial No', 'customer', '=', doc.customer];
|
||||
filter.push(cond);
|
||||
}
|
||||
return{
|
||||
filters:filter
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ A Supplier exists with same name,وهناك مورد موجود مع نفس ال
|
||||
A symbol for this currency. For e.g. $,رمزا لهذه العملة. على سبيل المثال ل$
|
||||
AMC Expiry Date,AMC تاريخ انتهاء الاشتراك
|
||||
Abbr,ابر
|
||||
Abbreviation cannot have more than 5 characters,اختصار لا يمكن أن يكون أكثر من 5 أحرف
|
||||
Abbreviation cannot have more than 5 characters,الاختصار لا يمكن أن يكون أكثر من 5 أحرف
|
||||
Above Value,فوق القيمة
|
||||
Absent,غائب
|
||||
Acceptance Criteria,معايير القبول
|
||||
@@ -69,7 +69,7 @@ Account {0} cannot be a Group,حساب {0} لا يمكن أن يكون مجمو
|
||||
Account {0} does not belong to Company {1},حساب {0} لا ينتمي إلى شركة {1}
|
||||
Account {0} does not belong to company: {1},حساب {0} لا تنتمي إلى الشركة: {1}
|
||||
Account {0} does not exist,حساب {0} غير موجود
|
||||
Account {0} has been entered more than once for fiscal year {1},حساب {0} تم إدخال أكثر من مرة للعام المالي {1}
|
||||
Account {0} has been entered more than once for fiscal year {1},تم إدخال حساب {0} أكثر من مرة للعام المالي {1}
|
||||
Account {0} is frozen,حساب {0} مجمد
|
||||
Account {0} is inactive,حساب {0} غير نشط
|
||||
Account {0} is not valid,حساب {0} غير صالح
|
||||
@@ -86,7 +86,7 @@ Accounting,المحاسبة
|
||||
Accounting journal entries.,المحاسبة إدخالات دفتر اليومية.
|
||||
Accounts,حسابات
|
||||
Accounts Browser,متصفح الحسابات
|
||||
Accounts Frozen Upto,حسابات مجمدة لغاية
|
||||
Accounts Frozen Upto,حسابات مجمدة حتي
|
||||
Accounts Payable,ذمم دائنة
|
||||
Accounts Receivable,حسابات القبض
|
||||
Accounts Settings,إعدادات الحسابات
|
||||
@@ -94,7 +94,7 @@ Active,نشط
|
||||
Active: Will extract emails from ,نشط: سيتم استخراج رسائل البريد الإلكتروني من
|
||||
Activity,نشاط
|
||||
Activity Log,سجل النشاط
|
||||
Activity Log:,النشاط المفتاح:
|
||||
Activity Log:,:سجل النشاط
|
||||
Activity Type,نوع النشاط
|
||||
Actual,فعلي
|
||||
Actual Budget,الميزانية الفعلية
|
||||
@@ -253,8 +253,8 @@ Approving Role,الموافقة على دور
|
||||
Approving Role cannot be same as role the rule is Applicable To,الموافقة دور لا يمكن أن يكون نفس دور القاعدة تنطبق على
|
||||
Approving User,الموافقة العضو
|
||||
Approving User cannot be same as user the rule is Applicable To,الموافقة العضو لا يمكن أن يكون نفس المستخدم القاعدة تنطبق على
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,متأخرات المبلغ
|
||||
"As Production Order can be made for this item, it must be a stock item.",كما يمكن أن يتم ترتيب الإنتاج لهذا البند، يجب أن يكون بند الأوراق المالية .
|
||||
As per Stock UOM,وفقا للأوراق UOM
|
||||
@@ -283,7 +283,7 @@ Auto Accounting For Stock Settings,السيارات المحاسبة المال
|
||||
Auto Material Request,السيارات مادة طلب
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,لصناعة السيارات في رفع طلب المواد إذا كمية يذهب دون مستوى إعادة الطلب في مستودع
|
||||
Automatically compose message on submission of transactions.,يؤلف تلقائيا رسالة على تقديم المعاملات.
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,استخراج الشراء تلقائيا من صندوق البريد على سبيل المثال
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,تحديثها تلقائيا عن طريق إدخال الأسهم الصنع نوع / أعد حزم
|
||||
Automotive,السيارات
|
||||
@@ -410,16 +410,16 @@ Buying Settings,إعدادات الشراء
|
||||
"Buying must be checked, if Applicable For is selected as {0}",يجب أن يتم التحقق الشراء، إذا تم تحديد مطبق للك {0}
|
||||
C-Form,نموذج C-
|
||||
C-Form Applicable,C-نموذج قابل للتطبيق
|
||||
C-Form Invoice Detail,C-نموذج تفاصيل الفاتورة
|
||||
C-Form No,C-الاستمارة رقم
|
||||
C-Form records,سجلات نموذج C-
|
||||
C-Form Invoice Detail, تفاصيل الفاتورة نموذج - س
|
||||
C-Form No,رقم النموذج - س
|
||||
C-Form records,سجلات النموذج - س
|
||||
CENVAT Capital Goods,CENVAT السلع الرأسمالية
|
||||
CENVAT Edu Cess,CENVAT ايدو سيس
|
||||
CENVAT SHE Cess,CENVAT SHE سيس
|
||||
CENVAT Service Tax,CENVAT ضريبة الخدمة
|
||||
CENVAT Service Tax Cess 1,خدمة CENVAT ضريبة سيس 1
|
||||
CENVAT Service Tax Cess 2,خدمة CENVAT ضريبة سيس 2
|
||||
Calculate Based On,حساب الربح بناء على
|
||||
Calculate Based On,إحسب الربح بناء على
|
||||
Calculate Total Score,حساب النتيجة الإجمالية
|
||||
Calendar Events,الأحداث
|
||||
Call,دعوة
|
||||
@@ -510,7 +510,7 @@ Clearance Date,إزالة التاريخ
|
||||
Clearance Date not mentioned,إزالة التاريخ لم يرد ذكرها
|
||||
Clearance date cannot be before check date in row {0},تاريخ التخليص لا يمكن أن يكون قبل تاريخ الاختيار في الصف {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,انقر على 'جعل مبيعات الفاتورة "الزر لإنشاء فاتورة مبيعات جديدة.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,عميل
|
||||
Close Balance Sheet and book Profit or Loss.,وثيقة الميزانية العمومية و كتاب الربح أو الخسارة .
|
||||
Closed,مغلق
|
||||
@@ -538,7 +538,7 @@ Commission on Sales,عمولة على المبيعات
|
||||
Commission rate cannot be greater than 100,معدل العمولة لا يمكن أن يكون أكبر من 100
|
||||
Communication,اتصالات
|
||||
Communication HTML,الاتصالات HTML
|
||||
Communication History,الاتصال التاريخ
|
||||
Communication History,تاريخ الاتصال
|
||||
Communication log.,سجل الاتصالات.
|
||||
Communications,الاتصالات
|
||||
Company,شركة
|
||||
@@ -840,13 +840,13 @@ Distributor,موزع
|
||||
Divorced,المطلقات
|
||||
Do Not Contact,عدم الاتصال
|
||||
Do not show any symbol like $ etc next to currencies.,لا تظهر أي رمز مثل $ الخ بجانب العملات.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,هل تريد حقا لوقف هذا طلب المواد ؟
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},هل تريد حقا لتقديم كل زلة الرواتب ل شهر {0} و السنة {1}
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,هل تريد حقا أن نزع السدادة هذا طلب المواد ؟
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,اسم الوثيقة
|
||||
Doc Type,نوع الوثيقة
|
||||
Document Description,وصف الوثيقة
|
||||
@@ -898,7 +898,7 @@ Electronics,إلكترونيات
|
||||
Email,البريد الإلكتروني
|
||||
Email Digest,البريد الإلكتروني دايجست
|
||||
Email Digest Settings,البريد الإلكتروني إعدادات دايجست
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,البريد الإلكتروني معرف
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""",معرف البريد الإلكتروني حيث طالب العمل سوف البريد الإلكتروني على سبيل المثال "jobs@example.com"
|
||||
Email Notifications,إشعارات البريد الإلكتروني
|
||||
@@ -958,7 +958,7 @@ Enter url parameter for receiver nos,أدخل عنوان URL لمعلمة NOS ا
|
||||
Entertainment & Leisure,الترفيه وترفيهية
|
||||
Entertainment Expenses,مصاريف الترفيه
|
||||
Entries,مقالات
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,لا يسمح مقالات ضد السنة المالية الحالية إذا تم إغلاق السنة.
|
||||
Equity,إنصاف
|
||||
Error: {0} > {1},الخطأ: {0} > {1}
|
||||
@@ -1573,7 +1573,7 @@ Maintenance Visit Purpose,صيانة زيارة الغرض
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,صيانة زيارة {0} يجب أن يتم إلغاء هذا الأمر قبل إلغاء المبيعات
|
||||
Maintenance start date can not be before delivery date for Serial No {0},صيانة تاريخ بداية لا يمكن أن يكون قبل تاريخ التسليم لل رقم المسلسل {0}
|
||||
Major/Optional Subjects,الرئيسية / اختياري الموضوعات
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,جعل الدخول المحاسبة للحصول على كل حركة الأسهم
|
||||
Make Bank Voucher,جعل قسيمة البنك
|
||||
Make Credit Note,جعل الائتمان ملاحظة
|
||||
@@ -1722,7 +1722,7 @@ Net Weight UOM,الوزن الصافي UOM
|
||||
Net Weight of each Item,الوزن الصافي لكل بند
|
||||
Net pay cannot be negative,صافي الأجور لا يمكن أن تكون سلبية
|
||||
Never,أبدا
|
||||
New ,
|
||||
New ,New
|
||||
New Account,حساب جديد
|
||||
New Account Name,اسم الحساب الجديد
|
||||
New BOM,BOM جديدة
|
||||
@@ -2448,7 +2448,7 @@ Rounded Off,تقريبها
|
||||
Rounded Total,تقريب إجمالي
|
||||
Rounded Total (Company Currency),المشاركات تقريب (العملة الشركة)
|
||||
Row # ,الصف #
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,الصف # {0}: الكمية المطلوبة لا يمكن أن أقل من الحد الأدنى الكمية النظام القطعة (المحددة في البند الرئيسي).
|
||||
Row #{0}: Please specify Serial No for Item {1},الصف # {0}: يرجى تحديد رقم التسلسلي للتاريخ {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,الصف {0}: الحساب لا يتطابق مع \ شراء فاتورة الائتمان لحساب
|
||||
@@ -2750,7 +2750,7 @@ Stock Ageing,الأسهم شيخوخة
|
||||
Stock Analytics,الأسهم تحليلات
|
||||
Stock Assets,الموجودات الأسهم
|
||||
Stock Balance,الأسهم الرصيد
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,الأسهم الدخول
|
||||
Stock Entry Detail,الأسهم إدخال التفاصيل
|
||||
Stock Expenses,مصاريف الأسهم
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -36,20 +36,20 @@
|
||||
"<h4>Default Template</h4><p>Uses <a href=""http://jinja.pocoo.org/docs/templates/"">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p><pre><code>{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN: {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}</code></pre>","<h4> Προεπιλογή Πρότυπο </ h4> <p> Χρήσεις <a href=""http://jinja.pocoo.org/docs/templates/""> Jinja Templating </ a> και όλα τα πεδία της Διεύθυνσης ( συμπεριλαμβανομένων των προσαρμοσμένων πεδίων, αν υπάρχουν) θα είναι διαθέσιμο </ p> <pre> <code> {{}} address_line1 <br> {% εάν address_line2%} {{}} address_line2 <br> { endif% -%} {{}} πόλη <br> {% αν το κράτος%} {{}} κατάσταση <br> {endif% -%} {% εάν pincode%} PIN: {{}} pincode <br> {endif% -%} {{}} χώρα <br> {% αν το τηλέφωνο%} Τηλέφωνο: {{}} τηλέφωνο <br> { endif% -%} {% εάν φαξ%} Fax: {{}} fax <br> {endif% -%} {% εάν email_id%} Email: {{}} email_id <br> ? {endif% -%} </ code> </ pre>"
|
||||
A Customer Group exists with same name please change the Customer name or rename the Customer Group,Μια ομάδα πελατών υπάρχει με το ίδιο όνομα παρακαλούμε να αλλάξετε το όνομα του Πελάτη ή να μετονομάσετε την ομάδα πελατών
|
||||
A Customer exists with same name,Ένας πελάτης υπάρχει με το ίδιο όνομα
|
||||
A Lead with this email id should exist,Μια μολύβδου με αυτή την ταυτότητα ηλεκτρονικού ταχυδρομείου θα πρέπει να υπάρχει
|
||||
A Lead with this email id should exist,Μια επαφή με αυτή τη διεύθυνση ηλεκτρονικού ταχυδρομείου θα πρέπει να υπάρχει
|
||||
A Product or Service,Ένα Προϊόν ή Υπηρεσία
|
||||
A Supplier exists with same name,Ένας προμηθευτής υπάρχει με το ίδιο όνομα
|
||||
A symbol for this currency. For e.g. $,Ένα σύμβολο για το νόμισμα αυτό. Για παράδειγμα $
|
||||
AMC Expiry Date,AMC Ημερομηνία Λήξης
|
||||
Abbr,Συντ.
|
||||
Abbreviation cannot have more than 5 characters,Μια συντομογραφία δεν μπορεί να έχει περισσότερα από 5 χαρακτήρες
|
||||
Abbreviation cannot have more than 5 characters,Μια συντομογραφία δεν μπορεί να έχει περισσότερους από 5 χαρακτήρες
|
||||
Above Value,Πάνω Value
|
||||
Absent,Απών
|
||||
Acceptance Criteria,Κριτήρια αποδοχής
|
||||
Acceptance Criteria,Αποδοχή κριτήρίων
|
||||
Accepted,Δεκτός
|
||||
Accepted + Rejected Qty must be equal to Received quantity for Item {0},Αποδεκτές + Απορρίπτεται Ποσότητα πρέπει να είναι ίση με Ελήφθη ποσότητα για τη θέση {0}
|
||||
Accepted Quantity,ΠΟΣΟΤΗΤΑ
|
||||
Accepted Warehouse,Αποδεκτές αποθήκη
|
||||
Accepted + Rejected Qty must be equal to Received quantity for Item {0},Η Αποδεκτή + η Απορριπτέα ποσότητα πρέπει να είναι ίση με ληφθήσα ποσότητα για τη θέση {0}
|
||||
Accepted Quantity,Αποδεκτή ποσότητα
|
||||
Accepted Warehouse,Αποδεκτή Aποθήκη
|
||||
Account,Λογαριασμός
|
||||
Account Balance,Υπόλοιπο Λογαριασμού
|
||||
Account Created: {0},Ο λογαριασμός δημιουργήθηκε : {0}
|
||||
@@ -57,8 +57,8 @@ Account Details,Στοιχεία Λογαριασμού
|
||||
Account Head,Επικεφαλής λογαριασμού
|
||||
Account Name,Όνομα λογαριασμού
|
||||
Account Type,Είδος Λογαριασμού
|
||||
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Το υπόλοιπο του λογαριασμού ήδη Credit, δεν σας επιτρέπεται να θέσει «Υπόλοιπο Must Be» ως «χρεωστικές»"
|
||||
"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Το υπόλοιπο του λογαριασμού ήδη Debit, δεν μπορείτε να ρυθμίσετε το 'Υπόλοιπο Must Be »ως« Δάνειο »"
|
||||
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Το υπόλοιπο του λογαριασμού είναι ήδη πιστωτικό, δεν επιτρέπεται να ρυθμίσετε το «Υπόλοιπο πρέπει να είναι χρεωστικό»"
|
||||
"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Το υπόλοιπο του λογαριασμού ήδη χρεωστικό, δεν μπορείτε να ρυθμίσετε το 'Υπόλοιπο πρέπει να είναι ως Δάνειο »"
|
||||
Account for the warehouse (Perpetual Inventory) will be created under this Account.,Λογαριασμός για την αποθήκη ( Perpetual Απογραφή ) θα δημιουργηθεί στο πλαίσιο του παρόντος λογαριασμού.
|
||||
Account head {0} created,Κεφάλι Λογαριασμός {0} δημιουργήθηκε
|
||||
Account must be a balance sheet account,Ο λογαριασμός πρέπει να είναι λογαριασμός του ισολογισμού
|
||||
@@ -214,8 +214,8 @@ Amended From,Τροποποίηση Από
|
||||
Amount,Ποσό
|
||||
Amount (Company Currency),Ποσό (νόμισμα της Εταιρείας)
|
||||
Amount Paid,Ποσό Αμειβόμενος
|
||||
Amount to Bill,Ανέρχονται σε Bill
|
||||
An Customer exists with same name,Υπάρχει ένα πελάτη με το ίδιο όνομα
|
||||
Amount to Bill,Χρεώσιμο Ποσό
|
||||
An Customer exists with same name,Υπάρχει πελάτης με το ίδιο όνομα
|
||||
"An Item Group exists with same name, please change the item name or rename the item group","Ένα σημείο της ομάδας υπάρχει με το ίδιο όνομα , μπορείτε να αλλάξετε το όνομα του στοιχείου ή να μετονομάσετε την ομάδα στοιχείου"
|
||||
"An item exists with same name ({0}), please change the item group name or rename the item","Ένα στοιχείο υπάρχει με το ίδιο όνομα ( {0} ) , παρακαλούμε να αλλάξετε το όνομα της ομάδας στοιχείου ή να μετονομάσετε το στοιχείο"
|
||||
Analyst,αναλυτής
|
||||
@@ -254,14 +254,14 @@ Approving Role,Έγκριση Ρόλος
|
||||
Approving Role cannot be same as role the rule is Applicable To,"Έγκριση ρόλος δεν μπορεί να είναι ίδιο με το ρόλο , ο κανόνας είναι να εφαρμόζεται"
|
||||
Approving User,Έγκριση χρήστη
|
||||
Approving User cannot be same as user the rule is Applicable To,Την έγκριση του χρήστη δεν μπορεί να είναι ίδιο με το χρήστη ο κανόνας ισχύει για
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Είσαστε σίγουροι πως θέλετε να σταματήσετε
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Καθυστερήσεις Ποσό
|
||||
"As Production Order can be made for this item, it must be a stock item.","Όπως μπορεί να γίνει Παραγωγής παραγγελίας για το συγκεκριμένο προϊόν , θα πρέπει να είναι ένα στοιχείο υλικού."
|
||||
As per Stock UOM,Όπως ανά Διαθέσιμο UOM
|
||||
"As there are existing stock transactions for this item, you can not change the values of 'Has Serial No', 'Is Stock Item' and 'Valuation Method'","Δεδομένου ότι υπάρχουν χρηματιστηριακές συναλλαγές για αυτό το στοιχείο , δεν μπορείτε να αλλάξετε τις τιμές των « Έχει Αύξων αριθμός », « Είναι Stock σημείο » και « Μέθοδος αποτίμησης»"
|
||||
Asset,προσόν
|
||||
Assistant,βοηθός
|
||||
Assistant,Βοηθός
|
||||
Associate,Συνεργάτης
|
||||
Atleast one of the Selling or Buying must be selected,Πρέπει να επιλεγεί τουλάχιστον μία από τις πωλήσεις ή την αγορά
|
||||
Atleast one warehouse is mandatory,"Τουλάχιστον, μια αποθήκη είναι υποχρεωτική"
|
||||
@@ -270,27 +270,27 @@ Attach Letterhead,Συνδέστε επιστολόχαρτο
|
||||
Attach Logo,Συνδέστε Logo
|
||||
Attach Your Picture,Προσαρμόστε την εικόνα σας
|
||||
Attendance,Παρουσία
|
||||
Attendance Date,Ημερομηνία Συμμετοχή
|
||||
Attendance Details,Λεπτομέρειες Συμμετοχή
|
||||
Attendance Date,Ημερομηνία Συμμετοχής
|
||||
Attendance Details,Λεπτομέρειες Συμμετοχής
|
||||
Attendance From Date,Συμμετοχή Από Ημερομηνία
|
||||
Attendance From Date and Attendance To Date is mandatory,Συμμετοχή Από Ημερομηνία και φοίτηση μέχρι σήμερα είναι υποχρεωτική
|
||||
Attendance To Date,Συμμετοχή σε Ημερομηνία
|
||||
Attendance From Date and Attendance To Date is mandatory,Η συμμετοχή Από και Μέχρι είναι υποχρεωτική
|
||||
Attendance To Date,Προσέλευση μέχρι Ημερομηνία
|
||||
Attendance can not be marked for future dates,Συμμετοχή δεν μπορεί να επιλεγεί για τις μελλοντικές ημερομηνίες
|
||||
Attendance for employee {0} is already marked,Συμμετοχή των εργαζομένων για {0} έχει ήδη σημειώνονται
|
||||
Attendance record.,Ρεκόρ προσέλευσης.
|
||||
Authorization Control,Έλεγχος της χορήγησης αδειών
|
||||
Authorization Rule,Κανόνας Εξουσιοδότηση
|
||||
Attendance for employee {0} is already marked,Συμμετοχή για εργαζομένο {0} έχει ήδη σημειώθει
|
||||
Attendance record.,Καταχωρήσεις Προσέλευσης.
|
||||
Authorization Control,Έλεγχος Εξουσιοδότησης
|
||||
Authorization Rule,Κανόνας Εξουσιοδότησης
|
||||
Auto Accounting For Stock Settings,Auto Λογιστικά Για Ρυθμίσεις Χρηματιστήριο
|
||||
Auto Material Request,Αυτόματη Αίτηση Υλικό
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-raise Αίτηση Υλικό εάν η ποσότητα πέσει κάτω εκ νέου για το επίπεδο σε μια αποθήκη
|
||||
Automatically compose message on submission of transactions.,Αυτόματη συνθέτουν το μήνυμα για την υποβολή των συναλλαγών .
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,"Αυτόματη εξαγωγή οδηγεί από ένα κουτί αλληλογραφίας , π.χ."
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Αυτόματη ενημέρωση μέσω είσοδο στα αποθέματα Κατασκευή Τύπος / Repack
|
||||
Automotive,Αυτοκίνητο
|
||||
Autoreply when a new mail is received,Autoreply όταν λαμβάνονται νέα μηνύματα
|
||||
Available,Διαθέσιμος
|
||||
Available Qty at Warehouse,Διαθέσιμο Ποσότητα σε αποθήκη
|
||||
Available Qty at Warehouse,Διαθέσιμο Ποσότητα στην Αποθήκη
|
||||
Available Stock for Packing Items,Διαθέσιμο Διαθέσιμο για είδη συσκευασίας
|
||||
"Available in BOM, Delivery Note, Purchase Invoice, Production Order, Purchase Order, Purchase Receipt, Sales Invoice, Sales Order, Stock Entry, Timesheet","Διατίθεται σε BOM , Δελτίο Αποστολής , Τιμολόγιο Αγοράς , Παραγωγής Τάξης, Παραγγελία Αγοράς, Αγορά Παραλαβή , Πωλήσεις Τιμολόγιο , Πωλήσεις Τάξης , Stock Έναρξη , φύλλο κατανομής χρόνου"
|
||||
Average Age,Μέσος όρος ηλικίας
|
||||
@@ -511,7 +511,7 @@ Clearance Date,Ημερομηνία Εκκαθάριση
|
||||
Clearance Date not mentioned,Εκκαθάριση Ημερομηνία που δεν αναφέρονται
|
||||
Clearance date cannot be before check date in row {0},Ημερομηνία εκκαθάρισης δεν μπορεί να είναι πριν από την ημερομηνία άφιξης στη γραμμή {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,Κάντε κλικ στο «Κάνε Πωλήσεις Τιμολόγιο» για να δημιουργηθεί μια νέα τιμολογίου πώλησης.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,Πελάτης
|
||||
Close Balance Sheet and book Profit or Loss.,Κλείσιμο Ισολογισμού και των Αποτελεσμάτων βιβλίο ή απώλεια .
|
||||
Closed,Κλειστό
|
||||
@@ -841,13 +841,13 @@ Distributor,Διανομέας
|
||||
Divorced,Διαζευγμένος
|
||||
Do Not Contact,Μην Επικοινωνία
|
||||
Do not show any symbol like $ etc next to currencies.,Να μην εμφανίζεται κανένα σύμβολο όπως $ κλπ δίπλα σε νομίσματα.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Θέλετε πραγματικά να σταματήσει αυτό το υλικό την Αίτηση Συμμετοχής;
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},Θέλετε πραγματικά να υποβληθούν όλα τα Slip Μισθός για το μήνα {0} και {1 χρόνο }
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Θέλετε πραγματικά να ξεβουλώνω αυτό Υλικό Αίτηση Συμμετοχής;
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Doc Name
|
||||
Doc Type,Doc Τύπος
|
||||
Document Description,Περιγραφή εγγράφου
|
||||
@@ -899,7 +899,7 @@ Electronics,ηλεκτρονική
|
||||
Email,Email
|
||||
Email Digest,Email Digest
|
||||
Email Digest Settings,Email Digest Ρυθμίσεις
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,Id Email
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""","Email Id, όπου ένας υποψήφιος θα e-mail π.χ. "jobs@example.com""
|
||||
Email Notifications,Ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Εισάγετε παράμετρο url γ
|
||||
Entertainment & Leisure,Διασκέδαση & Leisure
|
||||
Entertainment Expenses,Έξοδα Ψυχαγωγία
|
||||
Entries,Καταχωρήσεις
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,"Οι συμμετοχές δεν επιτρέπεται κατά το τρέχον οικονομικό έτος, εάν το έτος είναι κλειστή."
|
||||
Equity,δικαιοσύνη
|
||||
Error: {0} > {1},Σφάλμα : {0} > {1}
|
||||
@@ -1480,18 +1480,18 @@ Language,Γλώσσα
|
||||
Last Name,Επώνυμο
|
||||
Last Purchase Rate,Τελευταία Τιμή Αγοράς
|
||||
Latest,αργότερο
|
||||
Lead,Μόλυβδος
|
||||
Lead Details,Μόλυβδος Λεπτομέρειες
|
||||
Lead Id,Μόλυβδος Id
|
||||
Lead Name,Μόλυβδος Name
|
||||
Lead Owner,Μόλυβδος Ιδιοκτήτης
|
||||
Lead Source,Μόλυβδος Πηγή
|
||||
Lead Status,Lead Κατάσταση
|
||||
Lead Time Date,Μόλυβδος Ημερομηνία Ώρα
|
||||
Lead Time Days,Μόλυβδος Ημέρες Ώρα
|
||||
Lead Time days is number of days by which this item is expected in your warehouse. This days is fetched in Material Request when you select this item.,"Μόλυβδος μέρες είναι ο αριθμός των ημερών κατά τον οποίο το στοιχείο αυτό αναμένεται στην αποθήκη σας. Αυτό μέρες είναι παρατραβηγμένο σε αίτημα αφορά υλικό, όταν επιλέξετε αυτό το στοιχείο."
|
||||
Lead Type,Μόλυβδος Τύπος
|
||||
Lead must be set if Opportunity is made from Lead,Ο μόλυβδος πρέπει να οριστεί αν Ευκαιρία είναι κατασκευασμένο από μόλυβδο
|
||||
Lead,Επαφή
|
||||
Lead Details,Λεπτομέρειες Επαφής
|
||||
Lead Id,Id Επαφής
|
||||
Lead Name,Όνομα Επαφής
|
||||
Lead Owner,Ιδιοκτήτης Επαφής
|
||||
Lead Source,Από που προήρθε η Επαφή
|
||||
Lead Status,Κατάσταση Επαφής
|
||||
Lead Time Date,Ημερομηνία Ώρα Επαφής
|
||||
Lead Time Days,Ημέρα Ώρα Επαφής
|
||||
Lead Time days is number of days by which this item is expected in your warehouse. This days is fetched in Material Request when you select this item.,"Ο χρόνος παράδοσης σε ημέρες είναι ο αριθμός των ημερών κατά τον οποίο το στοιχείο αυτό αναμένεται στην αποθήκη σας. Αυτές οι μέρες αναφέρεται σε αίτημα που αφορά υλικό, όταν επιλέξετε αυτό το στοιχείο."
|
||||
Lead Type,Τύπος Επαφής
|
||||
Lead must be set if Opportunity is made from Lead,Η Επαφή πρέπει να οριστεί αν η Ευκαιρία προέρχεται από επαφή
|
||||
Leave Allocation,Αφήστε Κατανομή
|
||||
Leave Allocation Tool,Αφήστε το εργαλείο Κατανομή
|
||||
Leave Application,Αφήστε Εφαρμογή
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Σκοπός Συντήρηση Επίσκεψη
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Συντήρηση Επίσκεψη {0} πρέπει να ακυρωθεί πριν από την ακύρωση αυτής της παραγγελίας πώλησης
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Ημερομηνία έναρξης συντήρησης δεν μπορεί να είναι πριν από την ημερομηνία παράδοσης Αύξων αριθμός {0}
|
||||
Major/Optional Subjects,Σημαντικές / προαιρετικά μαθήματα
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Κάντε Λογιστική καταχώρηση για κάθε Κίνημα Χρηματιστήριο
|
||||
Make Bank Voucher,Κάντε Voucher Bank
|
||||
Make Credit Note,Κάντε Πιστωτικό Σημείωμα
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,Καθαρό Βάρος UOM
|
||||
Net Weight of each Item,Καθαρό βάρος κάθε είδους
|
||||
Net pay cannot be negative,Καθαρή αμοιβή δεν μπορεί να είναι αρνητική
|
||||
Never,Ποτέ
|
||||
New ,
|
||||
New ,New
|
||||
New Account,Νέος λογαριασμός
|
||||
New Account Name,Νέο Όνομα λογαριασμού
|
||||
New BOM,Νέα BOM
|
||||
@@ -2449,7 +2449,7 @@ Rounded Off,στρογγυλοποιηθεί
|
||||
Rounded Total,Στρογγυλεμένες Σύνολο
|
||||
Rounded Total (Company Currency),Στρογγυλεμένες Σύνολο (νόμισμα της Εταιρείας)
|
||||
Row # ,Row #
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Σειρά # {0}: Διέταξε ποσότητα δεν μπορεί να μικρότερη από την ελάχιστη ποσότητα σειρά στοιχείου (όπως ορίζεται στο σημείο master).
|
||||
Row #{0}: Please specify Serial No for Item {1},Σειρά # {0}: Παρακαλείστε να προσδιορίσετε Αύξων αριθμός για τη θέση {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Σειρά {0}: Ο λογαριασμός δεν ταιριάζει με \ τιμολογίου αγοράς πίστωση του λογαριασμού
|
||||
@@ -3277,8 +3277,8 @@ Your support email id - must be a valid email - this is where your emails will c
|
||||
[Select],[ Επιλέξτε ]
|
||||
`Freeze Stocks Older Than` should be smaller than %d days.,` Τα αποθέματα Πάγωμα Παλαιότερο από ` θα πρέπει να είναι μικρότερη από % d ημέρες .
|
||||
and,και
|
||||
are not allowed.,δεν επιτρέπονται .
|
||||
assigned by,ανατεθεί από
|
||||
are not allowed.,δεν επιτρέπονται.
|
||||
assigned by,Ανατέθηκε από
|
||||
cannot be greater than 100,δεν μπορεί να είναι μεγαλύτερη από 100
|
||||
"e.g. ""Build tools for builders""","π.χ. «Χτίστε εργαλεία για τους κατασκευαστές """
|
||||
"e.g. ""MC""","π.χ. "" MC """
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -51,7 +51,7 @@ Accepted + Rejected Qty must be equal to Received quantity for Item {0},"La quan
|
||||
Compte {0} doit être SAMES comme débit pour tenir compte de la facture de vente en ligne {0}"
|
||||
Accepted Quantity,Quantité acceptés
|
||||
Accepted Warehouse,Entrepôt acceptable
|
||||
Account,compte
|
||||
Account,Compte
|
||||
Account Balance,Solde du compte
|
||||
Account Created: {0},Compte créé : {0}
|
||||
Account Details,Détails du compte
|
||||
@@ -63,18 +63,18 @@ Account Type,Type de compte
|
||||
Account for the warehouse (Perpetual Inventory) will be created under this Account.,Compte de l'entrepôt ( de l'inventaire permanent ) sera créé sous ce compte .
|
||||
Account head {0} created,Responsable du compte {0} a été crée
|
||||
Account must be a balance sheet account,Le compte doit être un bilan
|
||||
Account with child nodes cannot be converted to ledger,Liste des prix non sélectionné
|
||||
Account with existing transaction can not be converted to group.,{0} n'est pas un congé approbateur valide
|
||||
Account with existing transaction can not be deleted,Compte avec la transaction existante ne peut pas être supprimé
|
||||
Account with existing transaction cannot be converted to ledger,Compte avec la transaction existante ne peut pas être converti en livre
|
||||
Account with child nodes cannot be converted to ledger,Un compte avec des enfants ne peut pas être converti en grand livre
|
||||
Account with existing transaction can not be converted to group.,Un compte contenant une transaction ne peut pas être converti en groupe
|
||||
Account with existing transaction can not be deleted,Un compte contenant une transaction ne peut pas être supprimé
|
||||
Account with existing transaction cannot be converted to ledger,Un compte contenant une transaction ne peut pas être converti en grand livre
|
||||
Account {0} cannot be a Group,Compte {0} ne peut pas être un groupe
|
||||
Account {0} does not belong to Company {1},Compte {0} n'appartient pas à la société {1}
|
||||
Account {0} does not belong to company: {1},Compte {0} n'appartient pas à l'entreprise: {1}
|
||||
Account {0} does not belong to company: {1},Compte {0} n'appartient pas à la société : {1}
|
||||
Account {0} does not exist,Compte {0} n'existe pas
|
||||
Account {0} has been entered more than once for fiscal year {1},S'il vous plaît entrer « Répétez le jour du Mois de la« valeur de champ
|
||||
Account {0} is frozen,Attention: Commande {0} existe déjà contre le même numéro de bon de commande
|
||||
Account {0} is inactive,dépenses directes
|
||||
Account {0} is not valid,Compte {0} n'est pas valide
|
||||
Account {0} has been entered more than once for fiscal year {1},Le compte {0} a été renseigné plus d'une fois pour l'année fiscale {1}
|
||||
Account {0} is frozen,Le compte {0} est gelé
|
||||
Account {0} is inactive,Le compte {0} est inactif
|
||||
Account {0} is not valid,Le compte {0} n'est pas valide
|
||||
Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,Compte {0} doit être de type ' actif fixe ' comme objet {1} est un atout article
|
||||
Account {0}: Parent account {1} can not be a ledger,Compte {0}: compte de Parent {1} ne peut pas être un grand livre
|
||||
Account {0}: Parent account {1} does not belong to company: {2},Compte {0}: compte de Parent {1} n'appartient pas à l'entreprise: {2}
|
||||
@@ -88,12 +88,12 @@ Accounting,Comptabilité
|
||||
Accounting journal entries.,Les écritures comptables.
|
||||
Accounts,Comptes
|
||||
Accounts Browser,Navigateur des comptes
|
||||
Accounts Frozen Upto,Jusqu'à comptes gelés
|
||||
Accounts Frozen Upto,Comptes gelés jusqu'au
|
||||
Accounts Payable,Comptes à payer
|
||||
Accounts Receivable,Débiteurs
|
||||
Accounts Settings,Paramètres des comptes
|
||||
Active,Actif
|
||||
Active: Will extract emails from ,Actif: va extraire des emails à partir de
|
||||
Active: Will extract emails from ,Actif : extraira les emails depuis
|
||||
Activity,Activité
|
||||
Activity Log,Journal d'activité
|
||||
Activity Log:,Journal d'activité:
|
||||
@@ -104,7 +104,7 @@ Actual Completion Date,Date d'achèvement réelle
|
||||
Actual Date,Date Réelle
|
||||
Actual End Date,Date de fin réelle
|
||||
Actual Invoice Date,Date de la facture réelle
|
||||
Actual Posting Date,Date réelle d'affichage
|
||||
Actual Posting Date,Date réelle d'envoie
|
||||
Actual Qty,Quantité réelle
|
||||
Actual Qty (at source/target),Quantité réelle (à la source / cible)
|
||||
Actual Qty After Transaction,Qté réel Après Transaction
|
||||
@@ -112,11 +112,11 @@ Actual Qty: Quantity available in the warehouse.,Quantité réelle : Quantité d
|
||||
Actual Quantity,Quantité réelle
|
||||
Actual Start Date,Date de début réelle
|
||||
Add,Ajouter
|
||||
Add / Edit Taxes and Charges,Ajouter / Modifier Taxes et frais
|
||||
Add / Edit Taxes and Charges,Ajouter / Modifier Taxes et Charges
|
||||
Add Child,Ajouter un enfant
|
||||
Add Serial No,Ajouter Numéro de série
|
||||
Add Taxes,Ajouter impôts
|
||||
Add Taxes and Charges,Ajouter Taxes et frais
|
||||
Add Taxes and Charges,Ajouter impôts et charges
|
||||
Add or Deduct,Ajouter ou déduire
|
||||
Add rows to set annual budgets on Accounts.,Ajoutez des lignes pour établir des budgets annuels sur des comptes.
|
||||
Add to Cart,Ajouter au panier
|
||||
@@ -130,9 +130,9 @@ Address Details,Détails de l'adresse
|
||||
Address HTML,Adresse HTML
|
||||
Address Line 1,Adresse ligne 1
|
||||
Address Line 2,Adresse ligne 2
|
||||
Address Template,Adresse modèle
|
||||
Address Template,Modèle d'adresse
|
||||
Address Title,Titre de l'adresse
|
||||
Address Title is mandatory.,Vous n'êtes pas autorisé à imprimer ce document
|
||||
Address Title is mandatory.,Le titre de l'adresse est obligatoire
|
||||
Address Type,Type d'adresse
|
||||
Address master.,Adresse principale
|
||||
Administrative Expenses,Dépenses administratives
|
||||
@@ -171,22 +171,22 @@ Airline,compagnie aérienne
|
||||
All Addresses.,Toutes les adresses.
|
||||
All Contact,Tout contact
|
||||
All Contacts.,Tous les contacts.
|
||||
All Customer Contact,Tout contact avec la clientèle
|
||||
All Customer Groups,N ° de série {0} est sous contrat de maintenance jusqu'à {1}
|
||||
All Customer Contact,Tous les contacts clients
|
||||
All Customer Groups,Tous les groupes client
|
||||
All Day,Toute la journée
|
||||
All Employee (Active),Tous les employés (Actif)
|
||||
All Item Groups,Tous les groupes des ouvrages
|
||||
All Lead (Open),Tous plomb (Ouvert)
|
||||
All Item Groups,Tous les groupes d'article
|
||||
All Lead (Open),Toutes les pistes (Ouvertes)
|
||||
All Products or Services.,Tous les produits ou services.
|
||||
All Sales Partner Contact,Tout contact Sales Partner
|
||||
All Sales Person,Tout Sales Person
|
||||
All Supplier Contact,Toutes Contacter le fournisseur
|
||||
All Sales Partner Contact,Tous les contacts des partenaires commerciaux
|
||||
All Sales Person,Tous les commerciaux
|
||||
All Supplier Contact,Tous les contacts fournisseur
|
||||
All Supplier Types,Tous les types de fournisseurs
|
||||
All Territories,Compte racine ne peut pas être supprimé
|
||||
All Territories,Tous les secteurs
|
||||
"All export related fields like currency, conversion rate, export total, export grand total etc are available in Delivery Note, POS, Quotation, Sales Invoice, Sales Order etc.","Tous les champs liés à l'exportation comme monnaie , taux de conversion , l'exportation totale , l'exportation totale grandiose etc sont disponibles dans la note de livraison , POS , offre , facture de vente , Sales Order etc"
|
||||
"All import related fields like currency, conversion rate, import total, import grand total etc are available in Purchase Receipt, Supplier Quotation, Purchase Invoice, Purchase Order etc.","Tous les champs importation connexes comme monnaie , taux de conversion , totale d'importation , importation grande etc totale sont disponibles en Achat réception , Fournisseur d'offre , facture d'achat , bon de commande , etc"
|
||||
All items have already been invoiced,Tous les articles ont déjà été facturés
|
||||
All these items have already been invoiced,Existe compte de l'enfant pour ce compte . Vous ne pouvez pas supprimer ce compte .
|
||||
All these items have already been invoiced,Tous les articles ont déjà été facturés
|
||||
Allocate,Allouer
|
||||
Allocate leaves for a period.,Compte temporaire ( actif)
|
||||
Allocate leaves for the year.,Allouer des feuilles de l'année.
|
||||
@@ -199,10 +199,10 @@ Allow Bill of Materials,Laissez Bill of Materials
|
||||
Allow Bill of Materials should be 'Yes'. Because one or many active BOMs present for this item,Commande {0} n'est pas valide
|
||||
Allow Children,permettre aux enfants
|
||||
Allow Dropbox Access,Autoriser l'accès au Dropbox
|
||||
Allow Google Drive Access,Autoriser Google Drive accès
|
||||
Allow Negative Balance,Laissez solde négatif
|
||||
Allow Negative Stock,Laissez Stock Négatif
|
||||
Allow Production Order,Laissez un ordre de fabrication
|
||||
Allow Google Drive Access,Autoriser l'accès à Google Drive
|
||||
Allow Negative Balance,Autoriser un solde négatif
|
||||
Allow Negative Stock,Autoriser un stock négatif
|
||||
Allow Production Order,Permettre les ordres de fabrication
|
||||
Allow User,Permettre à l'utilisateur
|
||||
Allow Users,Autoriser les utilisateurs
|
||||
Allow the following users to approve Leave Applications for block days.,Autoriser les utilisateurs suivants d'approuver demandes d'autorisation pour les jours de bloc.
|
||||
@@ -211,14 +211,14 @@ Allowance Percent,Pourcentage allocation
|
||||
Allowance for over-{0} crossed for Item {1},Allocation pour les plus de {0} croisés pour objet {1}
|
||||
Allowance for over-{0} crossed for Item {1}.,Allocation pour les plus de {0} franchi pour objet {1}.
|
||||
Allowed Role to Edit Entries Before Frozen Date,Autorisé rôle à modifier les entrées Avant Frozen date
|
||||
Amended From,De modifiée
|
||||
Amended From,Modifié depuis
|
||||
Amount,Montant
|
||||
Amount (Company Currency),Montant (Société Monnaie)
|
||||
Amount Paid,Montant payé
|
||||
Amount to Bill,Montant du projet de loi
|
||||
An Customer exists with same name,Il existe un client avec le même nom
|
||||
"An Item Group exists with same name, please change the item name or rename the item group","Un groupe d'objet existe avec le même nom , s'il vous plaît changer le nom de l'élément ou de renommer le groupe de l'article"
|
||||
"An item exists with same name ({0}), please change the item group name or rename the item",Le compte doit être un compte de bilan
|
||||
"An Item Group exists with same name, please change the item name or rename the item group","Un groupe d'article existe avec le même nom, changez le nom de l'article ou renommez le groupe d'article SVP"
|
||||
"An item exists with same name ({0}), please change the item group name or rename the item","Un article existe avec le même nom ({0}), changez le groupe de l'article ou renommez l'article SVP"
|
||||
Analyst,analyste
|
||||
Annual,Annuel
|
||||
Another Period Closing Entry {0} has been made after {1},Point Wise impôt Détail
|
||||
@@ -246,17 +246,17 @@ Appraisal Template,Modèle d'évaluation
|
||||
Appraisal Template Goal,Objectif modèle d'évaluation
|
||||
Appraisal Template Title,Titre modèle d'évaluation
|
||||
Appraisal {0} created for Employee {1} in the given date range,Soulager date doit être supérieure à date d'adhésion
|
||||
Apprentice,apprenti
|
||||
Apprentice,Apprenti
|
||||
Approval Status,Statut d'approbation
|
||||
Approval Status must be 'Approved' or 'Rejected',non autorisé
|
||||
Approval Status must be 'Approved' or 'Rejected',Le statut d'approbation doit être 'Approuvé' ou 'Rejeté'
|
||||
Approved,Approuvé
|
||||
Approver,Approbateur
|
||||
Approving Role,Approuver rôle
|
||||
Approving Role cannot be same as role the rule is Applicable To,Vous ne pouvez pas sélectionner le type de charge comme « Sur la ligne précédente Montant » ou « Le précédent Row totale » pour la première rangée
|
||||
Approving User,Approuver l'utilisateur
|
||||
Approving User cannot be same as user the rule is Applicable To,Approuver l'utilisateur ne peut pas être identique à l'utilisateur la règle est applicable aux
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Montant échu
|
||||
"As Production Order can be made for this item, it must be a stock item.","Comme ordre de fabrication peut être faite de cet élément, il doit être un article en stock ."
|
||||
As per Stock UOM,Selon Stock UDM
|
||||
@@ -265,11 +265,11 @@ Asset,atout
|
||||
Assistant,assistant
|
||||
Associate,associé
|
||||
Atleast one of the Selling or Buying must be selected,Au moins un de la vente ou l'achat doit être sélectionné
|
||||
Atleast one warehouse is mandatory,Atleast un entrepôt est obligatoire
|
||||
Attach Image,suivant
|
||||
Attach Letterhead,Fixez -tête
|
||||
Attach Logo,S'il vous plaît sélectionner un fichier csv valide avec les données
|
||||
Attach Your Picture,Liquidation Date non mentionné
|
||||
Atleast one warehouse is mandatory,Au moins un entrepôt est obligatoire
|
||||
Attach Image,Joindre l'image
|
||||
Attach Letterhead,Joindre l'entête
|
||||
Attach Logo,Joindre le logo
|
||||
Attach Your Picture,Joindre votre photo
|
||||
Attendance,Présence
|
||||
Attendance Date,Date de Participation
|
||||
Attendance Details,Détails de présence
|
||||
@@ -285,7 +285,7 @@ Auto Accounting For Stock Settings,Auto Comptabilité Pour les paramètres de dr
|
||||
Auto Material Request,Auto Demande de Matériel
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-raise Demande de Matériel si la quantité va en dessous du niveau de re-commande dans un entrepôt
|
||||
Automatically compose message on submission of transactions.,Composer automatiquement un message sur la soumission de transactions .
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,Extraire automatiquement des prospects à partir d'une boîte aux lettres par exemple
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Automatiquement mis à jour via l'entrée de fabrication de type Stock / Repack
|
||||
Automotive,automobile
|
||||
@@ -369,7 +369,7 @@ Billed Amount,Montant facturé
|
||||
Billed Amt,Bec Amt
|
||||
Billing,Facturation
|
||||
Billing Address,Adresse de facturation
|
||||
Billing Address Name,Facturation Nom Adresse
|
||||
Billing Address Name,Nom de l'adresse de facturation
|
||||
Billing Status,Statut de la facturation
|
||||
Bills raised by Suppliers.,Factures soulevé par les fournisseurs.
|
||||
Bills raised to Customers.,Factures aux clients soulevé.
|
||||
@@ -380,10 +380,10 @@ Birthday,anniversaire
|
||||
Block Date,Date de bloquer
|
||||
Block Days,Bloquer les jours
|
||||
Block leave applications by department.,Bloquer les demandes d'autorisation par le ministère.
|
||||
Blog Post,Blog
|
||||
Blog Post,Article de blog
|
||||
Blog Subscriber,Abonné Blog
|
||||
Blood Group,Groupe sanguin
|
||||
Both Warehouse must belong to same Company,Les deux Entrepôt doit appartenir à une même entreprise
|
||||
Both Warehouse must belong to same Company,Les deux Entrepôt doivent appartenir à la même entreprise
|
||||
Box,boîte
|
||||
Branch,Branche
|
||||
Brand,Marque
|
||||
@@ -406,7 +406,7 @@ Build Report,Créer un rapport
|
||||
Bundle items at time of sale.,Regrouper des envois au moment de la vente.
|
||||
Business Development Manager,Directeur du développement des affaires
|
||||
Buying,Achat
|
||||
Buying & Selling,Fin d'année financière Date
|
||||
Buying & Selling,Achats et ventes
|
||||
Buying Amount,Montant d'achat
|
||||
Buying Settings,Réglages d'achat
|
||||
"Buying must be checked, if Applicable For is selected as {0}","Achat doit être vérifiée, si pour Applicable est sélectionné comme {0}"
|
||||
@@ -428,11 +428,11 @@ Call,Appeler
|
||||
Calls,appels
|
||||
Campaign,Campagne
|
||||
Campaign Name,Nom de la campagne
|
||||
Campaign Name is required,Maître à la clientèle .
|
||||
Campaign Name is required,Le nom de la campagne est requis
|
||||
Campaign Naming By,Campagne Naming par
|
||||
Campaign-.####,Centre de coûts de transactions existants ne peut pas être converti en groupe
|
||||
Campaign-.####,Campagne-.####
|
||||
Can be approved by {0},Peut être approuvé par {0}
|
||||
"Can not filter based on Account, if grouped by Account","Impossible de filtrer sur la base de compte , si regroupées par compte"
|
||||
"Can not filter based on Account, if grouped by Account","Impossible de filtrer sur les compte , si regroupées par compte"
|
||||
"Can not filter based on Voucher No, if grouped by Voucher","Impossible de filtrer sur la base Bon Non, si regroupés par Chèque"
|
||||
Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total',Remarque : {0}
|
||||
Cancel Material Visit {0} before cancelling this Customer Issue,Invalid serveur de messagerie . S'il vous plaît corriger et essayer à nouveau.
|
||||
@@ -441,10 +441,10 @@ Cancelled,Annulé
|
||||
Cancelling this Stock Reconciliation will nullify its effect.,Annulation de ce stock de réconciliation annuler son effet .
|
||||
Cannot Cancel Opportunity as Quotation Exists,Vous ne pouvez pas annuler Possibilité de devis Existe
|
||||
Cannot approve leave as you are not authorized to approve leaves on Block Dates,Vous ne pouvez pas approuver les congés que vous n'êtes pas autorisé à approuver les congés sur les dates de bloc
|
||||
Cannot cancel because Employee {0} is already approved for {1},Vous ne pouvez pas annuler parce employés {0} est déjà approuvé pour {1}
|
||||
Cannot cancel because Employee {0} is already approved for {1},Impossible d'annuler car l'employé {0} est déjà approuvé pour {1}
|
||||
Cannot cancel because submitted Stock Entry {0} exists,Vous ne pouvez pas annuler car soumis Stock entrée {0} existe
|
||||
Cannot carry forward {0},Point {0} doit être un achat article
|
||||
Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved.,Vous ne pouvez pas modifier Exercice Date de départ et de l'exercice Date de fin une fois l'exercice est enregistré.
|
||||
Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved.,Impossible de modifier les dates de début et de fin d'exercice une fois que l'exercice est enregistré.
|
||||
"Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency.",Voyage
|
||||
Cannot convert Cost Center to ledger as it has child nodes,Vous ne pouvez pas convertir le centre de coûts à livre car il possède des nœuds enfant
|
||||
Cannot covert to Group because Master Type or Account Type is selected.,Il y avait des erreurs lors de l'envoi de courriel . S'il vous plaît essayez de nouveau .
|
||||
@@ -842,13 +842,13 @@ Distributor,Distributeur
|
||||
Divorced,Divorcé
|
||||
Do Not Contact,Ne communiquez pas avec
|
||||
Do not show any symbol like $ etc next to currencies.,Ne plus afficher n'importe quel symbole comme $ etc à côté de devises.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Voulez-vous vraiment arrêter cette Demande de Matériel ?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},"Statut du document de transition {0} {1}, n'est pas autorisé"
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Voulez-vous vraiment à ce unstop Demande de Matériel ?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Nom de Doc
|
||||
Doc Type,Doc Type d'
|
||||
Document Description,Description du document
|
||||
@@ -900,7 +900,7 @@ Electronics,électronique
|
||||
Email,Email
|
||||
Email Digest,Email Digest
|
||||
Email Digest Settings,Paramètres de messagerie Digest
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,Identification d'email
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""",Identification d'email où un demandeur d'emploi enverra par courriel par exemple "jobs@example.com"
|
||||
Email Notifications,Notifications par courriel
|
||||
@@ -960,7 +960,7 @@ Enter url parameter for receiver nos,Entrez le paramètre url pour nos récepteu
|
||||
Entertainment & Leisure,Entertainment & Leisure
|
||||
Entertainment Expenses,Frais de représentation
|
||||
Entries,Entrées
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,Les inscriptions ne sont pas autorisés contre cette exercice si l'année est fermé.
|
||||
Equity,Opération {0} est répété dans le tableau des opérations
|
||||
Error: {0} > {1},Erreur: {0} > {1}
|
||||
@@ -1575,7 +1575,7 @@ Maintenance Visit Purpose,But Visite d'entretien
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Doublons {0} avec la même {1}
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Entretien date de début ne peut pas être avant la date de livraison pour série n ° {0}
|
||||
Major/Optional Subjects,Sujets principaux / en option
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Faites Entrée Comptabilité Pour chaque mouvement Stock
|
||||
Make Bank Voucher,Assurez-Bon Banque
|
||||
Make Credit Note,Assurez Note de crédit
|
||||
@@ -2450,7 +2450,7 @@ Rounded Off,Période est trop courte
|
||||
Rounded Total,Totale arrondie
|
||||
Rounded Total (Company Currency),Totale arrondie (Société Monnaie)
|
||||
Row # ,Row #
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Ligne # {0}: quantité Commandé ne peut pas moins que l'ordre minimum quantité de produit (défini dans le maître de l'article).
|
||||
Row #{0}: Please specify Serial No for Item {1},Ligne # {0}: S'il vous plaît spécifier Pas de série pour objet {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Ligne {0}: compte ne correspond pas à \ Facture d'achat crédit du compte
|
||||
@@ -2752,7 +2752,7 @@ Stock Ageing,Stock vieillissement
|
||||
Stock Analytics,Analytics stock
|
||||
Stock Assets,payable
|
||||
Stock Balance,Solde Stock
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,Entrée Stock
|
||||
Stock Entry Detail,Détail d'entrée Stock
|
||||
Stock Expenses,Facteur de conversion de l'unité de mesure par défaut doit être de 1 à la ligne {0}
|
||||
|
||||
|
@@ -254,8 +254,8 @@ Approving Role,रोल की स्वीकृति
|
||||
Approving Role cannot be same as role the rule is Applicable To,रोल का अनुमोदन करने के लिए नियम लागू है भूमिका के रूप में ही नहीं हो सकता
|
||||
Approving User,उपयोगकर्ता के स्वीकृति
|
||||
Approving User cannot be same as user the rule is Applicable To,उपयोगकर्ता का अनुमोदन करने के लिए नियम लागू है उपयोगकर्ता के रूप में ही नहीं हो सकता
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,बकाया राशि
|
||||
"As Production Order can be made for this item, it must be a stock item.","उत्पादन का आदेश इस मद के लिए बनाया जा सकता है, यह एक शेयर मद होना चाहिए ."
|
||||
As per Stock UOM,स्टॉक UOM के अनुसार
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,शेयर सेटिंग्स के
|
||||
Auto Material Request,ऑटो सामग्री अनुरोध
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,मात्रा एक गोदाम में फिर से आदेश के स्तर से नीचे चला जाता है तो सामग्री अनुरोध ऑटो बढ़ा
|
||||
Automatically compose message on submission of transactions.,स्वचालित रूप से लेनदेन के प्रस्तुत करने पर संदेश लिखें .
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,स्वचालित रूप से एक मेल बॉक्स से सुराग निकालने उदा
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,स्वतः प्रकार निर्माण / Repack स्टॉक प्रविष्टि के माध्यम से अद्यतन
|
||||
Automotive,मोटर वाहन
|
||||
@@ -511,7 +511,7 @@ Clearance Date,क्लीयरेंस तिथि
|
||||
Clearance Date not mentioned,क्लीयरेंस तिथि का उल्लेख नहीं
|
||||
Clearance date cannot be before check date in row {0},क्लीयरेंस तारीख पंक्ति में चेक की तारीख से पहले नहीं किया जा सकता {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,एक नया बिक्री चालान बनाने के लिए बटन 'बिक्री चालान करें' पर क्लिक करें.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,ग्राहक
|
||||
Close Balance Sheet and book Profit or Loss.,बंद बैलेंस शीट और पुस्तक लाभ या हानि .
|
||||
Closed,बंद
|
||||
@@ -841,13 +841,13 @@ Distributor,वितरक
|
||||
Divorced,तलाकशुदा
|
||||
Do Not Contact,संपर्क नहीं है
|
||||
Do not show any symbol like $ etc next to currencies.,$ मुद्राओं की बगल आदि की तरह किसी भी प्रतीक नहीं दिखा.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,आप वास्तव में इस सामग्री अनुरोध बंद करना चाहते हैं ?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},आप वास्तव में {0} और वर्ष {1} माह के लिए सभी वेतन पर्ची प्रस्तुत करना चाहते हैं
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,आप वास्तव में इस सामग्री अनुरोध आगे बढ़ाना चाहते हैं?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,डॉक्टर का नाम
|
||||
Doc Type,डॉक्टर के प्रकार
|
||||
Document Description,दस्तावेज का विवरण
|
||||
@@ -899,7 +899,7 @@ Electronics,इलेक्ट्रानिक्स
|
||||
Email,ईमेल
|
||||
Email Digest,ईमेल डाइजेस्ट
|
||||
Email Digest Settings,ईमेल डाइजेस्ट सेटिंग
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,ईमेल आईडी
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""",ईमेल आईडी जहां एक नौकरी आवेदक जैसे "jobs@example.com" ईमेल करेंगे
|
||||
Email Notifications,ईमेल सूचनाएं
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,रिसीवर ओपन स्कू
|
||||
Entertainment & Leisure,मनोरंजन और आराम
|
||||
Entertainment Expenses,मनोरंजन खर्च
|
||||
Entries,प्रविष्टियां
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,"प्रविष्टियों इस वित्त वर्ष के खिलाफ की अनुमति नहीं है, अगर साल बंद कर दिया जाता है."
|
||||
Equity,इक्विटी
|
||||
Error: {0} > {1},त्रुटि: {0} > {1}
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,रखरखाव भेंट प्रयोजन
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,रखरखाव भेंट {0} इस बिक्री आदेश रद्द करने से पहले रद्द कर दिया जाना चाहिए
|
||||
Maintenance start date can not be before delivery date for Serial No {0},रखरखाव शुरू करने की तारीख धारावाहिक नहीं के लिए डिलीवरी की तारीख से पहले नहीं किया जा सकता {0}
|
||||
Major/Optional Subjects,मेजर / वैकल्पिक विषय
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,हर शेयर आंदोलन के लिए लेखा प्रविष्टि बनाओ
|
||||
Make Bank Voucher,बैंक वाउचर
|
||||
Make Credit Note,क्रेडिट नोट बनाने
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,नेट वजन UOM
|
||||
Net Weight of each Item,प्रत्येक आइटम के नेट वजन
|
||||
Net pay cannot be negative,शुद्ध भुगतान नकारात्मक नहीं हो सकता
|
||||
Never,कभी नहीं
|
||||
New ,
|
||||
New ,New
|
||||
New Account,नया खाता
|
||||
New Account Name,नया खाता नाम
|
||||
New BOM,नई बीओएम
|
||||
@@ -2449,7 +2449,7 @@ Rounded Off,गोल बंद
|
||||
Rounded Total,गोल कुल
|
||||
Rounded Total (Company Currency),गोल कुल (कंपनी मुद्रा)
|
||||
Row # ,# पंक्ति
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Row # {0}: आदेश दिया मात्रा (आइटम मास्टर में परिभाषित) मद की न्यूनतम आदेश मात्रा से कम नहीं कर सकते हैं.
|
||||
Row #{0}: Please specify Serial No for Item {1},Row # {0}: आइटम के लिए धारावाहिक नहीं निर्दिष्ट करें {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,पंक्ति {0}: \ खरीद चालान क्रेडिट खाते के साथ मेल नहीं खाता
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,स्टॉक बूढ़े
|
||||
Stock Analytics,स्टॉक विश्लेषिकी
|
||||
Stock Assets,शेयर एसेट्स
|
||||
Stock Balance,बाकी स्टाक
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,स्टॉक एंट्री
|
||||
Stock Entry Detail,शेयर एंट्री विस्तार
|
||||
Stock Expenses,शेयर व्यय
|
||||
|
||||
|
@@ -254,8 +254,8 @@ Approving Role,Odobravanje ulogu
|
||||
Approving Role cannot be same as role the rule is Applicable To,Odobravanje ulogu ne mogu biti isti kao i ulogepravilo odnosi se na
|
||||
Approving User,Odobravanje korisnika
|
||||
Approving User cannot be same as user the rule is Applicable To,Odobravanje korisnik ne može biti isto kao korisnikapravilo odnosi se na
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Iznos unatrag
|
||||
"As Production Order can be made for this item, it must be a stock item.","Kao Production Order može biti za tu stavku , to mora bitipredmet dionica ."
|
||||
As per Stock UOM,Kao po burzi UOM
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,Auto Računovodstvo za dionice Settings
|
||||
Auto Material Request,Auto Materijal Zahtjev
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-podizanje Materijal zahtjev ako se količina ide ispod ponovno bi razinu u skladištu
|
||||
Automatically compose message on submission of transactions.,Automatski nova poruka na podnošenje transakcija .
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,Automatski ekstrakt vodi iz mail box pr
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Automatski ažurira putem burze Unos tipa Proizvodnja / prepakirati
|
||||
Automotive,automobilski
|
||||
@@ -511,7 +511,7 @@ Clearance Date,Razmak Datum
|
||||
Clearance Date not mentioned,Razmak Datum nije spomenuo
|
||||
Clearance date cannot be before check date in row {0},Datum rasprodaja ne može biti prije datuma check u redu {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,Kliknite na "Make prodaje Račun 'gumb za stvaranje nove prodaje fakture.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,Klijent
|
||||
Close Balance Sheet and book Profit or Loss.,Zatvori bilanca i knjiga dobit ili gubitak .
|
||||
Closed,Zatvoreno
|
||||
@@ -841,13 +841,13 @@ Distributor,Distributer
|
||||
Divorced,Rastavljen
|
||||
Do Not Contact,Ne Kontaktiraj
|
||||
Do not show any symbol like $ etc next to currencies.,Ne pokazuju nikakav simbol kao $ itd uz valutama.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Da li stvarno želite prestati s ovom materijalnom zahtjev ?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},Želite li zaista da podnesu sve plaće slip za mjesec {0} i godina {1}
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Da li stvarno želite otpušiti ovaj materijal zahtjev ?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Doc Ime
|
||||
Doc Type,Doc Tip
|
||||
Document Description,Dokument Opis
|
||||
@@ -899,7 +899,7 @@ Electronics,elektronika
|
||||
Email,E-mail
|
||||
Email Digest,E-pošta
|
||||
Email Digest Settings,E-pošta Postavke
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,E-mail ID
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""",E-mail Id gdje posao zahtjeva će e-mail npr. "jobs@example.com"
|
||||
Email Notifications,E-mail obavijesti
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Unesite URL parametar za prijemnike br
|
||||
Entertainment & Leisure,Zabava i slobodno vrijeme
|
||||
Entertainment Expenses,Zabava Troškovi
|
||||
Entries,Prijave
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,"Prijave nisu dozvoljeni protiv ove fiskalne godine, ako se godina zatvoren."
|
||||
Equity,pravičnost
|
||||
Error: {0} > {1},Pogreška : {0} > {1}
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Održavanje Posjetite Namjena
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Održavanje Posjetite {0} mora biti otkazana prije poništenja ovu prodajnog naloga
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Održavanje datum početka ne može biti prije datuma isporuke za rednim brojem {0}
|
||||
Major/Optional Subjects,Glavni / Izborni predmeti
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Provjerite knjiženje za svaki burzi pokreta
|
||||
Make Bank Voucher,Napravite Bank bon
|
||||
Make Credit Note,Provjerite Credit Note
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,Težina UOM
|
||||
Net Weight of each Item,Težina svake stavke
|
||||
Net pay cannot be negative,Neto plaća ne može biti negativna
|
||||
Never,Nikad
|
||||
New ,
|
||||
New ,New
|
||||
New Account,Novi račun
|
||||
New Account Name,Novi naziv računa
|
||||
New BOM,Novi BOM
|
||||
@@ -2449,7 +2449,7 @@ Rounded Off,zaokružen
|
||||
Rounded Total,Zaobljeni Ukupno
|
||||
Rounded Total (Company Currency),Zaobljeni Ukupno (Društvo valuta)
|
||||
Row # ,Redak #
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Row # {0}: Ž Količina ne može manje od stavke minimalne narudžbe kom (definiranom u točki gospodara).
|
||||
Row #{0}: Please specify Serial No for Item {1},Row # {0}: Navedite rednim brojem predmeta za {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Red {0}: račun ne odgovara \ Kupnja Račun kredit za račun
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,Kataloški Starenje
|
||||
Stock Analytics,Stock Analytics
|
||||
Stock Assets,dionicama u vrijednosti
|
||||
Stock Balance,Kataloški bilanca
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,Kataloški Stupanje
|
||||
Stock Entry Detail,Kataloški Stupanje Detalj
|
||||
Stock Expenses,Stock Troškovi
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
(Half Day),
|
||||
and year: ,
|
||||
(Half Day), (Half Day)
|
||||
and year: , and year:
|
||||
""" does not exists","""Tidak ada"
|
||||
% Delivered,Disampaikan%
|
||||
% Amount Billed,% Jumlah Ditagih
|
||||
@@ -37,18 +37,18 @@
|
||||
A Customer Group exists with same name please change the Customer name or rename the Customer Group,"Sebuah Kelompok Pelanggan ada dengan nama yang sama, silakan mengubah nama Nasabah atau mengubah nama Grup Pelanggan"
|
||||
A Customer exists with same name,Nasabah ada dengan nama yang sama
|
||||
A Lead with this email id should exist,Sebuah Lead dengan id email ini harus ada
|
||||
A Product or Service,Sebuah Produk atau Jasa
|
||||
A Supplier exists with same name,Sebuah Pemasok ada dengan nama yang sama
|
||||
A symbol for this currency. For e.g. $,Sebuah simbol untuk mata uang ini. Untuk misalnya $
|
||||
A Product or Service,Produk atau Jasa
|
||||
A Supplier exists with same name,Pemasok dengan nama yang sama sudah terdaftar
|
||||
A symbol for this currency. For e.g. $,Simbol untuk mata uang ini. Contoh $
|
||||
AMC Expiry Date,AMC Tanggal Berakhir
|
||||
Abbr,Abbr
|
||||
Abbr,Singkatan
|
||||
Abbreviation cannot have more than 5 characters,Singkatan tak bisa memiliki lebih dari 5 karakter
|
||||
Above Value,Nilai di atas
|
||||
Absent,Absen
|
||||
Acceptance Criteria,Kriteria Penerimaan
|
||||
Accepted,Diterima
|
||||
Accepted + Rejected Qty must be equal to Received quantity for Item {0},Diterima Ditolak + Qty harus sama dengan jumlah yang diterima untuk Item {0}
|
||||
Accepted Quantity,Diterima Kuantitas
|
||||
Accepted Quantity,Kuantitas Diterima
|
||||
Accepted Warehouse,Gudang Diterima
|
||||
Account,Akun
|
||||
Account Balance,Saldo Rekening
|
||||
@@ -57,25 +57,25 @@ Account Details,Rincian Account
|
||||
Account Head,Akun Kepala
|
||||
Account Name,Nama Akun
|
||||
Account Type,Jenis Account
|
||||
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Saldo rekening sudah Kredit, Anda tidak diizinkan untuk mengatur 'Balance Harus' sebagai 'Debit'"
|
||||
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Saldo rekening telah ada di Kredit, Anda tidak diizinkan untuk mengatur 'Balance Harus' sebagai 'Debit'"
|
||||
"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Saldo rekening sudah di Debit, Anda tidak diizinkan untuk mengatur 'Balance Harus' sebagai 'Kredit'"
|
||||
Account for the warehouse (Perpetual Inventory) will be created under this Account.,Rekening untuk gudang (Inventaris Perpetual) akan dibuat di bawah Rekening ini.
|
||||
Account head {0} created,Kepala akun {0} dibuat
|
||||
Account head {0} created,Kepala akun {0} telah dibuat
|
||||
Account must be a balance sheet account,Rekening harus menjadi akun neraca
|
||||
Account with child nodes cannot be converted to ledger,Akun dengan node anak tidak dapat dikonversi ke buku
|
||||
Account with existing transaction can not be converted to group.,Akun dengan transaksi yang ada tidak dapat dikonversi ke grup.
|
||||
Account with existing transaction can not be deleted,Akun dengan transaksi yang ada tidak dapat dihapus
|
||||
Account with existing transaction cannot be converted to ledger,Akun dengan transaksi yang ada tidak dapat dikonversi ke buku
|
||||
Account {0} cannot be a Group,Akun {0} tidak dapat Kelompok a
|
||||
Account {0} cannot be a Group,Akun {0} tidak dapat berupa Kelompok
|
||||
Account {0} does not belong to Company {1},Akun {0} bukan milik Perusahaan {1}
|
||||
Account {0} does not belong to company: {1},Akun {0} bukan milik perusahaan: {1}
|
||||
Account {0} does not exist,Akun {0} tidak ada
|
||||
Account {0} has been entered more than once for fiscal year {1},Akun {0} telah dimasukkan lebih dari sekali untuk tahun fiskal {1}
|
||||
Account {0} is frozen,Akun {0} beku
|
||||
Account {0} is frozen,Akun {0} dibekukan
|
||||
Account {0} is inactive,Akun {0} tidak aktif
|
||||
Account {0} is not valid,Akun {0} tidak valid
|
||||
Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,Akun {0} harus bertipe 'Aset Tetap' sebagai Barang {1} adalah sebuah Aset Barang
|
||||
Account {0}: Parent account {1} can not be a ledger,Akun {0}: akun Parent {1} tidak dapat buku besar
|
||||
Account {0}: Parent account {1} can not be a ledger,Akun {0}: akun Parent {1} tidak dapat berupa buku besar
|
||||
Account {0}: Parent account {1} does not belong to company: {2},Akun {0}: akun Parent {1} bukan milik perusahaan: {2}
|
||||
Account {0}: Parent account {1} does not exist,Akun {0}: akun Parent {1} tidak ada
|
||||
Account {0}: You can not assign itself as parent account,Akun {0}: Anda tidak dapat menetapkan dirinya sebagai rekening induk
|
||||
@@ -92,24 +92,24 @@ Accounts Payable,Hutang
|
||||
Accounts Receivable,Piutang
|
||||
Accounts Settings,Account Settings
|
||||
Active,Aktif
|
||||
Active: Will extract emails from ,
|
||||
Active: Will extract emails from ,Active: Will extract emails from
|
||||
Activity,Aktivitas
|
||||
Activity Log,Log Aktivitas
|
||||
Activity Log:,Log Aktivitas:
|
||||
Activity Type,Jenis Kegiatan
|
||||
Actual,Aktual
|
||||
Actual Budget,Realisasi Anggaran
|
||||
Actual Completion Date,Realisasi Tanggal Penyelesaian
|
||||
Actual Date,Realisasi Tanggal
|
||||
Actual End Date,Realisasi Tanggal Akhir
|
||||
Actual Invoice Date,Sebenarnya Faktur Tanggal
|
||||
Actual Budget,Anggaran Aktual
|
||||
Actual Completion Date,Tanggal Penyelesaian Aktual
|
||||
Actual Date,Tanggal Aktual
|
||||
Actual End Date,Tanggal Akhir Realisasi
|
||||
Actual Invoice Date,Tanggal Faktur Aktual
|
||||
Actual Posting Date,Sebenarnya Posting Tanggal
|
||||
Actual Qty,Realisasi Qty
|
||||
Actual Qty (at source/target),Aktual Qty (di sumber / target)
|
||||
Actual Qty After Transaction,Realisasi Qty Setelah Transaksi
|
||||
Actual Qty,Qty Aktual
|
||||
Actual Qty (at source/target),Qty Aktual (di sumber/target)
|
||||
Actual Qty After Transaction,Qty Aktual Setelah Transaksi
|
||||
Actual Qty: Quantity available in the warehouse.,Jumlah yang sebenarnya: Kuantitas yang tersedia di gudang.
|
||||
Actual Quantity,Realisasi Kuantitas
|
||||
Actual Start Date,Aktual Tanggal Mulai
|
||||
Actual Quantity,Kuantitas Aktual
|
||||
Actual Start Date,Tanggal Mulai Aktual
|
||||
Add,Tambahkan
|
||||
Add / Edit Taxes and Charges,Tambah / Edit Pajak dan Biaya
|
||||
Add Child,Tambah Anak
|
||||
@@ -254,8 +254,8 @@ Approving Role,Menyetujui Peran
|
||||
Approving Role cannot be same as role the rule is Applicable To,Menyetujui Peran tidak bisa sama dengan peran aturan yang Berlaku Untuk
|
||||
Approving User,Menyetujui Pengguna
|
||||
Approving User cannot be same as user the rule is Applicable To,Menyetujui Pengguna tidak bisa sama dengan pengguna aturan yang Berlaku Untuk
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Jumlah tunggakan
|
||||
"As Production Order can be made for this item, it must be a stock item.","Seperti Orde Produksi dapat dibuat untuk item ini, itu harus menjadi barang saham."
|
||||
As per Stock UOM,Per Saham UOM
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,Auto Akuntansi Untuk Stock Pengaturan
|
||||
Auto Material Request,Auto Material Permintaan
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-meningkatkan Permintaan Material jika kuantitas berjalan di bawah tingkat re-order di gudang
|
||||
Automatically compose message on submission of transactions.,Secara otomatis menulis pesan pada pengajuan transaksi.
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,Secara otomatis mengekstrak Memimpin dari kotak surat misalnya
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Secara otomatis diperbarui melalui Bursa Masuknya jenis Industri / Repack
|
||||
Automotive,Ot
|
||||
@@ -511,7 +511,7 @@ Clearance Date,Izin Tanggal
|
||||
Clearance Date not mentioned,Izin Tanggal tidak disebutkan
|
||||
Clearance date cannot be before check date in row {0},Tanggal clearance tidak bisa sebelum tanggal check-in baris {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,Klik 'Buat Sales Invoice' tombol untuk membuat Faktur Penjualan baru.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,Client (Nasabah)
|
||||
Close Balance Sheet and book Profit or Loss.,Tutup Neraca dan Perhitungan Laba Rugi atau buku.
|
||||
Closed,Tertutup
|
||||
@@ -841,13 +841,13 @@ Distributor,Distributor
|
||||
Divorced,Bercerai
|
||||
Do Not Contact,Jangan Hubungi
|
||||
Do not show any symbol like $ etc next to currencies.,Jangan menunjukkan simbol seperti $ etc sebelah mata uang.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Apakah Anda benar-benar ingin BERHENTI Permintaan Bahan ini?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},Apakah Anda benar-benar ingin Menyerahkan semua Slip Gaji untuk bulan {0} dan tahun {1}
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Apakah Anda benar-benar ingin unstop Permintaan Bahan ini?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Doc Nama
|
||||
Doc Type,Doc Type
|
||||
Document Description,Dokumen Deskripsi
|
||||
@@ -899,7 +899,7 @@ Electronics,Elektronik
|
||||
Email,siska_chute34@yahoo.com
|
||||
Email Digest,Email Digest
|
||||
Email Digest Settings,Email Digest Pengaturan
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,Email Id
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""","Email Id di mana pelamar pekerjaan akan mengirimkan email misalnya ""jobs@example.com"""
|
||||
Email Notifications,Notifikasi Email
|
||||
@@ -927,7 +927,7 @@ Employee Settings,Pengaturan Karyawan
|
||||
Employee Type,Tipe Karyawan
|
||||
"Employee designation (e.g. CEO, Director etc.).","Penunjukan Karyawan (misalnya CEO, Direktur dll)."
|
||||
Employee master.,Master Karyawan.
|
||||
Employee record is created using selected field. ,
|
||||
Employee record is created using selected field. ,Employee record is created using selected field.
|
||||
Employee records.,Catatan karyawan.
|
||||
Employee relieved on {0} must be set as 'Left',Karyawan lega pada {0} harus ditetapkan sebagai 'Kiri'
|
||||
Employee {0} has already applied for {1} between {2} and {3},Karyawan {0} telah diterapkan untuk {1} antara {2} dan {3}
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Masukkan parameter url untuk penerima nos
|
||||
Entertainment & Leisure,Hiburan & Kenyamanan
|
||||
Entertainment Expenses,Beban Hiburan
|
||||
Entries,Entri
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,Entri tidak diperbolehkan melawan Tahun Anggaran ini jika tahun ditutup.
|
||||
Equity,Modal
|
||||
Error: {0} > {1},Kesalahan: {0}> {1}
|
||||
@@ -1024,7 +1024,7 @@ Exports,Ekspor
|
||||
External,Eksternal
|
||||
Extract Emails,Ekstrak Email
|
||||
FCFS Rate,FCFS Tingkat
|
||||
Failed: ,
|
||||
Failed: ,Failed:
|
||||
Family Background,Latar Belakang Keluarga
|
||||
Fax,Fax
|
||||
Features Setup,Fitur Pengaturan
|
||||
@@ -1245,7 +1245,7 @@ If you have Sales Team and Sale Partners (Channel Partners) they can be tagged
|
||||
If you involve in manufacturing activity. Enables Item 'Is Manufactured',Jika Anda terlibat dalam aktivitas manufaktur. Memungkinkan Barang 'Apakah Diproduksi'
|
||||
Ignore,Mengabaikan
|
||||
Ignore Pricing Rule,Abaikan Aturan Harga
|
||||
Ignored: ,
|
||||
Ignored: ,Ignored:
|
||||
Image,Gambar
|
||||
Image View,Citra Tampilan
|
||||
Implementation Partner,Implementasi Mitra
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Pemeliharaan Visit Tujuan
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Pemeliharaan Kunjungan {0} harus dibatalkan sebelum membatalkan Sales Order ini
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Tanggal mulai pemeliharaan tidak bisa sebelum tanggal pengiriman untuk Serial No {0}
|
||||
Major/Optional Subjects,Mayor / Opsional Subjek
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Membuat Entri Akuntansi Untuk Setiap Gerakan Stock
|
||||
Make Bank Voucher,Membuat Bank Voucher
|
||||
Make Credit Note,Membuat Nota Kredit
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,Berat Bersih UOM
|
||||
Net Weight of each Item,Berat Bersih dari setiap Item
|
||||
Net pay cannot be negative,Gaji bersih yang belum dapat negatif
|
||||
Never,Tidak Pernah
|
||||
New ,
|
||||
New ,New
|
||||
New Account,Akun baru
|
||||
New Account Name,New Account Name
|
||||
New BOM,New BOM
|
||||
@@ -1789,7 +1789,7 @@ No permission,Tidak ada izin
|
||||
No record found,Tidak ada catatan ditemukan
|
||||
No records found in the Invoice table,Tidak ada catatan yang ditemukan dalam tabel Faktur
|
||||
No records found in the Payment table,Tidak ada catatan yang ditemukan dalam tabel Pembayaran
|
||||
No salary slip found for month: ,
|
||||
No salary slip found for month: ,No salary slip found for month:
|
||||
Non Profit,Non Profit
|
||||
Nos,Nos
|
||||
Not Active,Tidak Aktif
|
||||
@@ -2448,8 +2448,8 @@ Root cannot have a parent cost center,Root tidak dapat memiliki pusat biaya oran
|
||||
Rounded Off,Rounded Off
|
||||
Rounded Total,Rounded Jumlah
|
||||
Rounded Total (Company Currency),Rounded Jumlah (Perusahaan Mata Uang)
|
||||
Row # ,
|
||||
Row # {0}: ,
|
||||
Row # ,Row #
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Row # {0}: qty Memerintahkan tidak bisa kurang dari minimum qty pesanan item (didefinisikan dalam master barang).
|
||||
Row #{0}: Please specify Serial No for Item {1},Row # {0}: Silakan tentukan Serial ada untuk Item {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Row {0}: Akun tidak cocok dengan \ Purchase Invoice Kredit Untuk account
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,Stock Penuaan
|
||||
Stock Analytics,Stock Analytics
|
||||
Stock Assets,Aset saham
|
||||
Stock Balance,Stock Balance
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,Stock Entri
|
||||
Stock Entry Detail,Stock Masuk Detil
|
||||
Stock Expenses,Beban saham
|
||||
@@ -2797,7 +2797,7 @@ Submit all salary slips for the above selected criteria,Menyerahkan semua slip g
|
||||
Submit this Production Order for further processing.,Kirim Produksi ini Order untuk diproses lebih lanjut.
|
||||
Submitted,Dikirim
|
||||
Subsidiary,Anak Perusahaan
|
||||
Successful: ,
|
||||
Successful: ,Successful:
|
||||
Successfully Reconciled,Berhasil Berdamai
|
||||
Suggestions,Saran
|
||||
Sunday,Minggu
|
||||
@@ -2915,7 +2915,7 @@ The Organization,Organisasi
|
||||
"The account head under Liability, in which Profit/Loss will be booked","Account kepala di bawah Kewajiban, di mana Laba / Rugi akan dipesan"
|
||||
The date on which next invoice will be generated. It is generated on submit.,Tanggal dimana faktur berikutnya akan dihasilkan. Hal ini dihasilkan di submit.
|
||||
The date on which recurring invoice will be stop,Tanggal dimana berulang faktur akan berhenti
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ",
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ","The day of the month on which auto invoice will be generated e.g. 05, 28 etc "
|
||||
The day(s) on which you are applying for leave are holiday. You need not apply for leave.,Hari (s) yang Anda lamar untuk cuti adalah liburan. Anda tidak perlu mengajukan cuti.
|
||||
The first Leave Approver in the list will be set as the default Leave Approver,The Approver Cuti pertama dalam daftar akan ditetapkan sebagai default Tinggalkan Approver
|
||||
The first user will become the System Manager (you can change that later).,Pengguna pertama akan menjadi System Manager (Anda dapat mengubah nanti).
|
||||
@@ -3002,7 +3002,7 @@ Total Advance,Jumlah Uang Muka
|
||||
Total Amount,Jumlah Total
|
||||
Total Amount To Pay,Jumlah Total Untuk Bayar
|
||||
Total Amount in Words,Jumlah Total Kata
|
||||
Total Billing This Year: ,
|
||||
Total Billing This Year: ,Total Billing This Year:
|
||||
Total Characters,Jumlah Karakter
|
||||
Total Claimed Amount,Jumlah Total Diklaim
|
||||
Total Commission,Jumlah Komisi
|
||||
|
||||
|
@@ -254,8 +254,8 @@ Approving Role,Regola Approvazione
|
||||
Approving Role cannot be same as role the rule is Applicable To,Approvazione ruolo non può essere lo stesso ruolo la regola è applicabile ad
|
||||
Approving User,Utente Certificatore
|
||||
Approving User cannot be same as user the rule is Applicable To,Approvazione utente non può essere uguale all'utente la regola è applicabile ad
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Importo posticipata
|
||||
"As Production Order can be made for this item, it must be a stock item.","Come ordine di produzione può essere fatta per questo articolo , deve essere un elemento di magazzino ."
|
||||
As per Stock UOM,Per Stock UOM
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,Contabilità Auto Per Impostazioni Immagini
|
||||
Auto Material Request,Richiesta Materiale Auto
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto aumenta Materiale Richiesta se la quantità scende sotto il livello di riordino in un magazzino
|
||||
Automatically compose message on submission of transactions.,Comporre automaticamente il messaggio di presentazione delle transazioni .
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,Estrarre automaticamente Leads da una casella di posta elettronica ad esempio
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Aggiornato automaticamente via Archivio Entrata di tipo Produzione / Repack
|
||||
Automotive,Automotive
|
||||
@@ -511,7 +511,7 @@ Clearance Date,Data Liquidazione
|
||||
Clearance Date not mentioned,Liquidazione data non menzionato
|
||||
Clearance date cannot be before check date in row {0},Data di Liquidazione non può essere prima della data di arrivo in riga {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,Clicca sul pulsante 'Crea Fattura Vendita' per creare una nuova Fattura di Vendita
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,Intestatario
|
||||
Close Balance Sheet and book Profit or Loss.,Chiudere Stato Patrimoniale e il libro utile o perdita .
|
||||
Closed,Chiuso
|
||||
@@ -841,13 +841,13 @@ Distributor,Distributore
|
||||
Divorced,Divorced
|
||||
Do Not Contact,Non Contattaci
|
||||
Do not show any symbol like $ etc next to currencies.,Non visualizzare nessun simbolo tipo € dopo le Valute.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Vuoi davvero fermare questo materiale Request ?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},Vuoi davvero a presentare tutti foglio paga per il mese {0} e l'anno {1}
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Vuoi davvero a stappare questa Materiale Richiedi ?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Nome Doc
|
||||
Doc Type,Tipo Doc
|
||||
Document Description,Descrizione del documento
|
||||
@@ -899,7 +899,7 @@ Electronics,elettronica
|
||||
Email,Email
|
||||
Email Digest,Email di massa
|
||||
Email Digest Settings,Impostazioni Email di Massa
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,ID Email
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""","Email del candidato deve essere del tipo ""jobs@example.com"""
|
||||
Email Notifications,Notifiche e-mail
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Inserisci parametri url per NOS ricevuti
|
||||
Entertainment & Leisure,Intrattenimento e tempo libero
|
||||
Entertainment Expenses,Spese di rappresentanza
|
||||
Entries,Voci
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,Voci non permesse in confronto ad un Anno Fiscale già chiuso.
|
||||
Equity,equità
|
||||
Error: {0} > {1},Errore: {0} > {1}
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Visita di manutenzione Scopo
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Manutenzione Visita {0} deve essere cancellato prima di annullare questo ordine di vendita
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Manutenzione data di inizio non può essere prima della data di consegna per Serial No {0}
|
||||
Major/Optional Subjects,Principali / Opzionale Soggetti
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Fai Entry Accounting per ogni Archivio Movimento
|
||||
Make Bank Voucher,Fai Voucher Banca
|
||||
Make Credit Note,Fai la nota di credito
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,UOM Peso netto
|
||||
Net Weight of each Item,Peso netto di ogni articolo
|
||||
Net pay cannot be negative,Retribuzione netta non può essere negativo
|
||||
Never,Mai
|
||||
New ,
|
||||
New ,New
|
||||
New Account,nuovo account
|
||||
New Account Name,Nuovo nome account
|
||||
New BOM,Nuovo BOM
|
||||
@@ -2449,7 +2449,7 @@ Rounded Off,arrotondato
|
||||
Rounded Total,Totale arrotondato
|
||||
Rounded Total (Company Currency),Totale arrotondato (Azienda valuta)
|
||||
Row # ,Row #
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Row # {0}: quantità ordinata non può a meno di quantità di ordine minimo dell'elemento (definito al punto master).
|
||||
Row #{0}: Please specify Serial No for Item {1},Row # {0}: Si prega di specificare Numero d'ordine per la voce {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Riga {0}: Account non corrisponde con \ Acquisto fattura accreditare sul suo conto
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,Invecchiamento Archivio
|
||||
Stock Analytics,Analytics Archivio
|
||||
Stock Assets,Attivo Immagini
|
||||
Stock Balance,Archivio Balance
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,Archivio Entry
|
||||
Stock Entry Detail,Dell'entrata Stock Detail
|
||||
Stock Expenses,Spese Immagini
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
(Half Day),
|
||||
and year: ,
|
||||
(Half Day), (Half Day)
|
||||
and year: , and year:
|
||||
""" does not exists",""" ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ"
|
||||
% Delivered,ತಲುಪಿಸಲಾಗಿದೆ %
|
||||
% Amount Billed,ಖ್ಯಾತವಾದ % ಪ್ರಮಾಣ
|
||||
@@ -92,7 +92,7 @@ Accounts Payable,ಖಾತೆಗಳನ್ನು ಕೊಡಬೇಕಾದ
|
||||
Accounts Receivable,ಸ್ವೀಕರಿಸುವಂತಹ ಖಾತೆಗಳು
|
||||
Accounts Settings,ಸೆಟ್ಟಿಂಗ್ಗಳು ಖಾತೆಗಳು
|
||||
Active,ಕ್ರಿಯಾಶೀಲ
|
||||
Active: Will extract emails from ,
|
||||
Active: Will extract emails from ,Active: Will extract emails from
|
||||
Activity,ಚಟುವಟಿಕೆ
|
||||
Activity Log,ಚಟುವಟಿಕೆ ಲಾಗ್
|
||||
Activity Log:,ಚಟುವಟಿಕೆ ಲಾಗ್ :
|
||||
@@ -254,8 +254,8 @@ Approving Role,ಅಂಗೀಕಾರಕ್ಕಾಗಿ ಪಾತ್ರ
|
||||
Approving Role cannot be same as role the rule is Applicable To,ಪಾತ್ರ ನಿಯಮ ಅನ್ವಯವಾಗುತ್ತದೆ ಪಾತ್ರ ಅನುಮೋದನೆ ಇರಲಾಗುವುದಿಲ್ಲ
|
||||
Approving User,ಅಂಗೀಕಾರಕ್ಕಾಗಿ ಬಳಕೆದಾರ
|
||||
Approving User cannot be same as user the rule is Applicable To,ಬಳಕೆದಾರ ನಿಯಮ ಅನ್ವಯವಾಗುತ್ತದೆ ಎಂದು ಬಳಕೆದಾರ ಅನುಮೋದನೆ ಇರಲಾಗುವುದಿಲ್ಲ
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,ಬಾಕಿ ಪ್ರಮಾಣ
|
||||
"As Production Order can be made for this item, it must be a stock item.","ಪ್ರೊಡಕ್ಷನ್ ಆರ್ಡರ್ ಈ ಐಟಂ ಮಾಡಬಹುದು ಎಂದು, ಇದು ಒಂದು ಸ್ಟಾಕ್ ಐಟಂ ಇರಬೇಕು ."
|
||||
As per Stock UOM,ಸ್ಟಾಕ್ UOM ಪ್ರಕಾರ
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,ಸ್ಟಾಕ್ ಸೆಟ್ಟಿಂಗ
|
||||
Auto Material Request,ಆಟೋ ಉತ್ಪನ್ನ ವಿನಂತಿ
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,ಆಟೋ ಐಟಿ ವಸ್ತು ವಿನಂತಿಯನ್ನು ಪ್ರಮಾಣ ಉಗ್ರಾಣದಲ್ಲಿ ಮತ್ತೆ ಸಲುವಾಗಿ ಮಟ್ಟಕ್ಕಿಂತ ಹೋದಲ್ಲಿ
|
||||
Automatically compose message on submission of transactions.,ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವ್ಯವಹಾರಗಳ ಸಲ್ಲಿಕೆಯಲ್ಲಿ ಸಂದೇಶವನ್ನು ರಚಿಸಿದರು .
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮೇಲ್ ಬಾಕ್ಸ್ ಇ ಜಿ ಕಾರಣವಾಗುತ್ತದೆ ಹೊರತೆಗೆಯಲು
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮಾದರಿ ತಯಾರಿಕೆ / ಮತ್ತೆ ಮೂಟೆಕಟ್ಟು ನೆಲದ ಪ್ರವೇಶ ಮೂಲಕ ಅಪ್ಡೇಟ್ಗೊಳಿಸಲಾಗಿದೆ
|
||||
Automotive,ಆಟೋಮೋಟಿವ್
|
||||
@@ -511,7 +511,7 @@ Clearance Date,ಕ್ಲಿಯರೆನ್ಸ್ ದಿನಾಂಕ
|
||||
Clearance Date not mentioned,ಕ್ಲಿಯರೆನ್ಸ್ ದಿನಾಂಕ ಪ್ರಸ್ತಾಪಿಸಿದ್ದಾರೆ
|
||||
Clearance date cannot be before check date in row {0},ಕ್ಲಿಯರೆನ್ಸ್ ದಿನಾಂಕ ದಿನಾಂಕ ಸತತವಾಗಿ ಚೆಕ್ ಮೊದಲು ಸಾಧ್ಯವಿಲ್ಲ {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,ಹೊಸ ಮಾರಾಟದ ಸರಕುಪಟ್ಟಿ ರಚಿಸಲು ' ಮಾರಾಟದ ಸರಕುಪಟ್ಟಿ ಮಾಡಿ ' ಗುಂಡಿಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ .
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,ಕಕ್ಷಿಗಾರ
|
||||
Close Balance Sheet and book Profit or Loss.,ಮುಚ್ಚಿ ಬ್ಯಾಲೆನ್ಸ್ ಶೀಟ್ ಮತ್ತು ಪುಸ್ತಕ ಲಾಭ ಅಥವಾ ನಷ್ಟ .
|
||||
Closed,ಮುಚ್ಚಲಾಗಿದೆ
|
||||
@@ -841,13 +841,13 @@ Distributor,ವಿತರಕ
|
||||
Divorced,ವಿವಾಹವಿಚ್ಛೇದಿತ
|
||||
Do Not Contact,ಸಂಪರ್ಕಿಸಿ ಇಲ್ಲ
|
||||
Do not show any symbol like $ etc next to currencies.,ಮುಂದಿನ ಕರೆನ್ಸಿಗಳ $ ಇತ್ಯಾದಿ ಯಾವುದೇ ಸಂಕೇತ ತೋರಿಸುವುದಿಲ್ಲ.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,ನೀವು ನಿಜವಾಗಿಯೂ ಈ ವಸ್ತು ವಿನಂತಿಯನ್ನು ನಿಲ್ಲಿಸಲು ಬಯಸುತ್ತೀರಾ ?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},ನೀವು ನಿಜವಾಗಿಯೂ {0} {1} ತಿಂಗಳು ಮತ್ತು ವರ್ಷದ ಸಂಬಳ ಸ್ಲಿಪ್ ಎಲ್ಲಾ ಸಲ್ಲಿಸಲು ಬಯಸುತ್ತೀರಾ
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,ನೀವು ನಿಜವಾಗಿಯೂ ಈ ವಸ್ತು ವಿನಂತಿಯನ್ನು ಅಡ್ಡಿಯಾಗಿರುವುದನ್ನು ಬಿಡಿಸು ಬಯಸುವಿರಾ?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,ಡಾಕ್ ಹೆಸರು
|
||||
Doc Type,ಡಾಕ್ ಪ್ರಕಾರ
|
||||
Document Description,ಡಾಕ್ಯುಮೆಂಟ್ ವಿವರಣೆ
|
||||
@@ -899,7 +899,7 @@ Electronics,ಇಲೆಕ್ಟ್ರಾನಿಕ್ ಶಾಸ್ತ್ರ
|
||||
Email,ಗಾಜುಲೇಪ
|
||||
Email Digest,ಡೈಜೆಸ್ಟ್ ಇಮೇಲ್
|
||||
Email Digest Settings,ಡೈಜೆಸ್ಟ್ ಇಮೇಲ್ ಸೆಟ್ಟಿಂಗ್ಗಳು
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,ಮಿಂಚಂಚೆ
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""","ಕೆಲಸ ಅರ್ಜಿದಾರರ ಇಮೇಲ್ ಅಲ್ಲಿ ಮಿಂಚಂಚೆ ಇ ಜಿ "" Jobs@example.com """
|
||||
Email Notifications,ಇಮೇಲ್ ಅಧಿಸೂಚನೆಗಳನ್ನು
|
||||
@@ -927,7 +927,7 @@ Employee Settings,ನೌಕರರ ಸೆಟ್ಟಿಂಗ್ಗಳು
|
||||
Employee Type,ನೌಕರರ ಪ್ರಕಾರ
|
||||
"Employee designation (e.g. CEO, Director etc.).","ನೌಕರರ ಹುದ್ದೆ ( ಇ ಜಿ ಸಿಇಒ , ನಿರ್ದೇಶಕ , ಇತ್ಯಾದಿ ) ."
|
||||
Employee master.,ನೌಕರರ ಮಾಸ್ಟರ್ .
|
||||
Employee record is created using selected field. ,
|
||||
Employee record is created using selected field. ,Employee record is created using selected field.
|
||||
Employee records.,ನೌಕರರ ದಾಖಲೆಗಳು .
|
||||
Employee relieved on {0} must be set as 'Left',{0} ಮೇಲೆ ಬಿಡುಗಡೆ ನೌಕರರ ' ಎಡ ' ಹೊಂದಿಸಿ
|
||||
Employee {0} has already applied for {1} between {2} and {3},ನೌಕರರ {0} ಈಗಾಗಲೇ {1} {2} ಮತ್ತು ನಡುವೆ ಅನ್ವಯಿಸಿದ್ದಾರೆ {3}
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,ರಿಸೀವರ್ ಸೂಲ URL ಅ
|
||||
Entertainment & Leisure,ಮನರಂಜನೆ ಮತ್ತು ವಿರಾಮ
|
||||
Entertainment Expenses,ಮನೋರಂಜನೆ ವೆಚ್ಚಗಳು
|
||||
Entries,ನಮೂದುಗಳು
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,ವರ್ಷ ಮುಚ್ಚಲಾಗಿದೆ ವೇಳೆ ನಮೂದುಗಳು ಈ ಆರ್ಥಿಕ ವರ್ಷ ವಿರುದ್ಧ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ.
|
||||
Equity,ಇಕ್ವಿಟಿ
|
||||
Error: {0} > {1},ದೋಷ : {0} > {1}
|
||||
@@ -1024,7 +1024,7 @@ Exports,ರಫ್ತು
|
||||
External,ಬಾಹ್ಯ
|
||||
Extract Emails,ಇಮೇಲ್ಗಳನ್ನು ಹೊರತೆಗೆಯಲು
|
||||
FCFS Rate,FCFS ದರ
|
||||
Failed: ,
|
||||
Failed: ,Failed:
|
||||
Family Background,ಕೌಟುಂಬಿಕ ಹಿನ್ನೆಲೆ
|
||||
Fax,ಫ್ಯಾಕ್ಸ್
|
||||
Features Setup,ವೈಶಿಷ್ಟ್ಯಗಳು ಸೆಟಪ್
|
||||
@@ -1245,7 +1245,7 @@ If you have Sales Team and Sale Partners (Channel Partners) they can be tagged
|
||||
If you involve in manufacturing activity. Enables Item 'Is Manufactured',ನೀವು ಉತ್ಪಾದನಾ ಚಟುವಟಿಕೆ ಒಳಗೊಂಡಿರುತ್ತವೆ ವೇಳೆ . ಐಟಂ ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ ' ತಯಾರಿಸುತ್ತದೆ '
|
||||
Ignore,ಕಡೆಗಣಿಸು
|
||||
Ignore Pricing Rule,ಬೆಲೆ ರೂಲ್ ನಿರ್ಲಕ್ಷಿಸು
|
||||
Ignored: ,
|
||||
Ignored: ,Ignored:
|
||||
Image,ಚಿತ್ರ
|
||||
Image View,ImageView
|
||||
Implementation Partner,ಅನುಷ್ಠಾನ ಸಂಗಾತಿ
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,ನಿರ್ವಹಣೆ ಭೇಟಿ ಉದ್ದ
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,ನಿರ್ವಹಣೆ ಭೇಟಿ {0} ಈ ಮಾರಾಟದ ಆದೇಶವನ್ನು ರದ್ದುಗೊಳಿಸುವ ಮೊದಲು ರದ್ದು ಮಾಡಬೇಕು
|
||||
Maintenance start date can not be before delivery date for Serial No {0},ನಿರ್ವಹಣೆ ಆರಂಭ ದಿನಾಂಕ ಯಾವುದೇ ಸೀರಿಯಲ್ ವಿತರಣಾ ದಿನಾಂಕದ ಮೊದಲು ಸಾಧ್ಯವಿಲ್ಲ {0}
|
||||
Major/Optional Subjects,ಮೇಜರ್ / ಐಚ್ಛಿಕ ವಿಷಯಗಳ
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,ಪ್ರತಿ ಸ್ಟಾಕ್ ಚಳುವಳಿ ಲೆಕ್ಕಪರಿಶೋಧಕ ಎಂಟ್ರಿ ಮಾಡಿ
|
||||
Make Bank Voucher,ಬ್ಯಾಂಕ್ ಚೀಟಿ ಮಾಡಿ
|
||||
Make Credit Note,ಕ್ರೆಡಿಟ್ ಸ್ಕೋರ್ ಮಾಡಿ
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,ನೆಟ್ ತೂಕ UOM
|
||||
Net Weight of each Item,ಪ್ರತಿ ಐಟಂ ನೆಟ್ ತೂಕ
|
||||
Net pay cannot be negative,ನಿವ್ವಳ ವೇತನ ಋಣಾತ್ಮಕ ಇರುವಂತಿಲ್ಲ
|
||||
Never,ನೆವರ್
|
||||
New ,
|
||||
New ,New
|
||||
New Account,ಹೊಸ ಖಾತೆ
|
||||
New Account Name,ಹೊಸ ಖಾತೆ ಹೆಸರು
|
||||
New BOM,ಹೊಸ BOM
|
||||
@@ -1789,7 +1789,7 @@ No permission,ಯಾವುದೇ ಅನುಮತಿ
|
||||
No record found,ಯಾವುದೇ ದಾಖಲೆ
|
||||
No records found in the Invoice table,ಸರಕುಪಟ್ಟಿ ಕೋಷ್ಟಕದಲ್ಲಿ ಯಾವುದೇ ದಾಖಲೆಗಳು
|
||||
No records found in the Payment table,ಪಾವತಿ ಕೋಷ್ಟಕದಲ್ಲಿ ಯಾವುದೇ ದಾಖಲೆಗಳು
|
||||
No salary slip found for month: ,
|
||||
No salary slip found for month: ,No salary slip found for month:
|
||||
Non Profit,ಲಾಭಾಪೇಕ್ಷೆಯಿಲ್ಲದ
|
||||
Nos,ಸೂಲ
|
||||
Not Active,ಸಕ್ರಿಯವಾಗಿರದ
|
||||
@@ -2448,8 +2448,8 @@ Root cannot have a parent cost center,ರೂಟ್ ಪೋಷಕರು ವ
|
||||
Rounded Off,ಆಫ್ ದುಂಡಾದ
|
||||
Rounded Total,ದುಂಡಾದ ಒಟ್ಟು
|
||||
Rounded Total (Company Currency),ದುಂಡಾದ ಒಟ್ಟು ( ಕಂಪನಿ ಕರೆನ್ಸಿ )
|
||||
Row # ,
|
||||
Row # {0}: ,
|
||||
Row # ,Row #
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,ರೋ # {0}: ಆದೇಶಿಸಿತು ಪ್ರಮಾಣ (ಐಟಂ ಮಾಸ್ಟರ್ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ) ಐಟಂನ ಕನಿಷ್ಠ ಪ್ರಮಾಣ ಆದೇಶ ಕಡಿಮೆ ಸಾಧ್ಯವಿಲ್ಲ.
|
||||
Row #{0}: Please specify Serial No for Item {1},ರೋ # {0}: ಐಟಂ ಯಾವುದೇ ಸೀರಿಯಲ್ ಸೂಚಿಸಲು ದಯವಿಟ್ಟು {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,ರೋ {0}: \ ಖರೀದಿಸಿ ಸರಕುಪಟ್ಟಿ ಕ್ರೆಡಿಟ್ ಖಾತೆಗೆ ಜೊತೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,ಸ್ಟಾಕ್ ಏಜಿಂಗ್
|
||||
Stock Analytics,ಸ್ಟಾಕ್ ಅನಾಲಿಟಿಕ್ಸ್
|
||||
Stock Assets,ಸ್ಟಾಕ್ ಸ್ವತ್ತುಗಳು
|
||||
Stock Balance,ಸ್ಟಾಕ್ ಬ್ಯಾಲೆನ್ಸ್
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,ಸ್ಟಾಕ್ ಎಂಟ್ರಿ
|
||||
Stock Entry Detail,ಸ್ಟಾಕ್ ಎಂಟ್ರಿ ವಿವರಗಳು
|
||||
Stock Expenses,ಸ್ಟಾಕ್ ವೆಚ್ಚಗಳು
|
||||
@@ -2797,7 +2797,7 @@ Submit all salary slips for the above selected criteria,ಮೇಲೆ ಆಯ
|
||||
Submit this Production Order for further processing.,ಮತ್ತಷ್ಟು ಪ್ರಕ್ರಿಯೆಗೆ ಈ ಪ್ರೊಡಕ್ಷನ್ ಆರ್ಡರ್ ಸಲ್ಲಿಸಿ .
|
||||
Submitted,ಒಪ್ಪಿಸಿದ
|
||||
Subsidiary,ಸಹಕಾರಿ
|
||||
Successful: ,
|
||||
Successful: ,Successful:
|
||||
Successfully Reconciled,ಯಶಸ್ವಿಯಾಗಿ ಮರುಕೌನ್ಸಿಲ್
|
||||
Suggestions,ಸಲಹೆಗಳು
|
||||
Sunday,ಭಾನುವಾರ
|
||||
@@ -2915,7 +2915,7 @@ The Organization,ಸಂಸ್ಥೆ
|
||||
"The account head under Liability, in which Profit/Loss will be booked","ಲಾಭ / ನಷ್ಟ ಗೊತ್ತು ಯಾವ ಹೊಣೆಗಾರಿಕೆ ಅಡಿಯಲ್ಲಿ ಖಾತೆ ತಲೆ ,"
|
||||
The date on which next invoice will be generated. It is generated on submit.,ಮುಂದಿನ ಸರಕುಪಟ್ಟಿ ಸೃಷ್ಟಿಸಲಾಗುತ್ತಿಲ್ಲ ಯಾವ ದಿನಾಂಕ. ಇದು ಸಲ್ಲಿಸಲು ಮೇಲೆ ಉತ್ಪಾದಿಸಲಾಗುತ್ತದೆ.
|
||||
The date on which recurring invoice will be stop,ಮರುಕಳಿಸುವ ಸರಕುಪಟ್ಟಿ ಸ್ಟಾಪ್ ಯಾವ ದಿನಾಂಕ
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ",
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ","The day of the month on which auto invoice will be generated e.g. 05, 28 etc "
|
||||
The day(s) on which you are applying for leave are holiday. You need not apply for leave.,ನೀವು ರಜೆ ಹಾಕುತ್ತಿವೆ ಮೇಲೆ ದಿನ (ಗಳು) ರಜಾ ಇವೆ . ನೀವು ಬಿಟ್ಟು ಅರ್ಜಿ ಅಗತ್ಯವಿದೆ .
|
||||
The first Leave Approver in the list will be set as the default Leave Approver,ಪಟ್ಟಿಯಲ್ಲಿ ಮೊದಲ ಲೀವ್ ಅನುಮೋದಕ ಡೀಫಾಲ್ಟ್ ಲೀವ್ ಅನುಮೋದಕ ಎಂದು ಸೆಟ್ ಮಾಡಲಾಗುತ್ತದೆ
|
||||
The first user will become the System Manager (you can change that later).,ಮೊದಲ ಬಳಕೆದಾರ ( ನೀವು ನಂತರ ಬದಲಾಯಿಸಬಹುದು ) ವ್ಯವಸ್ಥೆ ನಿರ್ವಾಹಕರಾಗುತ್ತೀರಿ.
|
||||
@@ -3002,7 +3002,7 @@ Total Advance,ಒಟ್ಟು ಅಡ್ವಾನ್ಸ್
|
||||
Total Amount,ಒಟ್ಟು ಪ್ರಮಾಣ
|
||||
Total Amount To Pay,ಪಾವತಿಸಲು ಒಟ್ಟು ಪ್ರಮಾಣ
|
||||
Total Amount in Words,ವರ್ಡ್ಸ್ ಒಟ್ಟು ಪ್ರಮಾಣ
|
||||
Total Billing This Year: ,
|
||||
Total Billing This Year: ,Total Billing This Year:
|
||||
Total Characters,ಒಟ್ಟು ಪಾತ್ರಗಳು
|
||||
Total Claimed Amount,ಹಕ್ಕು ಪಡೆದ ಒಟ್ಟು ಪ್ರಮಾಣ
|
||||
Total Commission,ಒಟ್ಟು ಆಯೋಗ
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
(Half Day),
|
||||
and year: ,
|
||||
(Half Day), (Half Day)
|
||||
and year: , and year:
|
||||
""" does not exists","""존재하지 않습니다"
|
||||
% Delivered,% 배달
|
||||
% Amount Billed,청구 % 금액
|
||||
@@ -92,7 +92,7 @@ Accounts Payable,채무
|
||||
Accounts Receivable,미수금
|
||||
Accounts Settings,계정 설정을
|
||||
Active,활성화
|
||||
Active: Will extract emails from ,
|
||||
Active: Will extract emails from ,Active: Will extract emails from
|
||||
Activity,활동 내역
|
||||
Activity Log,작업 로그
|
||||
Activity Log:,활동 로그 :
|
||||
@@ -254,8 +254,8 @@ Approving Role,승인 역할
|
||||
Approving Role cannot be same as role the rule is Applicable To,역할을 승인하면 규칙이 적용됩니다 역할로 동일 할 수 없습니다
|
||||
Approving User,승인 사용자
|
||||
Approving User cannot be same as user the rule is Applicable To,사용자가 승인하면 규칙에 적용 할 수있는 사용자로 동일 할 수 없습니다
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,연체 금액
|
||||
"As Production Order can be made for this item, it must be a stock item.","생산 주문이 항목에 대한 만들 수 있습니다, 그것은 재고 품목 수 있어야합니다."
|
||||
As per Stock UOM,주식 UOM 당
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,재고 설정에 대한 자동 회계
|
||||
Auto Material Request,자동 자료 요청
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,자동 인상 자료 요청 수량은 창고에 다시 주문 레벨 이하로되면
|
||||
Automatically compose message on submission of transactions.,자동 거래의 제출에 메시지를 작성합니다.
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,자동으로 메일 박스의 예에서 리드를 추출
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,자동 형 제조 / 다시 채워 스톡 엔트리를 통해 업데이트
|
||||
Automotive,자동차
|
||||
@@ -511,7 +511,7 @@ Clearance Date,통관 날짜
|
||||
Clearance Date not mentioned,통관 날짜 언급되지
|
||||
Clearance date cannot be before check date in row {0},통관 날짜 행 체크인 날짜 이전 할 수 없습니다 {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,새로운 판매 송장을 작성하는 '판매 송장 확인'버튼을 클릭합니다.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,클라이언트
|
||||
Close Balance Sheet and book Profit or Loss.,닫기 대차 대조표 및 책 이익 또는 손실.
|
||||
Closed,닫힘
|
||||
@@ -841,13 +841,13 @@ Distributor,분배 자
|
||||
Divorced,이혼
|
||||
Do Not Contact,연락하지 말라
|
||||
Do not show any symbol like $ etc next to currencies.,다음 통화 $ 등과 같은 모든 기호를 표시하지 마십시오.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,당신은 정말이 자료 요청을 중지 하시겠습니까?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},당신은 정말 {0}과 {1} 년 달에 대한 모든 급여 슬립 제출 하시겠습니까
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,당신은 정말이 자료 요청을 멈추지 하시겠습니까?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,문서의 이름
|
||||
Doc Type,문서 유형
|
||||
Document Description,문서 설명
|
||||
@@ -899,7 +899,7 @@ Electronics,전자 공학
|
||||
Email,이메일
|
||||
Email Digest,이메일 다이제스트
|
||||
Email Digest Settings,알림 이메일 설정
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,이메일 아이디
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""","작업 신청자가 보내드립니다 이메일 ID 예를 들면 ""jobs@example.com"""
|
||||
Email Notifications,전자 메일 알림
|
||||
@@ -927,7 +927,7 @@ Employee Settings,직원 설정
|
||||
Employee Type,직원 유형
|
||||
"Employee designation (e.g. CEO, Director etc.).","직원 지정 (예 : CEO, 이사 등)."
|
||||
Employee master.,직원 마스터.
|
||||
Employee record is created using selected field. ,
|
||||
Employee record is created using selected field. ,Employee record is created using selected field.
|
||||
Employee records.,직원 기록.
|
||||
Employee relieved on {0} must be set as 'Left',{0}에 안심 직원은 '왼쪽'으로 설정해야합니다
|
||||
Employee {0} has already applied for {1} between {2} and {3},직원 {0}이 (가) 이미 사이에 {1}를 신청했다 {2}와 {3}
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,수신기 NOS에 대한 URL 매개 변수
|
||||
Entertainment & Leisure,엔터테인먼트 & 레저
|
||||
Entertainment Expenses,접대비
|
||||
Entries,항목
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,올해가 닫혀있는 경우 항목이 회계 연도에 허용되지 않습니다.
|
||||
Equity,공평
|
||||
Error: {0} > {1},오류 : {0}> {1}
|
||||
@@ -1024,7 +1024,7 @@ Exports,수출
|
||||
External,외부
|
||||
Extract Emails,이메일을 추출
|
||||
FCFS Rate,FCFS 평가
|
||||
Failed: ,
|
||||
Failed: ,Failed:
|
||||
Family Background,가족 배경
|
||||
Fax,팩스
|
||||
Features Setup,기능 설정
|
||||
@@ -1245,7 +1245,7 @@ If you have Sales Team and Sale Partners (Channel Partners) they can be tagged
|
||||
If you involve in manufacturing activity. Enables Item 'Is Manufactured',당신이 생산 활동에 참여합니다.항목을 활성화는 '제조'
|
||||
Ignore,무시
|
||||
Ignore Pricing Rule,가격 규칙을 무시
|
||||
Ignored: ,
|
||||
Ignored: ,Ignored:
|
||||
Image,영상
|
||||
Image View,이미지보기
|
||||
Implementation Partner,구현 파트너
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,유지 보수 방문 목적
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,유지 보수 방문은 {0}이 판매 주문을 취소하기 전에 취소해야합니다
|
||||
Maintenance start date can not be before delivery date for Serial No {0},유지 보수 시작 날짜 일련 번호에 대한 배달 날짜 이전 할 수 없습니다 {0}
|
||||
Major/Optional Subjects,주요 / 선택 주제
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,모든 주식 이동을위한 회계 항목을 만듭니다
|
||||
Make Bank Voucher,은행 바우처에게 확인
|
||||
Make Credit Note,신용 참고하십시오
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,순 중량 UOM
|
||||
Net Weight of each Item,각 항목의 순 중량
|
||||
Net pay cannot be negative,순 임금은 부정 할 수 없습니다
|
||||
Never,안함
|
||||
New ,
|
||||
New ,New
|
||||
New Account,새 계정
|
||||
New Account Name,새 계정 이름
|
||||
New BOM,새로운 BOM
|
||||
@@ -1789,7 +1789,7 @@ No permission,아무 권한이 없습니다
|
||||
No record found,검색된 레코드가 없습니다
|
||||
No records found in the Invoice table,송장 테이블에있는 레코드 없음
|
||||
No records found in the Payment table,지불 테이블에있는 레코드 없음
|
||||
No salary slip found for month: ,
|
||||
No salary slip found for month: ,No salary slip found for month:
|
||||
Non Profit,비영리
|
||||
Nos,NOS
|
||||
Not Active,동작 없음
|
||||
@@ -2448,8 +2448,8 @@ Root cannot have a parent cost center,루트는 부모의 비용 센터를 가
|
||||
Rounded Off,둥근 오프
|
||||
Rounded Total,둥근 총
|
||||
Rounded Total (Company Currency),둥근 합계 (회사 통화)
|
||||
Row # ,
|
||||
Row # {0}: ,
|
||||
Row # ,Row #
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,행 # {0} : 주문 된 수량 (품목 마스터에 정의 된) 항목의 최소 주문 수량보다 적은 수 없습니다.
|
||||
Row #{0}: Please specify Serial No for Item {1},행 번호는 {0} 항목에 대한 일련 번호를 지정하십시오 {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,행 {0} : \ 구매 송장 신용 계정에 대한 계정과 일치하지 않습니다
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,주식 고령화
|
||||
Stock Analytics,증권 분석
|
||||
Stock Assets,재고 자산
|
||||
Stock Balance,주식 대차
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,재고 항목
|
||||
Stock Entry Detail,재고 항목의 세부 사항
|
||||
Stock Expenses,재고 비용
|
||||
@@ -2797,7 +2797,7 @@ Submit all salary slips for the above selected criteria,위의 선택 기준에
|
||||
Submit this Production Order for further processing.,추가 처리를 위해이 생산 주문을 제출합니다.
|
||||
Submitted,제출
|
||||
Subsidiary,자회사
|
||||
Successful: ,
|
||||
Successful: ,Successful:
|
||||
Successfully Reconciled,성공적으로 조정 됨
|
||||
Suggestions,제안
|
||||
Sunday,일요일
|
||||
@@ -2915,7 +2915,7 @@ The Organization,조직
|
||||
"The account head under Liability, in which Profit/Loss will be booked","이익 / 손실은 예약 할 수있는 책임에서 계정 머리,"
|
||||
The date on which next invoice will be generated. It is generated on submit.,다음 송장이 생성되는 날짜입니다.그것은 제출에 생성됩니다.
|
||||
The date on which recurring invoice will be stop,반복 송장이 중단 될 일자
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ",
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ","The day of the month on which auto invoice will be generated e.g. 05, 28 etc "
|
||||
The day(s) on which you are applying for leave are holiday. You need not apply for leave.,당신이 허가를 신청하는 날 (들)은 휴일입니다.당신은 휴가를 신청할 필요가 없습니다.
|
||||
The first Leave Approver in the list will be set as the default Leave Approver,목록의 첫 번째 허가 승인자는 기본 남겨 승인자로 설정됩니다
|
||||
The first user will become the System Manager (you can change that later).,첫 번째 사용자 (당신은 나중에 변경할 수 있습니다) 시스템 관리자가 될 것입니다.
|
||||
@@ -3002,7 +3002,7 @@ Total Advance,전체 사전
|
||||
Total Amount,총액
|
||||
Total Amount To Pay,지불하는 총 금액
|
||||
Total Amount in Words,단어의 합계 금액
|
||||
Total Billing This Year: ,
|
||||
Total Billing This Year: ,Total Billing This Year:
|
||||
Total Characters,전체 문자
|
||||
Total Claimed Amount,총 주장 금액
|
||||
Total Commission,전체위원회
|
||||
|
||||
|
@@ -254,8 +254,8 @@ Approving Role,Goedkeuren Rol
|
||||
Approving Role cannot be same as role the rule is Applicable To,Goedkeuring Rol kan niet hetzelfde zijn als de rol van de regel is van toepassing op
|
||||
Approving User,Goedkeuren Gebruiker
|
||||
Approving User cannot be same as user the rule is Applicable To,Goedkeuring van Gebruiker kan niet hetzelfde zijn als gebruiker de regel is van toepassing op
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Achterstallig bedrag
|
||||
"As Production Order can be made for this item, it must be a stock item.","Zoals productieorder kan worden gemaakt voor dit punt, moet het een voorraad item."
|
||||
As per Stock UOM,Per Stock Verpakking
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,Auto Accounting Voor Stock Instellingen
|
||||
Auto Material Request,Automatisch Materiaal Request
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-raise Materiaal aanvragen als kwantiteit gaat onder re-orde niveau in een magazijn
|
||||
Automatically compose message on submission of transactions.,Bericht automatisch samenstellen overlegging van transacties .
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,Leads automatisch extraheren uit een brievenbus bijv.
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Automatisch geüpdate via Stock positie van het type Vervaardiging / Verpak
|
||||
Automotive,Automotive
|
||||
@@ -511,7 +511,7 @@ Clearance Date,Clearance Datum
|
||||
Clearance Date not mentioned,Ontruiming Datum niet vermeld
|
||||
Clearance date cannot be before check date in row {0},Klaring mag niet voor check datum in rij {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,Klik op 'Sales Invoice' knop om een nieuwe verkoopfactuur maken.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,Klant
|
||||
Close Balance Sheet and book Profit or Loss.,Sluiten Balans en boek Winst of verlies .
|
||||
Closed,Gesloten
|
||||
@@ -841,13 +841,13 @@ Distributor,Verdeler
|
||||
Divorced,Gescheiden
|
||||
Do Not Contact,Neem geen contact op
|
||||
Do not show any symbol like $ etc next to currencies.,"Vertonen geen symbool zoals $, enz. naast valuta."
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Wil je echt wilt dit materiaal afbreken ?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},Wil je echt alle salarisstrook voor de maand indienen {0} en {1} jaar
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Wil je echt wilt dit materiaal aanvragen opendraaien ?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Doc Naam
|
||||
Doc Type,Doc Type
|
||||
Document Description,Document Beschrijving
|
||||
@@ -899,7 +899,7 @@ Electronics,elektronica
|
||||
Email,E-mail
|
||||
Email Digest,E-mail Digest
|
||||
Email Digest Settings,E-mail Digest Instellingen
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,E-mail Identiteitskaart
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""",E-mail Identiteitskaart waar een sollicitant zal bijvoorbeeld "jobs@example.com" e-mail
|
||||
Email Notifications,e-mailberichten
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Voer URL-parameter voor de ontvanger nos
|
||||
Entertainment & Leisure,Uitgaan & Vrije Tijd
|
||||
Entertainment Expenses,representatiekosten
|
||||
Entries,Inzendingen
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,Inzendingen zijn niet toegestaan tegen deze fiscale jaar als het jaar gesloten is.
|
||||
Equity,billijkheid
|
||||
Error: {0} > {1},Fout : {0} > {1}
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Onderhoud Bezoek Doel
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Onderhoud Bezoek {0} moet worden geannuleerd voordat het annuleren van deze verkooporder
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Onderhoud startdatum kan niet voor de leveringsdatum voor Serienummer {0}
|
||||
Major/Optional Subjects,Major / keuzevakken
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Maak boekhoudkundige afschrijving voor elke Stock Movement
|
||||
Make Bank Voucher,Maak Bank Voucher
|
||||
Make Credit Note,Maak Credit Note
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,Netto Gewicht Verpakking
|
||||
Net Weight of each Item,Netto gewicht van elk item
|
||||
Net pay cannot be negative,Nettoloon kan niet negatief zijn
|
||||
Never,Nooit
|
||||
New ,
|
||||
New ,New
|
||||
New Account,nieuw account
|
||||
New Account Name,Nieuw account Naam
|
||||
New BOM,Nieuwe BOM
|
||||
@@ -2449,7 +2449,7 @@ Rounded Off,afgerond
|
||||
Rounded Total,Afgeronde Totaal
|
||||
Rounded Total (Company Currency),Afgeronde Totaal (Bedrijf Munt)
|
||||
Row # ,Rij #
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Rij # {0}: Bestelde hoeveelheid kan niet minder dan minimum afname item (gedefinieerd in punt master).
|
||||
Row #{0}: Please specify Serial No for Item {1},Rij # {0}: Geef volgnummer voor post {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Rij {0}: Account komt niet overeen met \ Aankoop Factuur Credit Om rekening te houden
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,Stock Vergrijzing
|
||||
Stock Analytics,Stock Analytics
|
||||
Stock Assets,Stock activa
|
||||
Stock Balance,Stock Balance
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,Stock Entry
|
||||
Stock Entry Detail,Stock Entry Detail
|
||||
Stock Expenses,Stock Lasten
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -35,8 +35,8 @@
|
||||
"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> toevoegen / bewerken < / a>"
|
||||
"<h4>Default Template</h4><p>Uses <a href=""http://jinja.pocoo.org/docs/templates/"">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p><pre><code>{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN: {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}</code></pre>","<h4> modelo padrão </ h4> <p> Usa <a href=""http://jinja.pocoo.org/docs/templates/""> Jinja Templating </ a> e todos os campos de Endereço ( incluindo campos personalizados se houver) estará disponível </ p> <pre> <code> {{}} address_line1 <br> {% if address_line2%} {{}} address_line2 <br> { endif% -%} {{cidade}} <br> {% if%} Estado {{estado}} {% endif <br> -%} {% if pincode%} PIN: {{}} pincode <br> {% endif -%} {{país}} <br> {% if%} telefone Telefone: {{telefone}} {<br> endif% -%} {% if%} fax Fax: {{fax}} {% endif <br> -%} {% if% email_id} E-mail: {{}} email_id <br> , {% endif -%} </ code> </ pre>"
|
||||
A Customer Group exists with same name please change the Customer name or rename the Customer Group,"Um grupo de clientes existente com o mesmo nome, por favor altere o nome do cliente ou renomear o grupo de clientes"
|
||||
A Customer exists with same name,Um cliente existe com mesmo nome
|
||||
A Lead with this email id should exist,Um chumbo com esse ID de e-mail deve existir
|
||||
A Customer exists with same name,Um cliente existe com o mesmo nome
|
||||
A Lead with this email id should exist,Um Lead com esse ID de e-mail deve existir
|
||||
A Product or Service,Um produto ou serviço
|
||||
A Supplier exists with same name,Um Fornecedor existe com mesmo nome
|
||||
A symbol for this currency. For e.g. $,Um símbolo para esta moeda. Por exemplo: $
|
||||
@@ -47,20 +47,20 @@ Above Value,Acima de Valor
|
||||
Absent,Ausente
|
||||
Acceptance Criteria,Critérios de Aceitação
|
||||
Accepted,Aceito
|
||||
Accepted + Rejected Qty must be equal to Received quantity for Item {0},Aceito Rejeitado + Qt deve ser igual a quantidade recebida por item {0}
|
||||
Accepted Quantity,Quantidade Aceito
|
||||
Accepted Warehouse,Armazém Aceito
|
||||
Accepted + Rejected Qty must be equal to Received quantity for Item {0},Aceite + Qty Rejeitada deve ser igual a quantidade recebida por item {0}
|
||||
Accepted Quantity,Quantidade Aceite
|
||||
Accepted Warehouse,Armazém Aceite
|
||||
Account,conta
|
||||
Account Balance,Saldo em Conta
|
||||
Account Created: {0},Conta Criada : {0}
|
||||
Account Details,Detalhes da conta
|
||||
Account Head,Chefe conta
|
||||
Account Head,Conta principal
|
||||
Account Name,Nome da conta
|
||||
Account Type,Tipo de conta
|
||||
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Saldo já em crédito, você não tem permissão para definir 'saldo deve ser' como 'débito'"
|
||||
"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Saldo já em débito, você não tem permissão para definir 'saldo deve ser' como 'crédito'"
|
||||
Account for the warehouse (Perpetual Inventory) will be created under this Account.,Rekening voor het magazijn ( Perpetual Inventory ) wordt aangemaakt onder deze account .
|
||||
Account head {0} created,Cabeça Conta {0} criado
|
||||
Account for the warehouse (Perpetual Inventory) will be created under this Account.,Uma conta para o armazém ( Perpetual Inventory ) será criada tendo como base esta conta.
|
||||
Account head {0} created,Conta principal {0} criada
|
||||
Account must be a balance sheet account,Conta deve ser uma conta de balanço
|
||||
Account with child nodes cannot be converted to ledger,Conta com nós filhos não pode ser convertido em livro
|
||||
Account with existing transaction can not be converted to group.,Conta com a transação existente não pode ser convertido em grupo.
|
||||
@@ -75,15 +75,15 @@ Account {0} is frozen,Conta {0} está congelado
|
||||
Account {0} is inactive,Conta {0} está inativo
|
||||
Account {0} is not valid,Conta {0} não é válido
|
||||
Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,"Conta {0} deve ser do tipo "" Ativo Fixo "" como item {1} é um item de ativos"
|
||||
Account {0}: Parent account {1} can not be a ledger,Conta {0}: conta Parent {1} não pode ser um livro
|
||||
Account {0}: Parent account {1} does not belong to company: {2},Conta {0}: conta Parent {1} não pertence à empresa: {2}
|
||||
Account {0}: Parent account {1} does not exist,Conta {0}: conta Parent {1} não existe
|
||||
Account {0}: Parent account {1} can not be a ledger,Conta {0}: conta principal {1} não pode ser um livro
|
||||
Account {0}: Parent account {1} does not belong to company: {2},Conta {0}: conta principal {1} não pertence à empresa: {2}
|
||||
Account {0}: Parent account {1} does not exist,Conta {0}: conta principal {1} não existe
|
||||
Account {0}: You can not assign itself as parent account,Conta {0}: Você não pode atribuir-se como conta principal
|
||||
Account: {0} can only be updated via \ Stock Transactions,Conta: {0} só pode ser atualizado através de \ operações com ações
|
||||
Accountant,contador
|
||||
Account: {0} can only be updated via \ Stock Transactions,Conta: {0} só pode ser atualizado através de \ operações de stock
|
||||
Accountant,Contabilista
|
||||
Accounting,Contabilidade
|
||||
"Accounting Entries can be made against leaf nodes, called","Boekingen kunnen worden gemaakt tegen leaf nodes , genaamd"
|
||||
"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Registro contábil congelado até a presente data, ninguém pode fazer / modificar entrada exceto papel especificado abaixo."
|
||||
"Accounting Entries can be made against leaf nodes, called",Registos contábeis podem ser realizadas através de chamadas a nós filhos
|
||||
"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Registo contábil congelado até à presente data, ninguém pode fazer / modificar entrada exceto para as regras especificadas abaixo."
|
||||
Accounting journal entries.,Lançamentos contábeis jornal.
|
||||
Accounts,Contas
|
||||
Accounts Browser,Contas Navegador
|
||||
@@ -92,51 +92,51 @@ Accounts Payable,Contas a Pagar
|
||||
Accounts Receivable,Contas a receber
|
||||
Accounts Settings,Configurações de contas
|
||||
Active,Ativo
|
||||
Active: Will extract emails from ,Ativo: Será que extrair e-mails a partir de
|
||||
Active: Will extract emails from ,Ativo: Irá extrair e-mails a partir de
|
||||
Activity,Atividade
|
||||
Activity Log,Registro de Atividade
|
||||
Activity Log:,Activity Log :
|
||||
Activity Log:,Registro de Atividade:
|
||||
Activity Type,Tipo de Atividade
|
||||
Actual,Real
|
||||
Actual Budget,Orçamento real
|
||||
Actual Completion Date,Data de conclusão real
|
||||
Actual Date,Data Real
|
||||
Actual End Date,Data final real
|
||||
Actual Invoice Date,Actual Data da Fatura
|
||||
Actual,Atual
|
||||
Actual Budget,Orçamento Atual
|
||||
Actual Completion Date,Atual Data de Conclusão
|
||||
Actual Date,Data atual
|
||||
Actual End Date,Atual Data final
|
||||
Actual Invoice Date,Atual Data da Fatura
|
||||
Actual Posting Date,Actual Data lançamento
|
||||
Actual Qty,Qtde real
|
||||
Actual Qty (at source/target),Qtde real (a origem / destino)
|
||||
Actual Qty After Transaction,Qtde real após a transação
|
||||
Actual Qty: Quantity available in the warehouse.,Werkelijke Aantal : Aantal beschikbaar in het magazijn.
|
||||
Actual Quantity,Quantidade real
|
||||
Actual Start Date,Data de início real
|
||||
Actual Qty,Qtde Atual
|
||||
Actual Qty (at source/target),Qtde Atual (na origem / destino)
|
||||
Actual Qty After Transaction,Qtde atual após a transação
|
||||
Actual Qty: Quantity available in the warehouse.,Atual Qtde: Quantidade existente no armazém.
|
||||
Actual Quantity,Quantidade Atual
|
||||
Actual Start Date,Atual Data de início
|
||||
Add,Adicionar
|
||||
Add / Edit Taxes and Charges,Adicionar / Editar Impostos e Taxas
|
||||
Add Child,Child
|
||||
Add Serial No,Voeg Serienummer
|
||||
Add Taxes,Belastingen toevoegen
|
||||
Add Taxes and Charges,Belastingen en heffingen toe te voegen
|
||||
Add Child,Adicionar Descendente
|
||||
Add Serial No,Adicionar número de série
|
||||
Add Taxes,Adicionar impostos
|
||||
Add Taxes and Charges,Adicionar impostos e taxas
|
||||
Add or Deduct,Adicionar ou Deduzir
|
||||
Add rows to set annual budgets on Accounts.,Adicionar linhas para definir orçamentos anuais nas contas.
|
||||
Add to Cart,Adicionar ao carrinho
|
||||
Add to calendar on this date,Toevoegen aan agenda op deze datum
|
||||
Add to Cart,Adicionar ao carrinho de compras
|
||||
Add to calendar on this date,Adicionar ao calendário nesta data
|
||||
Add/Remove Recipients,Adicionar / Remover Destinatários
|
||||
Address,Endereço
|
||||
Address & Contact,Address & Contact
|
||||
Address & Contact,Endereço e contato
|
||||
Address & Contacts,Endereço e contatos
|
||||
Address Desc,Endereço Descr
|
||||
Address Details,Detalhes de endereço
|
||||
Address HTML,Abordar HTML
|
||||
Address HTML,Endereço HTML
|
||||
Address Line 1,Endereço Linha 1
|
||||
Address Line 2,Endereço Linha 2
|
||||
Address Template,Modelo de endereço
|
||||
Address Title,Título endereço
|
||||
Address Title is mandatory.,Endereço de título é obrigatório.
|
||||
Address Title,Título do endereço
|
||||
Address Title is mandatory.,O título do Endereço é obrigatório.
|
||||
Address Type,Tipo de endereço
|
||||
Address master.,Mestre de endereços.
|
||||
Administrative Expenses,despesas administrativas
|
||||
Address master.,Endereço principal.
|
||||
Administrative Expenses,Despesas Administrativas
|
||||
Administrative Officer,Diretor Administrativo
|
||||
Advance Amount,Quantidade antecedência
|
||||
Advance Amount,Quantidade Adiantada
|
||||
Advance amount,Valor do adiantamento
|
||||
Advances,Avanços
|
||||
Advertisement,Anúncio
|
||||
@@ -145,71 +145,71 @@ Aerospace,aeroespaço
|
||||
After Sale Installations,Após instalações Venda
|
||||
Against,Contra
|
||||
Against Account,Contra Conta
|
||||
Against Bill {0} dated {1},Contra Bill {0} {1} datado
|
||||
Against Docname,Contra docName
|
||||
Against Bill {0} dated {1},Contra Bill {0} datado {1}
|
||||
Against Docname,Contra Docname
|
||||
Against Doctype,Contra Doctype
|
||||
Against Document Detail No,Contra Detalhe documento n
|
||||
Against Document No,Contra documento n
|
||||
Against Document Detail No,Contra Detalhe documento No
|
||||
Against Document No,Contra documento No
|
||||
Against Expense Account,Contra a conta de despesas
|
||||
Against Income Account,Contra Conta Renda
|
||||
Against Income Account,Contra Conta a Receber
|
||||
Against Journal Voucher,Contra Vale Jornal
|
||||
Against Journal Voucher {0} does not have any unmatched {1} entry,Contra Jornal Vale {0} não tem {1} entrada incomparável
|
||||
Against Purchase Invoice,Contra a Nota Fiscal de Compra
|
||||
Against Sales Invoice,Contra a nota fiscal de venda
|
||||
Against Sales Order,Tegen klantorder
|
||||
Against Sales Order,Contra Ordem de Venda
|
||||
Against Voucher,Contra Vale
|
||||
Against Voucher Type,Tipo contra Vale
|
||||
Ageing Based On,Vergrijzing Based On
|
||||
Ageing Based On,Contra Baseado em
|
||||
Ageing Date is mandatory for opening entry,Envelhecimento Data é obrigatória para a abertura de entrada
|
||||
Ageing date is mandatory for opening entry,Data Envelhecer é obrigatória para a abertura de entrada
|
||||
Agent,Agente
|
||||
Aging Date,Envelhecimento Data
|
||||
Aging Date is mandatory for opening entry,Envelhecimento Data é obrigatória para a abertura de entrada
|
||||
Agriculture,agricultura
|
||||
Airline,companhia aérea
|
||||
Agriculture,Agricultura
|
||||
Airline,Companhia aérea
|
||||
All Addresses.,Todos os endereços.
|
||||
All Contact,Todos Contato
|
||||
All Contact,Todos os Contatos
|
||||
All Contacts.,Todos os contatos.
|
||||
All Customer Contact,Todos contato do cliente
|
||||
All Customer Contact,Todos os contatos de clientes
|
||||
All Customer Groups,Todos os grupos de clientes
|
||||
All Day,Dia de Todos os
|
||||
All Employee (Active),Todos Empregado (Ativo)
|
||||
All Day,Todo o Dia
|
||||
All Employee (Active),Todos os Empregados (Ativo)
|
||||
All Item Groups,Todos os grupos de itens
|
||||
All Lead (Open),Todos chumbo (Aberto)
|
||||
All Products or Services.,Todos os produtos ou serviços.
|
||||
All Sales Partner Contact,Todos Contato parceiro de vendas
|
||||
All Sales Person,Todos Vendas Pessoa
|
||||
All Supplier Contact,Todos contato fornecedor
|
||||
All Supplier Types,Alle Leverancier Types
|
||||
All Sales Person,Todos as Pessoas de Vendas
|
||||
All Supplier Contact,Todos os contatos de fornecedores
|
||||
All Supplier Types,Todos os tipos de fornecedores
|
||||
All Territories,Todos os Territórios
|
||||
"All export related fields like currency, conversion rate, export total, export grand total etc are available in Delivery Note, POS, Quotation, Sales Invoice, Sales Order etc.","Todas as exportações campos relacionados, como moeda, taxa de conversão , a exportação total, a exportação total etc estão disponíveis na nota de entrega , POS, Cotação , Vendas fatura , Ordem de vendas etc"
|
||||
"All import related fields like currency, conversion rate, import total, import grand total etc are available in Purchase Receipt, Supplier Quotation, Purchase Invoice, Purchase Order etc.","Todos os campos de importação relacionados, como moeda , taxa de conversão total de importação , importação total etc estão disponíveis no Recibo de compra , fornecedor de cotação , factura de compra , ordem de compra , etc"
|
||||
"All export related fields like currency, conversion rate, export total, export grand total etc are available in Delivery Note, POS, Quotation, Sales Invoice, Sales Order etc.","Todos os campos exportados tais como, moeda, taxa de conversão, total de exportação, total de exportação final, etc estão disponíveis na nota de entrega , POS, Cotação , Fatura de Vendas, Ordem de vendas, etc."
|
||||
"All import related fields like currency, conversion rate, import total, import grand total etc are available in Purchase Receipt, Supplier Quotation, Purchase Invoice, Purchase Order etc.","Todos os campos exportados tais como, moeda, taxa de conversão, total de exportação, total de exportação final e etc, estão disponíveis no Recibo de compra, fornecedor de cotação, factura de compra, ordem de compra e etc."
|
||||
All items have already been invoiced,Todos os itens já foram faturados
|
||||
All these items have already been invoiced,Todos esses itens já foram faturados
|
||||
Allocate,Distribuir
|
||||
Allocate leaves for a period.,Alocar folhas por um período .
|
||||
Allocate leaves for the year.,Alocar folhas para o ano.
|
||||
Allocated Amount,Montante afectado
|
||||
Allocate,Atribuír
|
||||
Allocate leaves for a period.,Atribuír folhas por um período .
|
||||
Allocate leaves for the year.,Atribuír folhas para o ano.
|
||||
Allocated Amount,Montante atribuído
|
||||
Allocated Budget,Orçamento atribuído
|
||||
Allocated amount,Montante atribuído
|
||||
Allocated amount can not be negative,Montante atribuído não pode ser negativo
|
||||
Allocated amount can not greater than unadusted amount,Montante atribuído não pode superior à quantia unadusted
|
||||
Allocated amount can not greater than unadusted amount,Montante atribuído não pode ser superior à quantia desasjustada
|
||||
Allow Bill of Materials,Permitir Lista de Materiais
|
||||
Allow Bill of Materials should be 'Yes'. Because one or many active BOMs present for this item,"Permitir Lista de Materiais deve ser ""sim"" . Porque uma ou várias listas de materiais ativos presentes para este item"
|
||||
Allow Children,permitir que as crianças
|
||||
Allow Bill of Materials should be 'Yes'. Because one or many active BOMs present for this item,"Permitir Lista de Materiais deve ser ""sim"". Porque uma ou várias listas de materiais encontram-se ativas para este item"
|
||||
Allow Children,Permitir descendentes
|
||||
Allow Dropbox Access,Permitir Dropbox Acesso
|
||||
Allow Google Drive Access,Permitir acesso Google Drive
|
||||
Allow Negative Balance,Permitir saldo negativo
|
||||
Allow Negative Stock,Permitir estoque negativo
|
||||
Allow Negative Stock,Permitir stock negativo
|
||||
Allow Production Order,Permitir Ordem de Produção
|
||||
Allow User,Permitir que o usuário
|
||||
Allow Users,Permitir que os usuários
|
||||
Allow the following users to approve Leave Applications for block days.,Permitir que os seguintes usuários para aprovar Deixe Applications para os dias de bloco.
|
||||
Allow user to edit Price List Rate in transactions,Permitir ao usuário editar Lista de Preços Taxa em transações
|
||||
Allowance Percent,Percentual subsídio
|
||||
Allow User,Permitir utilizador
|
||||
Allow Users,Permitir utilizadores
|
||||
Allow the following users to approve Leave Applications for block days.,"Permitir que os seguintes utilizadores aprovem ""Deixar Aplicações"" para os dias de bloco."
|
||||
Allow user to edit Price List Rate in transactions,Permitir ao utilizador editar Taxa de Lista de Preços em transações
|
||||
Allowance Percent,Subsídio Percentual
|
||||
Allowance for over-{0} crossed for Item {1},Provisão para over-{0} cruzou para item {1}
|
||||
Allowance for over-{0} crossed for Item {1}.,Provisão para over-{0} cruzou para item {1}.
|
||||
Allowed Role to Edit Entries Before Frozen Date,Toegestaan Rol te bewerken items voor Frozen Datum
|
||||
Allowed Role to Edit Entries Before Frozen Date,Regras de permissão para edição de entradas antes da data ser congelada.
|
||||
Amended From,Alterado De
|
||||
Amount,Quantidade
|
||||
Amount (Company Currency),Amount (Moeda Company)
|
||||
@@ -254,8 +254,8 @@ Approving Role,Aprovar Papel
|
||||
Approving Role cannot be same as role the rule is Applicable To,Aprovando Papel não pode ser o mesmo que papel a regra é aplicável a
|
||||
Approving User,Aprovar Usuário
|
||||
Approving User cannot be same as user the rule is Applicable To,Aprovando usuário não pode ser o mesmo que usuário a regra é aplicável a
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Quantidade atraso
|
||||
"As Production Order can be made for this item, it must be a stock item.","Como ordem de produção pode ser feita para este item , deve ser um item de estoque."
|
||||
As per Stock UOM,Como por Banco UOM
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,Auto Accounting Voor Stock Instellingen
|
||||
Auto Material Request,Pedido de material Auto
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-raise pedido se se a quantidade for inferior a nível re-order em um armazém
|
||||
Automatically compose message on submission of transactions.,Compor automaticamente mensagem na apresentação de transações.
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,Leads automatisch extraheren uit een brievenbus bijv.
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Atualizado automaticamente através da entrada de Fabricação tipo / Repack
|
||||
Automotive,automotivo
|
||||
@@ -511,7 +511,7 @@ Clearance Date,Data de Liquidação
|
||||
Clearance Date not mentioned,Apuramento data não mencionada
|
||||
Clearance date cannot be before check date in row {0},Apuramento data não pode ser anterior à data de verificação na linha {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,Clique em 'Criar Fatura de vendas' botão para criar uma nova factura de venda.
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,Cliente
|
||||
Close Balance Sheet and book Profit or Loss.,Sluiten Balans en boek Winst of verlies .
|
||||
Closed,Fechado
|
||||
@@ -841,13 +841,13 @@ Distributor,Distribuidor
|
||||
Divorced,Divorciado
|
||||
Do Not Contact,Neem geen contact op
|
||||
Do not show any symbol like $ etc next to currencies.,Não mostrar qualquer símbolo como US $ etc ao lado de moedas.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Wil je echt wilt dit materiaal afbreken ?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},Você realmente quer submeter todos os folha de salário do mês {0} e {1} ano
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Wil je echt wilt dit materiaal aanvragen opendraaien ?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Nome Doc
|
||||
Doc Type,Tipo Doc
|
||||
Document Description,Descrição documento
|
||||
@@ -899,7 +899,7 @@ Electronics,eletrônica
|
||||
Email,E-mail
|
||||
Email Digest,E-mail Digest
|
||||
Email Digest Settings,E-mail Digest Configurações
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,Id e-mail
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""",Id e-mail onde um candidato a emprego vai enviar e-mail "jobs@example.com" por exemplo
|
||||
Email Notifications,Notificações de e-mail
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Digite o parâmetro url para nn receptor
|
||||
Entertainment & Leisure,Entretenimento & Lazer
|
||||
Entertainment Expenses,despesas de representação
|
||||
Entries,Entradas
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,Entradas não são permitidos contra este Ano Fiscal se o ano está fechada.
|
||||
Equity,equidade
|
||||
Error: {0} > {1},Erro: {0} > {1}
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Finalidade visita de manutenção
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Manutenção Visita {0} deve ser cancelado antes de cancelar esta ordem de venda
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Manutenção data de início não pode ser anterior à data de entrega para Serial Não {0}
|
||||
Major/Optional Subjects,Assuntos Principais / Opcional
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Maak boekhoudkundige afschrijving voor elke Stock Movement
|
||||
Make Bank Voucher,Faça Vale Banco
|
||||
Make Credit Note,Maak Credit Note
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,UOM Peso Líquido
|
||||
Net Weight of each Item,Peso líquido de cada item
|
||||
Net pay cannot be negative,Salário líquido não pode ser negativo
|
||||
Never,Nunca
|
||||
New ,
|
||||
New ,New
|
||||
New Account,nieuw account
|
||||
New Account Name,Nieuw account Naam
|
||||
New BOM,Novo BOM
|
||||
@@ -2449,7 +2449,7 @@ Rounded Off,arredondado
|
||||
Rounded Total,Total arredondado
|
||||
Rounded Total (Company Currency),Total arredondado (Moeda Company)
|
||||
Row # ,Linha #
|
||||
Row # {0}: ,
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Row # {0}: qty ordenado pode não inferior a qty pedido mínimo do item (definido no mestre de item).
|
||||
Row #{0}: Please specify Serial No for Item {1},Row # {0}: Favor especificar Sem Serial para item {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Row {0}: Conta não corresponde com \ Compra fatura de crédito para conta
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,Envelhecimento estoque
|
||||
Stock Analytics,Analytics ações
|
||||
Stock Assets,Ativos estoque
|
||||
Stock Balance,Balanço de estoque
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,Entrada estoque
|
||||
Stock Entry Detail,Detalhe Entrada estoque
|
||||
Stock Expenses,despesas Stock
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
(Half Day),
|
||||
and year: ,
|
||||
(Half Day), (Half Day)
|
||||
and year: , and year:
|
||||
""" does not exists","""Nu există"
|
||||
% Delivered,Livrat%
|
||||
% Amount Billed,% Suma facturată
|
||||
@@ -34,7 +34,7 @@
|
||||
"<a href=""#Sales Browser/Item Group"">Add / Edit</a>","<a href=""#Sales Browser/Item Group""> Add / Edit </ a>"
|
||||
"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Add / Edit </ a>"
|
||||
"<h4>Default Template</h4><p>Uses <a href=""http://jinja.pocoo.org/docs/templates/"">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p><pre><code>{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN: {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}</code></pre>","<h4> implicit Format </ h4> <p> Utilizeaza <a href=""http://jinja.pocoo.org/docs/templates/""> Jinja templating </ a> și toate domeniile de Adresa ( inclusiv Câmpuri personalizate dacă este cazul) va fi disponibil </ p> <pre> <code> {{}} address_line1 <br> {% dacă address_line2%} {{}} address_line2 cui { % endif -%} {{oras}} <br> {%, în cazul în care de stat%} {{}} stat {cui% endif -%} {%, în cazul în care parola așa%} PIN: {{}} parola așa cui {% endif -%} {{țară}} <br> {%, în cazul în care telefonul%} Telefon: {{telefon}} cui { % endif -%} {% dacă fax%} Fax: {{fax}} cui {% endif -%} {% dacă email_id%} Email: {{}} email_id <br> ; {% endif -%} </ code> </ pre>"
|
||||
A Customer Group exists with same name please change the Customer name or rename the Customer Group,Există un grup de clienți cu același nume vă rugăm să schimbați numele clientului sau redenumi Grupul Customer
|
||||
A Customer Group exists with same name please change the Customer name or rename the Customer Group,Există un grup de clienți cu același nume vă rugăm să schimbați numele clientului sau redenumiti Grupul Clienti
|
||||
A Customer exists with same name,Există un client cu același nume
|
||||
A Lead with this email id should exist,Un plumb cu acest id-ul de e-mail ar trebui să existe
|
||||
A Product or Service,Un produs sau serviciu
|
||||
@@ -42,13 +42,13 @@ A Supplier exists with same name,Un furnizor există cu același nume
|
||||
A symbol for this currency. For e.g. $,"Un simbol pentru această monedă. De exemplu, $"
|
||||
AMC Expiry Date,AMC Data expirării
|
||||
Abbr,Abbr
|
||||
Abbreviation cannot have more than 5 characters,Abreviere nu poate avea mai mult de 5 caractere
|
||||
Abbreviation cannot have more than 5 characters,Abrevierea nu poate avea mai mult de 5 caractere
|
||||
Above Value,Valoarea de mai sus
|
||||
Absent,Absent
|
||||
Acceptance Criteria,Criteriile de acceptare
|
||||
Accepted,Acceptat
|
||||
Accepted + Rejected Qty must be equal to Received quantity for Item {0},Acceptat Respins + Cantitate trebuie să fie egală cu cantitatea primite pentru postul {0}
|
||||
Accepted Quantity,Acceptat Cantitate
|
||||
Accepted + Rejected Qty must be equal to Received quantity for Item {0},Cantitatea Acceptata + Respinsa trebuie să fie egală cu cantitatea primita pentru articolul {0}
|
||||
Accepted Quantity,Cantitatea acceptată
|
||||
Accepted Warehouse,Depozit acceptate
|
||||
Account,Cont
|
||||
Account Balance,Soldul contului
|
||||
@@ -57,33 +57,33 @@ Account Details,Detalii cont
|
||||
Account Head,Cont Șeful
|
||||
Account Name,Nume cont
|
||||
Account Type,Tip de cont
|
||||
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Soldul contului deja în credit, tu nu sunt permise pentru a seta ""Balanța trebuie să fie"" la fel de ""debit"""
|
||||
"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Soldul contului deja în debit, nu vi se permite să stabilească ""Balanța trebuie să fie"" drept ""credit"""
|
||||
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Soldul contului este deja în Credit, nu poţi seta ""Balanța trebuie să fie"" drept ""Debit""."
|
||||
"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Soldul contului este deja în Debit, nu poţi seta ""Balanța trebuie să fie"" drept ""Credit""."
|
||||
Account for the warehouse (Perpetual Inventory) will be created under this Account.,Cont de depozit (Inventar Perpetual) va fi creat sub acest cont.
|
||||
Account head {0} created,Cap cont {0} a creat
|
||||
Account must be a balance sheet account,Contul trebuie să fie un cont de bilanț
|
||||
Account with child nodes cannot be converted to ledger,Cont cu noduri copil nu pot fi convertite în registrul
|
||||
Account with existing transaction can not be converted to group.,Cont cu tranzacții existente nu pot fi convertite în grup.
|
||||
Account with existing transaction can not be deleted,Cont cu tranzacții existente nu pot fi șterse
|
||||
Account with existing transaction cannot be converted to ledger,Cont cu tranzacții existente nu pot fi convertite în registrul
|
||||
Account {0} cannot be a Group,Contul {0} nu poate fi un grup
|
||||
Account {0} does not belong to Company {1},Contul {0} nu aparține companiei {1}
|
||||
Account must be a balance sheet account,Contul trebuie să fie un cont de bilanț contabil
|
||||
Account with child nodes cannot be converted to ledger,Cont cu noduri copil nu pot fi convertite în registru
|
||||
Account with existing transaction can not be converted to group.,Cont cu tranzacții existente nu poate fi convertit în grup.
|
||||
Account with existing transaction can not be deleted,Cont cu tranzacții existente nu poate fi șters
|
||||
Account with existing transaction cannot be converted to ledger,Cont cu tranzacții existente nu poate fi convertit în registru
|
||||
Account {0} cannot be a Group,Contul {0} nu poate fi un Grup
|
||||
Account {0} does not belong to Company {1},Contul {0} nu aparține Companiei {1}
|
||||
Account {0} does not belong to company: {1},Contul {0} nu apartine companiei: {1}
|
||||
Account {0} does not exist,Contul {0} nu există
|
||||
Account {0} has been entered more than once for fiscal year {1},Contul {0} a fost introdus mai mult de o dată pentru anul fiscal {1}
|
||||
Account {0} is frozen,Contul {0} este înghețat
|
||||
Account {0} is inactive,Contul {0} este inactiv
|
||||
Account {0} is not valid,Contul {0} nu este valid
|
||||
Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,"Contul {0} trebuie să fie de tip ""active fixe"", ca Item {1} este un element activ"
|
||||
Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,"Contul {0} trebuie să fie de tip ""active fixe"", ca Articol {1} este un Articol de active"
|
||||
Account {0}: Parent account {1} can not be a ledger,Contul {0}: cont Părinte {1} nu poate fi un registru
|
||||
Account {0}: Parent account {1} does not belong to company: {2},Contul {0}: cont Părinte {1} nu apartine companiei: {2}
|
||||
Account {0}: Parent account {1} does not exist,Contul {0}: cont Părinte {1} nu exista
|
||||
Account {0}: You can not assign itself as parent account,Contul {0}: Nu se poate atribui ca cont părinte
|
||||
Account {0}: Parent account {1} does not exist,Contul {0}: cont Părinte {1} nu există
|
||||
Account {0}: You can not assign itself as parent account,Contul {0}: Nu se poate atribui drept cont părinte
|
||||
Account: {0} can only be updated via \ Stock Transactions,Cont: {0} poate fi actualizat doar prin \ Tranzacții stoc
|
||||
Accountant,Contabil
|
||||
Accounting,Contabilitate
|
||||
"Accounting Entries can be made against leaf nodes, called","Înregistrări contabile pot fi făcute împotriva nodurile frunză, numit"
|
||||
"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Intrare contabilitate congelate până la această dată, nimeni nu poate face / modifica intrare cu excepția rol specificate mai jos."
|
||||
"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Intrare contabilitate îngheţată până la această dată, nimeni nu poate face / modifica intrarea cu excepția rolului specificat mai jos."
|
||||
Accounting journal entries.,Intrări de jurnal de contabilitate.
|
||||
Accounts,Conturi
|
||||
Accounts Browser,Conturi Browser
|
||||
@@ -92,26 +92,26 @@ Accounts Payable,Conturi de plată
|
||||
Accounts Receivable,Conturi de încasat
|
||||
Accounts Settings,Conturi Setări
|
||||
Active,Activ
|
||||
Active: Will extract emails from ,
|
||||
Active: Will extract emails from ,Active: Will extract emails from
|
||||
Activity,Activități
|
||||
Activity Log,Activitate Log
|
||||
Activity Log,Activitate Jurnal
|
||||
Activity Log:,Activitate Log:
|
||||
Activity Type,Activitatea de Tip
|
||||
Actual,Real
|
||||
Actual,Actual
|
||||
Actual Budget,Bugetul actual
|
||||
Actual Completion Date,Real Finalizarea Data
|
||||
Actual Completion Date,Data Efectivă de Completare
|
||||
Actual Date,Data efectivă
|
||||
Actual End Date,Real Data de încheiere
|
||||
Actual Invoice Date,Real Data facturii
|
||||
Actual Posting Date,Real Dată postare
|
||||
Actual Qty,Real Cantitate
|
||||
Actual Qty (at source/target),Real Cantitate (la sursă / țintă)
|
||||
Actual Qty After Transaction,Real Cantitate După tranzacție
|
||||
Actual Qty: Quantity available in the warehouse.,Cantitate real: Cantitate disponibil în depozit.
|
||||
Actual Quantity,Real Cantitate
|
||||
Actual Start Date,Data efectivă Start
|
||||
Actual End Date,Data Efectivă de încheiere
|
||||
Actual Invoice Date,Data Efectivă a facturii
|
||||
Actual Posting Date,Dată de Postare Efectivă
|
||||
Actual Qty,Cant. Actuală
|
||||
Actual Qty (at source/target),Cantitate Actuală (la sursă / țintă)
|
||||
Actual Qty After Transaction,Cantitate Actuală După tranzacție
|
||||
Actual Qty: Quantity available in the warehouse.,Cantitate Actuală: Cantitate disponibilă în depozit.
|
||||
Actual Quantity,Cantitate Actuală
|
||||
Actual Start Date,Data efectivă de Pornire
|
||||
Add,Adaugă
|
||||
Add / Edit Taxes and Charges,Adauga / Editare Impozite și Taxe
|
||||
Add / Edit Taxes and Charges,Adaugă / Editare Impozite și Taxe
|
||||
Add Child,Adăuga copii
|
||||
Add Serial No,Adauga ordine
|
||||
Add Taxes,Adauga Impozite
|
||||
@@ -254,8 +254,8 @@ Approving Role,Aprobarea Rolul
|
||||
Approving Role cannot be same as role the rule is Applicable To,Aprobarea rol nu poate fi la fel ca rolul statului este aplicabilă
|
||||
Approving User,Aprobarea utilizator
|
||||
Approving User cannot be same as user the rule is Applicable To,Aprobarea Utilizatorul nu poate fi aceeași ca și utilizator regula este aplicabilă
|
||||
Are you sure you want to STOP ,
|
||||
Are you sure you want to UNSTOP ,
|
||||
Are you sure you want to STOP ,Are you sure you want to STOP
|
||||
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
|
||||
Arrear Amount,Restanță Suma
|
||||
"As Production Order can be made for this item, it must be a stock item.","Ca producție Ordine pot fi făcute pentru acest articol, trebuie să fie un element de stoc."
|
||||
As per Stock UOM,Ca pe Stock UOM
|
||||
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,Contabilitate Auto Pentru Stock Setări
|
||||
Auto Material Request,Material Auto Cerere
|
||||
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-raise Material cerere în cazul în care cantitatea scade sub nivelul de re-comandă într-un depozit
|
||||
Automatically compose message on submission of transactions.,Compune în mod automat un mesaj pe prezentarea de tranzacții.
|
||||
Automatically extract Job Applicants from a mail box ,
|
||||
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
|
||||
Automatically extract Leads from a mail box e.g.,"Extrage automat Oportunitati de la o cutie de e-mail de exemplu,"
|
||||
Automatically updated via Stock Entry of type Manufacture/Repack,Actualizat automat prin Bursa de intrare de tip Fabricarea / Repack
|
||||
Automotive,Automotive
|
||||
@@ -511,7 +511,7 @@ Clearance Date,Clearance Data
|
||||
Clearance Date not mentioned,Clearance Data nu sunt menționate
|
||||
Clearance date cannot be before check date in row {0},Data de clearance-ul nu poate fi înainte de data de check-in rândul {0}
|
||||
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,"Faceți clic pe butonul ""face Factura Vanzare"" pentru a crea o nouă factură de vânzare."
|
||||
Click on a link to get options to expand get options ,
|
||||
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
|
||||
Client,Client
|
||||
Close Balance Sheet and book Profit or Loss.,Aproape Bilanțul și carte profit sau pierdere.
|
||||
Closed,Inchisa
|
||||
@@ -841,13 +841,13 @@ Distributor,Distribuitor
|
||||
Divorced,Divorțat
|
||||
Do Not Contact,Nu de contact
|
||||
Do not show any symbol like $ etc next to currencies.,Nu prezintă nici un simbol de genul $ etc alături de valute.
|
||||
Do really want to unstop production order: ,
|
||||
Do you really want to STOP ,
|
||||
Do really want to unstop production order: ,Do really want to unstop production order:
|
||||
Do you really want to STOP ,Do you really want to STOP
|
||||
Do you really want to STOP this Material Request?,Chiar vrei pentru a opri această cerere Material?
|
||||
Do you really want to Submit all Salary Slip for month {0} and year {1},Chiar vrei să prezinte toate Slip Salariul pentru luna {0} și {1 an}
|
||||
Do you really want to UNSTOP ,
|
||||
Do you really want to UNSTOP ,Do you really want to UNSTOP
|
||||
Do you really want to UNSTOP this Material Request?,Chiar vrei să unstop această cerere Material?
|
||||
Do you really want to stop production order: ,
|
||||
Do you really want to stop production order: ,Do you really want to stop production order:
|
||||
Doc Name,Doc Nume
|
||||
Doc Type,Doc Tip
|
||||
Document Description,Document Descriere
|
||||
@@ -899,7 +899,7 @@ Electronics,Electronică
|
||||
Email,E-mail
|
||||
Email Digest,Email Digest
|
||||
Email Digest Settings,E-mail Settings Digest
|
||||
Email Digest: ,
|
||||
Email Digest: ,Email Digest:
|
||||
Email Id,E-mail Id-ul
|
||||
"Email Id where a job applicant will email e.g. ""jobs@example.com""","E-mail Id-ul în cazul în care un solicitant de loc de muncă va trimite un email de exemplu ""jobs@example.com"""
|
||||
Email Notifications,Notificări e-mail
|
||||
@@ -927,7 +927,7 @@ Employee Settings,Setări angajaților
|
||||
Employee Type,Tipul angajatului
|
||||
"Employee designation (e.g. CEO, Director etc.).","Desemnarea angajat (de exemplu, CEO, director, etc)."
|
||||
Employee master.,Maestru angajat.
|
||||
Employee record is created using selected field. ,
|
||||
Employee record is created using selected field. ,Employee record is created using selected field.
|
||||
Employee records.,Înregistrările angajaților.
|
||||
Employee relieved on {0} must be set as 'Left',"Angajat eliberat pe {0} trebuie să fie setat ca ""stânga"""
|
||||
Employee {0} has already applied for {1} between {2} and {3},Angajat {0} a aplicat deja pentru {1} între {2} și {3}
|
||||
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Introduceți parametru url pentru receptor
|
||||
Entertainment & Leisure,Entertainment & Leisure
|
||||
Entertainment Expenses,Cheltuieli de divertisment
|
||||
Entries,Intrări
|
||||
Entries against ,
|
||||
Entries against ,Entries against
|
||||
Entries are not allowed against this Fiscal Year if the year is closed.,"Lucrările nu sunt permise în acest an fiscal, dacă anul este închis."
|
||||
Equity,Echitate
|
||||
Error: {0} > {1},Eroare: {0}> {1}
|
||||
@@ -1024,7 +1024,7 @@ Exports,Exporturile
|
||||
External,Extern
|
||||
Extract Emails,Extrage poștă electronică
|
||||
FCFS Rate,FCFS Rate
|
||||
Failed: ,
|
||||
Failed: ,Failed:
|
||||
Family Background,Context familie
|
||||
Fax,Fax
|
||||
Features Setup,Caracteristici de configurare
|
||||
@@ -1245,7 +1245,7 @@ If you have Sales Team and Sale Partners (Channel Partners) they can be tagged
|
||||
If you involve in manufacturing activity. Enables Item 'Is Manufactured',"Dacă vă implica în activitatea de producție. Permite Articol ""este fabricat"""
|
||||
Ignore,Ignora
|
||||
Ignore Pricing Rule,Ignora Regula Preturi
|
||||
Ignored: ,
|
||||
Ignored: ,Ignored:
|
||||
Image,Imagine
|
||||
Image View,Imagine Vizualizare
|
||||
Implementation Partner,Partener de punere în aplicare
|
||||
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Vizitează întreținere Scop
|
||||
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Vizitează întreținere {0} trebuie anulată înainte de a anula această comandă de vânzări
|
||||
Maintenance start date can not be before delivery date for Serial No {0},Întreținere data de începere nu poate fi înainte de data de livrare pentru de serie nr {0}
|
||||
Major/Optional Subjects,Subiectele majore / opționale
|
||||
Make ,
|
||||
Make ,Make
|
||||
Make Accounting Entry For Every Stock Movement,Asigurați-vă de contabilitate de intrare pentru fiecare Stock Mișcarea
|
||||
Make Bank Voucher,Banca face Voucher
|
||||
Make Credit Note,Face Credit Nota
|
||||
@@ -1723,7 +1723,7 @@ Net Weight UOM,Greutate neta UOM
|
||||
Net Weight of each Item,Greutatea netă a fiecărui produs
|
||||
Net pay cannot be negative,Salariul net nu poate fi negativ
|
||||
Never,Niciodată
|
||||
New ,
|
||||
New ,New
|
||||
New Account,Cont nou
|
||||
New Account Name,Nume nou cont
|
||||
New BOM,Nou BOM
|
||||
@@ -1789,7 +1789,7 @@ No permission,Nici o permisiune
|
||||
No record found,Nu au găsit înregistrări
|
||||
No records found in the Invoice table,Nu sunt găsite în tabelul de factură înregistrări
|
||||
No records found in the Payment table,Nu sunt găsite în tabelul de plăți înregistrări
|
||||
No salary slip found for month: ,
|
||||
No salary slip found for month: ,No salary slip found for month:
|
||||
Non Profit,Non-Profit
|
||||
Nos,Nos
|
||||
Not Active,Nu este activ
|
||||
@@ -2448,8 +2448,8 @@ Root cannot have a parent cost center,Rădăcină nu poate avea un centru de cos
|
||||
Rounded Off,Rotunjite
|
||||
Rounded Total,Rotunjite total
|
||||
Rounded Total (Company Currency),Rotunjite total (Compania de valuta)
|
||||
Row # ,
|
||||
Row # {0}: ,
|
||||
Row # ,Row #
|
||||
Row # {0}: ,Row # {0}:
|
||||
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Rând # {0}: Cantitate Comandat poate nu mai puțin de cantitate minimă de comandă item (definit la punctul de master).
|
||||
Row #{0}: Please specify Serial No for Item {1},Rând # {0}: Vă rugăm să specificați Nu serial pentru postul {1}
|
||||
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Rând {0}: Contul nu se potrivește cu \ cumparare Facturi de credit a contului
|
||||
@@ -2751,7 +2751,7 @@ Stock Ageing,Stoc Îmbătrânirea
|
||||
Stock Analytics,Analytics stoc
|
||||
Stock Assets,Active stoc
|
||||
Stock Balance,Stoc Sold
|
||||
Stock Entries already created for Production Order ,
|
||||
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
|
||||
Stock Entry,Stoc de intrare
|
||||
Stock Entry Detail,Stoc de intrare Detaliu
|
||||
Stock Expenses,Cheltuieli stoc
|
||||
@@ -2797,7 +2797,7 @@ Submit all salary slips for the above selected criteria,Să prezinte toate fișe
|
||||
Submit this Production Order for further processing.,Trimiteți acest comandă de producție pentru prelucrarea ulterioară.
|
||||
Submitted,Inscrisa
|
||||
Subsidiary,Filială
|
||||
Successful: ,
|
||||
Successful: ,Successful:
|
||||
Successfully Reconciled,Împăcați cu succes
|
||||
Suggestions,Sugestii
|
||||
Sunday,Duminică
|
||||
@@ -2915,7 +2915,7 @@ The Organization,Organizația
|
||||
"The account head under Liability, in which Profit/Loss will be booked","Contul capul sub răspunderii, în care Profit / pierdere va fi rezervat"
|
||||
The date on which next invoice will be generated. It is generated on submit.,Data la care va fi generat următoarea factură. Acesta este generat pe prezinte.
|
||||
The date on which recurring invoice will be stop,La data la care factura recurente vor fi opri
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ",
|
||||
"The day of the month on which auto invoice will be generated e.g. 05, 28 etc ","The day of the month on which auto invoice will be generated e.g. 05, 28 etc "
|
||||
The day(s) on which you are applying for leave are holiday. You need not apply for leave.,A doua zi (e) pe care aplici pentru concediu sunt vacanță. Tu nu trebuie să se aplice pentru concediu.
|
||||
The first Leave Approver in the list will be set as the default Leave Approver,Primul Aprobatorul Lăsați în lista va fi setat ca implicit concediu aprobator
|
||||
The first user will become the System Manager (you can change that later).,Primul utilizator va deveni System Manager (puteți schimba asta mai târziu).
|
||||
@@ -3002,7 +3002,7 @@ Total Advance,Total de Advance
|
||||
Total Amount,Suma totală
|
||||
Total Amount To Pay,Suma totală să plătească
|
||||
Total Amount in Words,Suma totală în cuvinte
|
||||
Total Billing This Year: ,
|
||||
Total Billing This Year: ,Total Billing This Year:
|
||||
Total Characters,Total de caractere
|
||||
Total Claimed Amount,Total suma pretinsă
|
||||
Total Commission,Total de Comisie
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user