Merge branch 'UAE-VAT-Format' of https://github.com/hasnain2808/erpnext into UAE-VAT-Format

This commit is contained in:
Mohammad Hasnain 2020-11-04 10:32:22 +05:30
commit 510d0d3f20
9 changed files with 56 additions and 20 deletions

View File

@ -21,6 +21,19 @@ frappe.ui.form.on('Inpatient Medication Entry', {
} }
}; };
}); });
frm.set_query('warehouse', () => {
return {
filters: {
company: frm.doc.company
}
};
});
},
patient: function(frm) {
if (frm.doc.patient)
frm.set_value('service_unit', '');
}, },
get_medication_orders: function(frm) { get_medication_orders: function(frm) {

View File

@ -67,6 +67,7 @@
}, },
{ {
"collapsible": 1, "collapsible": 1,
"collapsible_depends_on": "eval: doc.__islocal",
"fieldname": "filters_section", "fieldname": "filters_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Filters" "label": "Filters"
@ -93,6 +94,7 @@
"options": "Patient" "options": "Patient"
}, },
{ {
"depends_on": "eval:!doc.patient",
"fieldname": "service_unit", "fieldname": "service_unit",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Healthcare Service Unit", "label": "Healthcare Service Unit",
@ -178,7 +180,7 @@
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"is_submittable": 1, "is_submittable": 1,
"links": [], "links": [],
"modified": "2020-09-30 23:40:45.528715", "modified": "2020-11-03 13:22:37.820707",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Healthcare", "module": "Healthcare",
"name": "Inpatient Medication Entry", "name": "Inpatient Medication Entry",

View File

@ -199,6 +199,7 @@ class InpatientMedicationEntry(Document):
def get_pending_medication_orders(entry): def get_pending_medication_orders(entry):
filters, values = get_filters(entry) filters, values = get_filters(entry)
to_remove = []
data = frappe.db.sql(""" data = frappe.db.sql("""
SELECT SELECT
@ -225,6 +226,9 @@ def get_pending_medication_orders(entry):
doc['service_unit'] = get_current_healthcare_service_unit(inpatient_record) doc['service_unit'] = get_current_healthcare_service_unit(inpatient_record)
if entry.service_unit and doc.service_unit != entry.service_unit: if entry.service_unit and doc.service_unit != entry.service_unit:
to_remove.append(doc)
for doc in to_remove:
data.remove(doc) data.remove(doc)
return data return data

View File

@ -12,7 +12,8 @@ frappe.ui.form.on('Inpatient Medication Order', {
frm.set_query('patient', () => { frm.set_query('patient', () => {
return { return {
filters: { filters: {
'inpatient_record': ['!=', ''] 'inpatient_record': ['!=', ''],
'inpatient_status': 'Admitted'
} }
}; };
}); });

View File

@ -139,7 +139,7 @@ def get_place_of_supply(party_details, doctype):
if not frappe.get_meta('Address').has_field('gst_state'): return if not frappe.get_meta('Address').has_field('gst_state'): return
if doctype in ("Sales Invoice", "Delivery Note", "Sales Order"): if doctype in ("Sales Invoice", "Delivery Note", "Sales Order"):
address_name = party_details.shipping_address_name or party_details.customer_address address_name = party_details.customer_address or party_details.shipping_address_name
elif doctype in ("Purchase Invoice", "Purchase Order", "Purchase Receipt"): elif doctype in ("Purchase Invoice", "Purchase Order", "Purchase Receipt"):
address_name = party_details.shipping_address or party_details.supplier_address address_name = party_details.shipping_address or party_details.supplier_address

View File

@ -14,10 +14,8 @@ from six import string_types
def get_items(start, page_length, price_list, item_group, pos_profile, search_value=""): def get_items(start, page_length, price_list, item_group, pos_profile, search_value=""):
data = dict() data = dict()
result = [] result = []
warehouse, hide_unavailable_items = "", False
allow_negative_stock = frappe.db.get_single_value('Stock Settings', 'allow_negative_stock') allow_negative_stock = frappe.db.get_single_value('Stock Settings', 'allow_negative_stock')
if not allow_negative_stock:
warehouse, hide_unavailable_items = frappe.db.get_value('POS Profile', pos_profile, ['warehouse', 'hide_unavailable_items']) warehouse, hide_unavailable_items = frappe.db.get_value('POS Profile', pos_profile, ['warehouse', 'hide_unavailable_items'])
if not frappe.db.exists('Item Group', item_group): if not frappe.db.exists('Item Group', item_group):
@ -97,7 +95,7 @@ def get_items(start, page_length, price_list, item_group, pos_profile, search_va
for item in items_data: for item in items_data:
item_code = item.item_code item_code = item.item_code
item_price = item_prices.get(item_code) or {} item_price = item_prices.get(item_code) or {}
if not allow_negative_stock: if allow_negative_stock:
item_stock_qty = frappe.db.sql("""select ifnull(sum(actual_qty), 0) from `tabBin` where item_code = %s""", item_code)[0][0] item_stock_qty = frappe.db.sql("""select ifnull(sum(actual_qty), 0) from `tabBin` where item_code = %s""", item_code)[0][0]
else: else:
item_stock_qty = get_stock_availability(item_code, warehouse) item_stock_qty = get_stock_availability(item_code, warehouse)
@ -231,8 +229,26 @@ def set_customer_info(fieldname, customer, value=""):
frappe.db.set_value('Customer', customer, 'loyalty_program', value) frappe.db.set_value('Customer', customer, 'loyalty_program', value)
contact = frappe.get_cached_value('Customer', customer, 'customer_primary_contact') contact = frappe.get_cached_value('Customer', customer, 'customer_primary_contact')
if not contact:
contact = frappe.db.sql("""
SELECT parent FROM `tabDynamic Link`
WHERE
parenttype = 'Contact' AND
parentfield = 'links' AND
link_doctype = 'Customer' AND
link_name = %s
""", (customer), as_dict=1)
contact = contact[0].get('parent') if contact else None
if not contact:
new_contact = frappe.new_doc('Contact')
new_contact.is_primary_contact = 1
new_contact.first_name = customer
new_contact.set('links', [{'link_doctype': 'Customer', 'link_name': customer}])
new_contact.save()
contact = new_contact.name
frappe.db.set_value('Customer', customer, 'customer_primary_contact', contact)
if contact:
contact_doc = frappe.get_doc('Contact', contact) contact_doc = frappe.get_doc('Contact', contact)
if fieldname == 'email_id': if fieldname == 'email_id':
contact_doc.set('email_ids', [{ 'email_id': value, 'is_primary': 1}]) contact_doc.set('email_ids', [{ 'email_id': value, 'is_primary': 1}])

View File

@ -637,7 +637,7 @@ erpnext.PointOfSale.Controller = class {
if (!(available_qty > 0)) { if (!(available_qty > 0)) {
frappe.model.clear_doc(item_row.doctype, item_row.name); frappe.model.clear_doc(item_row.doctype, item_row.name);
frappe.throw({ frappe.throw({
title: _("Not Available"), title: __("Not Available"),
message: __('Item Code: {0} is not available under warehouse {1}.', [bold_item_code, bold_warehouse]) message: __('Item Code: {0} is not available under warehouse {1}.', [bold_item_code, bold_warehouse])
}) })
} else if (available_qty < qty_needed) { } else if (available_qty < qty_needed) {

View File

@ -81,7 +81,7 @@ erpnext.PointOfSale.ItemSelector = class {
function get_item_image_html() { function get_item_image_html() {
if (item_image) { if (item_image) {
return `<div class="flex items-center justify-center h-32 border-b-grey text-6xl text-grey-100"> return `<div class="flex items-center justify-center h-32 border-b-grey text-6xl text-grey-100">
<img class="h-full" src="${item_image}" alt="${item_image}" style="object-fit: cover;"> <img class="h-full" src="${item_image}" alt="${frappe.get_abbr(item.item_name)}" style="object-fit: cover;">
</div>` </div>`
} else { } else {
return `<div class="flex items-center justify-center h-32 bg-light-grey text-6xl text-grey-100"> return `<div class="flex items-center justify-center h-32 bg-light-grey text-6xl text-grey-100">

View File

@ -409,7 +409,7 @@ erpnext.PointOfSale.Payment = class {
${ ${
shortcuts.map(s => { shortcuts.map(s => {
return `<div class="shortcut rounded bg-light-grey text-dark-grey pt-2 pb-2 no-select pointer" data-value="${s}"> return `<div class="shortcut rounded bg-light-grey text-dark-grey pt-2 pb-2 no-select pointer" data-value="${s}">
${format_currency(s, currency)} ${format_currency(s, currency, 0)}
</div>` </div>`
}).join('') }).join('')
} }