I just realize that Item Code is not mandatory in sales invoice
So, no need to create item if you want to create sales invoice for services.
It will be useful if you want to make invoice for non stock item.
Yes, good to draw attention to this behavior. I enter all my purchases invoices for goods that we do not resell (stationary, PR/advertisement, electricity, etc etc) like this.
I usually enter just one line summarizing the things i bought (so leaving the details of the individual items) enter Quantity=1 and the total VAT free amount.
Than select Account head and cost centre.
Have set up a tax template for this situation. Select tax template. Done safe. Attach original invoice. Submit.Done. Make Payment.
Supplier and Customer is also not Mandatory in Purchase Invoice and Sales Invoice, So we can create Purchase Invoice for expenses, its really great feature to Track Expenses for Company as Company need to give all income expense details to Tax Department.
I am seeing item code as mandatory, am I missing something?
We are service based organization and do not have any standard product list. Pricing also varies for almost each service as it’s customized as per the needs of the customer. Description for the services is different in most of cases, is there a way to handle such cases?
@vishwajeets in Sales Invoice, Item Name and Item Description is mandatory and not Item Code.
Also you can remove Mandatory property from Customise Form.
Has this option been removed? When I try to make an Invoice from a Sales Order with Items without codes, I get this error:
Traceback (most recent call last):
File "/home/intranet/frappe-bench/apps/frappe/frappe/app.py", line 56, in application
response = frappe.handler.handle()
File "/home/intranet/frappe-bench/apps/frappe/frappe/handler.py", line 21, in handle
data = execute_cmd(cmd)
File "/home/intranet/frappe-bench/apps/frappe/frappe/handler.py", line 52, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File "/home/intranet/frappe-bench/apps/frappe/frappe/__init__.py", line 922, in call
return fn(*args, **newargs)
File "/home/intranet/frappe-bench/apps/frappe/frappe/model/mapper.py", line 26, in make_mapped_doc
return method(source_name)
File "/home/intranet/frappe-bench/apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py", line 564, in make_sales_invoice
}, target_doc, postprocess, ignore_permissions=ignore_permissions)
File "/home/intranet/frappe-bench/apps/frappe/frappe/model/mapper.py", line 106, in get_mapped_doc
map_child_doc(source_d, target_doc, table_map, source_doc)
File "/home/intranet/frappe-bench/apps/frappe/frappe/model/mapper.py", line 200, in map_child_doc
map_doc(source_d, target_d, table_map, source_parent)
File "/home/intranet/frappe-bench/apps/frappe/frappe/model/mapper.py", line 125, in map_doc
table_map["postprocess"](source_doc, target_doc, source_parent)
File "/home/intranet/frappe-bench/apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py", line 534, in update_item
or item.selling_cost_center \
AttributeError: 'NoneType' object has no attribute 'selling_cost_center'