fixed conflict while merging develop into v5

This commit is contained in:
Nabin Hait 2014-12-31 13:24:36 +05:30
commit 54361e8651
43 changed files with 5821 additions and 5738 deletions

View File

@ -3,8 +3,8 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe
from frappe.utils import flt, cstr, cint, getdate, add_days, formatdate from frappe.utils import cstr, cint
from frappe import msgprint, throw, _ from frappe import throw, _
from frappe.model.document import Document from frappe.model.document import Document
class Account(Document): class Account(Document):

View File

@ -800,7 +800,8 @@
"fieldtype": "Date", "fieldtype": "Date",
"label": "From Date", "label": "From Date",
"no_copy": 1, "no_copy": 1,
"permlevel": 0 "permlevel": 0,
"print_hide": 1
}, },
{ {
"allow_on_submit": 1, "allow_on_submit": 1,
@ -810,7 +811,8 @@
"fieldtype": "Date", "fieldtype": "Date",
"label": "To Date", "label": "To Date",
"no_copy": 1, "no_copy": 1,
"permlevel": 0 "permlevel": 0,
"print_hide": 1
}, },
{ {
"allow_on_submit": 1, "allow_on_submit": 1,

View File

@ -233,6 +233,11 @@ erpnext.POS = Class.extend({
}, },
make_item_list: function() { make_item_list: function() {
var me = this; var me = this;
if(!this.price_list) {
msgprint(__("Price List not found or disabled"));
return;
}
me.item_timeout = null; me.item_timeout = null;
frappe.call({ frappe.call({
method: 'erpnext.accounts.doctype.sales_invoice.pos.get_items', method: 'erpnext.accounts.doctype.sales_invoice.pos.get_items',
@ -486,7 +491,7 @@ erpnext.POS = Class.extend({
}); });
me.refresh_delete_btn(); me.refresh_delete_btn();
if(me.frm.doc[this.party]) { if(me.frm.doc[this.party.toLowerCase()]) {
this.barcode.$input.focus(); this.barcode.$input.focus();
} else { } else {
this.party_field.$input.focus(); this.party_field.$input.focus();

View File

@ -216,10 +216,8 @@ $.extend(cur_frm.cscript, new erpnext.accounts.SalesInvoiceController({frm: cur_
// Hide Fields // Hide Fields
// ------------ // ------------
cur_frm.cscript.hide_fields = function(doc) { cur_frm.cscript.hide_fields = function(doc) {
par_flds = ['project_name', 'due_date', 'is_opening', 'source', 'total_advance', 'gross_profit', par_flds = ['project_name', 'due_date', 'is_opening', 'source', 'total_advance', 'get_advances_received',
'gross_profit_percent', 'get_advances_received', 'advances', 'sales_partner', 'commission_rate', 'total_commission', 'advances', 'from_date', 'to_date'];
'advances', 'sales_partner', 'commission_rate',
'total_commission', 'advances', 'from_date', 'to_date'];
item_flds_normal = ['sales_order', 'delivery_note'] item_flds_normal = ['sales_order', 'delivery_note']

View File

@ -568,27 +568,6 @@
"print_hide": 0, "print_hide": 0,
"read_only": 1 "read_only": 1
}, },
{
"fieldname": "gross_profit",
"fieldtype": "Currency",
"label": "Gross Profit",
"oldfieldname": "gross_profit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "gross_profit_percent",
"fieldtype": "Float",
"label": "Gross Profit (%)",
"oldfieldname": "gross_profit_percent",
"oldfieldtype": "Currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{ {
"fieldname": "advances_section", "fieldname": "advances_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",

View File

@ -112,9 +112,10 @@
"width": "150px" "width": "150px"
}, },
{ {
"depends_on": "eval:parent.discount_amount",
"fieldname": "tax_amount_after_discount_amount", "fieldname": "tax_amount_after_discount_amount",
"fieldtype": "Currency", "fieldtype": "Currency",
"hidden": 1, "hidden": 0,
"label": "Tax Amount After Discount Amount", "label": "Tax Amount After Discount Amount",
"options": "Company:company:default_currency", "options": "Company:company:default_currency",
"permlevel": 0, "permlevel": 0,
@ -146,7 +147,7 @@
"hide_heading": 1, "hide_heading": 1,
"idx": 1, "idx": 1,
"istable": 1, "istable": 1,
"modified": "2014-05-30 03:43:39.740638", "modified": "2014-12-10 12:26:41.222471",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Sales Taxes and Charges", "name": "Sales Taxes and Charges",

View File

@ -3,9 +3,9 @@
"doc_type": "Sales Invoice", "doc_type": "Sales Invoice",
"docstatus": 0, "docstatus": 0,
"doctype": "Print Format", "doctype": "Print Format",
"html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ doc.company }}<br>\n\t{{ doc.select_print_heading or _(\"Invoice\") }}<br>\n</p>\n<p>\n\t<b>{{ _(\"Receipt No\") }}:</b> {{ doc.name }}<br>\n\t<b>{{ _(\"Date\") }}:</b> {{ doc.get_formatted(\"posting_date\") }}<br>\n\t<b>{{ _(\"Customer\") }}:</b> {{ doc.customer_name }}\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"60%\">{{ _(\"Item\") }}</b></th>\n\t\t\t<th width=\"10%\" class=\"text-right\">{{ _(\"Qty\") }}</th>\n\t\t\t<th width=\"30%\" class=\"text-right\">{{ _(\"Rate\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{%- for item in doc.items -%}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_code }}\n\t\t\t\t{%- if item.item_name != item.item_code -%}\n\t\t\t\t\t<br>{{ item.item_name }}{%- endif -%}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ item.qty }}</td>\n\t\t\t<td class=\"text-right\">{{ item.amount }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"net_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- for row in doc.taxes -%}\n\t\t{%- if not row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t\t{%- if doc.discount_amount -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"discount_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t<b>{{ _(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"grand_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n{% if doc.get(\"taxes\", filters={\"included_in_print_rate\": 1}) %}\n<hr>\n<p><b>Taxes Included:</b></p>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t{%- for row in doc.taxes -%}\n\t\t{%- if row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t<tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n{%- endif -%}\n<hr>\n<p>{{ doc.terms or \"\" }}</p>\n<p class=\"text-center\">{{ _(\"Thank you, please visit again.\") }}</p>", "html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ doc.company }}<br>\n\t{{ doc.select_print_heading or _(\"Invoice\") }}<br>\n</p>\n<p>\n\t<b>{{ _(\"Receipt No\") }}:</b> {{ doc.name }}<br>\n\t<b>{{ _(\"Date\") }}:</b> {{ doc.get_formatted(\"posting_date\") }}<br>\n\t<b>{{ _(\"Customer\") }}:</b> {{ doc.customer_name }}\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"60%\">{{ _(\"Item\") }}</b></th>\n\t\t\t<th width=\"10%\" class=\"text-right\">{{ _(\"Qty\") }}</th>\n\t\t\t<th width=\"30%\" class=\"text-right\">{{ _(\"Rate\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{%- for item in doc.items -%}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_code }}\n\t\t\t\t{%- if item.item_name != item.item_code -%}\n\t\t\t\t\t<br>{{ item.item_name }}{%- endif -%}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ item.qty }}</td>\n\t\t\t<td class=\"text-right\">{{ item.amount }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"net_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- for row in doc.taxes -%}\n\t\t{%- if not row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t\t{%- if doc.discount_amount -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"discount_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t<b>{{ _(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"grand_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n{% if doc.get(\"taxes\", filters={\"included_in_print_rate\": 1}) %}\n<hr>\n<p><b>Taxes Included:</b></p>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t{%- for row in doc.taxes -%}\n\t\t{%- if row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount_after_discount_amount\", doc) }}\n\t\t\t</td>\n\t\t<tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n{%- endif -%}\n<hr>\n<p>{{ doc.terms or \"\" }}</p>\n<p class=\"text-center\">{{ _(\"Thank you, please visit again.\") }}</p>",
"idx": 1, "idx": 1,
"modified": "2014-12-25 02:08:26.603223", "modified": "2014-12-26 02:08:26.603223",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "POS Invoice", "name": "POS Invoice",

View File

@ -68,7 +68,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
}, },
contact_person: function() { contact_person: function() {
this.supplier_address(); erpnext.utils.get_contact_details(this.frm);
}, },
buying_price_list: function() { buying_price_list: function() {

View File

@ -685,7 +685,8 @@
"label": "Recurring Type", "label": "Recurring Type",
"no_copy": 1, "no_copy": 1,
"options": "Monthly\nQuarterly\nHalf-yearly\nYearly", "options": "Monthly\nQuarterly\nHalf-yearly\nYearly",
"permlevel": 0 "permlevel": 0,
"print_hide": 1
}, },
{ {
"allow_on_submit": 1, "allow_on_submit": 1,
@ -695,7 +696,8 @@
"fieldtype": "Date", "fieldtype": "Date",
"label": "From Date", "label": "From Date",
"no_copy": 1, "no_copy": 1,
"permlevel": 0 "permlevel": 0,
"print_hide": 1
}, },
{ {
"allow_on_submit": 1, "allow_on_submit": 1,
@ -705,7 +707,8 @@
"fieldtype": "Date", "fieldtype": "Date",
"label": "To Date", "label": "To Date",
"no_copy": 1, "no_copy": 1,
"permlevel": 0 "permlevel": 0,
"print_hide": 1
}, },
{ {
"allow_on_submit": 1, "allow_on_submit": 1,

View File

@ -156,7 +156,7 @@
"fieldtype": "Float", "fieldtype": "Float",
"hidden": 0, "hidden": 0,
"label": "Exchange Rate", "label": "Exchange Rate",
"no_copy": 1, "no_copy": 0,
"oldfieldname": "conversion_rate", "oldfieldname": "conversion_rate",
"oldfieldtype": "Currency", "oldfieldtype": "Currency",
"permlevel": 0, "permlevel": 0,

View File

@ -118,6 +118,10 @@ class AccountsController(TransactionBase):
item.get(fieldname) is None and value is not None: item.get(fieldname) is None and value is not None:
item.set(fieldname, value) item.set(fieldname, value)
if fieldname == "cost_center" and item.meta.get_field("cost_center") \
and not item.get("cost_center") and value is not None:
item.set(fieldname, value)
if ret.get("pricing_rule"): if ret.get("pricing_rule"):
for field in ["base_price_list_rate", "price_list_rate", for field in ["base_price_list_rate", "price_list_rate",
"discount_percentage", "base_rate", "rate"]: "discount_percentage", "base_rate", "rate"]:
@ -441,7 +445,7 @@ class AccountsController(TransactionBase):
for order, jv_list in order_jv_map.items(): for order, jv_list in order_jv_map.items():
for jv in jv_list: for jv in jv_list:
if not advance_jv_against_si or jv not in advance_jv_against_si: if not advance_jv_against_si or jv not in advance_jv_against_si:
frappe.throw(_("Journal Entry {0} is linked against Order {1}, hence it must be fetched as advance in Invoice as well.") frappe.msgprint(_("Journal Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.")
.format(jv, order)) .format(jv, order))

View File

@ -124,10 +124,7 @@ def send_notification(new_rv):
frappe.sendmail(new_rv.notification_email_address, frappe.sendmail(new_rv.notification_email_address,
subject= _("New {0}: #{1}").format(new_rv.doctype, new_rv.name), subject= _("New {0}: #{1}").format(new_rv.doctype, new_rv.name),
message = _("Please find attached {0} #{1}").format(new_rv.doctype, new_rv.name), message = _("Please find attached {0} #{1}").format(new_rv.doctype, new_rv.name),
attachments = [{ attachments = [frappe.attach_print(new_rv.doctype, new_rv.name, file_name=new_rv.name)])
"fname": new_rv.name + ".pdf",
"fcontent": frappe.get_print_format(new_rv.doctype, new_rv.name, as_pdf=True)
}])
def notify_errors(doc, doctype, party, owner): def notify_errors(doc, doctype, party, owner):
from frappe.utils.user import get_system_managers from frappe.utils.user import get_system_managers

View File

@ -118,3 +118,18 @@ cur_frm.cscript.calculate_total_days = function(doc, dt, dn) {
} }
cur_frm.fields_dict.employee.get_query = erpnext.queries.employee; 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) : ""))
}
})
})

View File

@ -24,6 +24,13 @@
"options": "User", "options": "User",
"permlevel": 0 "permlevel": 0
}, },
{
"fieldname": "leave_approver_name",
"fieldtype": "Read Only",
"label": "Leave Approver Name",
"permlevel": 0,
"precision": ""
},
{ {
"fieldname": "leave_type", "fieldname": "leave_type",
"fieldtype": "Link", "fieldtype": "Link",
@ -184,7 +191,7 @@
"idx": 1, "idx": 1,
"is_submittable": 1, "is_submittable": 1,
"max_attachments": 3, "max_attachments": 3,
"modified": "2014-09-09 05:35:31.531651", "modified": "2014-12-09 16:33:29.626849",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "HR", "module": "HR",
"name": "Leave Application", "name": "Leave Application",

View File

@ -207,15 +207,15 @@ class LeaveApplication(Document):
def get_holidays(leave_app): def get_holidays(leave_app):
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2, `tabEmployee` e1 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 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)) and h1.holiday_date between %s and %s""", (leave_app.employee, leave_app.from_date,
leave_app.to_date))[0][0]
# below line is needed. If an employee hasn't been assigned with any holiday list then above will return 0 rows. # below line is needed. If an employee hasn't been assigned with any holiday list then above will return 0 rows.
tot_hol=tot_hol and flt(tot_hol[0][0]) or 0
if not tot_hol: if not tot_hol:
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2 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 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""", and ifnull(h2.is_default,0) = 1 and h2.fiscal_year = %s""",
(leave_app.from_date, leave_app.to_date, leave_app.fiscal_year)) (leave_app.from_date, leave_app.to_date, leave_app.fiscal_year))[0][0]
return tot_hol and flt(tot_hol[0][0]) or 0 return tot_hol
@frappe.whitelist() @frappe.whitelist()
def get_total_leave_days(leave_app): def get_total_leave_days(leave_app):

View File

@ -189,9 +189,6 @@ class SalarySlip(TransactionBase):
if receiver: if receiver:
subj = 'Salary Slip - ' + cstr(self.month) +'/'+cstr(self.fiscal_year) subj = 'Salary Slip - ' + cstr(self.month) +'/'+cstr(self.fiscal_year)
frappe.sendmail([receiver], subject=subj, msg = _("Please see attachment"), frappe.sendmail([receiver], subject=subj, msg = _("Please see attachment"),
attachments=[{ attachments=[frappe.attach_print(self.doctype, self.name, file_name=self.name)])
"fname": self.name + ".pdf",
"fcontent": frappe.get_print_format(self.doctype, self.name, as_pdf = True)
}])
else: else:
msgprint(_("Company Email ID not found, hence mail not sent")) msgprint(_("Company Email ID not found, hence mail not sent"))

View File

@ -57,6 +57,7 @@ cur_frm.cscript.hour_rate = function(doc, dt, dn) {
} }
cur_frm.cscript.time_in_mins = cur_frm.cscript.hour_rate; cur_frm.cscript.time_in_mins = cur_frm.cscript.hour_rate;
cur_frm.cscript.fixed_cycle_cost = cur_frm.cscript.hour_rate;
cur_frm.cscript.item_code = function(doc, cdt, cdn) { cur_frm.cscript.item_code = function(doc, cdt, cdn) {
get_bom_material_detail(doc, cdt, cdn); get_bom_material_detail(doc, cdt, cdn);

View File

@ -56,6 +56,9 @@ class BOM(Document):
last_purchase_rate last_purchase_rate
from `tabItem` where name=%s""", item_code, as_dict = 1) from `tabItem` where name=%s""", item_code, as_dict = 1)
if not item:
frappe.throw(_("Item: {0} does not exist in the system").format(item_code))
return item return item
def validate_rm_item(self, item): def validate_rm_item(self, item):

View File

@ -90,6 +90,7 @@ erpnext.patches.v4_2.update_requested_and_ordered_qty
erpnext.patches.v4_2.party_model erpnext.patches.v4_2.party_model
erpnext.patches.v4_4.make_email_accounts erpnext.patches.v4_4.make_email_accounts
execute:frappe.delete_doc("DocType", "Contact Control") execute:frappe.delete_doc("DocType", "Contact Control")
erpnext.patches.v4_2.recalculate_bom_costs
erpnext.patches.v5_0.update_frozen_accounts_permission_role erpnext.patches.v5_0.update_frozen_accounts_permission_role
erpnext.patches.v5_0.update_dn_against_doc_fields erpnext.patches.v5_0.update_dn_against_doc_fields
execute:frappe.db.sql("update `tabMaterial Request` set material_request_type = 'Material Transfer' where material_request_type = 'Transfer'") execute:frappe.db.sql("update `tabMaterial Request` set material_request_type = 'Material Transfer' where material_request_type = 'Transfer'")

View File

@ -6,6 +6,7 @@ import frappe
def execute(): def execute():
reference_date = guess_reference_date() reference_date = guess_reference_date()
frappe.reload_doc('accounts', 'doctype', 'journal_voucher_detail')
for name in frappe.db.sql_list("""select name from `tabJournal Entry` for name in frappe.db.sql_list("""select name from `tabJournal Entry`
where date(creation)>=%s""", reference_date): where date(creation)>=%s""", reference_date):
jv = frappe.get_doc("Journal Entry", name) jv = frappe.get_doc("Journal Entry", name)

View File

@ -0,0 +1,19 @@
# 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():
frappe.reload_doc('manufacturing', 'doctype', 'bom_operation')
for d in frappe.db.sql("""select bom.name from `tabBOM` bom where bom.docstatus < 2 and
exists(select bom_op.name from `tabBOM Operation` bom_op where
bom.name = bom_op.parent and bom_op.fixed_cycle_cost IS NOT NULL)""", as_dict=1):
try:
bom = frappe.get_doc('BOM', d.name)
bom.ignore_validate_update_after_submit = True
bom.calculate_cost()
bom.save()
frappe.db.commit()
except:
frappe.db.rollback()

View File

@ -67,6 +67,15 @@ class TestTimeLog(unittest.TestCase):
time_log.submit() time_log.submit()
time_log.cancel() time_log.cancel()
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`")
def make_prod_order(self): def make_prod_order(self):
return frappe.get_doc({ return frappe.get_doc({
"doctype":"Production Order", "doctype":"Production Order",

View File

@ -108,6 +108,7 @@ erpnext.StockAnalytics = erpnext.StockGridReport.extend({
// otherwise, only reset values // otherwise, only reset values
$.each(this.data, function(i, d) { $.each(this.data, function(i, d) {
me.reset_item_values(d); me.reset_item_values(d);
d["closing_qty_value"] = 0;
}); });
} }

View File

@ -14,8 +14,11 @@
{% if(contact_list[i].phone) { %} {% if(contact_list[i].phone) { %}
{%= __("Phone") %}: {%= contact_list[i].phone %}<br> {%= __("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) { %} {% if(contact_list[i].email_id) { %}
{%= __("Email Id") %}: {%= contact_list[i].email_id %} {%= __("Email ID") %}: {%= contact_list[i].email_id %}
{% } %} {% } %}
</p> </p>
</div> </div>

View File

@ -421,20 +421,32 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
}, },
_set_values_for_item_list: function(children) { _set_values_for_item_list: function(children) {
var me = this;
var price_list_rate_changed = false;
$.each(children, function(i, d) { $.each(children, function(i, d) {
var existing_pricing_rule = frappe.model.get_value(d.doctype, d.name, "pricing_rule");
$.each(d, function(k, v) { $.each(d, function(k, v) {
if (["doctype", "name"].indexOf(k)===-1) { if (["doctype", "name"].indexOf(k)===-1) {
if(k=="price_list_rate") {
if(flt(v) != flt(d.price_list_rate)) price_list_rate_changed = true;
}
frappe.model.set_value(d.doctype, d.name, k, v); frappe.model.set_value(d.doctype, d.name, k, v);
} }
}); });
// if pricing rule set as blank from an existing value, apply price_list
if(!me.frm.doc.ignore_pricing_rule && existing_pricing_rule && !d.pricing_rule) {
me.apply_price_list(frappe.get_doc(d.doctype, d.name));
}
if(!price_list_rate_changed) me.calculate_taxes_and_totals();
}); });
}, },
apply_price_list: function() { apply_price_list: function(item) {
var me = this; var me = this;
return this.frm.call({ return this.frm.call({
method: "erpnext.stock.get_item_details.apply_price_list", method: "erpnext.stock.get_item_details.apply_price_list",
args: { args: this._get_args() }, args: { args: this._get_args(item) },
callback: function(r) { callback: function(r) {
if (!r.exc) { if (!r.exc) {
me.in_apply_price_list = true; me.in_apply_price_list = true;

View File

@ -147,7 +147,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"description": "Add to calendar on this date", "description": "Add to calendar on this date",
"fieldname": "contact_date", "fieldname": "contact_date",
"fieldtype": "Date", "fieldtype": "Datetime",
"in_filter": 1, "in_filter": 1,
"label": "Next Contact Date", "label": "Next Contact Date",
"no_copy": 1, "no_copy": 1,
@ -331,7 +331,7 @@
], ],
"icon": "icon-user", "icon": "icon-user",
"idx": 1, "idx": 1,
"modified": "2014-09-11 18:52:50.397563", "modified": "2014-12-01 08:22:23.286314",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Selling", "module": "Selling",
"name": "Lead", "name": "Lead",

View File

@ -48,6 +48,7 @@ class Lead(SellingController):
def add_calendar_event(self, opts=None, force=False): def add_calendar_event(self, opts=None, force=False):
super(Lead, self).add_calendar_event({ super(Lead, self).add_calendar_event({
"owner": self.lead_owner, "owner": self.lead_owner,
"starts_on": self.contact_date,
"subject": ('Contact ' + cstr(self.lead_name)), "subject": ('Contact ' + cstr(self.lead_name)),
"description": ('Contact ' + cstr(self.lead_name)) + \ "description": ('Contact ' + cstr(self.lead_name)) + \
(self.contact_by and ('. By : ' + cstr(self.contact_by)) or '') (self.contact_by and ('. By : ' + cstr(self.contact_by)) or '')

View File

@ -28,7 +28,6 @@ erpnext.selling.Opportunity = frappe.ui.form.Controller.extend({
if(!this.frm.doc.fiscal_year && sys_defaults.fiscal_year) if(!this.frm.doc.fiscal_year && sys_defaults.fiscal_year)
set_multiple(cdt, cdn, { fiscal_year:sys_defaults.fiscal_year }); set_multiple(cdt, cdn, { fiscal_year:sys_defaults.fiscal_year });
if(this.frm.doc.customer && !this.frm.doc.customer_name) cur_frm.cscript.customer(this.frm.doc); if(this.frm.doc.customer && !this.frm.doc.customer_name) cur_frm.cscript.customer(this.frm.doc);
this.setup_queries(); this.setup_queries();

View File

@ -48,6 +48,7 @@
"in_filter": 1, "in_filter": 1,
"in_list_view": 1, "in_list_view": 1,
"label": "Customer", "label": "Customer",
"no_copy": 1,
"oldfieldname": "customer", "oldfieldname": "customer",
"oldfieldtype": "Link", "oldfieldtype": "Link",
"options": "Customer", "options": "Customer",
@ -353,7 +354,7 @@
{ {
"description": "Your sales person will get a reminder on this date to contact the customer", "description": "Your sales person will get a reminder on this date to contact the customer",
"fieldname": "contact_date", "fieldname": "contact_date",
"fieldtype": "Date", "fieldtype": "Datetime",
"label": "Next Contact Date", "label": "Next Contact Date",
"oldfieldname": "contact_date", "oldfieldname": "contact_date",
"oldfieldtype": "Date", "oldfieldtype": "Date",

View File

@ -54,6 +54,7 @@ class Opportunity(TransactionBase):
opts = frappe._dict() opts = frappe._dict()
opts.description = "" opts.description = ""
opts.contact_date = self.contact_date
if self.customer: if self.customer:
if self.contact_person: if self.contact_person:

View File

@ -175,6 +175,7 @@
"fieldtype": "Data", "fieldtype": "Data",
"hidden": 0, "hidden": 0,
"label": "PO No", "label": "PO No",
"no_copy": 0,
"oldfieldname": "po_no", "oldfieldname": "po_no",
"oldfieldtype": "Data", "oldfieldtype": "Data",
"permlevel": 0, "permlevel": 0,

View File

@ -268,6 +268,14 @@ def make_material_request(source_name, target_doc=None):
@frappe.whitelist() @frappe.whitelist()
def make_delivery_note(source_name, target_doc=None): def make_delivery_note(source_name, target_doc=None):
def set_missing_values(source, target): def set_missing_values(source, target):
if source.po_no:
if target.po_no:
target_po_no = target.po_no.split(", ")
target_po_no.append(source.po_no)
target.po_no = ", ".join(list(set(target_po_no))) if len(target_po_no) > 1 else target_po_no[0]
else:
target.po_no = source.po_no
target.ignore_pricing_rule = 1 target.ignore_pricing_rule = 1
target.run_method("set_missing_values") target.run_method("set_missing_values")
target.run_method("calculate_taxes_and_totals") target.run_method("calculate_taxes_and_totals")

View File

@ -98,9 +98,12 @@ class AuthorizationControl(TransactionBase):
if doc_obj: if doc_obj:
price_list_rate, base_rate = 0, 0 price_list_rate, base_rate = 0, 0
for d in doc_obj.get("items"): for d in doc_obj.get("items"):
if d.base_price_list_rate and d.base_rate: if d.base_rate:
price_list_rate += flt(d.base_price_list_rate) price_list_rate += flt(d.base_price_list_rate) or flt(d.base_rate)
base_rate += 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) 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'] final_based_on = ['Grand Total','Average Discount','Customerwise Discount','Itemwise Discount']

View File

@ -61,14 +61,27 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
fields: [ fields: [
{ {
"fieldname": "language", "label": __("Language"), "fieldtype": "Select", "fieldname": "language", "label": __("Language"), "fieldtype": "Select",
options: ["english", "العربية", "deutsch", "ελληνικά", "español", "français", "हिंदी", "hrvatski", 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."), help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."),
onload: function(slide) { onload: function(slide) {
var me = this;
if (!this.language_list) {
frappe.call({
method: "erpnext.setup.page.setup_wizard.setup_wizard.load_languages",
callback: function(r) {
me.language_list = r.message;
slide.get_input("language")
.add_options(r.message)
.val("english");
}
})
} else {
slide.get_input("language").add_options(this.language_list);
}
slide.get_input("language").on("change", function() { slide.get_input("language").on("change", function() {
var lang = $(this).val() || "english"; var lang = $(this).val() || "english";
frappe._messages = {}; frappe._messages = {};

View File

@ -439,4 +439,6 @@ def load_messages(language):
send_translations(m) send_translations(m)
return lang return lang
@frappe.whitelist()
def load_languages():
return sorted(get_lang_dict().keys())

View File

@ -178,7 +178,7 @@
{ {
"fieldname": "po_no", "fieldname": "po_no",
"fieldtype": "Data", "fieldtype": "Data",
"hidden": 1, "hidden": 0,
"label": "Customer's Purchase Order No", "label": "Customer's Purchase Order No",
"no_copy": 0, "no_copy": 0,
"oldfieldname": "po_no", "oldfieldname": "po_no",

View File

@ -27,7 +27,7 @@ def get_bin_qty(item, warehouse):
where item_code = %s and warehouse = %s""", (item, warehouse), as_dict = 1) where item_code = %s and warehouse = %s""", (item, warehouse), as_dict = 1)
return det and det[0] or '' return det and det[0] or ''
def update_packing_list_item(obj, packing_item_code, qty, warehouse, line, packing_list_idx): def update_packing_list_item(obj, packing_item_code, qty, warehouse, line):
bin = get_bin_qty(packing_item_code, warehouse) bin = get_bin_qty(packing_item_code, warehouse)
item = get_packing_item_details(packing_item_code) item = get_packing_item_details(packing_item_code)
@ -54,9 +54,7 @@ def update_packing_list_item(obj, packing_item_code, qty, warehouse, line, packi
pi.warehouse = warehouse pi.warehouse = warehouse
if not pi.batch_no: if not pi.batch_no:
pi.batch_no = cstr(line.get("batch_no")) pi.batch_no = cstr(line.get("batch_no"))
pi.idx = packing_list_idx
packing_list_idx += 1
def make_packing_list(obj, item_table_fieldname): def make_packing_list(obj, item_table_fieldname):
@ -64,13 +62,11 @@ def make_packing_list(obj, item_table_fieldname):
if obj.get("_action") and obj._action == "update_after_submit": return if obj.get("_action") and obj._action == "update_after_submit": return
packing_list_idx = 0
parent_items = [] parent_items = []
for d in obj.get(item_table_fieldname): for d in obj.get(item_table_fieldname):
if frappe.db.get_value("Sales BOM", {"new_item_code": d.item_code}): if frappe.db.get_value("Sales BOM", {"new_item_code": d.item_code}):
for i in get_sales_bom_items(d.item_code): for i in get_sales_bom_items(d.item_code):
update_packing_list_item(obj, i['item_code'], flt(i['qty'])*flt(d.qty), update_packing_list_item(obj, i['item_code'], flt(i['qty'])*flt(d.qty), d.warehouse, d)
d.warehouse, d, packing_list_idx)
if [d.item_code, d.name] not in parent_items: if [d.item_code, d.name] not in parent_items:
parent_items.append([d.item_code, d.name]) parent_items.append([d.item_code, d.name])

View File

@ -40,8 +40,8 @@ class StockLedgerEntry(Document):
(self.warehouse, self.item_code, self.batch_no))[0][0]) (self.warehouse, self.item_code, self.batch_no))[0][0])
if batch_bal_after_transaction < 0: if batch_bal_after_transaction < 0:
frappe.throw(_("Negative balance in Batch {0} for Item {1} at Warehouse {2} on {3} {4}").format(\ frappe.throw(_("Negative balance {0} in Batch {1} for Item {2} at Warehouse {3} on {4} {5}")
batch_bal_after_transaction - self.actual_qty, self.item_code, self.warehouse, .format(batch_bal_after_transaction - self.actual_qty, self.batch_no, self.item_code, self.warehouse,
formatdate(self.posting_date), self.posting_time)) formatdate(self.posting_date), self.posting_time))
def validate_mandatory(self): def validate_mandatory(self):

View File

@ -7,7 +7,7 @@
<div class="col-xs-5 text-right"> <div class="col-xs-5 text-right">
<label>{{ charge.get_formatted("description") }}</label></div> <label>{{ charge.get_formatted("description") }}</label></div>
<div class="col-xs-7 text-right"> <div class="col-xs-7 text-right">
{{ frappe.format_value(charge.tax_amount / doc.conversion_rate, {{ frappe.format_value(frappe.utils.flt(charge.tax_amount) / doc.conversion_rate,
table_meta.get_field("tax_amount"), doc, currency=doc.currency) }} table_meta.get_field("tax_amount"), doc, currency=doc.currency) }}
</div> </div>
</div> </div>

View File

@ -3300,24 +3300,24 @@ website page link,الموقع رابط الصفحة
{0} budget for Account {1} against Cost Center {2} will exceed by {3},{0} ميزانية الحساب {1} ضد مركز التكلفة {2} سيتجاوز التي كتبها {3} {0} budget for Account {1} against Cost Center {2} will exceed by {3},{0} ميزانية الحساب {1} ضد مركز التكلفة {2} سيتجاوز التي كتبها {3}
{0} can not be negative,{0} لا يمكن أن تكون سلبية {0} can not be negative,{0} لا يمكن أن تكون سلبية
{0} created,{0} خلق {0} created,{0} خلق
{0} does not belong to Company {1},{0} لا تنتمي إلى شركة {1} {0} does not belong to Company {1},{0} {لا تنتمي إلى شركة {1
{0} entered twice in Item Tax,{0} دخلت مرتين في ضريبة المدينة {0} entered twice in Item Tax,{0} دخلت مرتين في ضريبة المدينة
{0} is an invalid email address in 'Notification Email Address',"{0} هو عنوان بريد إلكتروني غير صالح في ' عنوان البريد الإلكتروني إعلام """ {0} is an invalid email address in 'Notification Email Address',"{0} هو عنوان بريد إلكتروني غير صالح في ' عنوان البريد الإلكتروني إعلام """
{0} is mandatory,{0} إلزامي {0} is mandatory,{0} إلزامي
{0} is mandatory for Item {1},{0} إلزامي القطعة ل {1} {0} is mandatory for Item {1},{0} {إلزامي القطعة ل {1
{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.,{0} إلزامي. ربما لا يتم إنشاء سجل سعر صرف العملة ل{1} إلى {2}. {0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.,{0} إلزامي. ربما لا يتم إنشاء سجل سعر صرف العملة ل{1} إلى {2}.
{0} is not a stock Item,{0} ليس الأسهم الإغلاق {0} is not a stock Item,{0} ليس الأسهم الإغلاق
{0} is not a valid Batch Number for Item {1},{0} ليس رقم الدفعة صالحة لل تفاصيل {1} {0} is not a valid Batch Number for Item {1},{0} ليس رقم الدفعة صالحة لل تفاصيل {1}
{0} is not a valid Leave Approver. Removing row #{1}.,{0} ليس صحيحا اترك الموافق. إزالة الصف # {1}. {0} is not a valid Leave Approver. Removing row #{1}.,{0} {ليس صحيحا اترك الموافق. إزالة الصف # {1.
{0} is not a valid email id,{0} ليس معرف بريد إلكتروني صحيح {0} is not a valid email id,{0} ليس معرف بريد إلكتروني صحيح
{0} is now the default Fiscal Year. Please refresh your browser for the change to take effect.,{0} الآن الافتراضي السنة المالية. يرجى تحديث المتصفح ل التغيير نافذ المفعول . {0} is now the default Fiscal Year. Please refresh your browser for the change to take effect.,{0} الآن الافتراضي السنة المالية. يرجى تحديث المتصفح ل التغيير نافذ المفعول .
{0} is required,{0} مطلوب {0} is required,{0} مطلوب
{0} must be a Purchased or Sub-Contracted Item in row {1},{0} يجب أن يكون البند شراؤها أو التعاقد الفرعي في الصف {1} {0} must be a Purchased or Sub-Contracted Item in row {1},{0} يجب أن يكون البند شراؤها أو التعاقد الفرعي في الصف {1}
{0} must be reduced by {1} or you should increase overflow tolerance,{0} يجب تخفيض كتبها {1} أو يجب زيادة الفائض التسامح {0} must be reduced by {1} or you should increase overflow tolerance,{0} يجب تخفيض كتبها {1} أو يجب زيادة الفائض التسامح
{0} must have role 'Leave Approver',{0} يجب أن يكون دور ' اترك الموافق ' {0} must have role 'Leave Approver',{0} يجب أن يكون دور ' اترك الموافق '
{0} valid serial nos for Item {1},{0} غ المسلسل صالحة لل تفاصيل {1} {0} valid serial nos for Item {1},{0} {غ المسلسل صالحة لل تفاصيل {1
{0} {1} against Bill {2} dated {3},{0} {1} ضد بيل {2} بتاريخ {3} {0} {1} against Bill {2} dated {3},{0} {1} {ضد بيل {2} بتاريخ {3
{0} {1} against Invoice {2},{0} {1} ضد الفاتورة {2} {0} {1} against Invoice {2},{0} {1} {ضد الفاتورة {2
{0} {1} has already been submitted,{0} {1} وقد تم بالفعل قدمت {0} {1} has already been submitted,{0} {1} وقد تم بالفعل قدمت
{0} {1} has been modified. Please refresh.,{0} {1} تم تعديل . يرجى تحديث. {0} {1} has been modified. Please refresh.,{0} {1} تم تعديل . يرجى تحديث.
{0} {1} is not submitted,{0} {1} لا تقدم {0} {1} is not submitted,{0} {1} لا تقدم

1 and year: والسنة:
3300 {0} budget for Account {1} against Cost Center {2} will exceed by {3} {0} ميزانية الحساب {1} ضد مركز التكلفة {2} سيتجاوز التي كتبها {3}
3301 {0} can not be negative {0} لا يمكن أن تكون سلبية
3302 {0} created {0} خلق
3303 {0} does not belong to Company {1} {0} لا تنتمي إلى شركة {1} {0} {لا تنتمي إلى شركة {1
3304 {0} entered twice in Item Tax {0} دخلت مرتين في ضريبة المدينة
3305 {0} is an invalid email address in 'Notification Email Address' {0} هو عنوان بريد إلكتروني غير صالح في ' عنوان البريد الإلكتروني إعلام "
3306 {0} is mandatory {0} إلزامي
3307 {0} is mandatory for Item {1} {0} إلزامي القطعة ل {1} {0} {إلزامي القطعة ل {1
3308 {0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}. {0} إلزامي. ربما لا يتم إنشاء سجل سعر صرف العملة ل{1} إلى {2}.
3309 {0} is not a stock Item {0} ليس الأسهم الإغلاق
3310 {0} is not a valid Batch Number for Item {1} {0} ليس رقم الدفعة صالحة لل تفاصيل {1}
3311 {0} is not a valid Leave Approver. Removing row #{1}. {0} ليس صحيحا اترك الموافق. إزالة الصف # {1}. {0} {ليس صحيحا اترك الموافق. إزالة الصف # {1.
3312 {0} is not a valid email id {0} ليس معرف بريد إلكتروني صحيح
3313 {0} is now the default Fiscal Year. Please refresh your browser for the change to take effect. {0} الآن الافتراضي السنة المالية. يرجى تحديث المتصفح ل التغيير نافذ المفعول .
3314 {0} is required {0} مطلوب
3315 {0} must be a Purchased or Sub-Contracted Item in row {1} {0} يجب أن يكون البند شراؤها أو التعاقد الفرعي في الصف {1}
3316 {0} must be reduced by {1} or you should increase overflow tolerance {0} يجب تخفيض كتبها {1} أو يجب زيادة الفائض التسامح
3317 {0} must have role 'Leave Approver' {0} يجب أن يكون دور ' اترك الموافق '
3318 {0} valid serial nos for Item {1} {0} غ المسلسل صالحة لل تفاصيل {1} {0} {غ المسلسل صالحة لل تفاصيل {1
3319 {0} {1} against Bill {2} dated {3} {0} {1} ضد بيل {2} بتاريخ {3} {0} {1} {ضد بيل {2} بتاريخ {3
3320 {0} {1} against Invoice {2} {0} {1} ضد الفاتورة {2} {0} {1} {ضد الفاتورة {2
3321 {0} {1} has already been submitted {0} {1} وقد تم بالفعل قدمت
3322 {0} {1} has been modified. Please refresh. {0} {1} تم تعديل . يرجى تحديث.
3323 {0} {1} is not submitted {0} {1} لا تقدم

View File

@ -3317,7 +3317,7 @@ website page link,Ιστοσελίδα link της σελίδας
{0} must be reduced by {1} or you should increase overflow tolerance,{0} πρέπει να μειωθεί κατά {1} ή θα πρέπει να αυξήσει την ανοχή υπερχείλισης {0} must be reduced by {1} or you should increase overflow tolerance,{0} πρέπει να μειωθεί κατά {1} ή θα πρέπει να αυξήσει την ανοχή υπερχείλισης
{0} must have role 'Leave Approver',{0} πρέπει να έχει ρόλο « Αφήστε Έγκρισης » {0} must have role 'Leave Approver',{0} πρέπει να έχει ρόλο « Αφήστε Έγκρισης »
{0} valid serial nos for Item {1},{0} έγκυρο σειριακό nos για τη θέση {1} {0} valid serial nos for Item {1},{0} έγκυρο σειριακό nos για τη θέση {1}
{0} {1} against Bill {2} dated {3},{0} {1} εναντίον Bill {2} { 3 με ημερομηνία } {0} {1} against Bill {2} dated {3},{0} {1} εναντίον Bill {2} {3} με ημερομηνία
{0} {1} against Invoice {2},{0} {1} κατά Τιμολόγιο {2} {0} {1} against Invoice {2},{0} {1} κατά Τιμολόγιο {2}
{0} {1} has already been submitted,{0} {1} έχει ήδη υποβληθεί {0} {1} has already been submitted,{0} {1} έχει ήδη υποβληθεί
{0} {1} has been modified. Please refresh.,{0} {1} έχει τροποποιηθεί . Παρακαλώ ανανεώσετε . {0} {1} has been modified. Please refresh.,{0} {1} έχει τροποποιηθεί . Παρακαλώ ανανεώσετε .

1 (Half Day) (Μισή ημέρα)
3317 {0} must be reduced by {1} or you should increase overflow tolerance {0} πρέπει να μειωθεί κατά {1} ή θα πρέπει να αυξήσει την ανοχή υπερχείλισης
3318 {0} must have role 'Leave Approver' {0} πρέπει να έχει ρόλο « Αφήστε Έγκρισης »
3319 {0} valid serial nos for Item {1} {0} έγκυρο σειριακό nos για τη θέση {1}
3320 {0} {1} against Bill {2} dated {3} {0} {1} εναντίον Bill {2} { 3 με ημερομηνία } {0} {1} εναντίον Bill {2} {3} με ημερομηνία
3321 {0} {1} against Invoice {2} {0} {1} κατά Τιμολόγιο {2}
3322 {0} {1} has already been submitted {0} {1} έχει ήδη υποβληθεί
3323 {0} {1} has been modified. Please refresh. {0} {1} έχει τροποποιηθεί . Παρακαλώ ανανεώσετε .

View File

@ -31,7 +31,7 @@
1 Currency = [?] FractionFor e.g. 1 USD = 100 Cent,"1 moneda = [?] Fracción Por ejemplo, 1 USD = 100 Cent" 1 Currency = [?] FractionFor e.g. 1 USD = 100 Cent,"1 moneda = [?] Fracción Por ejemplo, 1 USD = 100 Cent"
1. To maintain the customer wise item code and to make them searchable based on their code use this option,1 . Para mantener el código del artículo sabia cliente y para efectuar búsquedas en ellos en función de su uso de código de esta opción 1. To maintain the customer wise item code and to make them searchable based on their code use this option,1 . Para mantener el código del artículo sabia cliente y para efectuar búsquedas en ellos en función de su uso de código de esta opción
"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer grupo""> Añadir / Editar < / a>" "<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer grupo""> Añadir / Editar < / a>"
"<a href=""#Sales Browser/Item Group"">Add / Edit</a>","<a href=""#Sales Browser/Item grupo""> Añadir / Editar < / a>" "<a href=""#Sales Browser/Item Group"">Add / Edit</a>","<a href=""#Sales Browser/Item Group""> Añadir / Editar < / a>"
"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Añadir / Editar < / a>" "<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Añadir / Editar < / 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 }}&lt;br&gt;{% if address_line2 %}{{ address_line2 }}&lt;br&gt;{% endif -%}{{ city }}&lt;br&gt;{% if state %}{{ state }}&lt;br&gt;{% endif -%}{% if pincode %} PIN: {{ pincode }}&lt;br&gt;{% endif -%}{{ country }}&lt;br&gt;{% if phone %}Phone: {{ phone }}&lt;br&gt;{% endif -%}{% if fax %}Fax: {{ fax }}&lt;br&gt;{% endif -%}{% if email_id %}Email: {{ email_id }}&lt;br&gt;{% endif -%}</code></pre>","<h4> defecto plantilla </ h4> <p> Usos <a href=""http://jinja.pocoo.org/docs/templates/""> Jinja plantillas </ a> y todos los campos de la Dirección ( incluyendo campos personalizados en su caso) estará disponible </ p> <pre> <code> {{}} address_line1 <br> {% if address_line2%} {{}} address_line2 <br> { endif% -%} {{city}} <br> {% if estado%} {{Estado}} {% endif <br> -%} {% if%} pincode PIN: {{pincode}} {% endif <br> -%} {{país}} <br> {% if%} de teléfono Teléfono: {{phone}} {<br> endif% -%} {% if%} fax Fax: {{fax}} {% endif <br> -%} {% if%} email_ID Email: {{}} email_ID <br> ; {% endif -%} </ code> </ pre>" "<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 }}&lt;br&gt;{% if address_line2 %}{{ address_line2 }}&lt;br&gt;{% endif -%}{{ city }}&lt;br&gt;{% if state %}{{ state }}&lt;br&gt;{% endif -%}{% if pincode %} PIN: {{ pincode }}&lt;br&gt;{% endif -%}{{ country }}&lt;br&gt;{% if phone %}Phone: {{ phone }}&lt;br&gt;{% endif -%}{% if fax %}Fax: {{ fax }}&lt;br&gt;{% endif -%}{% if email_id %}Email: {{ email_id }}&lt;br&gt;{% endif -%}</code></pre>","<h4> defecto plantilla </ h4> <p> Usos <a href=""http://jinja.pocoo.org/docs/templates/""> Jinja plantillas </ a> y todos los campos de la Dirección ( incluyendo campos personalizados en su caso) estará disponible </ p> <pre> <code> {{}} address_line1 <br> {% if address_line2%} {{}} address_line2 <br> { endif% -%} {{city}} <br> {% if estado%} {{Estado}} {% endif <br> -%} {% if%} pincode PIN: {{pincode}} {% endif <br> -%} {{país}} <br> {% if%} de teléfono Teléfono: {{phone}} {<br> endif% -%} {% if%} fax Fax: {{fax}} {% endif <br> -%} {% if%} 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,"Existe un Grupo de Clientes con el mismo nombre, por favor cambie el nombre del Cliente o cambie el nombre del Grupo de Clientes" A Customer Group exists with same name please change the Customer name or rename the Customer Group,"Existe un Grupo de Clientes con el mismo nombre, por favor cambie el nombre del Cliente o cambie el nombre del Grupo de Clientes"
@ -2745,7 +2745,7 @@ Statement of Account,Estado de cuenta
Static Parameters,Parámetros estáticos Static Parameters,Parámetros estáticos
Status,estado Status,estado
Status must be one of {0},Estado debe ser uno de {0} Status must be one of {0},Estado debe ser uno de {0}
Status of {0} {1} is now {2},Situación de {0} {1} { 2 es ahora } Status of {0} {1} is now {2},Situación de {0} {1} {2} es ahora
Status updated to {0},Estado actualizado a {0} Status updated to {0},Estado actualizado a {0}
Statutory info and other general information about your Supplier,Información legal y otra información general acerca de su proveedor Statutory info and other general information about your Supplier,Información legal y otra información general acerca de su proveedor
Stay Updated,Manténgase actualizado Stay Updated,Manténgase actualizado
@ -3322,7 +3322,7 @@ website page link,el vínculo web
{0} must be reduced by {1} or you should increase overflow tolerance,{0} debe reducirse en {1} o se debe aumentar la tolerancia de desbordamiento {0} must be reduced by {1} or you should increase overflow tolerance,{0} debe reducirse en {1} o se debe aumentar la tolerancia de desbordamiento
{0} must have role 'Leave Approver',{0} debe tener rol ' Dejar aprobador ' {0} must have role 'Leave Approver',{0} debe tener rol ' Dejar aprobador '
{0} valid serial nos for Item {1},{0} nn serie válidos para el elemento {1} {0} valid serial nos for Item {1},{0} nn serie válidos para el elemento {1}
{0} {1} against Bill {2} dated {3},{0} {1} { 2 contra Bill } {3} de fecha {0} {1} against Bill {2} dated {3},{0} {1} {2} contra Bill {3} de fecha
{0} {1} against Invoice {2},{0} {1} contra Factura {2} {0} {1} against Invoice {2},{0} {1} contra Factura {2}
{0} {1} has already been submitted,{0} {1} ya ha sido presentado {0} {1} has already been submitted,{0} {1} ya ha sido presentado
{0} {1} has been modified. Please refresh.,{0} {1} ha sido modificado. Por favor regenere . {0} {1} has been modified. Please refresh.,{0} {1} ha sido modificado. Por favor regenere .

1 (Half Day) (Medio día)
31 1 Currency = [?] FractionFor e.g. 1 USD = 100 Cent 1 moneda = [?] Fracción Por ejemplo, 1 USD = 100 Cent
32 1. To maintain the customer wise item code and to make them searchable based on their code use this option 1 . Para mantener el código del artículo sabia cliente y para efectuar búsquedas en ellos en función de su uso de código de esta opción
33 <a href="#Sales Browser/Customer Group">Add / Edit</a> <a href="#Sales Browser/Customer grupo"> Añadir / Editar < / a>
34 <a href="#Sales Browser/Item Group">Add / Edit</a> <a href="#Sales Browser/Item grupo"> Añadir / Editar < / a> <a href="#Sales Browser/Item Group"> Añadir / Editar < / a>
35 <a href="#Sales Browser/Territory">Add / Edit</a> <a href="#Sales Browser/Territory"> Añadir / Editar < / a>
36 <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 }}&lt;br&gt;{% if address_line2 %}{{ address_line2 }}&lt;br&gt;{% endif -%}{{ city }}&lt;br&gt;{% if state %}{{ state }}&lt;br&gt;{% endif -%}{% if pincode %} PIN: {{ pincode }}&lt;br&gt;{% endif -%}{{ country }}&lt;br&gt;{% if phone %}Phone: {{ phone }}&lt;br&gt;{% endif -%}{% if fax %}Fax: {{ fax }}&lt;br&gt;{% endif -%}{% if email_id %}Email: {{ email_id }}&lt;br&gt;{% endif -%}</code></pre> <h4> defecto plantilla </ h4> <p> Usos <a href="http://jinja.pocoo.org/docs/templates/"> Jinja plantillas </ a> y todos los campos de la Dirección ( incluyendo campos personalizados en su caso) estará disponible </ p> <pre> <code> {{}} address_line1 <br> {% if address_line2%} {{}} address_line2 <br> { endif% -%} {{city}} <br> {% if estado%} {{Estado}} {% endif <br> -%} {% if%} pincode PIN: {{pincode}} {% endif <br> -%} {{país}} <br> {% if%} de teléfono Teléfono: {{phone}} {<br> endif% -%} {% if%} fax Fax: {{fax}} {% endif <br> -%} {% if%} email_ID Email: {{}} email_ID <br> ; {% endif -%} </ code> </ pre>
37 A Customer Group exists with same name please change the Customer name or rename the Customer Group Existe un Grupo de Clientes con el mismo nombre, por favor cambie el nombre del Cliente o cambie el nombre del Grupo de Clientes
2745 Statutory info and other general information about your Supplier Información legal y otra información general acerca de su proveedor
2746 Stay Updated Manténgase actualizado
2747 Stock valores
2748 Stock Adjustment Stock de Ajuste
2749 Stock Adjustment Account Cuenta de Ajuste
2750 Stock Ageing Stock Envejecimiento
2751 Stock Analytics Analytics archivo
3322 {0} {1} has already been submitted {0} {1} ya ha sido presentado
3323 {0} {1} has been modified. Please refresh. {0} {1} ha sido modificado. Por favor regenere .
3324 {0} {1} is not submitted {0} {1} no se presenta
3325 {0} {1} must be submitted {0} {1} debe ser presentado
3326 {0} {1} not in any Fiscal Year {0} {1} no en cualquier año fiscal
3327 {0} {1} status is 'Stopped' {0} {1} Estado se ' Detenido '
3328 {0} {1} status is Stopped {0} {1} estado es Detenido

View File

@ -3318,7 +3318,7 @@ website page link,Lien vers page web
{0} must be reduced by {1} or you should increase overflow tolerance,{0} doit être réduite par {1} ou vous devez augmenter la tolérance de dépassement {0} must be reduced by {1} or you should increase overflow tolerance,{0} doit être réduite par {1} ou vous devez augmenter la tolérance de dépassement
{0} must have role 'Leave Approver',Nouveau Stock UDM est nécessaire {0} must have role 'Leave Approver',Nouveau Stock UDM est nécessaire
{0} valid serial nos for Item {1},BOM {0} pour objet {1} à la ligne {2} est inactif ou non soumis {0} valid serial nos for Item {1},BOM {0} pour objet {1} à la ligne {2} est inactif ou non soumis
{0} {1} against Bill {2} dated {3},S'il vous plaît entrer le titre ! {0} {1} against Bill {2} dated {3},{0} {1} contre le projet de loi en date du {2} {3}
{0} {1} against Invoice {2},investissements {0} {1} against Invoice {2},investissements
{0} {1} has already been submitted,"S'il vous plaît entrer » est sous-traitée "" comme Oui ou Non" {0} {1} has already been submitted,"S'il vous plaît entrer » est sous-traitée "" comme Oui ou Non"
{0} {1} has been modified. Please refresh.,Point ou Entrepôt à la ligne {0} ne correspond pas à la Demande de Matériel {0} {1} has been modified. Please refresh.,Point ou Entrepôt à la ligne {0} ne correspond pas à la Demande de Matériel

1 (Half Day) (Demi-journée)
3318 {0} must have role 'Leave Approver' Nouveau Stock UDM est nécessaire
3319 {0} valid serial nos for Item {1} BOM {0} pour objet {1} à la ligne {2} est inactif ou non soumis
3320 {0} {1} against Bill {2} dated {3} S'il vous plaît entrer le titre ! {0} {1} contre le projet de loi en date du {2} {3}
3321 {0} {1} against Invoice {2} investissements
3322 {0} {1} has already been submitted S'il vous plaît entrer » est sous-traitée " comme Oui ou Non
3323 {0} {1} has been modified. Please refresh. Point ou Entrepôt à la ligne {0} ne correspond pas à la Demande de Matériel
3324 {0} {1} is not submitted Accepté Rejeté + Quantité doit être égale à la quantité reçue pour objet {0}