Merge pull request #963 from akhileshdarjee/master
[fix] removed validation of conversion rate equals 1 from all transaction
This commit is contained in:
commit
de46f1404e
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-05-24 12:15:51",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-08-28 19:13:42",
|
||||
"modified": "2013-10-15 11:12:02",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -80,16 +80,6 @@
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"fieldname": "conversion_rate",
|
||||
"fieldtype": "Float",
|
||||
"label": "Conversion Rate",
|
||||
"oldfieldname": "conversion_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"fieldname": "selling_price_list",
|
||||
|
@ -147,7 +147,6 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
debit_to: function() {
|
||||
|
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-05-24 19:29:05",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-10-03 18:54:31",
|
||||
"modified": "2013-10-11 13:12:38",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -225,7 +225,6 @@
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"default": "1.00",
|
||||
"description": "Rate at which Customer Currency is converted to customer's base currency",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "conversion_rate",
|
||||
|
@ -52,7 +52,7 @@ class AccountsController(TransactionBase):
|
||||
msgprint(_("Account for this ") + fieldname + _(" has been freezed. ") +
|
||||
self.doc.doctype + _(" can not be made."), raise_exception=1)
|
||||
|
||||
def set_price_list_currency(self, buying_or_selling):
|
||||
def set_price_list_currency(self, buying_or_selling, for_validate=False):
|
||||
if self.meta.get_field("currency"):
|
||||
company_currency = get_company_currency(self.doc.company)
|
||||
|
||||
@ -60,14 +60,13 @@ class AccountsController(TransactionBase):
|
||||
fieldname = "selling_price_list" if buying_or_selling.lower() == "selling" \
|
||||
else "buying_price_list"
|
||||
if self.meta.get_field(fieldname) and self.doc.fields.get(fieldname):
|
||||
if not self.doc.price_list_currency:
|
||||
self.doc.price_list_currency = webnotes.conn.get_value("Price List",
|
||||
self.doc.fields.get(fieldname), "currency")
|
||||
self.doc.price_list_currency = webnotes.conn.get_value("Price List",
|
||||
self.doc.fields.get(fieldname), "currency")
|
||||
|
||||
if self.doc.price_list_currency == company_currency:
|
||||
self.doc.plc_conversion_rate = 1.0
|
||||
|
||||
elif not self.doc.plc_conversion_rate:
|
||||
elif not self.doc.plc_conversion_rate or not for_validate:
|
||||
self.doc.plc_conversion_rate = self.get_exchange_rate(
|
||||
self.doc.price_list_currency, company_currency)
|
||||
|
||||
@ -77,7 +76,7 @@ class AccountsController(TransactionBase):
|
||||
self.doc.conversion_rate = self.doc.plc_conversion_rate
|
||||
elif self.doc.currency == company_currency:
|
||||
self.doc.conversion_rate = 1.0
|
||||
elif not self.doc.conversion_rate:
|
||||
elif not self.doc.conversion_rate or not for_validate:
|
||||
self.doc.conversion_rate = self.get_exchange_rate(self.doc.currency,
|
||||
company_currency)
|
||||
|
||||
|
@ -30,7 +30,7 @@ class BuyingController(StockController):
|
||||
super(BuyingController, self).set_missing_values(for_validate)
|
||||
|
||||
self.set_supplier_from_item_default()
|
||||
self.set_price_list_currency("Buying")
|
||||
self.set_price_list_currency("Buying", for_validate)
|
||||
|
||||
# set contact and address details for supplier, if they are not mentioned
|
||||
if self.doc.supplier and not (self.doc.contact_person and self.doc.supplier_address):
|
||||
|
@ -20,7 +20,7 @@ class SellingController(StockController):
|
||||
|
||||
# set contact and address details for customer, if they are not mentioned
|
||||
self.set_missing_lead_customer_details()
|
||||
self.set_price_list_and_item_details()
|
||||
self.set_price_list_and_item_details(for_validate)
|
||||
if self.doc.fields.get("__islocal"):
|
||||
self.set_taxes("other_charges", "charge")
|
||||
|
||||
@ -38,8 +38,8 @@ class SellingController(StockController):
|
||||
if not self.doc.fields.get(fieldname) and self.meta.get_field(fieldname):
|
||||
self.doc.fields[fieldname] = val
|
||||
|
||||
def set_price_list_and_item_details(self):
|
||||
self.set_price_list_currency("Selling")
|
||||
def set_price_list_and_item_details(self, for_validate=False):
|
||||
self.set_price_list_currency("Selling", for_validate)
|
||||
self.set_missing_item_details(get_item_details)
|
||||
|
||||
def get_other_charges(self):
|
||||
|
@ -13,33 +13,34 @@ You can make a Sales Invoice of type POS by checking on “Is POS”. When you c
|
||||
|
||||
- Update Stock: If this is checked, Stock Ledger Entries will be made when you “Submit” this Sales Invoice thereby eliminating the need for a separate Delivery Note.
|
||||
- In your Items table, update inventory information like Warehouse (saved as default), Serial Number, or Batch Number if applicable.
|
||||
- Update Payment Details like your Bank / Cash Account, paid amount etc.
|
||||
- Update Payment Details like your Bank / Cash Account, Paid amount etc.
|
||||
- If you are writing off certain amount. For example when you receive extra cash as a result of not having exact denomination of change, check on ‘Write off Outstanding Amount’ and set the Account.
|
||||
|
||||
Setup [POS Setting](docs.user.setup.pos_setting.html)
|
||||
|
||||
#### Enable POS View
|
||||
|
||||
Sales Invoice has 2 different interfaces, Invoice View and POS View. The current view used by most users is the Invoice View. This view is preferred by non-retailing companies.The POS view is used by retailing companies. For retailers it is very important to provide bill or sales invoice at the point of sale. Their customers cannot wait to receive the bill by post. The customers want an immediate bill for the payment which they make. In such cases, the POS View is preferred.
|
||||
- Every Sales & Purchase documents has 2 different interfaces, Invoice View and POS View. The current view used by most users is the Invoice View. This view is preferred by non-retailing companies.The POS view is used by retailing companies. For retailers it is very important to provide bill or sales invoice at the point of sale. Their customers cannot wait to receive the bill by post. The customers want an immediate bill for the payment which they make. In such cases, the POS View is preferred.
|
||||
|
||||
> Setup > Show/Hide Features
|
||||
|
||||

|
||||
|
||||
- Setup [POS Setting](docs.user.setup.pos_setting.html)
|
||||
|
||||
### Adding an Item
|
||||
|
||||
At the billing counter, the retailer needs to select Items which the consumer buys. In the POS interface you can select an Item by two methods. One, is by clicking on the Item image and the other, is through the Barcode.
|
||||
At the billing counter, the retailer needs to select Items which the consumer buys. In the POS interface you can select an Item by two methods. One, is by clicking on the Item image and the other, is through the Barcode / Serial No.
|
||||
|
||||
**Select Item** - To select a product click on the Item image and add it into the cart. A cart is an area that prepares a customer for checkout by allowing to edit product information, adjust taxes and add discounts.
|
||||
|
||||
**Barcode** - A Barcode is an optical machine-readable representation of data relating to the object to which it is attached. Enter Barcode in the barcode box and pause for a second. The Item will be automatically added to the cart.
|
||||
**Barcode / Serial No** - A Barcode / Serial No is an optical machine-readable representation of data relating to the object to which it is attached. Enter Barcode / Serial No in the box as shown in the image below and pause for a second, the item will be automatically added to the cart.
|
||||
|
||||

|
||||
|
||||
> Tip: To change the quantity of an Item, enter your desired quantity in the quantity box. These are mostly used if the same Item is purchased in bulk.
|
||||
|
||||
|
||||
If your product list is very long use the universal search field, to type the product name and select faster.
|
||||
If your product list is very long use the Search field, type the product name in Search box.
|
||||
|
||||
### Removing an Item
|
||||
|
||||
@ -48,7 +49,7 @@ There are two ways to remove an Item.
|
||||
- Select an Item by clicking on the row of that Item from Item cart. Then click on “Del” button. OR
|
||||
|
||||
|
||||
- Type 0 in the ‘select quantity’ field to delete the record.
|
||||
- Enter 0(zero) quantity of any item to delete that item.
|
||||
|
||||
To remove multiple Items together, select multiple rows & click on “Del” button.
|
||||
|
||||
@ -62,11 +63,11 @@ After all the Items and their quantities are added into the cart, you are ready
|
||||
|
||||
1. Click on “Make Payment” to get the Payment window.
|
||||
1. Select your “Mode of Payment”.
|
||||
1. Click on “Pay” button to Save the Sales Invoice.
|
||||
1. Click on “Pay” button to Save the document.
|
||||
|
||||

|
||||
|
||||
Submit the document to finalise the record. After the Invoice is submitted, you can either print an invoice or email it directly to the customer.
|
||||
Submit the document to finalise the record. After the document is submitted, you can either print or email it directly to the customer.
|
||||
|
||||
#### Accounting entries (GL Entry) for a Point of Sale:
|
||||
|
||||
|
@ -10,10 +10,8 @@ After logging into your account you will receive a pop-up form to fill. Please f
|
||||
#### Form Part I
|
||||
|
||||

|
||||
<br>
|
||||
<br><br>
|
||||
#### Form Part II
|
||||
<br>
|
||||
|
||||
To understand about Company Financial Year or Fiscal Year visit [Fiscal Year](docs.user.knowledge.fiscal_year.html)
|
||||
|
||||
|
||||
@ -61,8 +59,6 @@ To understand how to fill an Item in detail, visit [Item](docs.user.stock.item.h
|
||||
|
||||
<br>
|
||||
#### Setup Page - Suppliers
|
||||
<br>
|
||||
|
||||
On the Setup page go to Supplier.
|
||||
|
||||

|
||||
|
@ -4,8 +4,8 @@
|
||||
}
|
||||
---
|
||||
|
||||
#### Setup Page- Accounts
|
||||
|
||||
#### Setup Page - Accounts
|
||||
<br>
|
||||
Go to the Accounts icon and make ledgers under Chart of Accounts.
|
||||
|
||||

|
||||
@ -21,8 +21,6 @@ Create acccounting ledgers.
|
||||
|
||||
To begin Opening Entries, go to 'Opening Accounts and Stock' on the Setup Page.
|
||||
|
||||
<br>
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
@ -30,6 +28,8 @@ To begin Opening Entries, go to 'Opening Accounts and Stock' on the Setup Page.
|
||||
|
||||
To understand how to create opening entries in detail visit [Opening Entry](docs.user.setup.opening.html).
|
||||
|
||||
<br>
|
||||
|
||||
#### Opening Stock
|
||||
|
||||
You can upload your opening stock in the system using Stock Reconciliation. Stock Reconciliation will update your stock for any given Item.
|
||||
@ -40,6 +40,7 @@ You can upload your opening stock in the system using Stock Reconciliation. Stoc
|
||||
|
||||
To understand Stock Opening in detail visit [Opening Stock](docs.user.accounts.opening_stock.html).
|
||||
|
||||
<br>
|
||||
|
||||
#### Setup Page - HR Setup
|
||||
|
||||
|
@ -8,8 +8,10 @@ After completing the set-up and account opening process, it is advisable to com
|
||||
|
||||
### Sales Cycle
|
||||
|
||||
Complete a standard sales cycle - Lead > Opportunity > Quotation > Sales Order > Delivery Note > Sales Invoice > Payment (Journal Voucher)
|
||||
Complete a standard Sales Cycle.
|
||||
> Lead > Opportunity > Quotation > Sales Order > Delivery Note > Sales Invoice > Payment (Journal Voucher)
|
||||
|
||||
<br>
|
||||
#### Lead
|
||||
|
||||
To begin the sales cycle, go to the Selling Icon. On the selling page, click on Lead.
|
||||
@ -20,6 +22,7 @@ Fill the Lead form.
|
||||
|
||||
> To understand Lead in detail, visit [Lead](docs.user.selling.lead.html)
|
||||
|
||||
<br>
|
||||
#### Opportunity
|
||||
|
||||
After completing the Lead form, assume that, this same lead is getting converted into an Opportunity. Thus, to create an Opportunity from the existing lead, click on Create Opportunity, on the Lead page.
|
||||
@ -38,7 +41,7 @@ You can also generate an Opportunity directly from the Selling Page.
|
||||
|
||||
> To understand Opportunity in detail visit [Opportunity](docs.user.selling.opportunity.html).
|
||||
|
||||
|
||||
<br>
|
||||
#### Quotation
|
||||
|
||||
Imagine that your Opportunity has shown interest and asked for a Quotation. To generate a Quotation from the same Opportunity, open the submitted Opportunity and click on Create Quotation.
|
||||
@ -49,7 +52,7 @@ You can also generate a Quotation directly from the Selling Page.
|
||||
|
||||
> To understand Quotation in detail visit [Quotation](docs.user.selling.quotation.html)
|
||||
|
||||
|
||||
<br>
|
||||
#### Sales Order
|
||||
|
||||
Imagine that the Quotation which you sent was accepted by the prospect. You are now reequired to send him a Sales Order. To make a sales order from this same Quotation, go to that Quotation page and click on Make Sales Order.
|
||||
@ -60,6 +63,7 @@ You can also generate a Sales Order directly from the Selling Page.
|
||||
|
||||
> To understand Sales Order in detail visit [Sales Order](docs.user.selling.sales_order.html).
|
||||
|
||||
<br>
|
||||
#### Delivery Note
|
||||
|
||||
If your organisation has the practice of sending Delivery Note, this section will be helpful. To create a Delivery Note from the a Sales Order, go to that Sales Order and click on Make Delivery.
|
||||
@ -69,7 +73,7 @@ If your organisation has the practice of sending Delivery Note, this section wil
|
||||
|
||||
> To understand Delivery Note in detail, visit [Delivery Note](docs.user.stock.delivery_note.html)
|
||||
|
||||
|
||||
<br>
|
||||
#### Sales Invoice
|
||||
|
||||
Save and Submit your Delivery Note to generate a Sales Invoice. You can also generate an Invoice from Sales Order.
|
||||
@ -91,9 +95,10 @@ A Journal Voucher or a payment entry can be generated directly from the Sales In
|
||||
|
||||
### Purchase Cycle
|
||||
|
||||
Complete a standard purchase cycle - Material Request > Purchase Order > Purchase Receipt > Payment (Journal Voucher).
|
||||
|
||||
Complete a standard Purchase Cycle.
|
||||
> Material Request > Purchase Order > Purchase Receipt > Payment (Journal Voucher).
|
||||
|
||||
<br>
|
||||
#### Material Request
|
||||
|
||||
To create a Material Request, go to Stock/Buying and Click on Material Request.
|
||||
@ -102,6 +107,7 @@ To create a Material Request, go to Stock/Buying and Click on Material Request.
|
||||
|
||||
> To understand Material Request in detail, visit [Material Request](docs.user.buying.material_request.html)
|
||||
|
||||
<br>
|
||||
#### Purchase Order
|
||||
|
||||
To create a Purchase Order go to Buying and click on Purchase Order
|
||||
@ -110,26 +116,24 @@ To create a Purchase Order go to Buying and click on Purchase Order
|
||||
|
||||
> To understand Purchase Order in detail, visit [Purchase Order](docs.user.buying.purchase_order.html)
|
||||
|
||||
<br>
|
||||
#### Purchase Receipt
|
||||
|
||||
To create a Purchase Receipt from an existing Purchase Order, open that purchase order and click on Make Purchase Receipt.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
>To understand Purchase Receipt in detail, visit [Purchase Receipt](docs.user.stock.purchase_receipt.html)
|
||||
|
||||
<br>
|
||||
|
||||
#### Payment( Journal Voucher)
|
||||
#### Payment (Journal Voucher)
|
||||
|
||||
Payments made against Sales Invoices or Purchase Invoices can be made by clicking on “Make Payment Entry” button on “Submitted” invoices.
|
||||
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
> To understand Payment Entry in detail, visit [Payment Entry](docs.user.accounts.payments.html).
|
||||
|
||||
|
@ -6,81 +6,71 @@
|
||||
|
||||
### Manufacturing Cycle
|
||||
|
||||
Complete a manufacturing cycle (if applicable) - BOM > Production Planning Tool > Production Order > Stock Entry (material issue) > Stock Entry (sales return)
|
||||
Complete a manufacturing cycle (if applicable).
|
||||
> BOM > Production Planning Tool > Production Order > Stock Entry (Material Issue) > Stock Entry (Sales Return)
|
||||
|
||||
<br>
|
||||
#### Bill of Materials
|
||||
|
||||
To go to Bill of Materials, Click on Manufacturing. On the Manufacturing page, click on Bill of Materials.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
> To understand BOM in detail, visit [Bill of Materials](docs.user.mfg.bom.html)
|
||||
|
||||
<br>
|
||||
#### Production Planning Tool
|
||||
|
||||
To go to Production Planning Tool, click on the Manufacturing Icon. On the Manufacturing Page, click on Production Planning Tool to go to that page.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
> To understand Production Planning Tool in detail, visit [Production Planning](docs.user.mfg.planning.html)
|
||||
|
||||
|
||||
<br>
|
||||
#### Production Order
|
||||
|
||||
To go to Production Order click on the Manufacturing Icon. On the Manufacturing Page, click on Production Order.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
> To understand Production Order in detail, visit [Production Order](docs.user.mfg.production_order.html)
|
||||
|
||||
<br>
|
||||
#### Stock Entry
|
||||
|
||||
To go to Stock Entry, click on the Stock Icon and go to Stock Entry.
|
||||
|
||||

|
||||
|
||||
> To understand Material Issue, visit [Material Issue](docs.user.stock.material_issue.html).
|
||||
|
||||
> To understand Sales Return, visit [Sales Return](docs.user.stock.sales_return.html).
|
||||
|
||||
<br>
|
||||
|
||||
> To understand Material Issue, visit [Material Issue](docs.user.stock.material_issue.html)
|
||||
|
||||
|
||||
> To understand Sales Return, visit [Sales Return](docs.user.stock.sales_return.html)
|
||||
|
||||
|
||||
#### Delivery Note
|
||||
|
||||
To go to Delivery Note, click on Stock. On the Stock Page, click on Delivery Note.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
> To understand Delivery Note in detail, visit [Delivery Note](docs.user.stock.delivery_note.html)
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
#### Warehouse
|
||||
|
||||
To go to Warehouse, Click on Stock. On the Stock Page, go to Warehouse.
|
||||
|
||||

|
||||
|
||||
> To understand Warehouse in detail, visit [Warehouse](docs.user.stock.warehouse.html)
|
||||
|
||||
<br>
|
||||
|
||||
> To understand Warehouse in detail, visit [Warehouse](docs.user.stock.warehouse.html)
|
||||
|
||||
|
||||
#### Accounts
|
||||
|
||||
Make a few Journal Vouchers. Generate some Accounting Reports.
|
||||
|
||||
#### Journal Voucher.
|
||||
#### Journal Voucher
|
||||
|
||||
To go to a Journal Voucher, click on Accounts. On the Accounts page, click on Journal Voucher.
|
||||
|
||||
@ -88,9 +78,9 @@ To go to a Journal Voucher, click on Accounts. On the Accounts page, click on Jo
|
||||
|
||||
> To understand Journal Voucher in detail, visit [Journal Voucher](docs.user.accounts.journal_voucher.html)
|
||||
|
||||
#### Accounting Reports
|
||||
<br>
|
||||
### Accounting Reports
|
||||
|
||||
Some of the major Accounting Reports are General Ledger, Trial Balance, Accounts Payable and Accounts Receivables, and Sales and Purchase Register.
|
||||
|
||||
> To be able to generate these accounts, visti [Accounting Reports](docs.user.accounts.report.html)
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
{
|
||||
"_label": "Day-5: Projects Calendar and Website"
|
||||
"_label": "Day-5: Projects, Calendar, and Website"
|
||||
}
|
||||
---
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
|
||||
ERPNext helps you to manage your Projects by breaking them into Tasks and allocating them to different people.
|
||||
|
||||
<br>
|
||||
#### Tasks
|
||||
|
||||
Project is divided into Tasks and each Task is allocated to a resource. In ERPNext, you can also create and allocate a Task independently of a Project.
|
||||
@ -16,19 +17,16 @@ To create a Task, go to Project and click on Task.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
|
||||
> To understand Projects in detail, visit [Projects](docs.user.projects.html)
|
||||
> To understand Projects in detail, visit [Projects](docs.user.projects.html).
|
||||
|
||||
> To understand Task in detail, visit [Tasks](docs.user.projects.tasks.html)
|
||||
|
||||
<br>
|
||||
#### Calendar
|
||||
|
||||
> To understand Calendar in detail, visit [Calendar](docs.user.tools.calendar.html)
|
||||
|
||||
|
||||
<br>
|
||||
#### Website
|
||||
|
||||
> To understand Website in detail, visit [Website](docs.user.website.html)
|
||||
|
||||
|
@ -45,5 +45,4 @@ The setup help is divided into day-wise instructions for 5 consecutive days.
|
||||
|
||||
- Projects
|
||||
- Calendar
|
||||
- Website
|
||||
|
||||
- Website
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
{
|
||||
"_label": "Attachement and CSV files"
|
||||
"_label": "Attachment and CSV files"
|
||||
}
|
||||
---
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
"docs.user.setup.email",
|
||||
"docs.user.setup.sms",
|
||||
"docs.user.setup.taxes",
|
||||
"docs.user.setup.price_lists",
|
||||
"docs.user.setup.price_list",
|
||||
"docs.user.setup.opening",
|
||||
"docs.user.setup.pos_setting",
|
||||
"docs.user.setup.third_party_backups"
|
||||
|
@ -7,7 +7,7 @@ A Price List is a place where different rate plans can be stored. It’s a name
|
||||
|
||||
An Item can have multiple prices based on customer, currency, region, shipping cost etc, which can be stored as different rate plans. In ERPNext, you are required to store all the lists seperately. Buying Price List is different from Selling Price List and thus is stored separately.
|
||||
|
||||
> Selling > Price List
|
||||
> Setup > Price List
|
||||
|
||||
|
||||

|
||||
@ -15,7 +15,14 @@ An Item can have multiple prices based on customer, currency, region, shipping c
|
||||
|
||||
> For multiple currencies, maintain multiple Price Lists.
|
||||
|
||||
<br>
|
||||
### Add Item in Price List
|
||||
|
||||
To add a new Item to the Price List, add the Item Code and its rate in the Item Prices table.
|
||||
> Setup > Item Price
|
||||
|
||||
You can also import Item Prices via [Data Import Tool](docs.user.setup.data_import.html)
|
||||
- Enter Price List and Item Code, Valid for Buying or Selling, Item Name & Item Description will be automatically fetched.
|
||||
- Enter Rate and save the document.
|
||||
|
||||

|
||||
|
||||
For bulk upload of Item Prices, use [Data Import Tool](docs.user.setup.data_import.html)
|
@ -21,8 +21,6 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
||||
company: wn.defaults.get_default("company"),
|
||||
fiscal_year: wn.defaults.get_default("fiscal_year"),
|
||||
is_subcontracted: "No",
|
||||
conversion_rate: 1.0,
|
||||
plc_conversion_rate: 1.0
|
||||
}, function(fieldname, value) {
|
||||
if(me.frm.fields_dict[fieldname] && !me.frm.doc[fieldname])
|
||||
me.frm.set_value(fieldname, value);
|
||||
@ -41,18 +39,19 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
||||
},
|
||||
|
||||
onload_post_render: function() {
|
||||
if(this.frm.doc.__islocal && this.frm.doc.company && !this.frm.doc.customer) {
|
||||
var me = this;
|
||||
return this.frm.call({
|
||||
doc: this.frm.doc,
|
||||
method: "onload_post_render",
|
||||
freeze: true,
|
||||
callback: function(r) {
|
||||
// remove this call when using client side mapper
|
||||
me.set_default_values();
|
||||
me.set_dynamic_labels();
|
||||
}
|
||||
});
|
||||
if(this.frm.doc.__islocal && this.frm.doc.company &&
|
||||
!this.frm.doc.customer && !this.frm.doc.is_pos) {
|
||||
var me = this;
|
||||
return this.frm.call({
|
||||
doc: this.frm.doc,
|
||||
method: "onload_post_render",
|
||||
freeze: true,
|
||||
callback: function(r) {
|
||||
// remove this call when using client side mapper
|
||||
me.set_default_values();
|
||||
me.set_dynamic_labels();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@ -131,10 +130,18 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
||||
|
||||
company: function() {
|
||||
if(this.frm.doc.company && this.frm.fields_dict.currency) {
|
||||
if(!this.frm.doc.currency) {
|
||||
this.frm.set_value("currency", this.get_company_currency());
|
||||
var company_currency = this.get_company_currency();
|
||||
if (!this.frm.doc.currency) {
|
||||
this.frm.set_value("currency", company_currency);
|
||||
}
|
||||
|
||||
if (this.frm.doc.currency == company_currency) {
|
||||
this.frm.set_value("conversion_rate", 1.0);
|
||||
}
|
||||
if (this.frm.doc.price_list_currency == company_currency) {
|
||||
this.frm.set_value('plc_conversion_rate', 1.0);
|
||||
}
|
||||
|
||||
this.frm.script_manager.trigger("currency");
|
||||
}
|
||||
},
|
||||
@ -146,15 +153,13 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
||||
currency: function() {
|
||||
var me = this;
|
||||
this.set_dynamic_labels();
|
||||
|
||||
|
||||
var company_currency = this.get_company_currency();
|
||||
if(this.frm.doc.currency !== company_currency) {
|
||||
this.get_exchange_rate(this.frm.doc.currency, company_currency,
|
||||
function(exchange_rate) {
|
||||
if(exchange_rate) {
|
||||
me.frm.set_value("conversion_rate", exchange_rate);
|
||||
me.conversion_rate();
|
||||
}
|
||||
me.frm.set_value("conversion_rate", exchange_rate);
|
||||
me.conversion_rate();
|
||||
});
|
||||
} else {
|
||||
this.conversion_rate();
|
||||
@ -168,7 +173,7 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
||||
this.frm.doc.plc_conversion_rate !== this.frm.doc.conversion_rate) {
|
||||
this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate);
|
||||
}
|
||||
|
||||
|
||||
this.calculate_taxes_and_totals();
|
||||
},
|
||||
|
||||
@ -233,29 +238,6 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
||||
this.calculate_taxes_and_totals();
|
||||
},
|
||||
|
||||
// serial_no: function(doc, cdt, cdn) {
|
||||
// var me = this;
|
||||
// var item = wn.model.get_doc(cdt, cdn);
|
||||
// if (!item.item_code) {
|
||||
// wn.call({
|
||||
// method: 'accounts.doctype.sales_invoice.pos.get_item_from_serial_no',
|
||||
// args: {serial_no: this.serial_no.$input.val()},
|
||||
// callback: function(r) {
|
||||
// if (r.message) {
|
||||
// var item_code = r.message[0].item_code;
|
||||
// var child = wn.model.add_child(me.frm.doc, this.frm.doctype + " Item",
|
||||
// this.frm.cscript.fname);
|
||||
// child.item_code = item_code;
|
||||
// me.frm.cscript.item_code(me.frm.doc, child.doctype, child.name);
|
||||
// }
|
||||
// else
|
||||
// msgprint(wn._("Invalid Serial No."));
|
||||
// me.refresh();
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// },
|
||||
|
||||
row_id: function(doc, cdt, cdn) {
|
||||
var tax = wn.model.get_doc(cdt, cdn);
|
||||
try {
|
||||
@ -486,12 +468,8 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
||||
}
|
||||
|
||||
var company_currency = this.get_company_currency();
|
||||
var valid_conversion_rate = this.frm.doc.conversion_rate ?
|
||||
((this.frm.doc.currency == company_currency && this.frm.doc.conversion_rate == 1.0) ||
|
||||
(this.frm.doc.currency != company_currency && this.frm.doc.conversion_rate != 1.0)) :
|
||||
false;
|
||||
|
||||
if(!valid_conversion_rate) {
|
||||
if(!this.frm.doc.conversion_rate) {
|
||||
wn.throw(wn._("Please enter valid") + " " + wn._(conversion_rate_label) +
|
||||
" 1 " + this.frm.doc.currency + " = [?] " + company_currency);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-05-24 19:29:08",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-09-10 10:46:33",
|
||||
"modified": "2013-10-11 13:21:07",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -257,7 +257,6 @@
|
||||
"width": "100px"
|
||||
},
|
||||
{
|
||||
"default": "1.00",
|
||||
"description": "Rate at which customer's currency is converted to company's base currency",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "conversion_rate",
|
||||
|
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-06-18 12:39:59",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-08-09 14:46:17",
|
||||
"modified": "2013-10-11 13:18:47",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -272,7 +272,6 @@
|
||||
"width": "100px"
|
||||
},
|
||||
{
|
||||
"default": "1.00",
|
||||
"description": "Rate at which customer's currency is converted to company's base currency",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "conversion_rate",
|
||||
|
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-05-24 19:29:09",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-08-09 14:46:32",
|
||||
"modified": "2013-10-11 13:19:40",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -230,7 +230,7 @@
|
||||
"depends_on": "eval:doc.po_no",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "po_date",
|
||||
"fieldtype": "Data",
|
||||
"fieldtype": "Date",
|
||||
"hidden": 1,
|
||||
"label": "Customer's Purchase Order Date",
|
||||
"no_copy": 0,
|
||||
@ -263,7 +263,6 @@
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"default": "1.00",
|
||||
"description": "Rate at which customer's currency is converted to company's base currency",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "conversion_rate",
|
||||
|
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-05-21 16:16:39",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-08-09 14:47:05",
|
||||
"modified": "2013-10-11 13:20:13",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -215,7 +215,6 @@
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"default": "1.00",
|
||||
"description": "Rate at which supplier's currency is converted to company's base currency",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "conversion_rate",
|
||||
|
@ -144,7 +144,6 @@ class TransactionBase(StatusUpdater):
|
||||
|
||||
def get_customer_address(self, args):
|
||||
args = load_json(args)
|
||||
webnotes.errprint(args)
|
||||
ret = {
|
||||
'customer_address' : args["address"],
|
||||
'address_display' : get_address_display(args["address"]),
|
||||
@ -432,14 +431,7 @@ def validate_conversion_rate(currency, conversion_rate, conversion_rate_label, c
|
||||
|
||||
company_currency = webnotes.conn.get_value("Company", company, "default_currency")
|
||||
|
||||
# parenthesis for 'OR' are necessary as we want it to evaluate as
|
||||
# mandatory valid condition and (1st optional valid condition
|
||||
# or 2nd optional valid condition)
|
||||
valid_conversion_rate = (conversion_rate and
|
||||
((currency == company_currency and conversion_rate == 1.00)
|
||||
or (currency != company_currency and conversion_rate != 1.00)))
|
||||
|
||||
if not valid_conversion_rate:
|
||||
if not conversion_rate:
|
||||
msgprint(_('Please enter valid ') + conversion_rate_label + (': ')
|
||||
+ ("1 %s = [?] %s" % (currency, company_currency)),
|
||||
raise_exception=True)
|
||||
|
Loading…
x
Reference in New Issue
Block a user