Merge branch 'develop' into fix-pick-list

This commit is contained in:
Sagar Sharma 2023-01-31 12:38:58 +05:30 committed by GitHub
commit 57c8871de0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
109 changed files with 1212 additions and 1110 deletions

View File

@ -3,52 +3,71 @@ import requests
from urllib.parse import urlparse from urllib.parse import urlparse
docs_repos = [ WEBSITE_REPOS = [
"frappe_docs",
"erpnext_documentation",
"erpnext_com", "erpnext_com",
"frappe_io", "frappe_io",
] ]
DOCUMENTATION_DOMAINS = [
"docs.erpnext.com",
"frappeframework.com",
]
def uri_validator(x):
result = urlparse(x)
return all([result.scheme, result.netloc, result.path])
def docs_link_exists(body): def is_valid_url(url: str) -> bool:
for line in body.splitlines(): parts = urlparse(url)
for word in line.split(): return all((parts.scheme, parts.netloc, parts.path))
if word.startswith('http') and uri_validator(word):
parsed_url = urlparse(word)
if parsed_url.netloc == "github.com": def is_documentation_link(word: str) -> bool:
parts = parsed_url.path.split('/') if not word.startswith("http") or not is_valid_url(word):
if len(parts) == 5 and parts[1] == "frappe" and parts[2] in docs_repos: return False
return True
elif parsed_url.netloc == "docs.erpnext.com": parsed_url = urlparse(word)
return True if parsed_url.netloc in DOCUMENTATION_DOMAINS:
return True
if parsed_url.netloc == "github.com":
parts = parsed_url.path.split("/")
if len(parts) == 5 and parts[1] == "frappe" and parts[2] in WEBSITE_REPOS:
return True
return False
def contains_documentation_link(body: str) -> bool:
return any(
is_documentation_link(word)
for line in body.splitlines()
for word in line.split()
)
def check_pull_request(number: str) -> "tuple[int, str]":
response = requests.get(f"https://api.github.com/repos/frappe/erpnext/pulls/{number}")
if not response.ok:
return 1, "Pull Request Not Found! ⚠️"
payload = response.json()
title = (payload.get("title") or "").lower().strip()
head_sha = (payload.get("head") or {}).get("sha")
body = (payload.get("body") or "").lower()
if (
not title.startswith("feat")
or not head_sha
or "no-docs" in body
or "backport" in body
):
return 0, "Skipping documentation checks... 🏃"
if contains_documentation_link(body):
return 0, "Documentation Link Found. You're Awesome! 🎉"
return 1, "Documentation Link Not Found! ⚠️"
if __name__ == "__main__": if __name__ == "__main__":
pr = sys.argv[1] exit_code, message = check_pull_request(sys.argv[1])
response = requests.get("https://api.github.com/repos/frappe/erpnext/pulls/{}".format(pr)) print(message)
sys.exit(exit_code)
if response.ok:
payload = response.json()
title = (payload.get("title") or "").lower().strip()
head_sha = (payload.get("head") or {}).get("sha")
body = (payload.get("body") or "").lower()
if (title.startswith("feat")
and head_sha
and "no-docs" not in body
and "backport" not in body
):
if docs_link_exists(body):
print("Documentation Link Found. You're Awesome! 🎉")
else:
print("Documentation Link Not Found! ⚠️")
sys.exit(1)
else:
print("Skipping documentation checks... 🏃")

View File

@ -32,8 +32,8 @@ repos:
- id: black - id: black
additional_dependencies: ['click==8.0.4'] additional_dependencies: ['click==8.0.4']
- repo: https://github.com/timothycrosley/isort - repo: https://github.com/PyCQA/isort
rev: 5.9.1 rev: 5.12.0
hooks: hooks:
- id: isort - id: isort
exclude: ".*setup.py$" exclude: ".*setup.py$"

View File

@ -184,6 +184,11 @@ def validate_budget_records(args, budget_records, expense_amount):
amount = expense_amount or get_amount(args, budget) amount = expense_amount or get_amount(args, budget)
yearly_action, monthly_action = get_actions(args, budget) yearly_action, monthly_action = get_actions(args, budget)
if yearly_action in ("Stop", "Warn"):
compare_expense_with_budget(
args, flt(budget.budget_amount), _("Annual"), yearly_action, budget.budget_against, amount
)
if monthly_action in ["Stop", "Warn"]: if monthly_action in ["Stop", "Warn"]:
budget_amount = get_accumulated_monthly_budget( budget_amount = get_accumulated_monthly_budget(
budget.monthly_distribution, args.posting_date, args.fiscal_year, budget.budget_amount budget.monthly_distribution, args.posting_date, args.fiscal_year, budget.budget_amount
@ -195,28 +200,28 @@ def validate_budget_records(args, budget_records, expense_amount):
args, budget_amount, _("Accumulated Monthly"), monthly_action, budget.budget_against, amount args, budget_amount, _("Accumulated Monthly"), monthly_action, budget.budget_against, amount
) )
if (
yearly_action in ("Stop", "Warn")
and monthly_action != "Stop"
and yearly_action != monthly_action
):
compare_expense_with_budget(
args, flt(budget.budget_amount), _("Annual"), yearly_action, budget.budget_against, amount
)
def compare_expense_with_budget(args, budget_amount, action_for, action, budget_against, amount=0): def compare_expense_with_budget(args, budget_amount, action_for, action, budget_against, amount=0):
actual_expense = amount or get_actual_expense(args) actual_expense = get_actual_expense(args)
if actual_expense > budget_amount: total_expense = actual_expense + amount
diff = actual_expense - budget_amount
if total_expense > budget_amount:
if actual_expense > budget_amount:
error_tense = _("is already")
diff = actual_expense - budget_amount
else:
error_tense = _("will be")
diff = total_expense - budget_amount
currency = frappe.get_cached_value("Company", args.company, "default_currency") currency = frappe.get_cached_value("Company", args.company, "default_currency")
msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It will exceed by {5}").format( msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6}").format(
_(action_for), _(action_for),
frappe.bold(args.account), frappe.bold(args.account),
args.budget_against_field, frappe.unscrub(args.budget_against_field),
frappe.bold(budget_against), frappe.bold(budget_against),
frappe.bold(fmt_money(budget_amount, currency=currency)), frappe.bold(fmt_money(budget_amount, currency=currency)),
error_tense,
frappe.bold(fmt_money(diff, currency=currency)), frappe.bold(fmt_money(diff, currency=currency)),
) )
@ -227,9 +232,9 @@ def compare_expense_with_budget(args, budget_amount, action_for, action, budget_
action = "Warn" action = "Warn"
if action == "Stop": if action == "Stop":
frappe.throw(msg, BudgetError) frappe.throw(msg, BudgetError, title=_("Budget Exceeded"))
else: else:
frappe.msgprint(msg, indicator="orange") frappe.msgprint(msg, indicator="orange", title=_("Budget Exceeded"))
def get_actions(args, budget): def get_actions(args, budget):
@ -351,7 +356,9 @@ def get_actual_expense(args):
""" """
select sum(gle.debit) - sum(gle.credit) select sum(gle.debit) - sum(gle.credit)
from `tabGL Entry` gle from `tabGL Entry` gle
where gle.account=%(account)s where
is_cancelled = 0
and gle.account=%(account)s
{condition1} {condition1}
and gle.fiscal_year=%(fiscal_year)s and gle.fiscal_year=%(fiscal_year)s
and gle.company=%(company)s and gle.company=%(company)s

View File

@ -28,9 +28,14 @@ class InvalidDateError(frappe.ValidationError):
class CostCenterAllocation(Document): class CostCenterAllocation(Document):
def __init__(self, *args, **kwargs):
super(CostCenterAllocation, self).__init__(*args, **kwargs)
self._skip_from_date_validation = False
def validate(self): def validate(self):
self.validate_total_allocation_percentage() self.validate_total_allocation_percentage()
self.validate_from_date_based_on_existing_gle() if not self._skip_from_date_validation:
self.validate_from_date_based_on_existing_gle()
self.validate_backdated_allocation() self.validate_backdated_allocation()
self.validate_main_cost_center() self.validate_main_cost_center()
self.validate_child_cost_centers() self.validate_child_cost_centers()

View File

@ -8,7 +8,7 @@ frappe.provide("erpnext.journal_entry");
frappe.ui.form.on("Journal Entry", { frappe.ui.form.on("Journal Entry", {
setup: function(frm) { setup: function(frm) {
frm.add_fetch("bank_account", "account", "account"); frm.add_fetch("bank_account", "account", "account");
frm.ignore_doctypes_on_cancel_all = ['Sales Invoice', 'Purchase Invoice']; frm.ignore_doctypes_on_cancel_all = ['Sales Invoice', 'Purchase Invoice', 'Journal Entry'];
}, },
refresh: function(frm) { refresh: function(frm) {

View File

@ -69,6 +69,10 @@ class PaymentReconciliation(Document):
def get_jv_entries(self): def get_jv_entries(self):
condition = self.get_conditions() condition = self.get_conditions()
if self.get("cost_center"):
condition += f" and t2.cost_center = '{self.cost_center}' "
dr_or_cr = ( dr_or_cr = (
"credit_in_account_currency" "credit_in_account_currency"
if erpnext.get_party_account_type(self.party_type) == "Receivable" if erpnext.get_party_account_type(self.party_type) == "Receivable"

View File

@ -747,6 +747,73 @@ class TestPaymentReconciliation(FrappeTestCase):
self.assertEqual(len(pr.get("invoices")), 0) self.assertEqual(len(pr.get("invoices")), 0)
self.assertEqual(len(pr.get("payments")), 0) self.assertEqual(len(pr.get("payments")), 0)
def test_cost_center_filter_on_vouchers(self):
"""
Test Cost Center filter is applied on Invoices, Payment Entries and Journals
"""
transaction_date = nowdate()
rate = 100
# 'Main - PR' Cost Center
si1 = self.create_sales_invoice(
qty=1, rate=rate, posting_date=transaction_date, do_not_submit=True
)
si1.cost_center = self.main_cc.name
si1.submit()
pe1 = self.create_payment_entry(posting_date=transaction_date, amount=rate)
pe1.cost_center = self.main_cc.name
pe1 = pe1.save().submit()
je1 = self.create_journal_entry(self.bank, self.debit_to, 100, transaction_date)
je1.accounts[0].cost_center = self.main_cc.name
je1.accounts[1].cost_center = self.main_cc.name
je1.accounts[1].party_type = "Customer"
je1.accounts[1].party = self.customer
je1 = je1.save().submit()
# 'Sub - PR' Cost Center
si2 = self.create_sales_invoice(
qty=1, rate=rate, posting_date=transaction_date, do_not_submit=True
)
si2.cost_center = self.sub_cc.name
si2.submit()
pe2 = self.create_payment_entry(posting_date=transaction_date, amount=rate)
pe2.cost_center = self.sub_cc.name
pe2 = pe2.save().submit()
je2 = self.create_journal_entry(self.bank, self.debit_to, 100, transaction_date)
je2.accounts[0].cost_center = self.sub_cc.name
je2.accounts[1].cost_center = self.sub_cc.name
je2.accounts[1].party_type = "Customer"
je2.accounts[1].party = self.customer
je2 = je2.save().submit()
pr = self.create_payment_reconciliation()
pr.cost_center = self.main_cc.name
pr.get_unreconciled_entries()
# check PR tool output
self.assertEqual(len(pr.get("invoices")), 1)
self.assertEqual(pr.get("invoices")[0].get("invoice_number"), si1.name)
self.assertEqual(len(pr.get("payments")), 2)
payment_vouchers = [x.get("reference_name") for x in pr.get("payments")]
self.assertCountEqual(payment_vouchers, [pe1.name, je1.name])
# Change cost center
pr.cost_center = self.sub_cc.name
pr.get_unreconciled_entries()
# check PR tool output
self.assertEqual(len(pr.get("invoices")), 1)
self.assertEqual(pr.get("invoices")[0].get("invoice_number"), si2.name)
self.assertEqual(len(pr.get("payments")), 2)
payment_vouchers = [x.get("reference_name") for x in pr.get("payments")]
self.assertCountEqual(payment_vouchers, [je2.name, pe2.name])
def make_customer(customer_name, currency=None): def make_customer(customer_name, currency=None):
if not frappe.db.exists("Customer", customer_name): if not frappe.db.exists("Customer", customer_name):

View File

@ -51,7 +51,7 @@ class PaymentRequest(Document):
if existing_payment_request_amount: if existing_payment_request_amount:
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name) ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
if hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") != "Shopping Cart": if not hasattr(ref_doc, "order_type") or getattr(ref_doc, "order_type") != "Shopping Cart":
ref_amount = get_amount(ref_doc, self.payment_account) ref_amount = get_amount(ref_doc, self.payment_account)
if existing_payment_request_amount + flt(self.grand_total) > ref_amount: if existing_payment_request_amount + flt(self.grand_total) > ref_amount:

View File

@ -675,7 +675,7 @@ def get_bin_qty(item_code, warehouse):
def get_pos_reserved_qty(item_code, warehouse): def get_pos_reserved_qty(item_code, warehouse):
reserved_qty = frappe.db.sql( reserved_qty = frappe.db.sql(
"""select sum(p_item.qty) as qty """select sum(p_item.stock_qty) as qty
from `tabPOS Invoice` p, `tabPOS Invoice Item` p_item from `tabPOS Invoice` p, `tabPOS Invoice Item` p_item
where p.name = p_item.parent where p.name = p_item.parent
and ifnull(p.consolidated_invoice, '') = '' and ifnull(p.consolidated_invoice, '') = ''

View File

@ -1426,6 +1426,7 @@
}, },
{ {
"default": "0", "default": "0",
"depends_on": "apply_tds",
"fieldname": "tax_withholding_net_total", "fieldname": "tax_withholding_net_total",
"fieldtype": "Currency", "fieldtype": "Currency",
"hidden": 1, "hidden": 1,
@ -1435,12 +1436,13 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "apply_tds",
"fieldname": "base_tax_withholding_net_total", "fieldname": "base_tax_withholding_net_total",
"fieldtype": "Currency", "fieldtype": "Currency",
"hidden": 1, "hidden": 1,
"label": "Base Tax Withholding Net Total", "label": "Base Tax Withholding Net Total",
"no_copy": 1, "no_copy": 1,
"options": "currency", "options": "Company:company:default_currency",
"print_hide": 1, "print_hide": 1,
"read_only": 1 "read_only": 1
}, },
@ -1554,7 +1556,7 @@
"idx": 204, "idx": 204,
"is_submittable": 1, "is_submittable": 1,
"links": [], "links": [],
"modified": "2022-12-12 18:37:38.142688", "modified": "2023-01-28 19:18:56.586321",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Purchase Invoice", "name": "Purchase Invoice",

View File

@ -1776,6 +1776,8 @@
"width": "50%" "width": "50%"
}, },
{ {
"fetch_from": "sales_partner.commission_rate",
"fetch_if_empty": 1,
"fieldname": "commission_rate", "fieldname": "commission_rate",
"fieldtype": "Float", "fieldtype": "Float",
"hide_days": 1, "hide_days": 1,
@ -2141,7 +2143,7 @@
"link_fieldname": "consolidated_invoice" "link_fieldname": "consolidated_invoice"
} }
], ],
"modified": "2022-12-12 18:34:33.409895", "modified": "2023-01-28 19:45:47.538163",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Sales Invoice", "name": "Sales Invoice",

View File

@ -410,12 +410,26 @@ def get_tds_amount(ldc, parties, inv, tax_details, tax_deducted, vouchers):
tds_amount = 0 tds_amount = 0
invoice_filters = {"name": ("in", vouchers), "docstatus": 1, "apply_tds": 1} invoice_filters = {"name": ("in", vouchers), "docstatus": 1, "apply_tds": 1}
## for TDS to be deducted on advances
payment_entry_filters = {
"party_type": "Supplier",
"party": ("in", parties),
"docstatus": 1,
"apply_tax_withholding_amount": 1,
"unallocated_amount": (">", 0),
"posting_date": ["between", (tax_details.from_date, tax_details.to_date)],
"tax_withholding_category": tax_details.get("tax_withholding_category"),
}
field = "sum(tax_withholding_net_total)" field = "sum(tax_withholding_net_total)"
if cint(tax_details.consider_party_ledger_amount): if cint(tax_details.consider_party_ledger_amount):
invoice_filters.pop("apply_tds", None) invoice_filters.pop("apply_tds", None)
field = "sum(grand_total)" field = "sum(grand_total)"
payment_entry_filters.pop("apply_tax_withholding_amount", None)
payment_entry_filters.pop("tax_withholding_category", None)
supp_credit_amt = frappe.db.get_value("Purchase Invoice", invoice_filters, field) or 0.0 supp_credit_amt = frappe.db.get_value("Purchase Invoice", invoice_filters, field) or 0.0
supp_jv_credit_amt = ( supp_jv_credit_amt = (
@ -427,14 +441,28 @@ def get_tds_amount(ldc, parties, inv, tax_details, tax_deducted, vouchers):
"party": ("in", parties), "party": ("in", parties),
"reference_type": ("!=", "Purchase Invoice"), "reference_type": ("!=", "Purchase Invoice"),
}, },
"sum(credit_in_account_currency)", "sum(credit_in_account_currency - debit_in_account_currency)",
) )
or 0.0 or 0.0
) )
# Get Amount via payment entry
payment_entry_amounts = frappe.db.get_all(
"Payment Entry",
filters=payment_entry_filters,
fields=["sum(unallocated_amount) as amount", "payment_type"],
group_by="payment_type",
)
supp_credit_amt += supp_jv_credit_amt supp_credit_amt += supp_jv_credit_amt
supp_credit_amt += inv.tax_withholding_net_total supp_credit_amt += inv.tax_withholding_net_total
for type in payment_entry_amounts:
if type.payment_type == "Pay":
supp_credit_amt += type.amount
else:
supp_credit_amt -= type.amount
threshold = tax_details.get("threshold", 0) threshold = tax_details.get("threshold", 0)
cumulative_threshold = tax_details.get("cumulative_threshold", 0) cumulative_threshold = tax_details.get("cumulative_threshold", 0)

View File

@ -16,7 +16,7 @@ class TestTaxWithholdingCategory(unittest.TestCase):
def setUpClass(self): def setUpClass(self):
# create relevant supplier, etc # create relevant supplier, etc
create_records() create_records()
create_tax_with_holding_category() create_tax_withholding_category_records()
def tearDown(self): def tearDown(self):
cancel_invoices() cancel_invoices()
@ -38,7 +38,7 @@ class TestTaxWithholdingCategory(unittest.TestCase):
pi = create_purchase_invoice(supplier="Test TDS Supplier") pi = create_purchase_invoice(supplier="Test TDS Supplier")
pi.submit() pi.submit()
# assert equal tax deduction on total invoice amount uptil now # assert equal tax deduction on total invoice amount until now
self.assertEqual(pi.taxes_and_charges_deducted, 3000) self.assertEqual(pi.taxes_and_charges_deducted, 3000)
self.assertEqual(pi.grand_total, 7000) self.assertEqual(pi.grand_total, 7000)
invoices.append(pi) invoices.append(pi)
@ -47,7 +47,7 @@ class TestTaxWithholdingCategory(unittest.TestCase):
pi = create_purchase_invoice(supplier="Test TDS Supplier", rate=5000) pi = create_purchase_invoice(supplier="Test TDS Supplier", rate=5000)
pi.submit() pi.submit()
# assert equal tax deduction on total invoice amount uptil now # assert equal tax deduction on total invoice amount until now
self.assertEqual(pi.taxes_and_charges_deducted, 500) self.assertEqual(pi.taxes_and_charges_deducted, 500)
invoices.append(pi) invoices.append(pi)
@ -130,7 +130,7 @@ class TestTaxWithholdingCategory(unittest.TestCase):
invoices.append(si) invoices.append(si)
# create another invoice whose total when added to previously created invoice, # create another invoice whose total when added to previously created invoice,
# surpasses cumulative threshhold # surpasses cumulative threshold
si = create_sales_invoice(customer="Test TCS Customer", rate=12000) si = create_sales_invoice(customer="Test TCS Customer", rate=12000)
si.submit() si.submit()
@ -329,6 +329,38 @@ class TestTaxWithholdingCategory(unittest.TestCase):
for d in reversed(invoices): for d in reversed(invoices):
d.cancel() d.cancel()
def test_tax_withholding_via_payment_entry_for_advances(self):
frappe.db.set_value(
"Supplier", "Test TDS Supplier7", "tax_withholding_category", "Advance TDS Category"
)
# create payment entry
pe1 = create_payment_entry(
payment_type="Pay", party_type="Supplier", party="Test TDS Supplier7", paid_amount=4000
)
pe1.submit()
self.assertFalse(pe1.get("taxes"))
pe2 = create_payment_entry(
payment_type="Pay", party_type="Supplier", party="Test TDS Supplier7", paid_amount=4000
)
pe2.submit()
self.assertFalse(pe2.get("taxes"))
pe3 = create_payment_entry(
payment_type="Pay", party_type="Supplier", party="Test TDS Supplier7", paid_amount=4000
)
pe3.apply_tax_withholding_amount = 1
pe3.save()
pe3.submit()
self.assertEquals(pe3.get("taxes")[0].tax_amount, 1200)
pe1.cancel()
pe2.cancel()
pe3.cancel()
def cancel_invoices(): def cancel_invoices():
purchase_invoices = frappe.get_all( purchase_invoices = frappe.get_all(
@ -450,6 +482,32 @@ def create_sales_invoice(**args):
return si return si
def create_payment_entry(**args):
# return payment entry doc object
args = frappe._dict(args)
pe = frappe.get_doc(
{
"doctype": "Payment Entry",
"posting_date": today(),
"payment_type": args.payment_type,
"party_type": args.party_type,
"party": args.party,
"company": "_Test Company",
"paid_from": "Cash - _TC",
"paid_to": "Creditors - _TC",
"paid_amount": args.paid_amount or 10000,
"received_amount": args.paid_amount or 10000,
"reference_no": args.reference_no or "12345",
"reference_date": today(),
"paid_from_account_currency": "INR",
"paid_to_account_currency": "INR",
}
)
pe.save()
return pe
def create_records(): def create_records():
# create a new suppliers # create a new suppliers
for name in [ for name in [
@ -460,6 +518,7 @@ def create_records():
"Test TDS Supplier4", "Test TDS Supplier4",
"Test TDS Supplier5", "Test TDS Supplier5",
"Test TDS Supplier6", "Test TDS Supplier6",
"Test TDS Supplier7",
]: ]:
if frappe.db.exists("Supplier", name): if frappe.db.exists("Supplier", name):
continue continue
@ -530,142 +589,129 @@ def create_records():
).insert() ).insert()
def create_tax_with_holding_category(): def create_tax_withholding_category_records():
fiscal_year = get_fiscal_year(today(), company="_Test Company") fiscal_year = get_fiscal_year(today(), company="_Test Company")
from_date = fiscal_year[1]
to_date = fiscal_year[2]
# Cumulative threshold # Cumulative threshold
if not frappe.db.exists("Tax Withholding Category", "Cumulative Threshold TDS"): create_tax_withholding_category(
frappe.get_doc( category_name="Cumulative Threshold TDS",
{ rate=10,
"doctype": "Tax Withholding Category", from_date=from_date,
"name": "Cumulative Threshold TDS", to_date=to_date,
"category_name": "10% TDS", account="TDS - _TC",
"rates": [ single_threshold=0,
{ cumulative_threshold=30000.00,
"from_date": fiscal_year[1], )
"to_date": fiscal_year[2],
"tax_withholding_rate": 10,
"single_threshold": 0,
"cumulative_threshold": 30000.00,
}
],
"accounts": [{"company": "_Test Company", "account": "TDS - _TC"}],
}
).insert()
if not frappe.db.exists("Tax Withholding Category", "Cumulative Threshold TCS"): # Category for TCS
frappe.get_doc( create_tax_withholding_category(
{ category_name="Cumulative Threshold TCS",
"doctype": "Tax Withholding Category", rate=10,
"name": "Cumulative Threshold TCS", from_date=from_date,
"category_name": "10% TCS", to_date=to_date,
"rates": [ account="TCS - _TC",
{ single_threshold=0,
"from_date": fiscal_year[1], cumulative_threshold=30000.00,
"to_date": fiscal_year[2], )
"tax_withholding_rate": 10,
"single_threshold": 0,
"cumulative_threshold": 30000.00,
}
],
"accounts": [{"company": "_Test Company", "account": "TCS - _TC"}],
}
).insert()
# Single thresold # Single threshold
if not frappe.db.exists("Tax Withholding Category", "Single Threshold TDS"): create_tax_withholding_category(
frappe.get_doc( category_name="Single Threshold TDS",
{ rate=10,
"doctype": "Tax Withholding Category", from_date=from_date,
"name": "Single Threshold TDS", to_date=to_date,
"category_name": "10% TDS", account="TDS - _TC",
"rates": [ single_threshold=20000,
{ cumulative_threshold=0,
"from_date": fiscal_year[1], )
"to_date": fiscal_year[2],
"tax_withholding_rate": 10,
"single_threshold": 20000.00,
"cumulative_threshold": 0,
}
],
"accounts": [{"company": "_Test Company", "account": "TDS - _TC"}],
}
).insert()
if not frappe.db.exists("Tax Withholding Category", "New TDS Category"): create_tax_withholding_category(
frappe.get_doc( category_name="New TDS Category",
{ rate=10,
"doctype": "Tax Withholding Category", from_date=from_date,
"name": "New TDS Category", to_date=to_date,
"category_name": "New TDS Category", account="TDS - _TC",
"round_off_tax_amount": 1, single_threshold=0,
"consider_party_ledger_amount": 1, cumulative_threshold=30000,
"tax_on_excess_amount": 1, round_off_tax_amount=1,
"rates": [ consider_party_ledger_amount=1,
{ tax_on_excess_amount=1,
"from_date": fiscal_year[1], )
"to_date": fiscal_year[2],
"tax_withholding_rate": 10,
"single_threshold": 0,
"cumulative_threshold": 30000,
}
],
"accounts": [{"company": "_Test Company", "account": "TDS - _TC"}],
}
).insert()
if not frappe.db.exists("Tax Withholding Category", "Test Service Category"): create_tax_withholding_category(
frappe.get_doc( category_name="Test Service Category",
{ rate=10,
"doctype": "Tax Withholding Category", from_date=from_date,
"name": "Test Service Category", to_date=to_date,
"category_name": "Test Service Category", account="TDS - _TC",
"rates": [ single_threshold=2000,
{ cumulative_threshold=2000,
"from_date": fiscal_year[1], )
"to_date": fiscal_year[2],
"tax_withholding_rate": 10,
"single_threshold": 2000,
"cumulative_threshold": 2000,
}
],
"accounts": [{"company": "_Test Company", "account": "TDS - _TC"}],
}
).insert()
if not frappe.db.exists("Tax Withholding Category", "Test Goods Category"): create_tax_withholding_category(
frappe.get_doc( category_name="Test Goods Category",
{ rate=10,
"doctype": "Tax Withholding Category", from_date=from_date,
"name": "Test Goods Category", to_date=to_date,
"category_name": "Test Goods Category", account="TDS - _TC",
"rates": [ single_threshold=2000,
{ cumulative_threshold=2000,
"from_date": fiscal_year[1], )
"to_date": fiscal_year[2],
"tax_withholding_rate": 10,
"single_threshold": 2000,
"cumulative_threshold": 2000,
}
],
"accounts": [{"company": "_Test Company", "account": "TDS - _TC"}],
}
).insert()
if not frappe.db.exists("Tax Withholding Category", "Test Multi Invoice Category"): create_tax_withholding_category(
category_name="Test Multi Invoice Category",
rate=10,
from_date=from_date,
to_date=to_date,
account="TDS - _TC",
single_threshold=5000,
cumulative_threshold=10000,
)
create_tax_withholding_category(
category_name="Advance TDS Category",
rate=10,
from_date=from_date,
to_date=to_date,
account="TDS - _TC",
single_threshold=5000,
cumulative_threshold=10000,
consider_party_ledger_amount=1,
)
def create_tax_withholding_category(
category_name,
rate,
from_date,
to_date,
account,
single_threshold=0,
cumulative_threshold=0,
round_off_tax_amount=0,
consider_party_ledger_amount=0,
tax_on_excess_amount=0,
):
if not frappe.db.exists("Tax Withholding Category", category_name):
frappe.get_doc( frappe.get_doc(
{ {
"doctype": "Tax Withholding Category", "doctype": "Tax Withholding Category",
"name": "Test Multi Invoice Category", "name": category_name,
"category_name": "Test Multi Invoice Category", "category_name": category_name,
"round_off_tax_amount": round_off_tax_amount,
"consider_party_ledger_amount": consider_party_ledger_amount,
"tax_on_excess_amount": tax_on_excess_amount,
"rates": [ "rates": [
{ {
"from_date": fiscal_year[1], "from_date": from_date,
"to_date": fiscal_year[2], "to_date": to_date,
"tax_withholding_rate": 10, "tax_withholding_rate": rate,
"single_threshold": 5000, "single_threshold": single_threshold,
"cumulative_threshold": 10000, "cumulative_threshold": cumulative_threshold,
} }
], ],
"accounts": [{"company": "_Test Company", "account": "TDS - _TC"}], "accounts": [{"company": "_Test Company", "account": account}],
} }
).insert() ).insert()

View File

@ -211,7 +211,13 @@ def set_address_details(
else: else:
party_details.update(get_company_address(company)) party_details.update(get_company_address(company))
if doctype and doctype in ["Delivery Note", "Sales Invoice", "Sales Order", "Quotation"]: if doctype and doctype in [
"Delivery Note",
"Sales Invoice",
"Sales Order",
"Quotation",
"POS Invoice",
]:
if party_details.company_address: if party_details.company_address:
party_details.update( party_details.update(
get_fetch_values(doctype, "company_address", party_details.company_address) get_fetch_values(doctype, "company_address", party_details.company_address)

View File

@ -526,7 +526,7 @@ def get_columns(filters):
"options": "GL Entry", "options": "GL Entry",
"hidden": 1, "hidden": 1,
}, },
{"label": _("Posting Date"), "fieldname": "posting_date", "fieldtype": "Date", "width": 90}, {"label": _("Posting Date"), "fieldname": "posting_date", "fieldtype": "Date", "width": 100},
{ {
"label": _("Account"), "label": _("Account"),
"fieldname": "account", "fieldname": "account",
@ -538,13 +538,13 @@ def get_columns(filters):
"label": _("Debit ({0})").format(currency), "label": _("Debit ({0})").format(currency),
"fieldname": "debit", "fieldname": "debit",
"fieldtype": "Float", "fieldtype": "Float",
"width": 100, "width": 130,
}, },
{ {
"label": _("Credit ({0})").format(currency), "label": _("Credit ({0})").format(currency),
"fieldname": "credit", "fieldname": "credit",
"fieldtype": "Float", "fieldtype": "Float",
"width": 100, "width": 130,
}, },
{ {
"label": _("Balance ({0})").format(currency), "label": _("Balance ({0})").format(currency),

View File

@ -655,10 +655,35 @@ class GrossProfitGenerator(object):
return self.calculate_buying_amount_from_sle( return self.calculate_buying_amount_from_sle(
row, my_sle, parenttype, parent, item_row, item_code row, my_sle, parenttype, parent, item_row, item_code
) )
elif row.sales_order and row.so_detail:
incoming_amount = self.get_buying_amount_from_so_dn(row.sales_order, row.so_detail, item_code)
if incoming_amount:
return incoming_amount
else: else:
return flt(row.qty) * self.get_average_buying_rate(row, item_code) return flt(row.qty) * self.get_average_buying_rate(row, item_code)
return 0.0 return flt(row.qty) * self.get_average_buying_rate(row, item_code)
def get_buying_amount_from_so_dn(self, sales_order, so_detail, item_code):
from frappe.query_builder.functions import Sum
delivery_note = frappe.qb.DocType("Delivery Note")
delivery_note_item = frappe.qb.DocType("Delivery Note Item")
query = (
frappe.qb.from_(delivery_note)
.inner_join(delivery_note_item)
.on(delivery_note.name == delivery_note_item.parent)
.select(Sum(delivery_note_item.incoming_rate * delivery_note_item.stock_qty))
.where(delivery_note.docstatus == 1)
.where(delivery_note_item.item_code == item_code)
.where(delivery_note_item.against_sales_order == sales_order)
.where(delivery_note_item.so_detail == so_detail)
.groupby(delivery_note_item.item_code)
)
incoming_amount = query.run()
return flt(incoming_amount[0][0]) if incoming_amount else 0
def get_average_buying_rate(self, row, item_code): def get_average_buying_rate(self, row, item_code):
args = row args = row
@ -760,7 +785,8 @@ class GrossProfitGenerator(object):
`tabSales Invoice`.territory, `tabSales Invoice Item`.item_code, `tabSales Invoice`.territory, `tabSales Invoice Item`.item_code,
`tabSales Invoice Item`.item_name, `tabSales Invoice Item`.description, `tabSales Invoice Item`.item_name, `tabSales Invoice Item`.description,
`tabSales Invoice Item`.warehouse, `tabSales Invoice Item`.item_group, `tabSales Invoice Item`.warehouse, `tabSales Invoice Item`.item_group,
`tabSales Invoice Item`.brand, `tabSales Invoice Item`.dn_detail, `tabSales Invoice Item`.brand, `tabSales Invoice Item`.so_detail,
`tabSales Invoice Item`.sales_order, `tabSales Invoice Item`.dn_detail,
`tabSales Invoice Item`.delivery_note, `tabSales Invoice Item`.stock_qty as qty, `tabSales Invoice Item`.delivery_note, `tabSales Invoice Item`.stock_qty as qty,
`tabSales Invoice Item`.base_net_rate, `tabSales Invoice Item`.base_net_amount, `tabSales Invoice Item`.base_net_rate, `tabSales Invoice Item`.base_net_amount,
`tabSales Invoice Item`.name as "item_row", `tabSales Invoice`.is_return, `tabSales Invoice Item`.name as "item_row", `tabSales Invoice`.is_return,

View File

@ -302,3 +302,82 @@ class TestGrossProfit(FrappeTestCase):
columns, data = execute(filters=filters) columns, data = execute(filters=filters)
self.assertGreater(len(data), 0) self.assertGreater(len(data), 0)
def test_order_connected_dn_and_inv(self):
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
"""
Test gp calculation when invoice and delivery note aren't directly connected.
SO -- INV
|
DN
"""
se = make_stock_entry(
company=self.company,
item_code=self.item,
target=self.warehouse,
qty=3,
basic_rate=100,
do_not_submit=True,
)
item = se.items[0]
se.append(
"items",
{
"item_code": item.item_code,
"s_warehouse": item.s_warehouse,
"t_warehouse": item.t_warehouse,
"qty": 10,
"basic_rate": 200,
"conversion_factor": item.conversion_factor or 1.0,
"transfer_qty": flt(item.qty) * (flt(item.conversion_factor) or 1.0),
"serial_no": item.serial_no,
"batch_no": item.batch_no,
"cost_center": item.cost_center,
"expense_account": item.expense_account,
},
)
se = se.save().submit()
so = make_sales_order(
customer=self.customer,
company=self.company,
warehouse=self.warehouse,
item=self.item,
qty=4,
do_not_save=False,
do_not_submit=False,
)
from erpnext.selling.doctype.sales_order.sales_order import (
make_delivery_note,
make_sales_invoice,
)
make_delivery_note(so.name).submit()
sinv = make_sales_invoice(so.name).submit()
filters = frappe._dict(
company=self.company, from_date=nowdate(), to_date=nowdate(), group_by="Invoice"
)
columns, data = execute(filters=filters)
expected_entry = {
"parent_invoice": sinv.name,
"currency": "INR",
"sales_invoice": self.item,
"customer": self.customer,
"posting_date": frappe.utils.datetime.date.fromisoformat(nowdate()),
"item_code": self.item,
"item_name": self.item,
"warehouse": "Stores - _GP",
"qty": 4.0,
"avg._selling_rate": 100.0,
"valuation_rate": 125.0,
"selling_amount": 400.0,
"buying_amount": 500.0,
"gross_profit": -100.0,
"gross_profit_%": -25.0,
}
gp_entry = [x for x in data if x.parent_invoice == sinv.name]
self.assertDictContainsSubset(expected_entry, gp_entry[0])

View File

@ -4,7 +4,17 @@
import frappe import frappe
from frappe import _ from frappe import _
from frappe.utils import add_months, cint, flt, get_link_to_form, getdate, nowdate, today from frappe.utils import (
add_months,
cint,
flt,
get_last_day,
get_link_to_form,
getdate,
is_last_day_of_the_month,
nowdate,
today,
)
from frappe.utils.user import get_users_with_role from frappe.utils.user import get_users_with_role
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
@ -400,6 +410,9 @@ def disposal_was_made_on_original_schedule_date(schedule_idx, row, posting_date_
row.depreciation_start_date, schedule_idx * cint(row.frequency_of_depreciation) row.depreciation_start_date, schedule_idx * cint(row.frequency_of_depreciation)
) )
if is_last_day_of_the_month(row.depreciation_start_date):
orginal_schedule_date = get_last_day(orginal_schedule_date)
if orginal_schedule_date == posting_date_of_disposal: if orginal_schedule_date == posting_date_of_disposal:
return True return True

View File

@ -126,16 +126,18 @@ def get_asset_value(asset, finance_book=None):
if not asset.calculate_depreciation: if not asset.calculate_depreciation:
return flt(asset.gross_purchase_amount) - flt(asset.opening_accumulated_depreciation) return flt(asset.gross_purchase_amount) - flt(asset.opening_accumulated_depreciation)
finance_book_filter = ["finance_book", "is", "not set"] result = frappe.get_all(
if finance_book:
finance_book_filter = ["finance_book", "=", finance_book]
return frappe.db.get_value(
doctype="Asset Finance Book", doctype="Asset Finance Book",
filters=[["parent", "=", asset.asset_id], finance_book_filter], filters={
fieldname="value_after_depreciation", "parent": asset.asset_id,
"finance_book": finance_book or ("is", "not set"),
},
pluck="value_after_depreciation",
limit=1,
) )
return result[0] if result else 0.0
def prepare_chart_data(data, filters): def prepare_chart_data(data, filters):
labels_values_map = {} labels_values_map = {}

View File

@ -15,17 +15,6 @@ class TestBulkTransactionLog(unittest.TestCase):
create_customer() create_customer()
create_item() create_item()
def test_for_single_record(self):
so_name = create_so()
transaction_processing([{"name": so_name}], "Sales Order", "Sales Invoice")
data = frappe.db.get_list(
"Sales Invoice",
filters={"posting_date": date.today(), "customer": "Bulk Customer"},
fields=["*"],
)
if not data:
self.fail("No Sales Invoice Created !")
def test_entry_in_log(self): def test_entry_in_log(self):
so_name = create_so() so_name = create_so()
transaction_processing([{"name": so_name}], "Sales Order", "Sales Invoice") transaction_processing([{"name": so_name}], "Sales Order", "Sales Invoice")

View File

@ -1221,6 +1221,7 @@
}, },
{ {
"default": "0", "default": "0",
"depends_on": "apply_tds",
"fieldname": "tax_withholding_net_total", "fieldname": "tax_withholding_net_total",
"fieldtype": "Currency", "fieldtype": "Currency",
"hidden": 1, "hidden": 1,
@ -1230,12 +1231,13 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "apply_tds",
"fieldname": "base_tax_withholding_net_total", "fieldname": "base_tax_withholding_net_total",
"fieldtype": "Currency", "fieldtype": "Currency",
"hidden": 1, "hidden": 1,
"label": "Base Tax Withholding Net Total", "label": "Base Tax Withholding Net Total",
"no_copy": 1, "no_copy": 1,
"options": "currency", "options": "Company:company:default_currency",
"print_hide": 1, "print_hide": 1,
"read_only": 1 "read_only": 1
}, },
@ -1269,7 +1271,7 @@
"idx": 105, "idx": 105,
"is_submittable": 1, "is_submittable": 1,
"links": [], "links": [],
"modified": "2022-12-25 18:08:59.074182", "modified": "2023-01-28 18:59:16.322824",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Buying", "module": "Buying",
"name": "Purchase Order", "name": "Purchase Order",

View File

@ -15,60 +15,4 @@ from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
class TestProcurementTracker(FrappeTestCase): class TestProcurementTracker(FrappeTestCase):
def test_result_for_procurement_tracker(self): pass
filters = {"company": "_Test Procurement Company", "cost_center": "Main - _TPC"}
expected_data = self.generate_expected_data()
report = execute(filters)
length = len(report[1])
self.assertEqual(expected_data, report[1][length - 1])
def generate_expected_data(self):
if not frappe.db.exists("Company", "_Test Procurement Company"):
frappe.get_doc(
dict(
doctype="Company",
company_name="_Test Procurement Company",
abbr="_TPC",
default_currency="INR",
country="Pakistan",
)
).insert()
warehouse = create_warehouse("_Test Procurement Warehouse", company="_Test Procurement Company")
mr = make_material_request(
company="_Test Procurement Company", warehouse=warehouse, cost_center="Main - _TPC"
)
po = make_purchase_order(mr.name)
po.supplier = "_Test Supplier"
po.get("items")[0].cost_center = "Main - _TPC"
po.submit()
pr = make_purchase_receipt(po.name)
pr.get("items")[0].cost_center = "Main - _TPC"
pr.submit()
date_obj = datetime.date(datetime.now())
po.load_from_db()
expected_data = {
"material_request_date": date_obj,
"cost_center": "Main - _TPC",
"project": None,
"requesting_site": "_Test Procurement Warehouse - _TPC",
"requestor": "Administrator",
"material_request_no": mr.name,
"item_code": "_Test Item",
"quantity": 10.0,
"unit_of_measurement": "_Test UOM",
"status": "To Bill",
"purchase_order_date": date_obj,
"purchase_order": po.name,
"supplier": "_Test Supplier",
"estimated_cost": 0.0,
"actual_cost": 0.0,
"purchase_order_amt": po.net_total,
"purchase_order_amt_in_company_currency": po.base_net_total,
"expected_delivery_date": date_obj,
"actual_delivery_date": date_obj,
}
return expected_data

View File

@ -282,6 +282,7 @@ def _make_customer(source_name, target_doc=None, ignore_permissions=False):
"contact_no": "phone_1", "contact_no": "phone_1",
"fax": "fax_1", "fax": "fax_1",
}, },
"field_no_map": ["disabled"],
} }
}, },
target_doc, target_doc,
@ -390,7 +391,7 @@ def get_lead_details(lead, posting_date=None, company=None):
{ {
"territory": lead.territory, "territory": lead.territory,
"customer_name": lead.company_name or lead.lead_name, "customer_name": lead.company_name or lead.lead_name,
"contact_display": " ".join(filter(None, [lead.salutation, lead.lead_name])), "contact_display": " ".join(filter(None, [lead.lead_name])),
"contact_email": lead.email_id, "contact_email": lead.email_id,
"contact_mobile": lead.mobile_no, "contact_mobile": lead.mobile_no,
"contact_phone": lead.phone, "contact_phone": lead.phone,

View File

@ -18,9 +18,11 @@ def create_new_cost_center_allocation_records(cc_allocations):
cca = frappe.new_doc("Cost Center Allocation") cca = frappe.new_doc("Cost Center Allocation")
cca.main_cost_center = main_cc cca.main_cost_center = main_cc
cca.valid_from = today() cca.valid_from = today()
cca._skip_from_date_validation = True
for child_cc, percentage in allocations.items(): for child_cc, percentage in allocations.items():
cca.append("allocation_percentages", ({"cost_center": child_cc, "percentage": percentage})) cca.append("allocation_percentages", ({"cost_center": child_cc, "percentage": percentage}))
cca.save() cca.save()
cca.submit() cca.submit()

View File

@ -10,62 +10,6 @@ from frappe.website.serve import get_response
class TestHomepageSection(unittest.TestCase): class TestHomepageSection(unittest.TestCase):
def test_homepage_section_card(self):
try:
frappe.get_doc(
{
"doctype": "Homepage Section",
"name": "Card Section",
"section_based_on": "Cards",
"section_cards": [
{
"title": "Card 1",
"subtitle": "Subtitle 1",
"content": "This is test card 1",
"route": "/card-1",
},
{
"title": "Card 2",
"subtitle": "Subtitle 2",
"content": "This is test card 2",
"image": "test.jpg",
},
],
"no_of_columns": 3,
}
).insert(ignore_if_duplicate=True)
except frappe.DuplicateEntryError:
pass
set_request(method="GET", path="home")
response = get_response()
self.assertEqual(response.status_code, 200)
html = frappe.safe_decode(response.get_data())
soup = BeautifulSoup(html, "html.parser")
sections = soup.find("main").find_all("section")
self.assertEqual(len(sections), 3)
homepage_section = sections[2]
self.assertEqual(homepage_section.h3.text, "Card Section")
cards = homepage_section.find_all(class_="card")
self.assertEqual(len(cards), 2)
self.assertEqual(cards[0].h5.text, "Card 1")
self.assertEqual(cards[0].a["href"], "/card-1")
self.assertEqual(cards[1].p.text, "Subtitle 2")
img = cards[1].find(class_="card-img-top")
self.assertEqual(img["src"], "test.jpg")
self.assertEqual(img["loading"], "lazy")
# cleanup
frappe.db.rollback()
def test_homepage_section_custom_html(self): def test_homepage_section_custom_html(self):
frappe.get_doc( frappe.get_doc(
{ {

View File

@ -122,7 +122,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
calculate_item_values() { calculate_item_values() {
var me = this; var me = this;
if (!this.discount_amount_applied) { if (!this.discount_amount_applied) {
for (item of this.frm.doc.items || []) { for (const item of this.frm.doc.items || []) {
frappe.model.round_floats_in(item); frappe.model.round_floats_in(item);
item.net_rate = item.rate; item.net_rate = item.rate;
item.qty = item.qty === undefined ? (me.frm.doc.is_return ? -1 : 1) : item.qty; item.qty = item.qty === undefined ? (me.frm.doc.is_return ? -1 : 1) : item.qty;

View File

@ -1691,6 +1691,10 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
var me = this; var me = this;
var valid = true; var valid = true;
if (frappe.flags.ignore_company_party_validation) {
return valid;
}
$.each(["company", "customer"], function(i, fieldname) { $.each(["company", "customer"], function(i, fieldname) {
if(frappe.meta.has_field(me.frm.doc.doctype, fieldname) && !["Purchase Order","Purchase Invoice"].includes(me.frm.doc.doctype)) { if(frappe.meta.has_field(me.frm.doc.doctype, fieldname) && !["Purchase Order","Purchase Invoice"].includes(me.frm.doc.doctype)) {
if (!me.frm.doc[fieldname]) { if (!me.frm.doc[fieldname]) {

View File

@ -13,19 +13,11 @@ frappe.setup.on("before_load", function () {
erpnext.setup.slides_settings = [ erpnext.setup.slides_settings = [
{ {
// Brand // Organization
name: 'brand', name: 'organization',
icon: "fa fa-bookmark", title: __("Setup your organization"),
title: __("The Brand"), icon: "fa fa-building",
// help: __('Upload your letter head and logo. (you can edit them later).'),
fields: [ fields: [
{
fieldtype: "Attach Image", fieldname: "attach_logo",
label: __("Attach Logo"),
description: __("100px by 100px"),
is_private: 0,
align: 'center'
},
{ {
fieldname: 'company_name', fieldname: 'company_name',
label: __('Company Name'), label: __('Company Name'),
@ -35,54 +27,9 @@ erpnext.setup.slides_settings = [
{ {
fieldname: 'company_abbr', fieldname: 'company_abbr',
label: __('Company Abbreviation'), label: __('Company Abbreviation'),
fieldtype: 'Data'
}
],
onload: function(slide) {
this.bind_events(slide);
},
bind_events: function (slide) {
slide.get_input("company_name").on("change", function () {
var parts = slide.get_input("company_name").val().split(" ");
var abbr = $.map(parts, function (p) { return p ? p.substr(0, 1) : null }).join("");
slide.get_field("company_abbr").set_value(abbr.slice(0, 10).toUpperCase());
}).val(frappe.boot.sysdefaults.company_name || "").trigger("change");
slide.get_input("company_abbr").on("change", function () {
if (slide.get_input("company_abbr").val().length > 10) {
frappe.msgprint(__("Company Abbreviation cannot have more than 5 characters"));
slide.get_field("company_abbr").set_value("");
}
});
},
validate: function() {
if ((this.values.company_name || "").toLowerCase() == "company") {
frappe.msgprint(__("Company Name cannot be Company"));
return false;
}
if (!this.values.company_abbr) {
return false;
}
if (this.values.company_abbr.length > 10) {
return false;
}
return true;
}
},
{
// Organisation
name: 'organisation',
title: __("Your Organization"),
icon: "fa fa-building",
fields: [
{
fieldname: 'company_tagline',
label: __('What does it do?'),
fieldtype: 'Data', fieldtype: 'Data',
placeholder: __('e.g. "Build tools for builders"'), hidden: 1
reqd: 1
}, },
{ fieldname: 'bank_account', label: __('Bank Name'), fieldtype: 'Data', reqd: 1 },
{ {
fieldname: 'chart_of_accounts', label: __('Chart of Accounts'), fieldname: 'chart_of_accounts', label: __('Chart of Accounts'),
options: "", fieldtype: 'Select' options: "", fieldtype: 'Select'
@ -94,40 +41,24 @@ erpnext.setup.slides_settings = [
], ],
onload: function (slide) { onload: function (slide) {
this.load_chart_of_accounts(slide);
this.bind_events(slide); this.bind_events(slide);
this.load_chart_of_accounts(slide);
this.set_fy_dates(slide); this.set_fy_dates(slide);
}, },
validate: function () { validate: function () {
let me = this;
let exist;
if (!this.validate_fy_dates()) { if (!this.validate_fy_dates()) {
return false; return false;
} }
// Validate bank name if ((this.values.company_name || "").toLowerCase() == "company") {
if(me.values.bank_account) { frappe.msgprint(__("Company Name cannot be Company"));
frappe.call({ return false;
async: false, }
method: "erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts.validate_bank_account", if (!this.values.company_abbr) {
args: { return false;
"coa": me.values.chart_of_accounts, }
"bank_account": me.values.bank_account if (this.values.company_abbr.length > 10) {
}, return false;
callback: function (r) {
if(r.message){
exist = r.message;
me.get_field("bank_account").set_value("");
let message = __('Account {0} already exists. Please enter a different name for your bank account.',
[me.values.bank_account]
);
frappe.msgprint(message);
}
}
});
return !exist; // Return False if exist = true
} }
return true; return true;
@ -151,15 +82,15 @@ erpnext.setup.slides_settings = [
var country = frappe.wizard.values.country; var country = frappe.wizard.values.country;
if (country) { if (country) {
var fy = erpnext.setup.fiscal_years[country]; let fy = erpnext.setup.fiscal_years[country];
var current_year = moment(new Date()).year(); let current_year = moment(new Date()).year();
var next_year = current_year + 1; let next_year = current_year + 1;
if (!fy) { if (!fy) {
fy = ["01-01", "12-31"]; fy = ["01-01", "12-31"];
next_year = current_year; next_year = current_year;
} }
var year_start_date = current_year + "-" + fy[0]; let year_start_date = current_year + "-" + fy[0];
if (year_start_date > frappe.datetime.get_today()) { if (year_start_date > frappe.datetime.get_today()) {
next_year = current_year; next_year = current_year;
current_year -= 1; current_year -= 1;
@ -171,7 +102,7 @@ erpnext.setup.slides_settings = [
load_chart_of_accounts: function (slide) { load_chart_of_accounts: function (slide) {
var country = frappe.wizard.values.country; let country = frappe.wizard.values.country;
if (country) { if (country) {
frappe.call({ frappe.call({
@ -202,12 +133,25 @@ erpnext.setup.slides_settings = [
me.charts_modal(slide, chart_template); me.charts_modal(slide, chart_template);
}); });
slide.get_input("company_name").on("change", function () {
let parts = slide.get_input("company_name").val().split(" ");
let abbr = $.map(parts, function (p) { return p ? p.substr(0, 1) : null }).join("");
slide.get_field("company_abbr").set_value(abbr.slice(0, 10).toUpperCase());
}).val(frappe.boot.sysdefaults.company_name || "").trigger("change");
slide.get_input("company_abbr").on("change", function () {
if (slide.get_input("company_abbr").val().length > 10) {
frappe.msgprint(__("Company Abbreviation cannot have more than 5 characters"));
slide.get_field("company_abbr").set_value("");
}
});
}, },
charts_modal: function(slide, chart_template) { charts_modal: function(slide, chart_template) {
let parent = __('All Accounts'); let parent = __('All Accounts');
var dialog = new frappe.ui.Dialog({ let dialog = new frappe.ui.Dialog({
title: chart_template, title: chart_template,
fields: [ fields: [
{'fieldname': 'expand_all', 'label': __('Expand All'), 'fieldtype': 'Button', {'fieldname': 'expand_all', 'label': __('Expand All'), 'fieldtype': 'Button',

View File

@ -491,7 +491,20 @@ erpnext.utils.update_child_items = function(opts) {
const child_meta = frappe.get_meta(`${frm.doc.doctype} Item`); const child_meta = frappe.get_meta(`${frm.doc.doctype} Item`);
const get_precision = (fieldname) => child_meta.fields.find(f => f.fieldname == fieldname).precision; const get_precision = (fieldname) => child_meta.fields.find(f => f.fieldname == fieldname).precision;
this.data = []; this.data = frm.doc[opts.child_docname].map((d) => {
return {
"docname": d.name,
"name": d.name,
"item_code": d.item_code,
"delivery_date": d.delivery_date,
"schedule_date": d.schedule_date,
"conversion_factor": d.conversion_factor,
"qty": d.qty,
"rate": d.rate,
"uom": d.uom
}
});
const fields = [{ const fields = [{
fieldtype:'Data', fieldtype:'Data',
fieldname:"docname", fieldname:"docname",
@ -588,7 +601,7 @@ erpnext.utils.update_child_items = function(opts) {
}) })
} }
const dialog = new frappe.ui.Dialog({ new frappe.ui.Dialog({
title: __("Update Items"), title: __("Update Items"),
fields: [ fields: [
{ {
@ -624,24 +637,7 @@ erpnext.utils.update_child_items = function(opts) {
refresh_field("items"); refresh_field("items");
}, },
primary_action_label: __('Update') primary_action_label: __('Update')
}); }).show();
frm.doc[opts.child_docname].forEach(d => {
dialog.fields_dict.trans_items.df.data.push({
"docname": d.name,
"name": d.name,
"item_code": d.item_code,
"delivery_date": d.delivery_date,
"schedule_date": d.schedule_date,
"conversion_factor": d.conversion_factor,
"qty": d.qty,
"rate": d.rate,
"uom": d.uom
});
this.data = dialog.fields_dict.trans_items.df.data;
dialog.fields_dict.trans_items.grid.refresh();
})
dialog.show();
} }
erpnext.utils.map_current_doc = function(opts) { erpnext.utils.map_current_doc = function(opts) {

View File

@ -26,7 +26,7 @@ from erpnext.manufacturing.doctype.production_plan.production_plan import (
from erpnext.selling.doctype.customer.customer import check_credit_limit from erpnext.selling.doctype.customer.customer import check_credit_limit
from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults
from erpnext.stock.doctype.item.item import get_item_defaults from erpnext.stock.doctype.item.item import get_item_defaults
from erpnext.stock.get_item_details import get_default_bom from erpnext.stock.get_item_details import get_default_bom, get_price_list_rate
from erpnext.stock.stock_balance import get_reserved_qty, update_bin_qty from erpnext.stock.stock_balance import get_reserved_qty, update_bin_qty
form_grid_templates = {"items": "templates/form_grid/item_grid.html"} form_grid_templates = {"items": "templates/form_grid/item_grid.html"}
@ -590,6 +590,23 @@ def make_material_request(source_name, target_doc=None):
target.qty = qty - requested_item_qty.get(source.name, 0) target.qty = qty - requested_item_qty.get(source.name, 0)
target.stock_qty = flt(target.qty) * flt(target.conversion_factor) target.stock_qty = flt(target.qty) * flt(target.conversion_factor)
args = target.as_dict().copy()
args.update(
{
"company": source_parent.get("company"),
"price_list": frappe.db.get_single_value("Buying Settings", "buying_price_list"),
"currency": source_parent.get("currency"),
"conversion_rate": source_parent.get("conversion_rate"),
}
)
target.rate = flt(
get_price_list_rate(args=args, item_doc=frappe.get_cached_doc("Item", target.item_code)).get(
"price_list_rate"
)
)
target.amount = target.qty * target.rate
doc = get_mapped_doc( doc = get_mapped_doc(
"Sales Order", "Sales Order",
source_name, source_name,

View File

@ -17,45 +17,79 @@ from erpnext.stock.utils import scan_barcode
def search_by_term(search_term, warehouse, price_list): def search_by_term(search_term, warehouse, price_list):
result = search_for_serial_or_batch_or_barcode_number(search_term) or {} result = search_for_serial_or_batch_or_barcode_number(search_term) or {}
item_code = result.get("item_code") or search_term item_code = result.get("item_code", search_term)
serial_no = result.get("serial_no") or "" serial_no = result.get("serial_no", "")
batch_no = result.get("batch_no") or "" batch_no = result.get("batch_no", "")
barcode = result.get("barcode") or "" barcode = result.get("barcode", "")
if result: if not result:
item_info = frappe.db.get_value( return
"Item",
item_code,
[
"name as item_code",
"item_name",
"description",
"stock_uom",
"image as item_image",
"is_stock_item",
],
as_dict=1,
)
item_stock_qty, is_stock_item = get_stock_availability(item_code, warehouse) item_doc = frappe.get_doc("Item", item_code)
price_list_rate, currency = frappe.db.get_value(
"Item Price",
{"price_list": price_list, "item_code": item_code},
["price_list_rate", "currency"],
) or [None, None]
item_info.update( if not item_doc:
return
item = {
"barcode": barcode,
"batch_no": batch_no,
"description": item_doc.description,
"is_stock_item": item_doc.is_stock_item,
"item_code": item_doc.name,
"item_image": item_doc.image,
"item_name": item_doc.item_name,
"serial_no": serial_no,
"stock_uom": item_doc.stock_uom,
"uom": item_doc.stock_uom,
}
if barcode:
barcode_info = next(filter(lambda x: x.barcode == barcode, item_doc.get("barcodes", [])), None)
if barcode_info and barcode_info.uom:
uom = next(filter(lambda x: x.uom == barcode_info.uom, item_doc.uoms), {})
item.update(
{
"uom": barcode_info.uom,
"conversion_factor": uom.get("conversion_factor", 1),
}
)
item_stock_qty, is_stock_item = get_stock_availability(item_code, warehouse)
item_stock_qty = item_stock_qty // item.get("conversion_factor")
item.update({"actual_qty": item_stock_qty})
price = frappe.get_list(
doctype="Item Price",
filters={
"price_list": price_list,
"item_code": item_code,
},
fields=["uom", "stock_uom", "currency", "price_list_rate"],
)
def __sort(p):
p_uom = p.get("uom")
if p_uom == item.get("uom"):
return 0
elif p_uom == item.get("stock_uom"):
return 1
else:
return 2
# sort by fallback preference. always pick exact uom match if available
price = sorted(price, key=__sort)
if len(price) > 0:
p = price.pop(0)
item.update(
{ {
"serial_no": serial_no, "currency": p.get("currency"),
"batch_no": batch_no, "price_list_rate": p.get("price_list_rate"),
"barcode": barcode,
"price_list_rate": price_list_rate,
"currency": currency,
"actual_qty": item_stock_qty,
} }
) )
return {"items": [item_info]} return {"items": [item]}
@frappe.whitelist() @frappe.whitelist()
@ -121,33 +155,43 @@ def get_items(start, page_length, price_list, item_group, pos_profile, search_te
as_dict=1, as_dict=1,
) )
if items_data: # return (empty) list if there are no results
items = [d.item_code for d in items_data] if not items_data:
item_prices_data = frappe.get_all( return result
for item in items_data:
uoms = frappe.get_doc("Item", item.item_code).get("uoms", [])
item.actual_qty, _ = get_stock_availability(item.item_code, warehouse)
item.uom = item.stock_uom
item_price = frappe.get_all(
"Item Price", "Item Price",
fields=["item_code", "price_list_rate", "currency"], fields=["price_list_rate", "currency", "uom"],
filters={"price_list": price_list, "item_code": ["in", items]}, filters={
"price_list": price_list,
"item_code": item.item_code,
"selling": True,
},
) )
item_prices = {} if not item_price:
for d in item_prices_data: result.append(item)
item_prices[d.item_code] = d
for item in items_data: for price in item_price:
item_code = item.item_code uom = next(filter(lambda x: x.uom == price.uom, uoms), {})
item_price = item_prices.get(item_code) or {}
item_stock_qty, is_stock_item = get_stock_availability(item_code, warehouse)
row = {} if price.uom != item.stock_uom and uom and uom.conversion_factor:
row.update(item) item.actual_qty = item.actual_qty // uom.conversion_factor
row.update(
result.append(
{ {
"price_list_rate": item_price.get("price_list_rate"), **item,
"currency": item_price.get("currency"), "price_list_rate": price.get("price_list_rate"),
"actual_qty": item_stock_qty, "currency": price.get("currency"),
"uom": price.uom or item.uom,
} }
) )
result.append(row)
return {"items": result} return {"items": result}

View File

@ -542,12 +542,12 @@ erpnext.PointOfSale.Controller = class {
if (!this.frm.doc.customer) if (!this.frm.doc.customer)
return this.raise_customer_selection_alert(); return this.raise_customer_selection_alert();
const { item_code, batch_no, serial_no, rate } = item; const { item_code, batch_no, serial_no, rate, uom } = item;
if (!item_code) if (!item_code)
return; return;
const new_item = { item_code, batch_no, rate, [field]: value }; const new_item = { item_code, batch_no, rate, uom, [field]: value };
if (serial_no) { if (serial_no) {
await this.check_serial_no_availablilty(item_code, this.frm.doc.set_warehouse, serial_no); await this.check_serial_no_availablilty(item_code, this.frm.doc.set_warehouse, serial_no);
@ -649,6 +649,7 @@ erpnext.PointOfSale.Controller = class {
const is_stock_item = resp[1]; const is_stock_item = resp[1];
frappe.dom.unfreeze(); frappe.dom.unfreeze();
const bold_uom = item_row.stock_uom.bold();
const bold_item_code = item_row.item_code.bold(); const bold_item_code = item_row.item_code.bold();
const bold_warehouse = warehouse.bold(); const bold_warehouse = warehouse.bold();
const bold_available_qty = available_qty.toString().bold() const bold_available_qty = available_qty.toString().bold()
@ -664,7 +665,7 @@ erpnext.PointOfSale.Controller = class {
} }
} else if (is_stock_item && available_qty < qty_needed) { } else if (is_stock_item && available_qty < qty_needed) {
frappe.throw({ frappe.throw({
message: __('Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.', [bold_item_code, bold_warehouse, bold_available_qty]), message: __('Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2} {3}.', [bold_item_code, bold_warehouse, bold_available_qty, bold_uom]),
indicator: 'orange' indicator: 'orange'
}); });
frappe.utils.play_sound("error"); frappe.utils.play_sound("error");

View File

@ -609,7 +609,7 @@ erpnext.PointOfSale.ItemCart = class {
if (item_data.rate && item_data.amount && item_data.rate !== item_data.amount) { if (item_data.rate && item_data.amount && item_data.rate !== item_data.amount) {
return ` return `
<div class="item-qty-rate"> <div class="item-qty-rate">
<div class="item-qty"><span>${item_data.qty || 0}</span></div> <div class="item-qty"><span>${item_data.qty || 0} ${item_data.uom}</span></div>
<div class="item-rate-amount"> <div class="item-rate-amount">
<div class="item-rate">${format_currency(item_data.amount, currency)}</div> <div class="item-rate">${format_currency(item_data.amount, currency)}</div>
<div class="item-amount">${format_currency(item_data.rate, currency)}</div> <div class="item-amount">${format_currency(item_data.rate, currency)}</div>
@ -618,7 +618,7 @@ erpnext.PointOfSale.ItemCart = class {
} else { } else {
return ` return `
<div class="item-qty-rate"> <div class="item-qty-rate">
<div class="item-qty"><span>${item_data.qty || 0}</span></div> <div class="item-qty"><span>${item_data.qty || 0} ${item_data.uom}</span></div>
<div class="item-rate-amount"> <div class="item-rate-amount">
<div class="item-rate">${format_currency(item_data.rate, currency)}</div> <div class="item-rate">${format_currency(item_data.rate, currency)}</div>
</div> </div>

View File

@ -78,7 +78,7 @@ erpnext.PointOfSale.ItemSelector = class {
get_item_html(item) { get_item_html(item) {
const me = this; const me = this;
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
const { item_image, serial_no, batch_no, barcode, actual_qty, stock_uom, price_list_rate } = item; const { item_image, serial_no, batch_no, barcode, actual_qty, uom, price_list_rate } = item;
const precision = flt(price_list_rate, 2) % 1 != 0 ? 2 : 0; const precision = flt(price_list_rate, 2) % 1 != 0 ? 2 : 0;
let indicator_color; let indicator_color;
let qty_to_display = actual_qty; let qty_to_display = actual_qty;
@ -118,7 +118,7 @@ erpnext.PointOfSale.ItemSelector = class {
return ( return (
`<div class="item-wrapper" `<div class="item-wrapper"
data-item-code="${escape(item.item_code)}" data-serial-no="${escape(serial_no)}" data-item-code="${escape(item.item_code)}" data-serial-no="${escape(serial_no)}"
data-batch-no="${escape(batch_no)}" data-uom="${escape(stock_uom)}" data-batch-no="${escape(batch_no)}" data-uom="${escape(uom)}"
data-rate="${escape(price_list_rate || 0)}" data-rate="${escape(price_list_rate || 0)}"
title="${item.item_name}"> title="${item.item_name}">
@ -128,7 +128,7 @@ erpnext.PointOfSale.ItemSelector = class {
<div class="item-name"> <div class="item-name">
${frappe.ellipsis(item.item_name, 18)} ${frappe.ellipsis(item.item_name, 18)}
</div> </div>
<div class="item-rate">${format_currency(price_list_rate, item.currency, precision) || 0}</div> <div class="item-rate">${format_currency(price_list_rate, item.currency, precision) || 0} / ${uom}</div>
</div> </div>
</div>` </div>`
); );

View File

@ -94,7 +94,7 @@ erpnext.PointOfSale.PastOrderSummary = class {
get_item_html(doc, item_data) { get_item_html(doc, item_data) {
return `<div class="item-row-wrapper"> return `<div class="item-row-wrapper">
<div class="item-name">${item_data.item_name}</div> <div class="item-name">${item_data.item_name}</div>
<div class="item-qty">${item_data.qty || 0}</div> <div class="item-qty">${item_data.qty || 0} ${item_data.uom}</div>
<div class="item-rate-disc">${get_rate_discount_html()}</div> <div class="item-rate-disc">${get_rate_discount_html()}</div>
</div>`; </div>`;

View File

@ -4,7 +4,6 @@
import frappe import frappe
from frappe import _ from frappe import _
from frappe.utils import cstr, getdate from frappe.utils import cstr, getdate
from .default_website import website_maker
def create_fiscal_year_and_company(args): def create_fiscal_year_and_company(args):
@ -48,83 +47,6 @@ def enable_shopping_cart(args): # nosemgrep
).insert() ).insert()
def create_email_digest():
from frappe.utils.user import get_system_managers
system_managers = get_system_managers(only_name=True)
if not system_managers:
return
recipients = []
for d in system_managers:
recipients.append({"recipient": d})
companies = frappe.db.sql_list("select name FROM `tabCompany`")
for company in companies:
if not frappe.db.exists("Email Digest", "Default Weekly Digest - " + company):
edigest = frappe.get_doc(
{
"doctype": "Email Digest",
"name": "Default Weekly Digest - " + company,
"company": company,
"frequency": "Weekly",
"recipients": recipients,
}
)
for df in edigest.meta.get("fields", {"fieldtype": "Check"}):
if df.fieldname != "scheduler_errors":
edigest.set(df.fieldname, 1)
edigest.insert()
# scheduler errors digest
if companies:
edigest = frappe.new_doc("Email Digest")
edigest.update(
{
"name": "Scheduler Errors",
"company": companies[0],
"frequency": "Daily",
"recipients": recipients,
"scheduler_errors": 1,
"enabled": 1,
}
)
edigest.insert()
def create_logo(args):
if args.get("attach_logo"):
attach_logo = args.get("attach_logo").split(",")
if len(attach_logo) == 3:
filename, filetype, content = attach_logo
_file = frappe.get_doc(
{
"doctype": "File",
"file_name": filename,
"attached_to_doctype": "Website Settings",
"attached_to_name": "Website Settings",
"decode": True,
}
)
_file.save()
fileurl = _file.file_url
frappe.db.set_value(
"Website Settings",
"Website Settings",
"brand_html",
"<img src='{0}' style='max-width: 40px; max-height: 25px;'> {1}".format(
fileurl, args.get("company_name")
),
)
def create_website(args):
website_maker(args)
def get_fy_details(fy_start_date, fy_end_date): def get_fy_details(fy_start_date, fy_end_date):
start_year = getdate(fy_start_date).year start_year = getdate(fy_start_date).year
if start_year == getdate(fy_end_date).year: if start_year == getdate(fy_end_date).year:

View File

@ -1,89 +0,0 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
import frappe
from frappe import _
from frappe.utils import nowdate
class website_maker(object):
def __init__(self, args):
self.args = args
self.company = args.company_name
self.tagline = args.company_tagline
self.user = args.get("email")
self.make_web_page()
self.make_website_settings()
self.make_blog()
def make_web_page(self):
# home page
homepage = frappe.get_doc("Homepage", "Homepage")
homepage.company = self.company
homepage.tag_line = self.tagline
homepage.setup_items()
homepage.save()
def make_website_settings(self):
# update in home page in settings
website_settings = frappe.get_doc("Website Settings", "Website Settings")
website_settings.home_page = "home"
website_settings.brand_html = self.company
website_settings.copyright = self.company
website_settings.top_bar_items = []
website_settings.append(
"top_bar_items", {"doctype": "Top Bar Item", "label": "Contact", "url": "/contact"}
)
website_settings.append(
"top_bar_items", {"doctype": "Top Bar Item", "label": "Blog", "url": "/blog"}
)
website_settings.append(
"top_bar_items", {"doctype": "Top Bar Item", "label": _("Products"), "url": "/all-products"}
)
website_settings.save()
def make_blog(self):
blog_category = frappe.get_doc(
{"doctype": "Blog Category", "category_name": "general", "published": 1, "title": _("General")}
).insert()
if not self.user:
# Admin setup
return
blogger = frappe.new_doc("Blogger")
user = frappe.get_doc("User", self.user)
blogger.user = self.user
blogger.full_name = user.first_name + (" " + user.last_name if user.last_name else "")
blogger.short_name = user.first_name.lower()
blogger.avatar = user.user_image
blogger.insert()
frappe.get_doc(
{
"doctype": "Blog Post",
"title": "Welcome",
"published": 1,
"published_on": nowdate(),
"blogger": blogger.name,
"blog_category": blog_category.name,
"blog_intro": "My First Blog",
"content": frappe.get_template("setup/setup_wizard/data/sample_blog_post.html").render(),
}
).insert()
def test():
frappe.delete_doc("Web Page", "test-company")
frappe.delete_doc("Blog Post", "welcome")
frappe.delete_doc("Blogger", "administrator")
frappe.delete_doc("Blog Category", "general")
website_maker(
{
"company": "Test Company",
"company_tagline": "Better Tools for Everyone",
"name": "Administrator",
}
)
frappe.db.commit()

View File

@ -5,7 +5,6 @@
import frappe import frappe
from frappe import _ from frappe import _
from .operations import company_setup
from .operations import install_fixtures as fixtures from .operations import install_fixtures as fixtures
@ -35,7 +34,6 @@ def get_setup_stages(args=None):
"fail_msg": "Failed to set defaults", "fail_msg": "Failed to set defaults",
"tasks": [ "tasks": [
{"fn": setup_defaults, "args": args, "fail_msg": _("Failed to setup defaults")}, {"fn": setup_defaults, "args": args, "fail_msg": _("Failed to setup defaults")},
{"fn": stage_four, "args": args, "fail_msg": _("Failed to create website")},
], ],
}, },
{ {
@ -60,12 +58,6 @@ def setup_defaults(args):
fixtures.install_defaults(frappe._dict(args)) fixtures.install_defaults(frappe._dict(args))
def stage_four(args):
company_setup.create_website(args)
company_setup.create_email_digest()
company_setup.create_logo(args)
def fin(args): def fin(args):
frappe.local.message_log = [] frappe.local.message_log = []
login_as_first_user(args) login_as_first_user(args)
@ -81,5 +73,4 @@ def setup_complete(args=None):
stage_fixtures(args) stage_fixtures(args)
setup_company(args) setup_company(args)
setup_defaults(args) setup_defaults(args)
stage_four(args)
fin(args) fin(args)

View File

@ -894,6 +894,12 @@ function open_form(frm, doctype, child_doctype, parentfield) {
new_child_doc.uom = frm.doc.stock_uom; new_child_doc.uom = frm.doc.stock_uom;
new_child_doc.description = frm.doc.description; new_child_doc.description = frm.doc.description;
frappe.ui.form.make_quick_entry(doctype, null, null, new_doc); frappe.run_serially([
() => frappe.ui.form.make_quick_entry(doctype, null, null, new_doc),
() => {
frappe.flags.ignore_company_party_validation = true;
frappe.model.trigger("item_code", frm.doc.name, new_child_doc);
}
])
}); });
} }

View File

@ -221,7 +221,7 @@ class QualityInspection(Document):
def item_query(doctype, txt, searchfield, start, page_len, filters): def item_query(doctype, txt, searchfield, start, page_len, filters):
from frappe.desk.reportview import get_match_cond from frappe.desk.reportview import get_match_cond
from_doctype = cstr(filters.get("doctype")) from_doctype = cstr(filters.get("from"))
if not from_doctype or not frappe.db.exists("DocType", from_doctype): if not from_doctype or not frappe.db.exists("DocType", from_doctype):
return [] return []

View File

@ -169,6 +169,8 @@ frappe.ui.form.on('Stock Entry', {
}, },
refresh: function(frm) { refresh: function(frm) {
frm.trigger("get_items_from_transit_entry");
if(!frm.doc.docstatus) { if(!frm.doc.docstatus) {
frm.trigger('validate_purpose_consumption'); frm.trigger('validate_purpose_consumption');
frm.add_custom_button(__('Material Request'), function() { frm.add_custom_button(__('Material Request'), function() {
@ -337,6 +339,28 @@ frappe.ui.form.on('Stock Entry', {
} }
}, },
get_items_from_transit_entry: function(frm) {
if (frm.doc.docstatus===0) {
frm.add_custom_button(__('Transit Entry'), function() {
erpnext.utils.map_current_doc({
method: "erpnext.stock.doctype.stock_entry.stock_entry.make_stock_in_entry",
source_doctype: "Stock Entry",
target: frm,
date_field: "posting_date",
setters: {
stock_entry_type: "Material Transfer",
purpose: "Material Transfer",
},
get_query_filters: {
docstatus: 1,
purpose: "Material Transfer",
add_to_transit: 1,
}
})
}, __("Get Items From"));
}
},
before_save: function(frm) { before_save: function(frm) {
frm.doc.items.forEach((item) => { frm.doc.items.forEach((item) => {
item.uom = item.uom || item.stock_uom; item.uom = item.uom || item.stock_uom;

View File

@ -117,6 +117,7 @@ def make_stock_entry(**args):
args.item = "_Test Item" args.item = "_Test Item"
s.company = args.company or erpnext.get_default_company() s.company = args.company or erpnext.get_default_company()
s.add_to_transit = args.add_to_transit or 0
s.purchase_receipt_no = args.purchase_receipt_no s.purchase_receipt_no = args.purchase_receipt_no
s.delivery_note_no = args.delivery_note_no s.delivery_note_no = args.delivery_note_no
s.sales_invoice_no = args.sales_invoice_no s.sales_invoice_no = args.sales_invoice_no

View File

@ -17,6 +17,7 @@ from erpnext.stock.doctype.item.test_item import (
from erpnext.stock.doctype.serial_no.serial_no import * # noqa from erpnext.stock.doctype.serial_no.serial_no import * # noqa
from erpnext.stock.doctype.stock_entry.stock_entry import ( from erpnext.stock.doctype.stock_entry.stock_entry import (
FinishedGoodError, FinishedGoodError,
make_stock_in_entry,
move_sample_to_retention_warehouse, move_sample_to_retention_warehouse,
) )
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
@ -160,6 +161,53 @@ class TestStockEntry(FrappeTestCase):
self.assertTrue(item_code in items) self.assertTrue(item_code in items)
def test_add_to_transit_entry(self):
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
item_code = "_Test Transit Item"
company = "_Test Company"
create_warehouse("Test From Warehouse")
create_warehouse("Test Transit Warehouse")
create_warehouse("Test To Warehouse")
create_item(
item_code=item_code,
is_stock_item=1,
is_purchase_item=1,
company=company,
)
# create inward stock entry
make_stock_entry(
item_code=item_code,
target="Test From Warehouse - _TC",
qty=10,
basic_rate=100,
expense_account="Stock Adjustment - _TC",
cost_center="Main - _TC",
)
transit_entry = make_stock_entry(
item_code=item_code,
source="Test From Warehouse - _TC",
target="Test Transit Warehouse - _TC",
add_to_transit=1,
stock_entry_type="Material Transfer",
purpose="Material Transfer",
qty=10,
basic_rate=100,
expense_account="Stock Adjustment - _TC",
cost_center="Main - _TC",
)
end_transit_entry = make_stock_in_entry(transit_entry.name)
self.assertEqual(transit_entry.name, end_transit_entry.outgoing_stock_entry)
self.assertEqual(transit_entry.name, end_transit_entry.items[0].against_stock_entry)
self.assertEqual(transit_entry.items[0].name, end_transit_entry.items[0].ste_detail)
# create add to transit
def test_material_receipt_gl_entry(self): def test_material_receipt_gl_entry(self):
company = frappe.db.get_value("Warehouse", "Stores - TCP1", "company") company = frappe.db.get_value("Warehouse", "Stores - TCP1", "company")

View File

@ -11,6 +11,7 @@ frappe.listview_settings['Subcontracting Order'] = {
"Partial Material Transferred": "purple", "Partial Material Transferred": "purple",
"Material Transferred": "blue", "Material Transferred": "blue",
"Closed": "red", "Closed": "red",
"Cancelled": "red",
}; };
return [__(doc.status), status_colors[doc.status], "status,=," + doc.status]; return [__(doc.status), status_colors[doc.status], "status,=," + doc.status];
}, },

View File

@ -1,352 +1,353 @@
{ {
"actions": [], "actions": [],
"autoname": "hash", "autoname": "hash",
"creation": "2022-04-01 19:26:31.475015", "creation": "2022-04-01 19:26:31.475015",
"doctype": "DocType", "doctype": "DocType",
"document_type": "Document", "document_type": "Document",
"editable_grid": 1, "editable_grid": 1,
"engine": "InnoDB", "engine": "InnoDB",
"field_order": [ "field_order": [
"item_code", "item_code",
"item_name", "item_name",
"bom", "bom",
"include_exploded_items", "include_exploded_items",
"column_break_3", "column_break_3",
"schedule_date", "schedule_date",
"expected_delivery_date", "expected_delivery_date",
"description_section", "description_section",
"description", "description",
"column_break_8", "column_break_8",
"image", "image",
"image_view", "image_view",
"quantity_and_rate_section", "quantity_and_rate_section",
"qty", "qty",
"received_qty", "received_qty",
"returned_qty", "returned_qty",
"column_break_13", "column_break_13",
"stock_uom", "stock_uom",
"conversion_factor", "conversion_factor",
"section_break_16", "section_break_16",
"rate", "rate",
"amount", "amount",
"column_break_19", "column_break_19",
"rm_cost_per_qty", "rm_cost_per_qty",
"service_cost_per_qty", "service_cost_per_qty",
"additional_cost_per_qty", "additional_cost_per_qty",
"warehouse_section", "warehouse_section",
"warehouse", "warehouse",
"accounting_details_section", "accounting_details_section",
"expense_account", "expense_account",
"manufacture_section", "manufacture_section",
"manufacturer", "manufacturer",
"manufacturer_part_no", "manufacturer_part_no",
"accounting_dimensions_section", "accounting_dimensions_section",
"cost_center", "cost_center",
"dimension_col_break", "dimension_col_break",
"project", "project",
"section_break_34", "section_break_34",
"page_break" "page_break"
], ],
"fields": [ "fields": [
{ {
"bold": 1, "bold": 1,
"columns": 2, "columns": 2,
"fieldname": "item_code", "fieldname": "item_code",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1, "in_list_view": 1,
"label": "Item Code", "label": "Item Code",
"options": "Item", "options": "Item",
"read_only": 1, "read_only": 1,
"reqd": 1, "reqd": 1,
"search_index": 1 "search_index": 1
}, },
{ {
"fetch_from": "item_code.item_name", "fetch_from": "item_code.item_name",
"fetch_if_empty": 1, "fetch_if_empty": 1,
"fieldname": "item_name", "fieldname": "item_name",
"fieldtype": "Data", "fieldtype": "Data",
"in_global_search": 1, "in_global_search": 1,
"label": "Item Name", "label": "Item Name",
"print_hide": 1, "print_hide": 1,
"reqd": 1 "reqd": 1
}, },
{ {
"fieldname": "column_break_3", "fieldname": "column_break_3",
"fieldtype": "Column Break" "fieldtype": "Column Break"
}, },
{ {
"bold": 1, "bold": 1,
"columns": 2, "columns": 2,
"fieldname": "schedule_date", "fieldname": "schedule_date",
"fieldtype": "Date", "fieldtype": "Date",
"label": "Required By", "label": "Required By",
"print_hide": 1, "print_hide": 1,
"read_only": 1 "read_only": 1
}, },
{ {
"allow_on_submit": 1, "allow_on_submit": 1,
"bold": 1, "bold": 1,
"fieldname": "expected_delivery_date", "fieldname": "expected_delivery_date",
"fieldtype": "Date", "fieldtype": "Date",
"label": "Expected Delivery Date", "label": "Expected Delivery Date",
"search_index": 1 "search_index": 1
}, },
{ {
"collapsible": 1, "collapsible": 1,
"fieldname": "description_section", "fieldname": "description_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Description" "label": "Description"
}, },
{ {
"fetch_from": "item_code.description", "fetch_from": "item_code.description",
"fetch_if_empty": 1, "fetch_if_empty": 1,
"fieldname": "description", "fieldname": "description",
"fieldtype": "Text Editor", "fieldtype": "Text Editor",
"label": "Description", "label": "Description",
"print_width": "300px", "print_width": "300px",
"reqd": 1, "reqd": 1,
"width": "300px" "width": "300px"
}, },
{ {
"fieldname": "column_break_8", "fieldname": "column_break_8",
"fieldtype": "Column Break" "fieldtype": "Column Break"
}, },
{ {
"fieldname": "image", "fieldname": "image",
"fieldtype": "Attach", "fieldtype": "Attach",
"hidden": 1, "hidden": 1,
"label": "Image" "label": "Image"
}, },
{ {
"fieldname": "image_view", "fieldname": "image_view",
"fieldtype": "Image", "fieldtype": "Image",
"label": "Image View", "label": "Image View",
"options": "image", "options": "image",
"print_hide": 1 "print_hide": 1
}, },
{ {
"fieldname": "quantity_and_rate_section", "fieldname": "quantity_and_rate_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Quantity and Rate" "label": "Quantity and Rate"
}, },
{ {
"bold": 1, "bold": 1,
"columns": 1, "columns": 1,
"default": "1", "default": "1",
"fieldname": "qty", "fieldname": "qty",
"fieldtype": "Float", "fieldtype": "Float",
"in_list_view": 1, "in_list_view": 1,
"label": "Quantity", "label": "Quantity",
"print_width": "60px", "print_width": "60px",
"read_only": 1, "read_only": 1,
"reqd": 1, "reqd": 1,
"width": "60px" "width": "60px"
}, },
{ {
"fieldname": "column_break_13", "fieldname": "column_break_13",
"fieldtype": "Column Break", "fieldtype": "Column Break",
"print_hide": 1 "print_hide": 1
}, },
{ {
"fieldname": "stock_uom", "fieldname": "stock_uom",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Stock UOM", "label": "Stock UOM",
"options": "UOM", "options": "UOM",
"print_width": "100px", "print_width": "100px",
"read_only": 1, "read_only": 1,
"reqd": 1, "reqd": 1,
"width": "100px" "width": "100px"
}, },
{ {
"default": "1", "default": "1",
"fieldname": "conversion_factor", "fieldname": "conversion_factor",
"fieldtype": "Float", "fieldtype": "Float",
"hidden": 1, "hidden": 1,
"label": "Conversion Factor", "label": "Conversion Factor",
"read_only": 1 "read_only": 1
}, },
{ {
"fieldname": "section_break_16", "fieldname": "section_break_16",
"fieldtype": "Section Break" "fieldtype": "Section Break"
}, },
{ {
"bold": 1, "bold": 1,
"columns": 2, "columns": 2,
"fetch_from": "item_code.standard_rate", "fetch_from": "item_code.standard_rate",
"fetch_if_empty": 1, "fetch_if_empty": 1,
"fieldname": "rate", "fieldname": "rate",
"fieldtype": "Currency", "fieldtype": "Currency",
"in_list_view": 1, "in_list_view": 1,
"label": "Rate", "label": "Rate",
"options": "currency", "options": "currency",
"read_only": 1, "read_only": 1,
"reqd": 1 "reqd": 1
}, },
{ {
"fieldname": "column_break_19", "fieldname": "column_break_19",
"fieldtype": "Column Break" "fieldtype": "Column Break"
}, },
{ {
"columns": 2, "columns": 2,
"fieldname": "amount", "fieldname": "amount",
"fieldtype": "Currency", "fieldtype": "Currency",
"in_list_view": 1, "in_list_view": 1,
"label": "Amount", "label": "Amount",
"options": "currency", "options": "currency",
"read_only": 1, "read_only": 1,
"reqd": 1 "reqd": 1
}, },
{ {
"fieldname": "warehouse_section", "fieldname": "warehouse_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Warehouse Details" "label": "Warehouse Details"
}, },
{ {
"fieldname": "warehouse", "fieldname": "warehouse",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Warehouse", "label": "Warehouse",
"options": "Warehouse", "options": "Warehouse",
"print_hide": 1, "print_hide": 1,
"reqd": 1 "reqd": 1
}, },
{ {
"collapsible": 1, "collapsible": 1,
"fieldname": "accounting_details_section", "fieldname": "accounting_details_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Accounting Details" "label": "Accounting Details"
}, },
{ {
"fieldname": "expense_account", "fieldname": "expense_account",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Expense Account", "label": "Expense Account",
"options": "Account", "options": "Account",
"print_hide": 1 "print_hide": 1
}, },
{ {
"collapsible": 1, "collapsible": 1,
"fieldname": "manufacture_section", "fieldname": "manufacture_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Manufacture" "label": "Manufacture"
}, },
{ {
"fieldname": "manufacturer", "fieldname": "manufacturer",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Manufacturer", "label": "Manufacturer",
"options": "Manufacturer" "options": "Manufacturer"
}, },
{ {
"fieldname": "manufacturer_part_no", "fieldname": "manufacturer_part_no",
"fieldtype": "Data", "fieldtype": "Data",
"label": "Manufacturer Part Number" "label": "Manufacturer Part Number"
}, },
{ {
"depends_on": "item_code", "depends_on": "item_code",
"fetch_from": "item_code.default_bom", "fetch_from": "item_code.default_bom",
"fieldname": "bom", "fetch_if_empty": 1,
"fieldtype": "Link", "fieldname": "bom",
"in_list_view": 1, "fieldtype": "Link",
"label": "BOM", "in_list_view": 1,
"options": "BOM", "label": "BOM",
"print_hide": 1, "options": "BOM",
"reqd": 1 "print_hide": 1,
}, "reqd": 1
{ },
"default": "0", {
"fieldname": "include_exploded_items", "default": "0",
"fieldtype": "Check", "fieldname": "include_exploded_items",
"label": "Include Exploded Items", "fieldtype": "Check",
"print_hide": 1 "label": "Include Exploded Items",
}, "print_hide": 1
{ },
"fieldname": "service_cost_per_qty", {
"fieldtype": "Currency", "fieldname": "service_cost_per_qty",
"label": "Service Cost Per Qty", "fieldtype": "Currency",
"read_only": 1, "label": "Service Cost Per Qty",
"reqd": 1 "read_only": 1,
}, "reqd": 1
{ },
"default": "0", {
"fieldname": "additional_cost_per_qty", "default": "0",
"fieldtype": "Currency", "fieldname": "additional_cost_per_qty",
"label": "Additional Cost Per Qty", "fieldtype": "Currency",
"read_only": 1 "label": "Additional Cost Per Qty",
}, "read_only": 1
{ },
"fieldname": "rm_cost_per_qty", {
"fieldtype": "Currency", "fieldname": "rm_cost_per_qty",
"label": "Raw Material Cost Per Qty", "fieldtype": "Currency",
"no_copy": 1, "label": "Raw Material Cost Per Qty",
"read_only": 1 "no_copy": 1,
}, "read_only": 1
{ },
"allow_on_submit": 1, {
"default": "0", "allow_on_submit": 1,
"fieldname": "page_break", "default": "0",
"fieldtype": "Check", "fieldname": "page_break",
"label": "Page Break", "fieldtype": "Check",
"no_copy": 1, "label": "Page Break",
"print_hide": 1 "no_copy": 1,
}, "print_hide": 1
{ },
"fieldname": "section_break_34", {
"fieldtype": "Section Break" "fieldname": "section_break_34",
}, "fieldtype": "Section Break"
{ },
"depends_on": "received_qty", {
"fieldname": "received_qty", "depends_on": "received_qty",
"fieldtype": "Float", "fieldname": "received_qty",
"label": "Received Qty", "fieldtype": "Float",
"no_copy": 1, "label": "Received Qty",
"print_hide": 1, "no_copy": 1,
"read_only": 1 "print_hide": 1,
}, "read_only": 1
{ },
"depends_on": "returned_qty", {
"fieldname": "returned_qty", "depends_on": "returned_qty",
"fieldtype": "Float", "fieldname": "returned_qty",
"label": "Returned Qty", "fieldtype": "Float",
"no_copy": 1, "label": "Returned Qty",
"print_hide": 1, "no_copy": 1,
"read_only": 1 "print_hide": 1,
}, "read_only": 1
{ },
"collapsible": 1, {
"fieldname": "accounting_dimensions_section", "collapsible": 1,
"fieldtype": "Section Break", "fieldname": "accounting_dimensions_section",
"label": "Accounting Dimensions" "fieldtype": "Section Break",
}, "label": "Accounting Dimensions"
{ },
"fieldname": "cost_center", {
"fieldtype": "Link", "fieldname": "cost_center",
"label": "Cost Center", "fieldtype": "Link",
"options": "Cost Center" "label": "Cost Center",
}, "options": "Cost Center"
{ },
"fieldname": "dimension_col_break", {
"fieldtype": "Column Break" "fieldname": "dimension_col_break",
}, "fieldtype": "Column Break"
{ },
"fieldname": "project", {
"fieldtype": "Link", "fieldname": "project",
"label": "Project", "fieldtype": "Link",
"options": "Project" "label": "Project",
} "options": "Project"
], }
"idx": 1, ],
"index_web_pages_for_search": 1, "idx": 1,
"istable": 1, "index_web_pages_for_search": 1,
"links": [], "istable": 1,
"modified": "2022-08-15 14:25:45.177703", "links": [],
"modified_by": "Administrator", "modified": "2023-01-20 23:25:45.363281",
"module": "Subcontracting", "modified_by": "Administrator",
"name": "Subcontracting Order Item", "module": "Subcontracting",
"naming_rule": "Random", "name": "Subcontracting Order Item",
"owner": "Administrator", "naming_rule": "Random",
"permissions": [], "owner": "Administrator",
"quick_entry": 1, "permissions": [],
"search_fields": "item_name", "quick_entry": 1,
"sort_field": "modified", "search_fields": "item_name",
"sort_order": "DESC", "sort_field": "modified",
"states": [], "sort_order": "DESC",
"track_changes": 1 "states": [],
"track_changes": 1
} }

View File

@ -38,22 +38,27 @@ def get_context(context):
if not frappe.has_website_permission(context.doc): if not frappe.has_website_permission(context.doc):
frappe.throw(_("Not Permitted"), frappe.PermissionError) frappe.throw(_("Not Permitted"), frappe.PermissionError)
# check for the loyalty program of the customer context.available_loyalty_points = 0.0
customer_loyalty_program = frappe.db.get_value( if context.doc.get("customer"):
"Customer", context.doc.customer, "loyalty_program" # check for the loyalty program of the customer
) customer_loyalty_program = frappe.db.get_value(
if customer_loyalty_program: "Customer", context.doc.customer, "loyalty_program"
from erpnext.accounts.doctype.loyalty_program.loyalty_program import (
get_loyalty_program_details_with_points,
) )
loyalty_program_details = get_loyalty_program_details_with_points( if customer_loyalty_program:
context.doc.customer, customer_loyalty_program from erpnext.accounts.doctype.loyalty_program.loyalty_program import (
) get_loyalty_program_details_with_points,
context.available_loyalty_points = int(loyalty_program_details.get("loyalty_points")) )
# show Make Purchase Invoice button based on permission loyalty_program_details = get_loyalty_program_details_with_points(
context.show_make_pi_button = frappe.has_permission("Purchase Invoice", "create") context.doc.customer, customer_loyalty_program
)
context.available_loyalty_points = int(loyalty_program_details.get("loyalty_points"))
context.show_make_pi_button = False
if context.doc.get("supplier"):
# show Make Purchase Invoice button based on permission
context.show_make_pi_button = frappe.has_permission("Purchase Invoice", "create")
def get_attachments(dt, dn): def get_attachments(dt, dn):

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kwaliteit-terugvoersjabloon,
Rules for applying different promotional schemes.,Reëls vir die toepassing van verskillende promosieskemas., Rules for applying different promotional schemes.,Reëls vir die toepassing van verskillende promosieskemas.,
Shift,verskuiwing, Shift,verskuiwing,
Show {0},Wys {0}, Show {0},Wys {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Spesiale karakters behalwe &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; En &quot;}&quot; word nie toegelaat in die naamreekse nie", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Spesiale karakters behalwe &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; En &quot;}}&quot; word nie toegelaat in die naamreekse nie {0}",
Target Details,Teikenbesonderhede, Target Details,Teikenbesonderhede,
{0} already has a Parent Procedure {1}.,{0} het reeds &#39;n ouerprosedure {1}., {0} already has a Parent Procedure {1}.,{0} het reeds &#39;n ouerprosedure {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,የጥራት ግብረ መልስ አብነት።,
Rules for applying different promotional schemes.,የተለያዩ የማስተዋወቂያ ዘዴዎችን ለመተግበር ህጎች።, Rules for applying different promotional schemes.,የተለያዩ የማስተዋወቂያ ዘዴዎችን ለመተግበር ህጎች።,
Shift,ቀይር, Shift,ቀይር,
Show {0},አሳይ {0}, Show {0},አሳይ {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",ከ &quot;-&quot; ፣ &quot;#&quot; ፣ &quot;፣&quot; ፣ &quot;/&quot; ፣ &quot;{&quot; እና &quot;}&quot; በስተቀር ልዩ ቁምፊዎች ከመለያ መሰየሚያ አይፈቀድም, "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}",ከ &quot;-&quot; ፣ &quot;#&quot; ፣ &quot;፣&quot; ፣ &quot;/&quot; ፣ &quot;{{&quot; እና &quot;}}&quot; በስተቀር ልዩ ቁምፊዎች ከመለያ መሰየሚያ አይፈቀድም {0},
Target Details,የ Detailsላማ ዝርዝሮች።, Target Details,የ Detailsላማ ዝርዝሮች።,
{0} already has a Parent Procedure {1}.,{0} ቀድሞውኑ የወላጅ አሰራር ሂደት አለው {1}።, {0} already has a Parent Procedure {1}.,{0} ቀድሞውኑ የወላጅ አሰራር ሂደት አለው {1}።,
API,ኤ ፒ አይ, API,ኤ ፒ አይ,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,قالب ملاحظات الجودة,
Rules for applying different promotional schemes.,قواعد تطبيق المخططات الترويجية المختلفة., Rules for applying different promotional schemes.,قواعد تطبيق المخططات الترويجية المختلفة.,
Shift,تحول, Shift,تحول,
Show {0},عرض {0}, Show {0},عرض {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",الأحرف الخاصة باستثناء &quot;-&quot; ، &quot;#&quot; ، &quot;.&quot; ، &quot;/&quot; ، &quot;{&quot; و &quot;}&quot; غير مسموح في سلسلة التسمية, "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}",{0} الأحرف الخاصة باستثناء &quot;-&quot; ، &quot;#&quot; ، &quot;.&quot; ، &quot;/&quot; ، &quot;{{&quot; و &quot;}}&quot; غير مسموح في سلسلة التسمية,
Target Details,تفاصيل الهدف, Target Details,تفاصيل الهدف,
{0} already has a Parent Procedure {1}.,{0} يحتوي بالفعل على إجراء الأصل {1}., {0} already has a Parent Procedure {1}.,{0} يحتوي بالفعل على إجراء الأصل {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Качествен обратен шаблон,
Rules for applying different promotional schemes.,Правила за прилагане на различни промоционални схеми., Rules for applying different promotional schemes.,Правила за прилагане на различни промоционални схеми.,
Shift,изместване, Shift,изместване,
Show {0},Показване на {0}, Show {0},Показване на {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Специални символи, с изключение на &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; И &quot;}&quot; не са позволени в именуването на серии", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Специални символи, с изключение на &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; И &quot;}}&quot; не са позволени в именуването на серии {0}",
Target Details,Детайли за целта, Target Details,Детайли за целта,
{0} already has a Parent Procedure {1}.,{0} вече има родителска процедура {1}., {0} already has a Parent Procedure {1}.,{0} вече има родителска процедура {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,গুণমান প্রতিক্রিয়
Rules for applying different promotional schemes.,বিভিন্ন প্রচারমূলক স্কিম প্রয়োগ করার নিয়ম।, Rules for applying different promotional schemes.,বিভিন্ন প্রচারমূলক স্কিম প্রয়োগ করার নিয়ম।,
Shift,পরিবর্তন, Shift,পরিবর্তন,
Show {0},{0} দেখান, Show {0},{0} দেখান,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","নামকরণ সিরিজে &quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{&quot; এবং &quot;}&quot; ব্যতীত বিশেষ অক্ষর অনুমোদিত নয়", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","নামকরণ সিরিজে &quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{{&quot; এবং &quot;}}&quot; ব্যতীত বিশেষ অক্ষর অনুমোদিত নয় {0}",
Target Details,টার্গেটের বিশদ, Target Details,টার্গেটের বিশদ,
{0} already has a Parent Procedure {1}.,{0} ইতিমধ্যে একটি মূল পদ্ধতি আছে {1}।, {0} already has a Parent Procedure {1}.,{0} ইতিমধ্যে একটি মূল পদ্ধতি আছে {1}।,
API,এপিআই, API,এপিআই,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Predložak kvalitetne povratne informacije,
Rules for applying different promotional schemes.,Pravila za primjenu različitih promotivnih shema., Rules for applying different promotional schemes.,Pravila za primjenu različitih promotivnih shema.,
Shift,Shift, Shift,Shift,
Show {0},Prikaži {0}, Show {0},Prikaži {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Posebni znakovi osim &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; I &quot;}&quot; nisu dozvoljeni u imenovanju serija", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Posebni znakovi osim &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; I &quot;}}&quot; nisu dozvoljeni u imenovanju serija {0}",
Target Details,Detalji cilja, Target Details,Detalji cilja,
{0} already has a Parent Procedure {1}.,{0} već ima roditeljsku proceduru {1}., {0} already has a Parent Procedure {1}.,{0} već ima roditeljsku proceduru {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Plantilla de comentaris de qualitat,
Rules for applying different promotional schemes.,Normes per aplicar diferents règims promocionals., Rules for applying different promotional schemes.,Normes per aplicar diferents règims promocionals.,
Shift,Majúscules, Shift,Majúscules,
Show {0},Mostra {0}, Show {0},Mostra {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caràcters especials, excepte &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; I &quot;}&quot; no estan permesos en nomenar sèries", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Caràcters especials, excepte &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; I &quot;}}&quot; no estan permesos en nomenar sèries {0}",
Target Details,Detalls de l&#39;objectiu, Target Details,Detalls de l&#39;objectiu,
{0} already has a Parent Procedure {1}.,{0} ja té un procediment progenitor {1}., {0} already has a Parent Procedure {1}.,{0} ja té un procediment progenitor {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Šablona zpětné vazby kvality,
Rules for applying different promotional schemes.,Pravidla pro uplatňování různých propagačních programů., Rules for applying different promotional schemes.,Pravidla pro uplatňování různých propagačních programů.,
Shift,Posun, Shift,Posun,
Show {0},Zobrazit {0}, Show {0},Zobrazit {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Zvláštní znaky kromě &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; A &quot;}&quot; nejsou v názvových řadách povoleny", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Zvláštní znaky kromě &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; A &quot;}}&quot; nejsou v názvových řadách povoleny {0}",
Target Details,Podrobnosti o cíli, Target Details,Podrobnosti o cíli,
{0} already has a Parent Procedure {1}.,{0} již má rodičovský postup {1}., {0} already has a Parent Procedure {1}.,{0} již má rodičovský postup {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kvalitetsfeedback-skabelon,
Rules for applying different promotional schemes.,Regler for anvendelse af forskellige salgsfremmende ordninger., Rules for applying different promotional schemes.,Regler for anvendelse af forskellige salgsfremmende ordninger.,
Shift,Flytte, Shift,Flytte,
Show {0},Vis {0}, Show {0},Vis {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Specialtegn undtagen &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Og &quot;}&quot; er ikke tilladt i navngivningsserier", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Specialtegn undtagen &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Og &quot;}}&quot; er ikke tilladt i navngivningsserier {0}",
Target Details,Måldetaljer, Target Details,Måldetaljer,
{0} already has a Parent Procedure {1}.,{0} har allerede en overordnet procedure {1}., {0} already has a Parent Procedure {1}.,{0} har allerede en overordnet procedure {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3546,7 +3546,7 @@ Quality Feedback Template,Qualitäts-Feedback-Vorlage,
Rules for applying different promotional schemes.,Regeln für die Anwendung verschiedener Werbemaßnahmen., Rules for applying different promotional schemes.,Regeln für die Anwendung verschiedener Werbemaßnahmen.,
Shift,Verschiebung, Shift,Verschiebung,
Show {0},{0} anzeigen, Show {0},{0} anzeigen,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Sonderzeichen außer &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Und &quot;}&quot; sind bei der Benennung von Serien nicht zulässig", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Sonderzeichen außer &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Und &quot;}}&quot; sind bei der Benennung von Serien nicht zulässig {0}",
Target Details,Zieldetails, Target Details,Zieldetails,
{0} already has a Parent Procedure {1}.,{0} hat bereits eine übergeordnete Prozedur {1}., {0} already has a Parent Procedure {1}.,{0} hat bereits eine übergeordnete Prozedur {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Πρότυπο σχολιασμού ποιότητας
Rules for applying different promotional schemes.,Κανόνες εφαρμογής διαφορετικών προγραμμάτων προώθησης., Rules for applying different promotional schemes.,Κανόνες εφαρμογής διαφορετικών προγραμμάτων προώθησης.,
Shift,Βάρδια, Shift,Βάρδια,
Show {0},Εμφάνιση {0}, Show {0},Εμφάνιση {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Ειδικοί χαρακτήρες εκτός από &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;&quot; Και &quot;}&quot; δεν επιτρέπονται στη σειρά ονομασίας", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Ειδικοί χαρακτήρες εκτός από &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Και &quot;}}&quot; δεν επιτρέπονται στη σειρά ονομασίας {0}",
Target Details,Στοιχεία στόχου, Target Details,Στοιχεία στόχου,
{0} already has a Parent Procedure {1}.,{0} έχει ήδη μια διαδικασία γονέα {1}., {0} already has a Parent Procedure {1}.,{0} έχει ήδη μια διαδικασία γονέα {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Plantilla de comentarios de calidad,
Rules for applying different promotional schemes.,Reglas para aplicar diferentes esquemas promocionales., Rules for applying different promotional schemes.,Reglas para aplicar diferentes esquemas promocionales.,
Shift,Cambio, Shift,Cambio,
Show {0},Mostrar {0}, Show {0},Mostrar {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caracteres especiales excepto &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Y &quot;}&quot; no están permitidos en las series de nombres", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Caracteres especiales excepto &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Y &quot;}}&quot; no están permitidos en las series de nombres {0}",
Target Details,Detalles del objetivo, Target Details,Detalles del objetivo,
{0} already has a Parent Procedure {1}.,{0} ya tiene un Procedimiento principal {1}., {0} already has a Parent Procedure {1}.,{0} ya tiene un Procedimiento principal {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kvaliteetse tagasiside mall,
Rules for applying different promotional schemes.,Erinevate reklaamiskeemide rakenduseeskirjad., Rules for applying different promotional schemes.,Erinevate reklaamiskeemide rakenduseeskirjad.,
Shift,Vahetus, Shift,Vahetus,
Show {0},Kuva {0}, Show {0},Kuva {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Erimärgid, välja arvatud &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Ja &quot;}&quot; pole sarjade nimetamisel lubatud", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Erimärgid, välja arvatud &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Ja &quot;}}&quot; pole sarjade nimetamisel lubatud {0}",
Target Details,Sihtkoha üksikasjad, Target Details,Sihtkoha üksikasjad,
{0} already has a Parent Procedure {1}.,{0} juba on vanemamenetlus {1}., {0} already has a Parent Procedure {1}.,{0} juba on vanemamenetlus {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,الگوی بازخورد کیفیت,
Rules for applying different promotional schemes.,قوانین استفاده از طرح های تبلیغاتی مختلف., Rules for applying different promotional schemes.,قوانین استفاده از طرح های تبلیغاتی مختلف.,
Shift,تغییر مکان, Shift,تغییر مکان,
Show {0},نمایش {0}, Show {0},نمایش {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",کاراکترهای خاص به جز &quot;-&quot; ، &quot;#&quot; ، &quot;.&quot; ، &quot;/&quot; ، &quot;{&quot; و &quot;}&quot; در سریال نامگذاری مجاز نیستند, "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}",{0} کاراکترهای خاص به جز &quot;-&quot; ، &quot;#&quot; ، &quot;.&quot; ، &quot;/&quot; ، &quot;{{&quot; و &quot;}}&quot; در سریال نامگذاری مجاز نیستند,
Target Details,جزئیات هدف, Target Details,جزئیات هدف,
{0} already has a Parent Procedure {1}.,{0} در حال حاضر یک روش والدین {1} دارد., {0} already has a Parent Procedure {1}.,{0} در حال حاضر یک روش والدین {1} دارد.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Laadun palautteen malli,
Rules for applying different promotional schemes.,Säännöt erilaisten myynninedistämisjärjestelmien soveltamisesta., Rules for applying different promotional schemes.,Säännöt erilaisten myynninedistämisjärjestelmien soveltamisesta.,
Shift,Siirtää, Shift,Siirtää,
Show {0},Näytä {0}, Show {0},Näytä {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Erikoismerkit paitsi &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Ja &quot;}&quot; eivät ole sallittuja nimeämissarjoissa", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Erikoismerkit paitsi &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Ja &quot;}}&quot; eivät ole sallittuja nimeämissarjoissa {0}",
Target Details,Kohteen yksityiskohdat, Target Details,Kohteen yksityiskohdat,
{0} already has a Parent Procedure {1}.,{0}: llä on jo vanhempainmenettely {1}., {0} already has a Parent Procedure {1}.,{0}: llä on jo vanhempainmenettely {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Modèle de commentaires sur la qualité,
Rules for applying different promotional schemes.,Règles d'application de différents programmes promotionnels., Rules for applying different promotional schemes.,Règles d'application de différents programmes promotionnels.,
Shift,Décalage, Shift,Décalage,
Show {0},Montrer {0}, Show {0},Montrer {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caractères spéciaux sauf &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Et &quot;}&quot; non autorisés dans les séries de nommage", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Caractères spéciaux sauf &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Et &quot;}}&quot; non autorisés dans les séries de nommage {0}",
Target Details,Détails de la cible, Target Details,Détails de la cible,
{0} already has a Parent Procedure {1}.,{0} a déjà une procédure parent {1}., {0} already has a Parent Procedure {1}.,{0} a déjà une procédure parent {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,ગુણવત્તા પ્રતિસાદ Temp
Rules for applying different promotional schemes.,વિવિધ પ્રમોશનલ યોજનાઓ લાગુ કરવાના નિયમો., Rules for applying different promotional schemes.,વિવિધ પ્રમોશનલ યોજનાઓ લાગુ કરવાના નિયમો.,
Shift,પાળી, Shift,પાળી,
Show {0},બતાવો {0}, Show {0},બતાવો {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; અને &quot;}&quot; સિવાયના વિશેષ અક્ષરો નામકરણ શ્રેણીમાં મંજૂરી નથી", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; અને &quot;}}&quot; સિવાયના વિશેષ અક્ષરો નામકરણ શ્રેણીમાં મંજૂરી નથી {0}",
Target Details,લક્ષ્યાંક વિગતો, Target Details,લક્ષ્યાંક વિગતો,
{0} already has a Parent Procedure {1}.,{0} પાસે પહેલેથી જ પિતૃ કાર્યવાહી છે {1}., {0} already has a Parent Procedure {1}.,{0} પાસે પહેલેથી જ પિતૃ કાર્યવાહી છે {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,תבנית משוב איכותית,
Rules for applying different promotional schemes.,כללים ליישום תוכניות קידום מכירות שונות., Rules for applying different promotional schemes.,כללים ליישום תוכניות קידום מכירות שונות.,
Shift,מִשׁמֶרֶת, Shift,מִשׁמֶרֶת,
Show {0},הצג את {0}, Show {0},הצג את {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","תווים מיוחדים למעט &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; ו- &quot;}&quot; אינם מורשים בסדרות שמות", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","{0} תווים מיוחדים למעט &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; ו- &quot;}}&quot; אינם מורשים בסדרות שמות",
Target Details,פרטי יעד, Target Details,פרטי יעד,
{0} already has a Parent Procedure {1}.,{0} כבר יש נוהל הורים {1}., {0} already has a Parent Procedure {1}.,{0} כבר יש נוהל הורים {1}.,
API,ממשק API, API,ממשק API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,गुणवत्ता प्रतिक्रि
Rules for applying different promotional schemes.,विभिन्न प्रचार योजनाओं को लागू करने के लिए नियम।, Rules for applying different promotional schemes.,विभिन्न प्रचार योजनाओं को लागू करने के लिए नियम।,
Shift,खिसक जाना, Shift,खिसक जाना,
Show {0},{0} दिखाएं, Show {0},{0} दिखाएं,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","&quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{&quot; और &quot;}&quot; को छोड़कर विशेष वर्ण श्रृंखला में अनुमति नहीं है", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","&quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{{&quot; और &quot;}}&quot; को छोड़कर विशेष वर्ण श्रृंखला {0} में अनुमति नहीं है",
Target Details,लक्ष्य विवरण, Target Details,लक्ष्य विवरण,
{0} already has a Parent Procedure {1}.,{0} पहले से ही एक पेरेंट प्रोसीजर {1} है।, {0} already has a Parent Procedure {1}.,{0} पहले से ही एक पेरेंट प्रोसीजर {1} है।,
API,एपीआई, API,एपीआई,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Predložak povratne informacije o kvaliteti,
Rules for applying different promotional schemes.,Pravila za primjenu različitih promotivnih shema., Rules for applying different promotional schemes.,Pravila za primjenu različitih promotivnih shema.,
Shift,smjena, Shift,smjena,
Show {0},Prikaži {0}, Show {0},Prikaži {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Posebni znakovi osim &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; I &quot;}&quot; nisu dopušteni u imenovanju serija", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Posebni znakovi osim &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; I &quot;}}&quot; nisu dopušteni u imenovanju serija {0}",
Target Details,Pojedinosti cilja, Target Details,Pojedinosti cilja,
{0} already has a Parent Procedure {1}.,{0} već ima roditeljski postupak {1}., {0} already has a Parent Procedure {1}.,{0} već ima roditeljski postupak {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Minőségi visszajelző sablon,
Rules for applying different promotional schemes.,Különböző promóciós rendszerek alkalmazásának szabályai., Rules for applying different promotional schemes.,Különböző promóciós rendszerek alkalmazásának szabályai.,
Shift,Váltás, Shift,Váltás,
Show {0},Mutasd {0}, Show {0},Mutasd {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Speciális karakterek, kivéve &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; És &quot;}&quot;, a sorozatok elnevezése nem megengedett", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Speciális karakterek, kivéve &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; És &quot;}}&quot;, a sorozatok elnevezése nem megengedett {0}",
Target Details,Cél részletei, Target Details,Cél részletei,
{0} already has a Parent Procedure {1}.,A (z) {0} már rendelkezik szülői eljárással {1}., {0} already has a Parent Procedure {1}.,A (z) {0} már rendelkezik szülői eljárással {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Template Umpan Balik Kualitas,
Rules for applying different promotional schemes.,Aturan untuk menerapkan berbagai skema promosi., Rules for applying different promotional schemes.,Aturan untuk menerapkan berbagai skema promosi.,
Shift,Bergeser, Shift,Bergeser,
Show {0},Tampilkan {0}, Show {0},Tampilkan {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Karakter Khusus kecuali &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Dan &quot;}&quot; tidak diizinkan dalam rangkaian penamaan", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Karakter Khusus kecuali &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Dan &quot;}}&quot; tidak diizinkan dalam rangkaian penamaan {0}",
Target Details,Detail Target, Target Details,Detail Target,
{0} already has a Parent Procedure {1}.,{0} sudah memiliki Prosedur Induk {1}., {0} already has a Parent Procedure {1}.,{0} sudah memiliki Prosedur Induk {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Sniðmát fyrir gæði gæða,
Rules for applying different promotional schemes.,Reglur um beitingu mismunandi kynningarkerfa., Rules for applying different promotional schemes.,Reglur um beitingu mismunandi kynningarkerfa.,
Shift,Vakt, Shift,Vakt,
Show {0},Sýna {0}, Show {0},Sýna {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Sérstafir nema &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Og &quot;}&quot; ekki leyfðar í nafngiftiröð", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Sérstafir nema &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Og &quot;}}&quot; ekki leyfðar í nafngiftiröð {0}",
Target Details,Upplýsingar um markmið, Target Details,Upplýsingar um markmið,
{0} already has a Parent Procedure {1}.,{0} er þegar með foreldraferli {1}., {0} already has a Parent Procedure {1}.,{0} er þegar með foreldraferli {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Modello di feedback sulla qualità,
Rules for applying different promotional schemes.,Regole per l&#39;applicazione di diversi schemi promozionali., Rules for applying different promotional schemes.,Regole per l&#39;applicazione di diversi schemi promozionali.,
Shift,Cambio, Shift,Cambio,
Show {0},Mostra {0}, Show {0},Mostra {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caratteri speciali tranne &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; E &quot;}&quot; non consentiti nelle serie di nomi", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Caratteri speciali tranne &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; E &quot;}}&quot; non consentiti nelle serie di nomi {0}",
Target Details,Dettagli target, Target Details,Dettagli target,
{0} already has a Parent Procedure {1}.,{0} ha già una procedura padre {1}., {0} already has a Parent Procedure {1}.,{0} ha già una procedura padre {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,品質フィードバックテンプレート,
Rules for applying different promotional schemes.,さまざまなプロモーションスキームを適用するための規則。, Rules for applying different promotional schemes.,さまざまなプロモーションスキームを適用するための規則。,
Shift,シフト, Shift,シフト,
Show {0},{0}を表示, Show {0},{0}を表示,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",&quot; - &quot;、 &quot;&quot;、 &quot;。&quot;、 &quot;/&quot;、 &quot;{&quot;、および &quot;}&quot;以外の特殊文字は、一連の名前付けでは使用できません, "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}",&quot; - &quot;、 &quot;&quot;、 &quot;。&quot;、 &quot;/&quot;、 &quot;{{&quot;、および &quot;}}&quot;以外の特殊文字は、一連の名前付けでは使用できません {0},
Target Details,ターゲット詳細, Target Details,ターゲット詳細,
{0} already has a Parent Procedure {1}.,{0}にはすでに親プロシージャー{1}があります。, {0} already has a Parent Procedure {1}.,{0}にはすでに親プロシージャー{1}があります。,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,គំរូមតិយោបល់គុណភាព
Rules for applying different promotional schemes.,វិធានសម្រាប់អនុវត្តគម្រោងផ្សព្វផ្សាយផ្សេងៗគ្នា។, Rules for applying different promotional schemes.,វិធានសម្រាប់អនុវត្តគម្រោងផ្សព្វផ្សាយផ្សេងៗគ្នា។,
Shift,ប្តូរ។, Shift,ប្តូរ។,
Show {0},បង្ហាញ {0}, Show {0},បង្ហាញ {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","តួអក្សរពិសេសលើកលែងតែ &quot;-&quot;, &quot;#&quot;, &quot;។ &quot;, &quot;/&quot;, &quot;{&quot; និង &quot;}&quot; មិនត្រូវបានអនុញ្ញាតក្នុងស៊េរីដាក់ឈ្មោះ", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","តួអក្សរពិសេសលើកលែងតែ &quot;-&quot;, &quot;#&quot;, &quot;។ &quot;, &quot;/&quot;, &quot;{{&quot; និង &quot;}}&quot; មិនត្រូវបានអនុញ្ញាតក្នុងស៊េរីដាក់ឈ្មោះ {0}",
Target Details,ព័ត៌មានលម្អិតគោលដៅ។, Target Details,ព័ត៌មានលម្អិតគោលដៅ។,
{0} already has a Parent Procedure {1}.,{0} មាននីតិវិធីឪពុកម្តាយរួចហើយ {1} ។, {0} already has a Parent Procedure {1}.,{0} មាននីតិវិធីឪពុកម្តាយរួចហើយ {1} ។,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,ಗುಣಮಟ್ಟದ ಪ್ರತಿಕ್ರಿ
Rules for applying different promotional schemes.,ವಿಭಿನ್ನ ಪ್ರಚಾರ ಯೋಜನೆಗಳನ್ನು ಅನ್ವಯಿಸುವ ನಿಯಮಗಳು., Rules for applying different promotional schemes.,ವಿಭಿನ್ನ ಪ್ರಚಾರ ಯೋಜನೆಗಳನ್ನು ಅನ್ವಯಿಸುವ ನಿಯಮಗಳು.,
Shift,ಶಿಫ್ಟ್, Shift,ಶಿಫ್ಟ್,
Show {0},{0} ತೋರಿಸು, Show {0},{0} ತೋರಿಸು,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; ಮತ್ತು &quot;}&quot; ಹೊರತುಪಡಿಸಿ ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಹೆಸರಿಸುವ ಸರಣಿಯಲ್ಲಿ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; ಮತ್ತು &quot;}}&quot; ಹೊರತುಪಡಿಸಿ ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಹೆಸರಿಸುವ ಸರಣಿಯಲ್ಲಿ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ {0}",
Target Details,ಗುರಿ ವಿವರಗಳು, Target Details,ಗುರಿ ವಿವರಗಳು,
{0} already has a Parent Procedure {1}.,{0} ಈಗಾಗಲೇ ಪೋಷಕ ವಿಧಾನವನ್ನು ಹೊಂದಿದೆ {1}., {0} already has a Parent Procedure {1}.,{0} ಈಗಾಗಲೇ ಪೋಷಕ ವಿಧಾನವನ್ನು ಹೊಂದಿದೆ {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,품질 피드백 템플릿,
Rules for applying different promotional schemes.,다양한 홍보 계획을 적용하기위한 규칙., Rules for applying different promotional schemes.,다양한 홍보 계획을 적용하기위한 규칙.,
Shift,시프트, Shift,시프트,
Show {0},{0} 표시, Show {0},{0} 표시,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","이름 계열에 허용되지 않는 &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot;및 &quot;}&quot;을 제외한 특수 문자", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","이름 계열에 허용되지 않는 &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot;및 &quot;}}&quot;을 제외한 특수 문자 {0}",
Target Details,대상 세부 정보, Target Details,대상 세부 정보,
{0} already has a Parent Procedure {1}.,{0}에 이미 상위 절차 {1}이 있습니다., {0} already has a Parent Procedure {1}.,{0}에 이미 상위 절차 {1}이 있습니다.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Feedablonê nerazîbûna kalîteyê,
Rules for applying different promotional schemes.,Qanûnên ji bo bicihanîna nexşeyên cûda yên danasînê, Rules for applying different promotional schemes.,Qanûnên ji bo bicihanîna nexşeyên cûda yên danasînê,
Shift,Tarloqî, Shift,Tarloqî,
Show {0},Show {0}, Show {0},Show {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Di tîpa navnasî de ji bilî &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Û &quot;}&quot; tîpên Taybet", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Di tîpa navnasî de ji bilî &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Û &quot;}}&quot; tîpên Taybet {0}",
Target Details,Hûrgulên armancê, Target Details,Hûrgulên armancê,
{0} already has a Parent Procedure {1}.,{0} ji berê ve heye Parent Procedure {1}., {0} already has a Parent Procedure {1}.,{0} ji berê ve heye Parent Procedure {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,ແມ່ແບບ ຄຳ ຕິຊົມຄຸນນ
Rules for applying different promotional schemes.,ກົດລະບຽບໃນການ ນຳ ໃຊ້ແຜນການໂຄສະນາທີ່ແຕກຕ່າງກັນ., Rules for applying different promotional schemes.,ກົດລະບຽບໃນການ ນຳ ໃຊ້ແຜນການໂຄສະນາທີ່ແຕກຕ່າງກັນ.,
Shift,ປ່ຽນ, Shift,ປ່ຽນ,
Show {0},ສະແດງ {0}, Show {0},ສະແດງ {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","ຕົວລະຄອນພິເສດຍົກເວັ້ນ &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; ແລະ &quot;}&quot; ບໍ່ໄດ້ຖືກອະນຸຍາດໃນຊຸດຊື່", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","ຕົວລະຄອນພິເສດຍົກເວັ້ນ &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; ແລະ &quot;}}&quot; ບໍ່ໄດ້ຖືກອະນຸຍາດໃນຊຸດຊື່ {0}",
Target Details,ລາຍລະອຽດເປົ້າ ໝາຍ, Target Details,ລາຍລະອຽດເປົ້າ ໝາຍ,
{0} already has a Parent Procedure {1}.,{0} ມີຂັ້ນຕອນການເປັນພໍ່ແມ່ {1} ແລ້ວ., {0} already has a Parent Procedure {1}.,{0} ມີຂັ້ນຕອນການເປັນພໍ່ແມ່ {1} ແລ້ວ.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kokybės atsiliepimų šablonas,
Rules for applying different promotional schemes.,Skirtingų reklamos schemų taikymo taisyklės., Rules for applying different promotional schemes.,Skirtingų reklamos schemų taikymo taisyklės.,
Shift,Pamaina, Shift,Pamaina,
Show {0},Rodyti {0}, Show {0},Rodyti {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Specialieji simboliai, išskyrus „-“, „#“, „.“, „/“, „{“ Ir „}“, neleidžiami įvardyti serijomis", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Specialieji simboliai, išskyrus &quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{{&quot; Ir &quot;}}&quot;, neleidžiami įvardyti serijomis {0}",
Target Details,Tikslinė informacija, Target Details,Tikslinė informacija,
{0} already has a Parent Procedure {1}.,{0} jau turi tėvų procedūrą {1}., {0} already has a Parent Procedure {1}.,{0} jau turi tėvų procedūrą {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kvalitatīvas atsauksmes veidne,
Rules for applying different promotional schemes.,Noteikumi dažādu reklāmas shēmu piemērošanai., Rules for applying different promotional schemes.,Noteikumi dažādu reklāmas shēmu piemērošanai.,
Shift,Maiņa, Shift,Maiņa,
Show {0},Rādīt {0}, Show {0},Rādīt {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Speciālās rakstzīmes, izņemot &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Un &quot;}&quot;, kas nav atļautas nosaukuma sērijās", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Speciālās rakstzīmes, izņemot &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Un &quot;}}&quot;, kas nav atļautas nosaukuma sērijās {0}",
Target Details,Mērķa informācija, Target Details,Mērķa informācija,
{0} already has a Parent Procedure {1}.,{0} jau ir vecāku procedūra {1}., {0} already has a Parent Procedure {1}.,{0} jau ir vecāku procedūra {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Шаблон за повратни информаци
Rules for applying different promotional schemes.,Правила за примена на различни промотивни шеми., Rules for applying different promotional schemes.,Правила за примена на различни промотивни шеми.,
Shift,Смена, Shift,Смена,
Show {0},Покажи {0}, Show {0},Покажи {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Не се дозволени специјални карактери освен &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; И &quot;}&quot; во сериите за именување", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Не се дозволени специјални карактери освен &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; И &quot;}}&quot; во сериите за именување {0}",
Target Details,Цели детали, Target Details,Цели детали,
{0} already has a Parent Procedure {1}.,{0} веќе има Матична постапка {1}., {0} already has a Parent Procedure {1}.,{0} веќе има Матична постапка {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,ഗുണനിലവാരമുള്ള ഫീഡ
Rules for applying different promotional schemes.,വ്യത്യസ്ത പ്രമോഷണൽ സ്കീമുകൾ പ്രയോഗിക്കുന്നതിനുള്ള നിയമങ്ങൾ., Rules for applying different promotional schemes.,വ്യത്യസ്ത പ്രമോഷണൽ സ്കീമുകൾ പ്രയോഗിക്കുന്നതിനുള്ള നിയമങ്ങൾ.,
Shift,ഷിഫ്റ്റ്, Shift,ഷിഫ്റ്റ്,
Show {0},{0} കാണിക്കുക, Show {0},{0} കാണിക്കുക,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot;, &quot;}&quot; എന്നിവ ഒഴികെയുള്ള പ്രത്യേക പ്രതീകങ്ങൾ നാമകരണ ശ്രേണിയിൽ അനുവദനീയമല്ല", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot;, &quot;}}&quot; എന്നിവ ഒഴികെയുള്ള പ്രത്യേക പ്രതീകങ്ങൾ നാമകരണ ശ്രേണിയിൽ അനുവദനീയമല്ല {0}",
Target Details,ടാർഗെറ്റ് വിശദാംശങ്ങൾ, Target Details,ടാർഗെറ്റ് വിശദാംശങ്ങൾ,
{0} already has a Parent Procedure {1}.,{0} ന് ഇതിനകം ഒരു രക്ഷാകർതൃ നടപടിക്രമം ഉണ്ട് {1}., {0} already has a Parent Procedure {1}.,{0} ന് ഇതിനകം ഒരു രക്ഷാകർതൃ നടപടിക്രമം ഉണ്ട് {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,गुणवत्ता अभिप्राय ट
Rules for applying different promotional schemes.,वेगवेगळ्या जाहिरात योजना लागू करण्याचे नियम., Rules for applying different promotional schemes.,वेगवेगळ्या जाहिरात योजना लागू करण्याचे नियम.,
Shift,शिफ्ट, Shift,शिफ्ट,
Show {0},दर्शवा {0}, Show {0},दर्शवा {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; आणि &quot;}&quot; वगळता विशिष्ट वर्णांना नामांकन मालिकेमध्ये परवानगी नाही", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; आणि &quot;}}&quot; वगळता विशिष्ट वर्णांना नामांकन मालिकेमध्ये परवानगी नाही {0}",
Target Details,लक्ष्य तपशील, Target Details,लक्ष्य तपशील,
{0} already has a Parent Procedure {1}.,{0} कडे आधीपासूनच पालक प्रक्रिया आहे {1}., {0} already has a Parent Procedure {1}.,{0} कडे आधीपासूनच पालक प्रक्रिया आहे {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Template Maklum Balas Kualiti,
Rules for applying different promotional schemes.,Kaedah untuk memohon skim promosi yang berbeza., Rules for applying different promotional schemes.,Kaedah untuk memohon skim promosi yang berbeza.,
Shift,Shift, Shift,Shift,
Show {0},Tunjukkan {0}, Show {0},Tunjukkan {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Watak Khas kecuali &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Dan &quot;}&quot; tidak dibenarkan dalam siri penamaan", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Watak Khas kecuali &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Dan &quot;}}&quot; tidak dibenarkan dalam siri penamaan {0}",
Target Details,Butiran Sasaran, Target Details,Butiran Sasaran,
{0} already has a Parent Procedure {1}.,{0} sudah mempunyai Tatacara Ibu Bapa {1}., {0} already has a Parent Procedure {1}.,{0} sudah mempunyai Tatacara Ibu Bapa {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,အရည်အသွေးတုံ့ပြန်ခ
Rules for applying different promotional schemes.,ကွဲပြားခြားနားသောပရိုမိုးရှင်းအစီအစဉ်များလျှောက်ထားမှုအတွက်စည်းကမ်းများ။, Rules for applying different promotional schemes.,ကွဲပြားခြားနားသောပရိုမိုးရှင်းအစီအစဉ်များလျှောက်ထားမှုအတွက်စည်းကမ်းများ။,
Shift,အဆိုင်း, Shift,အဆိုင်း,
Show {0},Show ကို {0}, Show {0},Show ကို {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","မှလွဲ. အထူးဇာတ်ကောင် &quot;-&quot; &quot;။ &quot;, &quot;#&quot;, &quot;/&quot;, &quot;{&quot; နှင့် &quot;}&quot; စီးရီးနာမည်အတွက်ခွင့်မပြု", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","မှလွဲ. အထူးဇာတ်ကောင် &quot;-&quot; &quot;။ &quot;, &quot;#&quot;, &quot;/&quot;, &quot;{{&quot; နှင့် &quot;}}&quot; စီးရီးနာမည်အတွက်ခွင့်မပြု {0}",
Target Details,ပစ်မှတ်အသေးစိတ်, Target Details,ပစ်မှတ်အသေးစိတ်,
{0} already has a Parent Procedure {1}.,{0} ပြီးသားမိဘလုပ်ထုံးလုပ်နည်း {1} ရှိပါတယ်။, {0} already has a Parent Procedure {1}.,{0} ပြီးသားမိဘလုပ်ထုံးလုပ်နည်း {1} ရှိပါတယ်။,
API,API ကို, API,API ကို,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kwaliteitsfeedbacksjabloon,
Rules for applying different promotional schemes.,Regels voor het toepassen van verschillende promotieregelingen., Rules for applying different promotional schemes.,Regels voor het toepassen van verschillende promotieregelingen.,
Shift,Verschuiving, Shift,Verschuiving,
Show {0},Toon {0}, Show {0},Toon {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Speciale tekens behalve &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; En &quot;}&quot; niet toegestaan in naamgevingsreeks", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Speciale tekens behalve &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; En &quot;}}&quot; niet toegestaan in naamgevingsreeks {0}",
Target Details,Doelgegevens, Target Details,Doelgegevens,
{0} already has a Parent Procedure {1}.,{0} heeft al een ouderprocedure {1}., {0} already has a Parent Procedure {1}.,{0} heeft al een ouderprocedure {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kvalitet Tilbakemelding Mal,
Rules for applying different promotional schemes.,Regler for anvendelse av forskjellige kampanjer., Rules for applying different promotional schemes.,Regler for anvendelse av forskjellige kampanjer.,
Shift,Skifte, Shift,Skifte,
Show {0},Vis {0}, Show {0},Vis {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Spesialtegn unntatt &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Og &quot;}&quot; ikke tillatt i navneserier", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Spesialtegn unntatt &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Og &quot;}}&quot; ikke tillatt i navneserier {0}",
Target Details,Måldetaljer, Target Details,Måldetaljer,
{0} already has a Parent Procedure {1}.,{0} har allerede en foreldreprosedyre {1}., {0} already has a Parent Procedure {1}.,{0} har allerede en foreldreprosedyre {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Szablon opinii o jakości,
Rules for applying different promotional schemes.,Zasady stosowania różnych programów promocyjnych., Rules for applying different promotional schemes.,Zasady stosowania różnych programów promocyjnych.,
Shift,Przesunięcie, Shift,Przesunięcie,
Show {0},Pokaż {0}, Show {0},Pokaż {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Znaki specjalne z wyjątkiem „-”, „#”, „.”, „/”, „{” I „}” niedozwolone w serii nazw", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Znaki specjalne z wyjątkiem &quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{{&quot; I &quot;}}&quot; niedozwolone w serii nazw {0}",
Target Details,Szczegóły celu, Target Details,Szczegóły celu,
{0} already has a Parent Procedure {1}.,{0} ma już procedurę nadrzędną {1}., {0} already has a Parent Procedure {1}.,{0} ma już procedurę nadrzędną {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,د کیفیت فیډبیک ټیمپلیټ,
Rules for applying different promotional schemes.,د مختلف پروموشنل سکیمونو پلي کولو قواعد., Rules for applying different promotional schemes.,د مختلف پروموشنل سکیمونو پلي کولو قواعد.,
Shift,شفټ, Shift,شفټ,
Show {0},ښودل {0}, Show {0},ښودل {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",ځانګړي نومونه د &quot;-&quot; ، &quot;#&quot; ، &quot;.&quot; ، &quot;/&quot; ، &quot;{&quot; او &quot;}&quot; نوم لیکلو کې اجازه نه لري, "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}",{0} ځانګړي نومونه د &quot;-&quot; ، &quot;#&quot; ، &quot;.&quot; ، &quot;/&quot; ، &quot;{{&quot; او &quot;}}&quot; نوم لیکلو کې اجازه نه لري,
Target Details,د هدف توضیحات, Target Details,د هدف توضیحات,
{0} already has a Parent Procedure {1}.,{0} د مخه د والدین پروسیجر {1} لري., {0} already has a Parent Procedure {1}.,{0} د مخه د والدین پروسیجر {1} لري.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Modelo de Feedback de Qualidade,
Rules for applying different promotional schemes.,Regras para aplicar diferentes esquemas promocionais., Rules for applying different promotional schemes.,Regras para aplicar diferentes esquemas promocionais.,
Shift,Mudança, Shift,Mudança,
Show {0},Mostrar {0}, Show {0},Mostrar {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caracteres especiais, exceto &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; e &quot;}&quot; não permitidos na série de nomenclatura", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Caracteres especiais, exceto &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; e &quot;}}&quot; não permitidos na série de nomenclatura {0}",
Target Details,Detalhes do Alvo, Target Details,Detalhes do Alvo,
{0} already has a Parent Procedure {1}.,{0} já tem um procedimento pai {1}., {0} already has a Parent Procedure {1}.,{0} já tem um procedimento pai {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Modelo de Feedback de Qualidade,
Rules for applying different promotional schemes.,Regras para aplicar diferentes esquemas promocionais., Rules for applying different promotional schemes.,Regras para aplicar diferentes esquemas promocionais.,
Shift,Mudança, Shift,Mudança,
Show {0},Mostrar {0}, Show {0},Mostrar {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caracteres especiais, exceto &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; E &quot;}&quot; não permitidos na série de nomenclatura", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Caracteres especiais, exceto &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; E &quot;}}&quot; não permitidos na série de nomenclatura {0}",
Target Details,Detalhes do Alvo, Target Details,Detalhes do Alvo,
{0} already has a Parent Procedure {1}.,{0} já tem um procedimento pai {1}., {0} already has a Parent Procedure {1}.,{0} já tem um procedimento pai {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Șablon de feedback de calitate,
Rules for applying different promotional schemes.,Reguli pentru aplicarea diferitelor scheme promoționale., Rules for applying different promotional schemes.,Reguli pentru aplicarea diferitelor scheme promoționale.,
Shift,Schimb, Shift,Schimb,
Show {0},Afișați {0}, Show {0},Afișați {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caractere speciale, cu excepția &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Și &quot;}&quot; nu sunt permise în numirea seriei", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Caractere speciale, cu excepția &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Și &quot;}}&quot; nu sunt permise în numirea seriei {0}",
Target Details,Detalii despre țintă, Target Details,Detalii despre țintă,
{0} already has a Parent Procedure {1}.,{0} are deja o procedură părinte {1}., {0} already has a Parent Procedure {1}.,{0} are deja o procedură părinte {1}.,
API,API-ul, API,API-ul,

Can't render this file because it is too large.

View File

@ -3535,7 +3535,7 @@ Quality Feedback Template,Шаблон обратной связи по каче
Rules for applying different promotional schemes.,Правила применения разных рекламных схем., Rules for applying different promotional schemes.,Правила применения разных рекламных схем.,
Shift,Сдвиг, Shift,Сдвиг,
Show {0},Показать {0}, Show {0},Показать {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Специальные символы, кроме ""-"", ""#"", ""."", ""/"", ""{"" и ""}"", не допускаются в серийных номерах", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Специальные символы, кроме &quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{{&quot; и &quot;}}&quot;, не допускаются в серийных номерах {0}",
Target Details,Детали цели, Target Details,Детали цели,
{0} already has a Parent Procedure {1}.,{0} уже имеет родительскую процедуру {1}., {0} already has a Parent Procedure {1}.,{0} уже имеет родительскую процедуру {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Inyandikorugero nziza,
Rules for applying different promotional schemes.,Amategeko yo gukoresha gahunda zitandukanye zo kwamamaza., Rules for applying different promotional schemes.,Amategeko yo gukoresha gahunda zitandukanye zo kwamamaza.,
Shift,Shift, Shift,Shift,
Show {0},Erekana {0}, Show {0},Erekana {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Inyuguti zidasanzwe usibye &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Na &quot;}&quot; ntibyemewe mu ruhererekane rwo kwita izina", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Inyuguti zidasanzwe usibye &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Na &quot;}}&quot; ntibyemewe mu ruhererekane rwo kwita izina {0}",
Target Details,Intego Ibisobanuro, Target Details,Intego Ibisobanuro,
{0} already has a Parent Procedure {1}.,{0} isanzwe ifite uburyo bwababyeyi {1}., {0} already has a Parent Procedure {1}.,{0} isanzwe ifite uburyo bwababyeyi {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,ගුණාත්මක ප්‍රතිපෝෂ
Rules for applying different promotional schemes.,විවිධ ප්‍රවර්ධන යෝජනා ක්‍රම යෙදීම සඳහා නීති., Rules for applying different promotional schemes.,විවිධ ප්‍රවර්ධන යෝජනා ක්‍රම යෙදීම සඳහා නීති.,
Shift,මාරුව, Shift,මාරුව,
Show {0},{0 Show පෙන්වන්න, Show {0},{0 Show පෙන්වන්න,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; සහ &quot;}&quot; හැර විශේෂ අක්ෂර නම් කිරීමේ ශ්‍රේණියේ අවසර නැත", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; සහ &quot;}}&quot; හැර විශේෂ අක්ෂර නම් කිරීමේ ශ්‍රේණියේ අවසර නැත {0}",
Target Details,ඉලක්ක විස්තර, Target Details,ඉලක්ක විස්තර,
{0} already has a Parent Procedure {1}.,{0} දැනටමත් දෙමාපිය ක්‍රියා පටිපාටියක් ඇත {1}., {0} already has a Parent Procedure {1}.,{0} දැනටමත් දෙමාපිය ක්‍රියා පටිපාටියක් ඇත {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Šablóna spätnej väzby kvality,
Rules for applying different promotional schemes.,Pravidlá uplatňovania rôznych propagačných programov., Rules for applying different promotional schemes.,Pravidlá uplatňovania rôznych propagačných programov.,
Shift,smena, Shift,smena,
Show {0},Zobraziť {0}, Show {0},Zobraziť {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Špeciálne znaky s výnimkou „-“, „#“, „.“, „/“, „{“ A „}“ nie sú v názvových sériách povolené.", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Špeciálne znaky s výnimkou &quot;-&quot;, &quot;#&quot;, &quot;।&quot;, &quot;/&quot;, &quot;{{&quot; A &quot;}}&quot; nie sú v názvových sériách povolené {0}.",
Target Details,Podrobnosti o cieli, Target Details,Podrobnosti o cieli,
{0} already has a Parent Procedure {1}.,{0} už má rodičovský postup {1}., {0} already has a Parent Procedure {1}.,{0} už má rodičovský postup {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Predloga za povratne informacije o kakovosti,
Rules for applying different promotional schemes.,Pravila za uporabo različnih promocijskih shem., Rules for applying different promotional schemes.,Pravila za uporabo različnih promocijskih shem.,
Shift,Shift, Shift,Shift,
Show {0},Prikaži {0}, Show {0},Prikaži {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Posebni znaki, razen &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; In &quot;}&quot; v poimenovanju ni dovoljen", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Posebni znaki, razen &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; In &quot;}}&quot; v poimenovanju ni dovoljen {0}",
Target Details,Podrobnosti cilja, Target Details,Podrobnosti cilja,
{0} already has a Parent Procedure {1}.,{0} že ima nadrejeni postopek {1}., {0} already has a Parent Procedure {1}.,{0} že ima nadrejeni postopek {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Modeli i reagimit të cilësisë,
Rules for applying different promotional schemes.,Rregulla për aplikimin e skemave të ndryshme promovuese., Rules for applying different promotional schemes.,Rregulla për aplikimin e skemave të ndryshme promovuese.,
Shift,ndryshim, Shift,ndryshim,
Show {0},Trego {0}, Show {0},Trego {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Karaktere speciale përveç &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Dhe &quot;}&quot; nuk lejohen në seritë emërtuese", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Karaktere speciale përveç &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Dhe &quot;}}&quot; nuk lejohen në seritë emërtuese {0}",
Target Details,Detaje të synuara, Target Details,Detaje të synuara,
{0} already has a Parent Procedure {1}.,{0} tashmë ka një procedurë prindërore {1}., {0} already has a Parent Procedure {1}.,{0} tashmë ka një procedurë prindërore {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Квалитетни образац за поврат
Rules for applying different promotional schemes.,Правила за примену различитих промотивних шема., Rules for applying different promotional schemes.,Правила за примену различитих промотивних шема.,
Shift,Смена, Shift,Смена,
Show {0},Прикажи {0}, Show {0},Прикажи {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Посебни знакови осим &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; И &quot;}&quot; нису дозвољени у именовању серија", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Посебни знакови осим &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; И &quot;}}&quot; нису дозвољени у именовању серија {0}",
Target Details,Детаљи циља, Target Details,Детаљи циља,
{0} already has a Parent Procedure {1}.,{0} већ има родитељску процедуру {1}., {0} already has a Parent Procedure {1}.,{0} већ има родитељску процедуру {1}.,
API,АПИ, API,АПИ,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kvalitetsåterkopplingsmall,
Rules for applying different promotional schemes.,Regler för tillämpning av olika kampanjprogram., Rules for applying different promotional schemes.,Regler för tillämpning av olika kampanjprogram.,
Shift,Flytta, Shift,Flytta,
Show {0},Visa {0}, Show {0},Visa {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Specialtecken utom &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Och &quot;}&quot; är inte tillåtna i namnserien", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Specialtecken utom &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Och &quot;}}&quot; är inte tillåtna i namnserien {0}",
Target Details,Måldetaljer, Target Details,Måldetaljer,
{0} already has a Parent Procedure {1}.,{0} har redan en överordnad procedur {1}., {0} already has a Parent Procedure {1}.,{0} har redan en överordnad procedur {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,Kiolezo cha Maoni ya Ubora,
Rules for applying different promotional schemes.,Sheria za kutumia miradi tofauti ya uendelezaji., Rules for applying different promotional schemes.,Sheria za kutumia miradi tofauti ya uendelezaji.,
Shift,Shift, Shift,Shift,
Show {0},Onyesha {0}, Show {0},Onyesha {0},
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Tabia maalum isipokuwa &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; Na &quot;}&quot; hairuhusiwi katika kutaja mfululizo", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","Tabia maalum isipokuwa &quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; Na &quot;}}&quot; hairuhusiwi katika kutaja mfululizo {0}",
Target Details,Maelezo ya Lengo, Target Details,Maelezo ya Lengo,
{0} already has a Parent Procedure {1}.,{0} tayari ina Utaratibu wa Mzazi {1}., {0} already has a Parent Procedure {1}.,{0} tayari ina Utaratibu wa Mzazi {1}.,
API,API, API,API,

Can't render this file because it is too large.

View File

@ -3537,7 +3537,7 @@ Quality Feedback Template,தரமான கருத்து வார்ப
Rules for applying different promotional schemes.,வெவ்வேறு விளம்பர திட்டங்களைப் பயன்படுத்துவதற்கான விதிகள்., Rules for applying different promotional schemes.,வெவ்வேறு விளம்பர திட்டங்களைப் பயன்படுத்துவதற்கான விதிகள்.,
Shift,ஷிப்ட், Shift,ஷிப்ட்,
Show {0},{0 Show ஐக் காட்டு, Show {0},{0 Show ஐக் காட்டு,
"Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{&quot; மற்றும் &quot;}&quot; தவிர சிறப்பு எழுத்துக்கள் பெயரிடும் தொடரில் அனுமதிக்கப்படவில்லை", "Special Characters except '-', '#', '.', '/', '{{' and '}}' not allowed in naming series {0}","&quot;-&quot;, &quot;#&quot;, &quot;.&quot;, &quot;/&quot;, &quot;{{&quot; மற்றும் &quot;}}&quot; தவிர சிறப்பு எழுத்துக்கள் பெயரிடும் தொடரில் அனுமதிக்கப்படவில்லை {0}",
Target Details,இலக்கு விவரங்கள், Target Details,இலக்கு விவரங்கள்,
{0} already has a Parent Procedure {1}.,{0} ஏற்கனவே பெற்றோர் நடைமுறை {1 has ஐக் கொண்டுள்ளது., {0} already has a Parent Procedure {1}.,{0} ஏற்கனவே பெற்றோர் நடைமுறை {1 has ஐக் கொண்டுள்ளது.,
API,ஏபிஐ, API,ஏபிஐ,

Can't render this file because it is too large.

Some files were not shown because too many files have changed in this diff Show More