mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-03 08:32:24 +00:00
Merge branch 'develop' into update-stock-onboarding-fp
This commit is contained in:
@@ -4,4 +4,4 @@
|
||||
<div class="more hidden" style="padding: 15px;">
|
||||
<a class="btn btn-default btn-xs btn-more">More</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -66,4 +66,4 @@ def get_warehouse_capacity_data(filters, start):
|
||||
'percent_occupied': flt((flt(balance_qty) / flt(entry.stock_capacity)) * 100, 0)
|
||||
})
|
||||
|
||||
return capacity_data
|
||||
return capacity_data
|
||||
|
||||
@@ -11,4 +11,4 @@ frappe.dashboards.chart_sources["Warehouse wise Stock Value"] = {
|
||||
default: frappe.defaults.get_user_default("Company")
|
||||
}
|
||||
]
|
||||
};
|
||||
};
|
||||
|
||||
@@ -45,4 +45,4 @@ def get(chart_name = None, chart = None, no_cache = None, filters = None, from_d
|
||||
"values": datapoints
|
||||
}],
|
||||
"type": "bar"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,4 +20,3 @@ QUnit.test("test Batch", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -30,4 +30,4 @@ def get_data():
|
||||
'items': ['Auto Repeat']
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,4 +27,3 @@ frappe.ui.form.on('Delivery Note', {
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -33,4 +33,3 @@ QUnit.test("test delivery note", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -772,7 +772,7 @@ class TestDeliveryNote(unittest.TestCase):
|
||||
so.submit()
|
||||
|
||||
dn = create_dn_against_so(so.name, delivered_qty=10)
|
||||
|
||||
|
||||
si = create_sales_invoice(qty=10, do_not_save=1)
|
||||
si.items[0].delivery_note= dn.name
|
||||
si.items[0].dn_detail = dn.items[0].name
|
||||
|
||||
@@ -34,4 +34,3 @@ QUnit.test("test delivery note with margin", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class DeliveryNoteItem(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -406,4 +406,4 @@ def make_expense_claim(source_name, target_doc=None):
|
||||
}
|
||||
}}, target_doc)
|
||||
|
||||
return doc
|
||||
return doc
|
||||
|
||||
@@ -47,4 +47,4 @@
|
||||
<td>{{ vehicle }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</table>
|
||||
|
||||
@@ -1309,4 +1309,4 @@ def on_doctype_update():
|
||||
|
||||
@erpnext.allow_regional
|
||||
def set_item_tax_from_hsn_code(item):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -12,4 +12,4 @@ frappe.ui.form.on('Item', {
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
<h1>{{ title }}</h1>
|
||||
{% endblock %}
|
||||
|
||||
<!-- this is a sample default web page template -->
|
||||
<!-- this is a sample default web page template -->
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div>
|
||||
<a href={{ route }}>{{ title }}</a>
|
||||
</div>
|
||||
<!-- this is a sample default list template -->
|
||||
<!-- this is a sample default list template -->
|
||||
|
||||
@@ -118,4 +118,4 @@ QUnit.test("test: item", function (assert) {
|
||||
),
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -28,4 +28,3 @@ class TestItemAttribute(unittest.TestCase):
|
||||
|
||||
item_attribute.increment = 0.5
|
||||
item_attribute.save()
|
||||
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ItemCustomerDetail(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -65,4 +65,4 @@ class ItemManufacturer(Document):
|
||||
@frappe.whitelist()
|
||||
def get_item_manufacturer_part_no(item_code, manufacturer):
|
||||
return frappe.db.get_value("Item Manufacturer",
|
||||
{'item_code': item_code, 'manufacturer': manufacturer}, 'manufacturer_part_no')
|
||||
{'item_code': item_code, 'manufacturer': manufacturer}, 'manufacturer_part_no')
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ItemQualityInspectionParameter(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -9,4 +9,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ItemReorder(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ItemSupplier(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ItemTax(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -9,4 +9,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ItemWebsiteSpecification(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class LandedCostItem(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class LandedCostPurchaseReceipt(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -6,4 +6,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class LandedCostTaxesandCharges(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -20,4 +20,4 @@ def get_data():
|
||||
'items': ['Work Order']
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,4 +37,3 @@ QUnit.test("test material request", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -25,4 +25,3 @@ QUnit.test("test material request get items from BOM", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -27,4 +27,3 @@ QUnit.test("test material request", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -27,4 +27,3 @@ QUnit.test("test material request for issue", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -27,4 +27,3 @@ QUnit.test("test material request for transfer", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -12,4 +12,4 @@ class MaterialRequestItem(Document):
|
||||
pass
|
||||
|
||||
def on_doctype_update():
|
||||
frappe.db.add_index("Material Request Item", ["item_code", "warehouse"])
|
||||
frappe.db.add_index("Material Request Item", ["item_code", "warehouse"])
|
||||
|
||||
@@ -9,4 +9,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class PackingSlipItem(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -201,4 +201,4 @@ function get_item_details(item_code, uom=null) {
|
||||
uom
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@ def get_data():
|
||||
'items': ['Stock Entry', 'Delivery Note']
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
|
||||
.table-grid thead tr {
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,4 @@ frappe.ui.form.on("Price List", {
|
||||
frappe.set_route("Report", "Item Price");
|
||||
}, "fa fa-money");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -62,4 +62,4 @@ def get_price_list_details(price_list):
|
||||
|
||||
frappe.cache().hset("price_list_details", price_list, price_list_details)
|
||||
|
||||
return price_list_details or {}
|
||||
return price_list_details or {}
|
||||
|
||||
@@ -6,4 +6,4 @@ import frappe
|
||||
|
||||
# test_ignore = ["Item"]
|
||||
|
||||
test_records = frappe.get_test_records('Price List')
|
||||
test_records = frappe.get_test_records('Price List')
|
||||
|
||||
@@ -55,4 +55,4 @@ QUnit.test("test price list with uom dependancy", function(assert) {
|
||||
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{% include "erpnext/regional/india/taxes.js" %}
|
||||
|
||||
erpnext.setup_auto_gst_taxation('Purchase Receipt');
|
||||
erpnext.setup_auto_gst_taxation('Purchase Receipt');
|
||||
|
||||
@@ -326,7 +326,6 @@ class TestPurchaseReceipt(unittest.TestCase):
|
||||
self.assertRaises(frappe.ValidationError, pr2.submit)
|
||||
frappe.db.rollback()
|
||||
|
||||
|
||||
def test_serial_no_supplier(self):
|
||||
pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1)
|
||||
self.assertEqual(frappe.db.get_value("Serial No", pr.get("items")[0].serial_no, "supplier"),
|
||||
|
||||
@@ -232,4 +232,4 @@ def get_serial_nos_to_allocate(serial_nos, to_allocate):
|
||||
allocated_serial_nos = serial_nos[0: cint(to_allocate)]
|
||||
serial_nos[:] = serial_nos[cint(to_allocate):] # pop out allocated serial nos and modify list
|
||||
return "\n".join(allocated_serial_nos) if allocated_serial_nos else ""
|
||||
else: return ""
|
||||
else: return ""
|
||||
|
||||
@@ -386,4 +386,4 @@ def create_putaway_rule(**args):
|
||||
if not args.do_not_save:
|
||||
putaway.save()
|
||||
|
||||
return putaway
|
||||
return putaway
|
||||
|
||||
@@ -81,4 +81,4 @@ frappe.ui.form.on("Quality Inspection", {
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class QualityInspectionReading(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -16,4 +16,4 @@ def get_template_details(template):
|
||||
fields=["specification", "value", "acceptance_formula",
|
||||
"numeric", "formula_based_criteria", "min_value", "max_value"],
|
||||
filters={'parenttype': 'Quality Inspection Template', 'parent': template},
|
||||
order_by="idx")
|
||||
order_by="idx")
|
||||
|
||||
@@ -193,4 +193,4 @@ class TestSerialNo(unittest.TestCase):
|
||||
frappe.db.rollback()
|
||||
|
||||
def tearDown(self):
|
||||
frappe.db.rollback()
|
||||
frappe.db.rollback()
|
||||
|
||||
@@ -150,8 +150,8 @@ frappe.ui.form.on('Shipment', {
|
||||
frm.set_value('pickup_contact_name', '');
|
||||
frm.set_value('pickup_contact', '');
|
||||
}
|
||||
frappe.throw(__("Email or Phone/Mobile of the Contact are mandatory to continue.")
|
||||
+ "</br>" + __("Please set Email/Phone for the contact")
|
||||
frappe.throw(__("Email or Phone/Mobile of the Contact are mandatory to continue.")
|
||||
+ "</br>" + __("Please set Email/Phone for the contact")
|
||||
+ ` <a href='/app/contact/${contact_name}'>${contact_name}</a>`);
|
||||
}
|
||||
let contact_display = r.message.contact_display;
|
||||
@@ -244,8 +244,8 @@ frappe.ui.form.on('Shipment', {
|
||||
frm.set_value('pickup_company', '');
|
||||
frm.set_value('pickup_contact', '');
|
||||
}
|
||||
frappe.throw(__("Last Name, Email or Phone/Mobile of the user are mandatory to continue.") + "</br>"
|
||||
+ __("Please first set Last Name, Email and Phone for the user")
|
||||
frappe.throw(__("Last Name, Email or Phone/Mobile of the user are mandatory to continue.") + "</br>"
|
||||
+ __("Please first set Last Name, Email and Phone for the user")
|
||||
+ ` <a href="/app/user/${frappe.session.user}">${frappe.session.user}</a>`);
|
||||
}
|
||||
let contact_display = r.full_name;
|
||||
|
||||
@@ -5,4 +5,4 @@ frappe.listview_settings['Shipment'] = {
|
||||
return [__("Booked"), "green"];
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -24,7 +24,7 @@ def create_test_delivery_note():
|
||||
customer = get_shipment_customer()
|
||||
item = get_shipment_item(company.name)
|
||||
posting_date = date.today() + timedelta(days=1)
|
||||
|
||||
|
||||
create_material_receipt(item, company.name)
|
||||
delivery_note = frappe.new_doc("Delivery Note")
|
||||
delivery_note.company = company.name
|
||||
@@ -73,7 +73,7 @@ def create_test_shipment(delivery_notes = None):
|
||||
shipment.pickup_to = '17:00'
|
||||
shipment.description_of_content = 'unit test entry'
|
||||
for delivery_note in delivery_notes:
|
||||
shipment.append('shipment_delivery_note',
|
||||
shipment.append('shipment_delivery_note',
|
||||
{
|
||||
"delivery_note": delivery_note.name
|
||||
}
|
||||
@@ -222,7 +222,7 @@ def create_material_receipt(item, company):
|
||||
)
|
||||
stock.insert()
|
||||
stock.submit()
|
||||
|
||||
|
||||
|
||||
def create_shipment_item(item_name, company_name):
|
||||
item = frappe.new_doc("Item")
|
||||
|
||||
@@ -28,4 +28,3 @@ QUnit.test("test material request", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -32,4 +32,3 @@ QUnit.test("test material issue", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -29,4 +29,3 @@ QUnit.test("test material request", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -32,4 +32,3 @@ QUnit.test("test material receipt", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -31,4 +31,3 @@ QUnit.test("test material request", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -31,4 +31,3 @@ QUnit.test("test material Transfer to manufacture", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -39,4 +39,3 @@ QUnit.test("test repack", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -31,4 +31,3 @@ QUnit.test("test material Transfer to manufacture", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class StockEntryDetail(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -29,4 +29,3 @@ QUnit.test("test Stock Reconciliation", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -458,4 +458,3 @@ def set_valuation_method(item_code, valuation_method):
|
||||
}, allow_negative_stock=1)
|
||||
|
||||
test_dependencies = ["Item", "Warehouse"]
|
||||
|
||||
|
||||
@@ -7,4 +7,4 @@ import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class UOMConversionDetail(Document):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -16,4 +16,4 @@ QUnit.test("test: warehouse", function (assert) {
|
||||
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -180,4 +180,4 @@ def get_group_stock_account(company, company_abbr=None):
|
||||
if not company_abbr:
|
||||
company_abbr = frappe.get_cached_value("Company", company, 'abbr')
|
||||
group_stock_account = "Current Assets - " + company_abbr
|
||||
return group_stock_account
|
||||
return group_stock_account
|
||||
|
||||
@@ -48,11 +48,11 @@ frappe.ui.form.on("Warehouse", {
|
||||
frm.add_custom_button(__('Non-Group to Group'),
|
||||
function() { convert_to_group_or_ledger(frm); }, 'fa fa-retweet', 'btn-default')
|
||||
}
|
||||
|
||||
|
||||
frm.toggle_enable(['is_group', 'company'], false);
|
||||
|
||||
frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Warehouse'};
|
||||
|
||||
|
||||
frm.fields_dict['parent_warehouse'].get_query = function(doc) {
|
||||
return {
|
||||
filters: {
|
||||
@@ -83,7 +83,7 @@ function convert_to_group_or_ledger(frm){
|
||||
callback: function(){
|
||||
frm.refresh();
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -24,4 +24,4 @@ frappe.treeview_settings['Warehouse'] = {
|
||||
+ '</span>').insertBefore(node.$ul);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,4 +59,3 @@ document_list.forEach((doctype) => {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -37,4 +37,4 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -16,4 +16,4 @@
|
||||
% Occupied
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -24,7 +24,7 @@ def execute(filters=None):
|
||||
data.append([item, item_map[item]["item_name"], item_map[item]["description"], wh, batch,
|
||||
frappe.db.get_value('Batch', batch, 'expiry_date'), qty_dict.expiry_status
|
||||
])
|
||||
|
||||
|
||||
|
||||
return columns, data
|
||||
|
||||
@@ -70,7 +70,7 @@ def get_item_warehouse_batch_map(filters, float_precision):
|
||||
"expires_on": None, "expiry_status": None}))
|
||||
|
||||
qty_dict = iwb_map[d.item_code][d.warehouse][d.batch_no]
|
||||
|
||||
|
||||
expiry_date_unicode = frappe.db.get_value('Batch', d.batch_no, 'expiry_date')
|
||||
qty_dict.expires_on = expiry_date_unicode
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ def get_data(filters: Filters) -> Data:
|
||||
|
||||
assign_self_values(leveled_dict, svd_list)
|
||||
assign_agg_values(leveled_dict)
|
||||
|
||||
|
||||
data = []
|
||||
for item in leveled_dict.items():
|
||||
i = item[1]
|
||||
@@ -160,7 +160,7 @@ def get_row(name:str, value:float, is_bold:int, indent:int) -> Row:
|
||||
if is_bold:
|
||||
item_group = frappe.bold(item_group)
|
||||
return frappe._dict(item_group=item_group, cogs_debit=value, indent=indent)
|
||||
|
||||
|
||||
|
||||
def assign_item_groups_to_svd_list(svd_list: SVDList) -> None:
|
||||
ig_map = get_item_groups_map(svd_list)
|
||||
|
||||
@@ -174,4 +174,4 @@ class DelayedItemReport(object):
|
||||
"fieldname": "po_no",
|
||||
"fieldtype": "Data",
|
||||
"width": 100
|
||||
}]
|
||||
}]
|
||||
|
||||
@@ -87,4 +87,4 @@ class DelayedOrderReport(DelayedItemReport):
|
||||
"fieldname": "po_no",
|
||||
"fieldtype": "Data",
|
||||
"width": 110
|
||||
}]
|
||||
}]
|
||||
|
||||
@@ -6,4 +6,3 @@ frappe.require("assets/erpnext/js/sales_trends_filters.js", function() {
|
||||
filters: erpnext.get_sales_trends_filters()
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -47,4 +47,4 @@ def get_chart_data(data, filters):
|
||||
]
|
||||
},
|
||||
"type" : "bar"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,4 +108,4 @@ def get_columns():
|
||||
'fieldtype': 'Float',
|
||||
'fieldname': 'differnce',
|
||||
'width': 110
|
||||
}]
|
||||
}]
|
||||
|
||||
@@ -145,4 +145,4 @@ def get_columns():
|
||||
'fieldtype': 'Currency',
|
||||
'fieldname': 'valuation_rate',
|
||||
'width': 110
|
||||
}]
|
||||
}]
|
||||
|
||||
@@ -138,4 +138,4 @@ def get_columns(filters):
|
||||
"fieldtype": "Currency",
|
||||
"width": "150"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -11,4 +11,4 @@ frappe.query_reports["Item Price Stock"] = {
|
||||
"options": "Item"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,5 +158,3 @@ def get_columns():
|
||||
]
|
||||
|
||||
return columns
|
||||
|
||||
|
||||
|
||||
@@ -29,4 +29,4 @@ frappe.query_reports["Itemwise Recommended Reorder Level"] = {
|
||||
"options": "Brand"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,4 +6,3 @@ frappe.require("assets/erpnext/js/purchase_trends_filters.js", function() {
|
||||
filters: erpnext.get_purchase_trends_filters()
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -48,4 +48,4 @@ def get_chart_data(data, filters):
|
||||
},
|
||||
"type" : "bar",
|
||||
"colors":["#5e64ff"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,4 +50,3 @@ def get_columns(filters):
|
||||
|
||||
def get_data(filters):
|
||||
return get_stock_ledger_entries(filters, '<=', order="asc") or []
|
||||
|
||||
|
||||
@@ -64,4 +64,4 @@ frappe.query_reports["Stock Ageing"] = {
|
||||
"default": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,7 +208,3 @@ def get_chart_data(columns):
|
||||
chart["type"] = "line"
|
||||
|
||||
return chart
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -128,4 +128,4 @@ def get_columns(filters):
|
||||
"fieldtype": "Currency",
|
||||
"width": "120"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -32,7 +32,7 @@ def execute(filters=None):
|
||||
|
||||
if filters.brand and filters.brand != item.brand:
|
||||
continue
|
||||
|
||||
|
||||
elif filters.item_group and filters.item_group != item.item_group:
|
||||
continue
|
||||
|
||||
|
||||
@@ -58,14 +58,14 @@ def get_data(warehouse):
|
||||
serial_item_list = frappe.get_all("Item", filters={
|
||||
'has_serial_no': True,
|
||||
}, fields=['item_code', 'item_name'])
|
||||
|
||||
|
||||
status_list = ['Active', 'Expired']
|
||||
data = []
|
||||
for item in serial_item_list:
|
||||
total_serial_no = frappe.db.count("Serial No",
|
||||
total_serial_no = frappe.db.count("Serial No",
|
||||
filters={"item_code": item.item_code, "status": ("in", status_list), "warehouse": warehouse})
|
||||
|
||||
actual_qty = frappe.db.get_value('Bin', fieldname=['actual_qty'],
|
||||
actual_qty = frappe.db.get_value('Bin', fieldname=['actual_qty'],
|
||||
filters={"warehouse": warehouse, "item_code": item.item_code})
|
||||
|
||||
# frappe.db.get_value returns null if no record exist.
|
||||
@@ -84,4 +84,4 @@ def get_data(warehouse):
|
||||
|
||||
data.append(row)
|
||||
|
||||
return data
|
||||
return data
|
||||
|
||||
@@ -25,4 +25,4 @@ frappe.query_reports["Supplier-Wise Sales Analytics"] = {
|
||||
"default": frappe.datetime.month_end()
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,4 +38,4 @@ frappe.query_reports["Total Stock Summary"] = {
|
||||
"reqd": 1
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user