Fixed merge conflict
This commit is contained in:
commit
fa1cdd5bf0
@ -10,6 +10,7 @@
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Setup",
|
||||
"editable_grid": 0,
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
@ -249,14 +250,15 @@
|
||||
"hide_toolbar": 0,
|
||||
"icon": "icon-money",
|
||||
"idx": 1,
|
||||
"in_create": 0,
|
||||
"image_view": 0,
|
||||
"in_create": 1,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"menu_index": 0,
|
||||
"modified": "2016-05-16 15:23:14.770933",
|
||||
"modified": "2016-10-18 14:22:00.207907",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Cost Center",
|
||||
@ -368,6 +370,5 @@
|
||||
"read_only_onload": 0,
|
||||
"search_fields": "parent_cost_center, is_group",
|
||||
"sort_order": "ASC",
|
||||
"track_seen": 0,
|
||||
"version": 0
|
||||
"track_seen": 0
|
||||
}
|
@ -71,7 +71,7 @@ class PurchaseInvoice(BuyingController):
|
||||
frappe.throw(_("Cash or Bank Account is mandatory for making payment entry"))
|
||||
|
||||
if flt(self.paid_amount) + flt(self.write_off_amount) \
|
||||
- flt(self.base_grand_total) > 1/(10**(self.precision("base_grand_total") + 1)):
|
||||
- flt(self.grand_total) > 1/(10**(self.precision("base_grand_total") + 1)):
|
||||
frappe.throw(_("""Paid amount + Write Off Amount can not be greater than Grand Total"""))
|
||||
|
||||
def create_remarks(self):
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'purchase_invoice',
|
||||
'non_standard_fieldnames': {
|
||||
'Delivery Note': 'against_sales_invoice',
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'sales_invoice',
|
||||
'non_standard_fieldnames': {
|
||||
'Delivery Note': 'against_sales_invoice',
|
||||
|
@ -93,7 +93,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
me.get_data_from_server(function(){
|
||||
me.load_data(false);
|
||||
me.make_customer();
|
||||
me.make_item_list(true);
|
||||
me.make_item_list();
|
||||
me.set_missing_values();
|
||||
})
|
||||
});
|
||||
@ -269,7 +269,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
make: function() {
|
||||
this.make_search();
|
||||
this.make_customer();
|
||||
this.make_item_list(true);
|
||||
this.make_item_list();
|
||||
this.make_discount_field()
|
||||
},
|
||||
|
||||
@ -290,7 +290,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
this.search.$input.on("keyup", function() {
|
||||
setTimeout(function() {
|
||||
me.items = me.get_items();
|
||||
me.make_item_list(false);
|
||||
me.make_item_list();
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
@ -375,7 +375,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
}
|
||||
},
|
||||
|
||||
make_item_list: function(index_search) {
|
||||
make_item_list: function() {
|
||||
var me = this;
|
||||
if(!this.price_list) {
|
||||
msgprint(__("Price List not found or disabled"));
|
||||
@ -389,7 +389,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
|
||||
if (this.items) {
|
||||
$.each(this.items, function(index, obj) {
|
||||
if(!index_search || index < 16){
|
||||
if(index < 30){
|
||||
$(frappe.render_template("pos_item", {
|
||||
item_code: obj.name,
|
||||
item_price: format_currency(obj.price_list_rate, obj.currency),
|
||||
@ -435,7 +435,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
|
||||
key = this.search.$input.val().toLowerCase();
|
||||
var re = new RegExp('%', 'g');
|
||||
var reg = new RegExp(key.replace(re, '\\w*\\s*[a-zA-Z0-9]*'))
|
||||
var reg = new RegExp(key.replace(re, '[\\w*\\s*[a-zA-Z0-9]*]*'))
|
||||
search_status = true
|
||||
|
||||
if(key){
|
||||
|
@ -303,6 +303,11 @@ def make_purchase_invoice(source_name, target_doc=None):
|
||||
target.base_amount = target.amount * flt(source_parent.conversion_rate)
|
||||
target.qty = target.amount / flt(obj.rate) if (flt(obj.rate) and flt(obj.billed_amt)) else flt(obj.qty)
|
||||
|
||||
item = frappe.db.get_value("Item", target.item_code, ["item_group", "buying_cost_center"], as_dict=1)
|
||||
target.cost_center = frappe.db.get_value("Project", obj.project, "cost_center") \
|
||||
or item.buying_cost_center \
|
||||
or frappe.db.get_value("Item Group", item.item_group, "default_cost_center")
|
||||
|
||||
doc = get_mapped_doc("Purchase Order", source_name, {
|
||||
"Purchase Order": {
|
||||
"doctype": "Purchase Invoice",
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'purchase_order',
|
||||
'internal_links': {
|
||||
'Material Request': ['items', 'material_request'],
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'docstatus': 1,
|
||||
'fieldname': 'request_for_quotation',
|
||||
'transactions': [
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'heatmap': True,
|
||||
'heatmap_message': _('This is based on transactions against this Supplier. See timeline below for details'),
|
||||
'fieldname': 'supplier',
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'supplier_quotation',
|
||||
'internal_links': {
|
||||
'Material Request': ['items', 'material_request'],
|
||||
|
@ -338,7 +338,7 @@ class calculate_taxes_and_totals(object):
|
||||
tax.item_wise_tax_detail = json.dumps(tax.item_wise_tax_detail, separators=(',', ':'))
|
||||
|
||||
def set_discount_amount(self):
|
||||
if not self.doc.discount_amount and self.doc.additional_discount_percentage:
|
||||
if self.doc.additional_discount_percentage:
|
||||
self.doc.discount_amount = flt(flt(self.doc.get(scrub(self.doc.apply_discount_on)))
|
||||
* self.doc.additional_discount_percentage / 100, self.doc.precision("discount_amount"))
|
||||
|
||||
|
@ -1,10 +1,8 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
'fieldname': 'opportunity',
|
||||
'non_standard_fieldnames': {
|
||||
'Quotation': 'prevdoc_docname'
|
||||
},
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'prevdoc_docname',
|
||||
'transactions': [
|
||||
{
|
||||
'label': _('Related'),
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 38 KiB |
BIN
erpnext/docs/assets/img/buying/material-request-flowchart.png
Normal file
BIN
erpnext/docs/assets/img/buying/material-request-flowchart.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
Binary file not shown.
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 47 KiB |
@ -18,6 +18,11 @@ choose to start its fiscal year on October 1. That way, they know what their
|
||||
income will be for that year, and can adjust their expenses to maintain their
|
||||
desired profit margins.
|
||||
|
||||
To set the Fiscal Year as default, click on the 'Default' button.
|
||||
|
||||
In case you have multiple companies sharing the same Fiscal Year, you can add
|
||||
it into the grid as shown below.
|
||||
|
||||
<img class="screenshot" alt="Fiscal Year" src="{{docs_base_url}}/assets/img/accounts/fiscal-year.png">
|
||||
|
||||
{next}
|
||||
|
@ -1,7 +1,7 @@
|
||||
A Material Request is a simple document identifying a requirement of a set of
|
||||
Items (products or services) for a particular reason.
|
||||
|
||||
![Workflow]({{docs_base_url}}/assets/old_images/erpnext/material-request-workflow.jpg)
|
||||
![Workflow]({{docs_base_url}}/assets/img/buying/material-request-flowchart.png)
|
||||
|
||||
To generate a Material Request manually go to:
|
||||
|
||||
@ -25,6 +25,8 @@ A Material Request can be of type:
|
||||
* Material Issue - If the requested material is to be Issued.
|
||||
* Manufacture - If the requested material is to be Produced.
|
||||
|
||||
The User can also raise a [Request For Quotation]({{docs_base_url}}/user/manual/en/buying/request-for-quotation.html) against a Material Request. To create a Request For Quotation the user can click on 'Make'.
|
||||
|
||||
> Info: Material Request is not mandatory. It is ideal if you have centralized
|
||||
buying so that you can collect this information from various departments.
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'heatmap': True,
|
||||
'heatmap_message': _('This is based on the attendance of this Employee'),
|
||||
'fieldname': 'employee',
|
||||
|
@ -58,6 +58,7 @@ class ProductionOrder(Document):
|
||||
if so[0].project:
|
||||
self.project = so[0].project
|
||||
|
||||
if not self.material_request:
|
||||
self.validate_production_order_against_so()
|
||||
else:
|
||||
frappe.throw(_("Sales Order {0} is not valid").format(self.sales_order))
|
||||
|
@ -473,6 +473,7 @@ class ProductionPlanningTool(Document):
|
||||
material_request.update({"material_request_type": item_wrapper.default_material_request_type})
|
||||
|
||||
for sales_order, requested_qty in items_to_be_requested[item].items():
|
||||
if sales_order != 'No Sales Order':
|
||||
material_request.append("items", {
|
||||
"doctype": "Material Request Item",
|
||||
"__islocal": 1,
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'heatmap': True,
|
||||
'heatmap_message': _('This is based on the Time Sheets created against this project'),
|
||||
'fieldname': 'project',
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
{
|
||||
'heatmap': True,
|
||||
'heatmap_message': _('This is based on the attendance of this Student'),
|
||||
'fieldname': 'student',
|
||||
@ -9,7 +10,7 @@ data = {
|
||||
'items': ['Student Log', 'Student Group', 'Student Attendance']
|
||||
},
|
||||
{
|
||||
'items': ['Program Enrollment', 'Fees', 'Assessment']
|
||||
'items': ['Program Enrollment', 'Fees', 'Assessment', 'Guardian']
|
||||
}
|
||||
]
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'heatmap': True,
|
||||
'heatmap_message': _('This is based on transactions against this Customer. See timeline below for details'),
|
||||
'fieldname': 'customer',
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'prevdoc_docname',
|
||||
'transactions': [
|
||||
{
|
||||
|
@ -443,6 +443,11 @@ def make_sales_invoice(source_name, target_doc=None, ignore_permissions=False):
|
||||
target.base_amount = target.amount * flt(source_parent.conversion_rate)
|
||||
target.qty = target.amount / flt(source.rate) if (source.rate and source.billed_amt) else source.qty
|
||||
|
||||
item = frappe.db.get_value("Item", target.item_code, ["item_group", "selling_cost_center"], as_dict=1)
|
||||
target.cost_center = frappe.db.get_value("Project", obj.project, "cost_center") \
|
||||
or item.selling_cost_center \
|
||||
or frappe.db.get_value("Item Group", item.item_group, "default_cost_center")
|
||||
|
||||
doclist = get_mapped_doc("Sales Order", source_name, {
|
||||
"Sales Order": {
|
||||
"doctype": "Sales Invoice",
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'sales_order',
|
||||
'non_standard_fieldnames': {
|
||||
'Delivery Note': 'against_sales_order',
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'delivery_note_no',
|
||||
'non_standard_fieldnames': {
|
||||
'Sales Invoice': 'delivery_note',
|
||||
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'heatmap': True,
|
||||
'heatmap_message': _('This is based on stock movement. See {0} for details')\
|
||||
.format('<a href="#query-report/Stock Ledger">' + _('Stock Ledger') + '</a>'),
|
||||
|
@ -1,6 +1,8 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'material_request',
|
||||
'transactions': [
|
||||
{
|
||||
@ -10,6 +12,6 @@ data = {
|
||||
{
|
||||
'label': _('Manufacturing'),
|
||||
'items': ['Production Order']
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
from frappe import _
|
||||
|
||||
data = {
|
||||
def get_data():
|
||||
return {
|
||||
'fieldname': 'purchase_receipt_no',
|
||||
'non_standard_fieldnames': {
|
||||
'Purchase Invoice': 'purchase_receipt',
|
||||
|
Loading…
Reference in New Issue
Block a user