+ Good job! +
+ There is nothing to reconcile. All invoices and payments + have been reconciled, your partner balance is clean. +
+
You must configure the etherpad through the menu Setting > Companies > Companies, in the configuration tab of your company.
+
When you sell this service, nothing special will be trigered - to deliver the customer. + to deliver the customer, as you set the procurement method as + 'Make to Stock'.
- When you sell this product, OpenERP will use the available inventory
- for the delivery order.
-
+ When you sell this product, OpenERP will use the available
+ inventory for the delivery order.
+
If there are not enough quantities available, the delivery order
- will wait for new products. You should create others rules
- (orderpoints, manual purchase orders) to fulfill the inventory.
+ will wait for new products. To fulfill the inventory, you should
+ create others rules like orderpoints.
When you sell this product, a delivery order will be created. OpenERP will consider that the required quantities are always - available as it's a consumable (the stock on hand may become negative). + available as it's a consumable (as a result of this, the quantity + on hand may become negative).
Click to start a new project. -
-+
Projects are used to organize your activities; plan tasks, track issues, invoice timesheets. You can define internal projects (R&D, Improve Sales Process), private projects (My Todos) or customer ones. -
-- You will be able collaborate with internal users on - projects or invite customers to share your activities. +
+ You will be able collaborate with internal users on + projects or invite customers to share your activities.
+ Click to add a pricelist version. +
+ There can be more than one version of a pricelist, each of + these must be valid during a certain period of time. Some + examples of versions: Main Prices, 2010, 2011, Summer Sales, + etc. +
+
Here you can track all the product receptions of purchase
diff --git a/addons/sale/__init__.py b/addons/sale/__init__.py
index fe19b7fa609..5a7b4b499df 100644
--- a/addons/sale/__init__.py
+++ b/addons/sale/__init__.py
@@ -24,11 +24,9 @@
#----------------------------------------------------------
import sale
-import stock
import res_partner
import wizard
import report
-import company
import edi
import res_config
diff --git a/addons/sale/__openerp__.py b/addons/sale/__openerp__.py
index 6a0769b7da3..13f0fb53696 100644
--- a/addons/sale/__openerp__.py
+++ b/addons/sale/__openerp__.py
@@ -35,8 +35,10 @@ It handles the full sales workflow:
* **Quotation** -> **Sales order** -> **Invoice**
-Preferences
+Preferences (only with Warehouse Management installed)
-----------
+If you also installed the Warehouse Management, you can deal with the following preferences:
+
* Shipping: Choice of delivery at once or partial delivery
* Invoicing: choose how invoices will be paid
* Incoterms: International Commercial terms
@@ -55,15 +57,14 @@ The Dashboard for the Sales Manager will include
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
- 'images': ['images/deliveries_to_invoice.jpeg','images/sale_dashboard.jpeg','images/Sale_order_line_to_invoice.jpeg','images/sale_order.jpeg','images/sales_analysis.jpeg'],
- 'depends': ['stock', 'procurement', 'board', 'account_voucher'],
+ 'images': ['images/sale_dashboard.jpeg','images/Sale_order_line_to_invoice.jpeg','images/sale_order.jpeg','images/sales_analysis.jpeg'],
+ 'depends': ['account_voucher'],
'data': [
'wizard/sale_make_invoice_advance.xml',
'wizard/sale_line_invoice.xml',
'wizard/sale_make_invoice.xml',
'security/sale_security.xml',
'security/ir.model.access.csv',
- 'company_view.xml',
'sale_workflow.xml',
'sale_sequence.xml',
'sale_report.xml',
@@ -71,7 +72,6 @@ The Dashboard for the Sales Manager will include
'sale_view.xml',
'res_partner_view.xml',
'report/sale_report_view.xml',
- 'stock_view.xml',
'process/sale_process.xml',
'board_sale_view.xml',
'edi/sale_order_action_data.xml',
@@ -80,9 +80,7 @@ The Dashboard for the Sales Manager will include
'demo': ['sale_demo.xml'],
'test': [
'test/sale_order_demo.yml',
- 'test/picking_order_policy.yml',
'test/manual_order_policy.yml',
- 'test/prepaid_order_policy.yml',
'test/cancel_order.yml',
'test/delete_order.yml',
'test/edi_sale_order.yml',
diff --git a/addons/sale/edi/sale_order.py b/addons/sale/edi/sale_order.py
index b850922cbb2..edec15a86ae 100644
--- a/addons/sale/edi/sale_order.py
+++ b/addons/sale/edi/sale_order.py
@@ -185,16 +185,9 @@ class sale_order(osv.osv, EDIMixin):
order_lines = edi_document['order_line']
for order_line in order_lines:
- self._edi_requires_attributes(('date_planned', 'product_id', 'product_uom', 'product_qty', 'price_unit'), order_line)
+ self._edi_requires_attributes(( 'product_id', 'product_uom', 'product_qty', 'price_unit'), order_line)
order_line['product_uom_qty'] = order_line['product_qty']
del order_line['product_qty']
- date_planned = order_line.pop('date_planned')
- delay = 0
- if date_order and date_planned:
- # no security_days buffer, this is the promised date given by supplier
- delay = (datetime.strptime(date_planned, DEFAULT_SERVER_DATE_FORMAT) - \
- datetime.strptime(date_order, DEFAULT_SERVER_DATE_FORMAT)).days
- order_line['delay'] = delay
# discard web preview fields, if present
order_line.pop('price_subtotal', None)
@@ -216,11 +209,6 @@ class sale_order_line(osv.osv, EDIMixin):
edi_doc.update(product_uom=line.product_uos,
product_qty=line.product_uos_qty)
- # company.security_days is for internal use, so customer should only
- # see the expected date_planned based on line.delay
- date_planned = datetime.strptime(line.order_id.date_order, DEFAULT_SERVER_DATE_FORMAT) + \
- relativedelta(days=line.delay or 0.0)
- edi_doc['date_planned'] = date_planned.strftime(DEFAULT_SERVER_DATE_FORMAT)
edi_doc_list.append(edi_doc)
return edi_doc_list
diff --git a/addons/sale/edi/sale_order_action_data.xml b/addons/sale/edi/sale_order_action_data.xml
index c818a3a22ab..9796d0bda16 100644
--- a/addons/sale/edi/sale_order_action_data.xml
+++ b/addons/sale/edi/sale_order_action_data.xml
@@ -1,15 +1,6 @@
Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''}, Here is your ${object.state in ('draft', 'sent') and 'quotation' or 'order confirmation'} from ${object.company_id.name}: \n"
+" REFERENCES \n"
+" You can view the ${object.state in ('draft', 'sent') and 'quotation' or 'order confirmation'} document, download it and pay online using the following link:\n"
+" It is also possible to directly pay with Paypal: If you have any question, do not hesitate to contact us. Thank you for choosing ${object.company_id.name or 'us'}! \n"
+" Click to create a quotation or sale order for this customer.\n"
+" \n"
+" OpenERP will help you efficiently handle the complete sale flow:\n"
+" quotation, sale order, delivery, invoicing and\n"
+" payment.\n"
+" \n"
+" The social feature helps you organize discussions on each sale\n"
+" order, and allow your customer to keep track of the evolution\n"
+" of the sale order.\n"
+" \n"
+" Click to define a new sale shop.\n"
+" \n"
+" Each quotation or sale order must be linked to a shop. The\n"
+" shop also defines the warehouse from which the products will be\n"
+" delivered for each particular sales.\n"
+" \n"
+" Click to create a quotation, the first step of a new sale.\n"
+" \n"
+" OpenERP will help you handle efficiently the complete sale flow:\n"
+" from the quotation to the sale order, the\n"
+" delivery, the invoicing and the payment collection.\n"
+" \n"
+" The social feature helps you organize discussions on each sale\n"
+" order, and allow your customers to keep track of the evolution\n"
+" of the sale order.\n"
+" \n"
+" Click to create a quotation that can be converted into a sale\n"
+" order.\n"
+" \n"
+" OpenERP will help you efficiently handle the complete sales flow:\n"
+" quotation, sale order, delivery, invoicing and payment.\n"
+" \n"
+" Here is a list of each sales order line to be invoiced. You can\n"
+" invoice sales orders partially, by lines of sales order. You do\n"
+" not need this list if you invoice from the delivery orders or\n"
+" if you invoice sales totally.\n"
+"
\n"
-" % endif\n"
-" | Your contact: ${object.user_id.name} ${object.user_id.user_email "
-"and '<%s>'%(object.user_id.user_email) or ''}\n"
-"\n"
-"You can view the order confirmation, download it and even pay online using "
-"the following link:\n"
-" ${ctx.get('edi_web_url_view') or 'n/a'}\n"
-"\n"
-"% if object.order_policy in ('prepaid','manual') and object.company_id."
-"paypal_account:\n"
-"<% \n"
-"comp_name = quote(object.company_id.name)\n"
-"order_name = quote(object.name)\n"
-"paypal_account = quote(object.company_id.paypal_account)\n"
-"order_amount = quote(str(object.amount_total))\n"
-"cur_name = quote(object.pricelist_id.currency_id.name)\n"
-"paypal_url = \"https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business="
-"%s&item_name=%s%%20Order%%20%s&invoice=%s&amount=%s\" \\\n"
-" \"¤cy_code="
-"%s&button_subtype=services&no_note=1&bn=OpenERP_Order_PayNow_%s\" % \\\n"
-" (paypal_account,comp_name,order_name,order_name,order_amount,"
-"cur_name,cur_name)\n"
-"%>\n"
-"It is also possible to directly pay with Paypal:\n"
-" ${paypal_url}\n"
-"% endif\n"
-"\n"
-"If you have any question, do not hesitate to contact us.\n"
-"\n"
-"\n"
-"Thank you for choosing ${object.company_id.name}!\n"
-"\n"
-"\n"
-"--\n"
-"${object.user_id.name} ${object.user_id.user_email and '<%s>'%(object."
-"user_id.user_email) or ''}\n"
-"${object.company_id.name}\n"
-"% if object.company_id.street:\n"
-"${object.company_id.street or ''}\n"
-"% endif\n"
-"% if object.company_id.street2:\n"
-"${object.company_id.street2}\n"
-"% endif\n"
-"% if object.company_id.city or object.company_id.zip:\n"
-"${object.company_id.zip or ''} ${object.company_id.city or ''}\n"
-"% endif\n"
-"% if object.company_id.country_id:\n"
-"${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) "
-"or ''} ${object.company_id.country_id.name or ''}\n"
-"% endif\n"
-"% if object.company_id.phone:\n"
-"Phone: ${object.company_id.phone}\n"
-"% endif\n"
-"% if object.company_id.website:\n"
-"${object.company_id.website or ''}\n"
-"% endif\n"
-" "
-msgstr ""
-
-#. module: sale
-#: model:process.transition.action,name:sale.process_transition_action_validate0
-msgid "Validate"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0
-msgid "Confirm Order"
-msgstr ""
-
-#. module: sale
-#: model:process.transition,name:sale.process_transition_saleprocurement0
-msgid "Create Procurement Order"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0 field:sale.order,amount_tax:0
-#: field:sale.order.line,tax_id:0
-msgid "Taxes"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0
-msgid "Sales Order ready to be invoiced"
-msgstr ""
-
-#. module: sale
-#: help:sale.order,create_date:0
-msgid "Date on which sales order is created."
-msgstr ""
-
-#. module: sale
-#: model:ir.model,name:sale.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: sale
-#: view:sale.make.invoice:0 view:sale.order.line.make.invoice:0
-msgid "Create Invoices"
-msgstr ""
-
-#. module: sale
-#: view:sale.report:0
-msgid "Sales order created in current month"
-msgstr ""
-
-#. module: sale
-#: report:sale.order:0
-msgid "Fax :"
-msgstr ""
-
-#. module: sale
-#: help:sale.order.line,type:0
-msgid ""
-"If 'on order', it triggers a procurement when the sale order is confirmed to "
-"create a task, purchase order or manufacturing order linked to this sale "
-"order line."
-msgstr ""
-
-#. module: sale
-#: field:sale.advance.payment.inv,amount:0
-msgid "Advance Amount"
-msgstr ""
-
-#. module: sale
-#: field:sale.config.picking_policy,charge_delivery:0
-msgid "Do you charge the delivery?"
-msgstr ""
-
-#. module: sale
-#: selection:sale.order,invoice_quantity:0
-msgid "Shipped Quantities"
-msgstr ""
-
-#. module: sale
-#: selection:sale.config.picking_policy,order_policy:0
-msgid "Invoice Based on Sales Orders"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:331
-#, python-format
-msgid ""
-"If you change the pricelist of this order (and eventually the currency), "
-"prices of existing order lines will not be updated."
-msgstr ""
-
-#. module: sale
-#: model:ir.model,name:sale.model_stock_picking
-msgid "Picking List"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:412 code:addons/sale/sale.py:503
-#: code:addons/sale/sale.py:632 code:addons/sale/sale.py:1016
-#: code:addons/sale/sale.py:1033
-#, python-format
-msgid "Error !"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:603
-#, python-format
-msgid "Could not cancel sales order !"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0
-msgid "Qty(UoM)"
-msgstr ""
-
-#. module: sale
-#: view:sale.report:0
-msgid "Ordered Year of the sales order"
-msgstr ""
-
-#. module: sale
-#: selection:sale.report,month:0
-msgid "July"
-msgstr ""
-
-#. module: sale
-#: field:sale.order.line,procurement_id:0
-msgid "Procurement"
-msgstr ""
-
-#. module: sale
-#: selection:sale.order,state:0 selection:sale.report,state:0
-msgid "Shipping Exception"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:1156
-#, python-format
-msgid "Picking Information ! : "
-msgstr ""
-
-#. module: sale
-#: field:sale.make.invoice,grouped:0
-msgid "Group the invoices"
-msgstr ""
-
-#. module: sale
-#: field:sale.order,order_policy:0
-msgid "Invoice Policy"
-msgstr ""
-
-#. module: sale
-#: model:ir.actions.act_window,name:sale.action_config_picking_policy
-#: view:sale.config.picking_policy:0
-msgid "Setup your Invoicing Method"
-msgstr ""
-
-#. module: sale
-#: model:process.node,note:sale.process_node_invoice0
-msgid "To be reviewed by the accountant."
-msgstr ""
-
-#. module: sale
-#: view:sale.report:0
-msgid "Reference UoM"
-msgstr ""
-
-#. module: sale
-#: view:sale.config.picking_policy:0
-msgid ""
-"This tool will help you to install the right module and configure the system "
-"according to the method you use to invoice your customers."
-msgstr ""
-
-#. module: sale
-#: model:ir.model,name:sale.model_sale_order_line_make_invoice
-msgid "Sale OrderLine Make_invoice"
-msgstr ""
-
-#. module: sale
-#: selection:sale.order,state:0 selection:sale.report,state:0
-msgid "Invoice Exception"
-msgstr ""
-
-#. module: sale
-#: model:process.node,note:sale.process_node_saleorder0
-msgid "Drives procurement and invoicing"
-msgstr ""
-
-#. module: sale
-#: field:sale.order,invoiced:0
-msgid "Paid"
-msgstr ""
-
-#. module: sale
-#: model:ir.actions.act_window,name:sale.action_order_report_all
-#: model:ir.ui.menu,name:sale.menu_report_product_all view:sale.report:0
-msgid "Sales Analysis"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:1151
-#, python-format
-msgid ""
-"You selected a quantity of %d Units.\n"
-"But it's not compatible with the selected packaging.\n"
-"Here is a proposition of quantities according to the packaging:\n"
-"EAN: %s Quantity: %s Type of ul: %s"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0
-msgid "Recreate Packing"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0 field:sale.order.line,property_ids:0
-msgid "Properties"
-msgstr ""
-
-#. module: sale
-#: model:process.node,name:sale.process_node_quotation0
-#: selection:sale.order,state:0 selection:sale.report,state:0
-msgid "Quotation"
-msgstr ""
-
-#. module: sale
-#: model:process.transition,note:sale.process_transition_invoice0
-msgid ""
-"The Salesman creates an invoice manually, if the sales order shipping policy "
-"is 'Shipping and Manual in Progress'. The invoice is created automatically "
-"if the shipping policy is 'Payment before Delivery'."
-msgstr ""
-
-#. module: sale
-#: help:sale.config.picking_policy,order_policy:0
-msgid "You can generate invoices based on sales orders or based on shippings."
-msgstr ""
-
-#. module: sale
-#: view:sale.order.line:0
-msgid "Confirmed sale order lines, not yet delivered"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:473
-#, python-format
-msgid "Customer Invoices"
-msgstr ""
-
-#. module: sale
-#: model:process.process,name:sale.process_process_salesprocess0
-#: view:sale.order:0 view:sale.report:0
-msgid "Sales"
-msgstr ""
-
-#. module: sale
-#: report:sale.order:0 field:sale.order.line,price_unit:0
-msgid "Unit Price"
-msgstr ""
-
-#. module: sale
-#: selection:sale.order,state:0 view:sale.order.line:0
-#: selection:sale.order.line,state:0 selection:sale.report,state:0
-msgid "Done"
-msgstr ""
-
-#. module: sale
-#: model:process.node,name:sale.process_node_invoice0
-#: model:process.node,name:sale.process_node_invoiceafterdelivery0
-msgid "Invoice"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:1171
-#, python-format
-msgid ""
-"You have to select a customer in the sales form !\n"
-"Please set one customer before choosing a product."
-msgstr ""
-
-#. module: sale
-#: field:sale.order,origin:0
-msgid "Source Document"
-msgstr ""
-
-#. module: sale
-#: view:sale.order.line:0
-msgid "To Do"
-msgstr ""
-
-#. module: sale
-#: field:sale.order,picking_policy:0
-msgid "Picking Policy"
-msgstr ""
-
-#. module: sale
-#: model:process.node,note:sale.process_node_deliveryorder0
-msgid "Document of the move to the customer."
-msgstr ""
-
-#. module: sale
-#: help:sale.order,amount_untaxed:0
-msgid "The amount without tax."
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:604
-#, python-format
-msgid "You must first cancel all picking attached to this sales order."
-msgstr ""
-
-#. module: sale
-#: model:ir.model,name:sale.model_sale_advance_payment_inv
-msgid "Sales Advance Payment Invoice"
-msgstr ""
-
-#. module: sale
-#: view:sale.report:0 field:sale.report,month:0
-msgid "Month"
-msgstr ""
-
-#. module: sale
-#: model:email.template,subject:sale.email_template_edi_sale
-msgid "${object.company_id.name} Order (Ref ${object.name or 'n/a' })"
-msgstr ""
-
-#. module: sale
-#: view:sale.order.line:0 field:sale.order.line,product_id:0
-#: view:sale.report:0 field:sale.report,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: sale
-#: model:process.transition.action,name:sale.process_transition_action_cancelassignation0
-msgid "Cancel Assignation"
-msgstr ""
-
-#. module: sale
-#: model:ir.model,name:sale.model_sale_config_picking_policy
-msgid "sale.config.picking_policy"
-msgstr ""
-
-#. module: sale
-#: view:account.invoice.report:0 view:board.board:0
-#: model:ir.actions.act_window,name:sale.action_turnover_by_month
-msgid "Monthly Turnover"
-msgstr ""
-
-#. module: sale
-#: field:sale.order,invoice_quantity:0
-msgid "Invoice on"
-msgstr ""
-
-#. module: sale
-#: report:sale.order:0
-msgid "Date Ordered"
-msgstr ""
-
-#. module: sale
-#: field:sale.order.line,product_uos:0
-msgid "Product UoS"
-msgstr ""
-
-#. module: sale
-#: selection:sale.report,state:0
-msgid "Manual In Progress"
-msgstr ""
-
-#. module: sale
-#: field:sale.order.line,product_uom:0
-msgid "Product UoM"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0
-msgid "Logistic"
-msgstr ""
-
-#. module: sale
-#: view:sale.order.line:0
-msgid "Order"
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:1017
-#: code:addons/sale/wizard/sale_make_invoice_advance.py:71
-#, python-format
-msgid "There is no income account defined for this product: \"%s\" (id:%d)"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0
-msgid "Ignore Exception"
-msgstr ""
-
-#. module: sale
-#: model:process.transition,note:sale.process_transition_saleinvoice0
-msgid ""
-"Depending on the Invoicing control of the sales order, the invoice can be "
-"based on delivered or on ordered quantities. Thus, a sales order can "
-"generates an invoice or a delivery order as soon as it is confirmed by the "
-"salesman."
-msgstr ""
-
-#. module: sale
-#: code:addons/sale/sale.py:1251
-#, python-format
-msgid ""
-"You plan to sell %.2f %s but you only have %.2f %s available !\n"
-"The real stock is %.2f %s. (without reservations)"
-msgstr ""
-
-#. module: sale
-#: view:sale.order:0
-msgid "States"
-msgstr ""
-
-#. module: sale
-#: view:sale.config.picking_policy:0
-msgid "res_config_contents"
-msgstr ""
-
-#. module: sale
-#: field:sale.order,client_order_ref:0
-msgid "Customer Reference"
-msgstr ""
-
-#. module: sale
-#: field:sale.order,amount_total:0 view:sale.order.line:0
-msgid "Total"
-msgstr ""
-
-#. module: sale
-#: report:sale.order:0 view:sale.order.line:0
-msgid "Price"
-msgstr ""
-
-#. module: sale
-#: model:process.transition,note:sale.process_transition_deliver0
-msgid ""
-"Depending on the configuration of the location Output, the move between the "
-"output area and the customer is done through the Delivery Order manually or "
-"automatically."
-msgstr ""
-
-#. module: sale
-#: selection:sale.order,order_policy:0
-msgid "Pay before delivery"
-msgstr ""
-
-#. module: sale
-#: view:board.board:0 model:ir.actions.act_window,name:sale.open_board_sales
+#: view:board.board:0
msgid "Sales Dashboard"
msgstr ""
#. module: sale
-#: model:ir.actions.act_window,name:sale.action_sale_order_make_invoice
-#: model:ir.actions.act_window,name:sale.action_view_sale_order_line_make_invoice
-#: view:sale.order:0
-msgid "Make Invoices"
+#: model:email.template,body_html:sale.email_template_edi_sale
+msgid "\n"
+"
\n"
+" Order number: ${object.name}
\n"
+" Order total: ${object.amount_total} ${object.pricelist_id.currency_id.name}
\n"
+" Order date: ${object.date_order}
\n"
+" % if object.origin:\n"
+" Order reference: ${object.origin}
\n"
+" % endif\n"
+" % if object.client_order_ref:\n"
+" Your reference: ${object.client_order_ref}
\n"
+" % endif\n"
+" Your contact: ${object.user_id.name}\n"
+"
\n"
+"
\n"
+" \n"
+" % endif\n"
+"\n"
+"
\n"
+"
\n"
+"
\n"
+" \n"
+" ${object.company_id.name}
\n"
+"
\n"
+" % endif\n"
+" % if object.company_id.street2:\n"
+" ${object.company_id.street2}
\n"
+" % endif\n"
+" % if object.company_id.city or object.company_id.zip:\n"
+" ${object.company_id.zip} ${object.company_id.city}
\n"
+" % endif\n"
+" % if object.company_id.country_id:\n"
+" ${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) or ''} ${object.company_id.country_id.name or ''}
\n"
+" % endif\n"
+" \n"
+" % if object.company_id.phone:\n"
+"