diff --git a/addons/account/i18n/ar.po b/addons/account/i18n/ar.po
index d8dcf40a2d3..170ac722c7a 100644
--- a/addons/account/i18n/ar.po
+++ b/addons/account/i18n/ar.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-22 04:48+0000\n"
-"X-Generator: Launchpad (build 13996)\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:38+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index a40708388b2..bdb498c8554 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -807,11 +807,11 @@ class account_voucher(osv.osv):
if voucher.currency_rate_difference > 0:
account_id = voucher.company_id.property_expense_currency_exchange
if not account_id:
- raise osv.except_osv(_('Warning'),_("Unable to create accounting entry for currency rate difference. You have to configure the field 'Income Currency Rate' on the company! "))
+ raise osv.except_osv(_('Warning'),_("Unable to create accounting entry for currency rate difference. You have to configure the field 'Expense Currency Rate' on the company! "))
else:
account_id = voucher.company_id.property_income_currency_exchange
if not account_id:
- raise osv.except_osv(_('Warning'),_("Unable to create accounting entry for currency rate difference. You have to configure the field 'Expense Currency Rate' on the company! "))
+ raise osv.except_osv(_('Warning'),_("Unable to create accounting entry for currency rate difference. You have to configure the field 'Income Currency Rate' on the company! "))
currency_diff_line = {
'name': _('Currency Difference'),
diff --git a/addons/analytic/i18n/ar.po b/addons/analytic/i18n/ar.po
index 036a3ef8c46..4d062045a72 100644
--- a/addons/analytic/i18n/ar.po
+++ b/addons/analytic/i18n/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-22 04:48+0000\n"
-"X-Generator: Launchpad (build 13996)\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:39+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
#. module: analytic
#: field:account.analytic.account,child_ids:0
diff --git a/addons/base_setup/base_setup_views.xml b/addons/base_setup/base_setup_views.xml
index cbfcbf4fb8c..afc64d3f83c 100644
--- a/addons/base_setup/base_setup_views.xml
+++ b/addons/base_setup/base_setup_views.xml
@@ -70,7 +70,6 @@
-
2
@@ -222,7 +221,6 @@
-
1
diff --git a/addons/crm/crm_installer.py b/addons/crm/crm_installer.py
index 595cfbc2382..fc3816c80fa 100644
--- a/addons/crm/crm_installer.py
+++ b/addons/crm/crm_installer.py
@@ -30,6 +30,7 @@ class crm_installer(osv.osv_memory):
'crm_helpdesk': fields.boolean('Helpdesk', help="Manages a Helpdesk service."),
'crm_fundraising': fields.boolean('Fundraising', help="This may help associations in their fundraising process and tracking."),
'crm_claim': fields.boolean('Claims', help="Manages the suppliers and customers claims, including your corrective or preventive actions."),
+ 'import_sugarcrm': fields.boolean('Import Data from SugarCRM', help="Help you to import and update data from SugarCRM to OpenERP"),
'crm_caldav': fields.boolean('Calendar Synchronizing', help="Helps you to synchronize the meetings with other calendar clients and mobiles."),
'sale_crm': fields.boolean('Opportunity to Quotation', help="Create a Quotation from an Opportunity."),
'fetchmail': fields.boolean('Fetch Emails', help="Allows you to receive E-Mails from POP/IMAP server."),
@@ -49,6 +50,7 @@ class crm_installer(osv.osv_memory):
nodes = doc.xpath("//field[@name='sale_crm']")
for node in nodes:
node.set('invisible', '0')
+ node.set('modifiers', '{}')
res['arch'] = etree.tostring(doc)
return res
diff --git a/addons/crm/crm_installer_view.xml b/addons/crm/crm_installer_view.xml
index 9e820075aa7..e517d242f5c 100644
--- a/addons/crm/crm_installer_view.xml
+++ b/addons/crm/crm_installer_view.xml
@@ -16,6 +16,7 @@
+
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index befcbd7bcad..636cb8289fb 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -58,7 +58,7 @@
-
+
, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-09-22 20:38+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Danish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:38+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "# Leads"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: selection:crm.lead,type:0
+#: selection:crm.lead.report,type:0
+msgid "Lead"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor3
+msgid "Need Services"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,rrule_type:0
+msgid "Monthly"
+msgstr "Månedligt"
+
+#. module: crm
+#: view:crm.opportunity2phonecall:0
+msgid "Schedule a PhoneCall"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_case_stage
+msgid "Stage of case"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Visibility"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,title:0
+msgid "Title"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,show_as:0
+msgid "Show as"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,day:0
+#: selection:crm.meeting,select1:0
+msgid "Date of month"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.phonecall:0
+msgid "Today"
+msgstr "Idag"
+
+#. module: crm
+#: view:crm.merge.opportunity:0
+msgid "Select Opportunities"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: view:crm.phonecall2opportunity:0
+#: view:crm.phonecall2phonecall:0
+#: view:crm.send.mail:0
+msgid " "
+msgstr " "
+
+#. module: crm
+#: view:crm.lead.report:0
+#: field:crm.phonecall.report,delay_close:0
+msgid "Delay to close"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Previous Stage"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_add_note.py:26
+#, python-format
+msgid "Can not add note!"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.stage,name:0
+msgid "Stage Name"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: field:crm.lead.report,day:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,day:0
+msgid "Day"
+msgstr "Dag"
+
+#. module: crm
+#: sql_constraint:crm.case.section:0
+msgid "The code of the sales team must be unique !"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:95
+#, python-format
+msgid "Lead '%s' has been converted to an opportunity."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:228
+#, python-format
+msgid "The lead '%s' has been closed."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,freq:0
+msgid "No Repeat"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:135
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:260
+#: code:addons/crm/wizard/crm_lead_to_partner.py:55
+#: code:addons/crm/wizard/crm_phonecall_to_partner.py:52
+#, python-format
+msgid "Warning !"
+msgstr "Advarsel!"
+
+#. module: crm
+#: selection:crm.meeting,rrule_type:0
+msgid "Yearly"
+msgstr "Årligt"
+
+#. module: crm
+#: field:crm.segmentation.line,name:0
+msgid "Rule Name"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.resource.type:0
+#: view:crm.lead:0
+#: field:crm.lead,type_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,type_id:0
+#: model:ir.model,name:crm.model_crm_case_resource_type
+msgid "Campaign"
+msgstr "Kampagne"
+
+#. module: crm
+#: selection:crm.lead2opportunity.partner,action:0
+msgid "Do not create a partner"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Search Opportunities"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_merge_opportunities.py:46
+#, python-format
+msgid ""
+"Opportunity must have Partner assigned before merging with other Opportunity."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_merge_opportunities.py:46
+#: code:addons/crm/wizard/crm_merge_opportunities.py:53
+#, python-format
+msgid "Warning!"
+msgstr "Advarsel!"
+
+#. module: crm
+#: view:crm.lead.report:0
+#: model:ir.actions.act_window,name:crm.action_report_crm_opportunity
+#: model:ir.ui.menu,name:crm.menu_report_crm_opportunities_tree
+msgid "Opportunities Analysis"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,partner_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,partner_id:0
+#: field:crm.lead2opportunity,partner_id:0
+#: field:crm.lead2opportunity.partner,partner_id:0
+#: field:crm.lead2partner,partner_id:0
+#: view:crm.meeting:0
+#: field:crm.meeting,partner_id:0
+#: field:crm.partner2opportunity,partner_id:0
+#: view:crm.phonecall:0
+#: field:crm.phonecall,partner_id:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,partner_id:0
+#: field:crm.phonecall2opportunity,partner_id:0
+#: field:crm.phonecall2partner,partner_id:0
+#: model:ir.model,name:crm.model_res_partner
+#: model:process.node,name:crm.process_node_partner0
+msgid "Partner"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,organizer:0
+#: field:crm.meeting,organizer_id:0
+msgid "Organizer"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall:0
+#: view:crm.phonecall2phonecall:0
+#: model:ir.actions.act_window,name:crm.phonecall_to_phonecall_act
+#: view:res.partner:0
+msgid "Schedule Other Call"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,edit_all:0
+msgid "Edit all Occurrences of recurrent Meeting."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_opportunity_to_phonecall.py:134
+#: code:addons/crm/wizard/crm_phonecall_to_phonecall.py:89
+#: model:crm.case.categ,name:crm.categ_meet3
+#: view:crm.phonecall:0
+#: model:ir.ui.menu,name:crm.menu_crm_config_phonecall
+#: view:res.partner:0
+#, python-format
+msgid "Phone Call"
+msgstr "Telefonopkald"
+
+#. module: crm
+#: field:crm.lead,optout:0
+msgid "Opt-Out"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_opportunity.py:108
+#, python-format
+msgid "The opportunity '%s' has been marked as lost."
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.action_report_crm_lead
+msgid ""
+"Leads Analysis allows you to check different CRM related information. Check "
+"for treatment delays, number of responses given and emails sent. You can "
+"sort out your leads analysis by different groups to get accurate grained "
+"analysis."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Send New Email"
+msgstr "Send ny email"
+
+#. module: crm
+#: field:crm.segmentation,segmentation_line:0
+msgid "Criteria"
+msgstr "Kriterier"
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Excluded Answers :"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.stage,section_ids:0
+msgid "Sections"
+msgstr ""
+
+#. module: crm
+#: view:crm.merge.opportunity:0
+msgid "_Merge"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: model:ir.actions.act_window,name:crm.action_report_crm_lead
+#: model:ir.ui.menu,name:crm.menu_report_crm_leads_tree
+msgid "Leads Analysis"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead2opportunity.action:0
+msgid ""
+"If you select Merge with existing Opportunity, the lead details(with the "
+"communication history) will be merged with existing Opportunity of Selected "
+"partner."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,class:0
+msgid "Public"
+msgstr "Offentlig"
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_case_resource_type_act
+#: model:ir.ui.menu,name:crm.menu_crm_case_resource_type_act
+msgid "Campaigns"
+msgstr "Kampagner"
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_lead_categ_action
+#: model:ir.ui.menu,name:crm.menu_crm_case_phonecall-act
+#: model:ir.ui.menu,name:crm.menu_crm_lead_categ
+msgid "Categories"
+msgstr "Kategorier"
+
+#. module: crm
+#: selection:crm.meeting,end_type:0
+msgid "Forever"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,optout:0
+msgid ""
+"If opt-out is checked, this contact has refused to receive emails or "
+"unsubscribed to a campaign."
+msgstr ""
+
+#. module: crm
+#: model:process.transition,name:crm.process_transition_leadpartner0
+msgid "Prospect Partner"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,contact_name:0
+msgid "Contact Name"
+msgstr "Kontaktnavn"
+
+#. module: crm
+#: selection:crm.lead2opportunity.partner,action:0
+#: selection:crm.lead2partner,action:0
+#: selection:crm.phonecall2partner,action:0
+msgid "Link to an existing partner"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.meeting:0
+#: field:crm.phonecall,partner_contact:0
+msgid "Contact"
+msgstr "Kontaktperson"
+
+#. module: crm
+#: view:crm.installer:0
+msgid "Enhance your core CRM Application with additional functionalities."
+msgstr ""
+
+#. module: crm
+#: field:crm.case.stage,on_change:0
+msgid "Change Probability Automatically"
+msgstr ""
+
+#. module: crm
+#: field:base.action.rule,regex_history:0
+msgid "Regular Expression on Case History"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:209
+#, python-format
+msgid "The lead '%s' has been opened."
+msgstr ""
+
+#. module: crm
+#: model:process.transition,name:crm.process_transition_opportunitymeeting0
+msgid "Opportunity Meeting"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead.report,delay_close:0
+#: help:crm.phonecall.report,delay_close:0
+msgid "Number of Days to close the case"
+msgstr ""
+
+#. module: crm
+#: model:process.node,note:crm.process_node_opportunities0
+msgid "When a real project/opportunity is detected"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,crm_fundraising:0
+msgid "Fundraising"
+msgstr ""
+
+#. module: crm
+#: view:res.partner:0
+#: field:res.partner,opportunity_ids:0
+msgid "Leads and Opportunities"
+msgstr ""
+
+#. module: crm
+#: view:crm.send.mail:0
+msgid "_Send"
+msgstr "_Send"
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Communication"
+msgstr "Kommunikation"
+
+#. module: crm
+#: field:crm.case.section,change_responsible:0
+msgid "Change Responsible"
+msgstr ""
+
+#. module: crm
+#: field:crm.merge.opportunity,state:0
+msgid "Set State To"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_case_categ_phone_outgoing0
+msgid ""
+"Outbound Calls list all the calls to be done by your sales team. A salesman "
+"can record the information about the call in the form view. This information "
+"will be stored in the partner form to trace every contact you have with a "
+"customer. You can also import a .CSV file with a list of calls to be done by "
+"your sales team."
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_lead2opportunity_action
+msgid "Convert/Merge Opportunity"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,write_date:0
+msgid "Update Date"
+msgstr "Opdater dato"
+
+#. module: crm
+#: view:crm.lead2opportunity.action:0
+#: field:crm.lead2opportunity.action,name:0
+msgid "Select Action"
+msgstr ""
+
+#. module: crm
+#: field:base.action.rule,trg_categ_id:0
+#: view:crm.lead:0
+#: field:crm.lead,categ_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,categ_id:0
+#: field:crm.opportunity2phonecall,categ_id:0
+#: field:crm.phonecall,categ_id:0
+#: field:crm.phonecall.report,categ_id:0
+#: field:crm.phonecall2phonecall,categ_id:0
+msgid "Category"
+msgstr "Kategori"
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "#Opportunities"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_oppor2
+msgid "Campaign 1"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_oppor1
+msgid "Campaign 2"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Privacy"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "Opportunity Analysis"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,location:0
+msgid "Location of Event"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,rrule:0
+msgid "Recurrent Rule"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead1
+msgid "Version 4.2"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead2
+msgid "Version 4.4"
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,fetchmail:0
+msgid "Allows you to receive E-Mails from POP/IMAP server."
+msgstr ""
+
+#. module: crm
+#: model:process.transition,note:crm.process_transition_opportunitymeeting0
+msgid "Normal or phone meeting for opportunity"
+msgstr ""
+
+#. module: crm
+#: model:process.node,note:crm.process_node_leads0
+msgid "Very first contact with new prospect"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:278
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:197
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:231
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:299
+#: view:crm.lead2opportunity:0
+#: view:crm.partner2opportunity:0
+#: model:ir.actions.act_window,name:crm.action_crm_lead2opportunity
+#: model:ir.actions.act_window,name:crm.action_view_crm_partner2opportunity
+#: model:ir.actions.act_window,name:crm.crm_partner2opportunity
+#, python-format
+msgid "Create Opportunity"
+msgstr ""
+
+#. module: crm
+#: view:crm.installer:0
+msgid "Configure"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:378
+#: view:crm.lead:0
+#: view:res.partner:0
+#, python-format
+msgid "Escalate"
+msgstr ""
+
+#. module: crm
+#: model:ir.module.module,shortdesc:crm.module_meta_information
+msgid "Customer & Supplier Relationship Management"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "June"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation,state:0
+msgid "Not Running"
+msgstr ""
+
+#. module: crm
+#: view:crm.send.mail:0
+#: model:ir.actions.act_window,name:crm.action_crm_reply_mail
+msgid "Reply to last Mail"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,email:0
+msgid "E-Mail"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,wiki_sale_faq:0
+msgid "Sale FAQ"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_send_mail_attachment
+msgid "crm.send.mail.attachment"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "October"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Included Answers :"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,email_from:0
+#: help:crm.phonecall,email_from:0
+msgid "These people will receive email."
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: field:crm.meeting,name:0
+msgid "Summary"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "State of Mind Computation"
+msgstr ""
+
+#. module: crm
+#: help:crm.case.section,change_responsible:0
+msgid ""
+"Thick this box if you want that on escalation, the responsible of this sale "
+"team automatically becomes responsible of the lead/opportunity escaladed"
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,outlook:0
+#: help:crm.installer,thunderbird:0
+msgid ""
+"Allows you to link your e-mail to OpenERP's documents. You can attach it to "
+"any existing one in OpenERP or create a new one."
+msgstr ""
+
+#. module: crm
+#: view:crm.case.categ:0
+msgid "Case Category"
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,som_interval_default:0
+msgid ""
+"Default state of mind for period preceeding the 'Max Interval' computation. "
+"This is the starting state of mind by default if the partner has no event."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,end_type:0
+msgid "End date"
+msgstr ""
+
+#. module: crm
+#: constraint:base.action.rule:0
+msgid "Error: The mail is not well formated"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Profiling Options"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall.report:0
+msgid "#Phone calls"
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,categ_id:0
+msgid ""
+"The partner category that will be added to partners that match the "
+"segmentation criterions after computation."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Communication history"
+msgstr ""
+
+#. module: crm
+#: help:crm.phonecall,canal_id:0
+msgid ""
+"The channels represent the different communication "
+"modes available with the customer. With each commercial opportunity, you can "
+"indicate the canall which is this opportunity source."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_meeting.py:93
+#, python-format
+msgid "The meeting '%s' has been confirmed."
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,user_id:0
+msgid "Responsible User"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_phonecall_to_partner.py:53
+#, python-format
+msgid "A partner is already defined on this phonecall."
+msgstr ""
+
+#. module: crm
+#: help:crm.case.section,reply_to:0
+msgid ""
+"The email address put in the 'Reply-To' of all emails sent by OpenERP about "
+"cases in this sales team"
+msgstr ""
+
+#. module: crm
+#: view:res.users:0
+msgid "Current Activity"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,exrule:0
+msgid ""
+"Defines a rule or repeating pattern of time to exclude from the recurring "
+"rule."
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,resource_calendar_id:0
+msgid "Working Time"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation.line:0
+msgid "Partner Segmentation Lines"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.meeting:0
+msgid "Details"
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,crm_caldav:0
+msgid ""
+"Helps you to synchronize the meetings with other calendar clients and "
+"mobiles."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,freq:0
+msgid "Years"
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,crm_claim:0
+msgid ""
+"Manages the suppliers and customers claims, including your corrective or "
+"preventive actions."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Leads Form"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+#: model:ir.model,name:crm.model_crm_segmentation
+msgid "Partner Segmentation"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,probable_revenue:0
+msgid "Probable Revenue"
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,name:0
+msgid "The name of the segmentation."
+msgstr ""
+
+#. module: crm
+#: field:crm.case.stage,probability:0
+#: field:crm.lead,probability:0
+msgid "Probability (%)"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Leads Generation"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+#: model:ir.ui.menu,name:crm.menu_board_statistics_dash
+msgid "Statistics Dashboard"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:88
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:98
+#: code:addons/crm/wizard/crm_partner_to_opportunity.py:101
+#: code:addons/crm/wizard/crm_phonecall_to_opportunity.py:117
+#: view:crm.lead:0
+#: selection:crm.lead,type:0
+#: selection:crm.lead.report,type:0
+#: field:crm.lead2opportunity,name:0
+#: field:crm.meeting,opportunity_id:0
+#: field:crm.phonecall,opportunity_id:0
+#, python-format
+msgid "Opportunity"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead7
+msgid "Television"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,crm_caldav:0
+msgid "Calendar Synchronizing"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Stop Process"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall:0
+msgid "Search Phonecalls"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead2opportunity.partner:0
+#: view:crm.lead2partner:0
+#: view:crm.phonecall2partner:0
+msgid "Continue"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,som_interval:0
+msgid "Days per Periode"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,byday:0
+msgid "By day"
+msgstr ""
+
+#. module: crm
+#: field:base.action.rule,act_section_id:0
+msgid "Set Team to"
+msgstr ""
+
+#. module: crm
+#: view:calendar.attendee:0
+#: field:calendar.attendee,categ_id:0
+msgid "Event Type"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_installer
+msgid "crm.installer"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,exclusif:0
+msgid "Exclusive"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_opportunity.py:91
+#, python-format
+msgid "The opportunity '%s' has been won."
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,alarm_id:0
+msgid "Set an alarm at this time, before the event occurs"
+msgstr ""
+
+#. module: crm
+#: model:ir.module.module,description:crm.module_meta_information
+msgid ""
+"The generic OpenERP Customer Relationship Management\n"
+"system enables a group of people to intelligently and efficiently manage\n"
+"leads, opportunities, meeting, phonecall etc.\n"
+"It manages key tasks such as communication, identification, prioritization,\n"
+"assignment, resolution and notification.\n"
+"\n"
+"OpenERP ensures that all cases are successfully tracked by users, customers "
+"and\n"
+"suppliers. It can automatically send reminders, escalate the request, "
+"trigger\n"
+"specific methods and lots of other actions based on your own enterprise "
+"rules.\n"
+"\n"
+"The greatest thing about this system is that users don't need to do "
+"anything\n"
+"special. They can just send email to the request tracker. OpenERP will take\n"
+"care of thanking them for their message, automatically routing it to the\n"
+"appropriate staff, and make sure all future correspondence gets to the "
+"right\n"
+"place.\n"
+"\n"
+"The CRM module has a email gateway for the synchronisation interface\n"
+"between mails and OpenERP. \n"
+"Create dashboard for CRM that includes:\n"
+" * My Leads (list)\n"
+" * Leads by Stage (graph)\n"
+" * My Meetings (list)\n"
+" * Sales Pipeline by Stage (graph)\n"
+" * My Cases (list)\n"
+" * Jobs Tracking (graph)\n"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,create_date:0
+#: field:crm.phonecall.report,create_date:0
+msgid "Create Date"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,ref2:0
+msgid "Reference 2"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Sales Purchase"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.stage:0
+#: field:crm.case.stage,requirements:0
+msgid "Requirements"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,exdate:0
+msgid ""
+"This property defines the list of date/time exceptions for a recurring "
+"calendar component."
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall2opportunity:0
+msgid "Convert To Opportunity "
+msgstr ""
+
+#. module: crm
+#: help:crm.case.stage,sequence:0
+msgid "Gives the sequence order when displaying a list of case stages."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.merge.opportunity,opportunity_ids:0
+#: model:ir.actions.act_window,name:crm.crm_case_category_act_oppor11
+#: model:ir.ui.menu,name:crm.menu_crm_case_opp
+#: model:process.node,name:crm.process_node_opportunities0
+msgid "Opportunities"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,categ_id:0
+msgid "Partner Category"
+msgstr ""
+
+#. module: crm
+#: view:crm.add.note:0
+#: model:ir.actions.act_window,name:crm.action_crm_add_note
+msgid "Add Note"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,is_supplier_add:0
+msgid "Supplier"
+msgstr ""
+
+#. module: crm
+#: help:crm.send.mail,reply_to:0
+msgid "Reply-to of the Sales team defined on this case"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Mark Won"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,expr_name:0
+msgid "Purchase Amount"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Mark Lost"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "March"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:230
+#, python-format
+msgid "The opportunity '%s' has been closed."
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,day_open:0
+msgid "Days to Open"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Show time as"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:264
+#: view:crm.phonecall2partner:0
+#, python-format
+msgid "Create Partner"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,expr_operator:0
+msgid "<"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,mobile:0
+#: field:crm.phonecall,partner_mobile:0
+msgid "Mobile"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,end_type:0
+msgid "Way to end reccurency"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_merge_opportunities.py:53
+#, python-format
+msgid ""
+"There are no other 'Open' or 'Pending' Opportunities for the partner '%s'."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Next Stage"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+msgid "My Meetings"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,ref:0
+msgid "Reference"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,optin:0
+msgid "Opt-In"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_opportunity.py:208
+#: code:addons/crm/crm_phonecall.py:185
+#: code:addons/crm/wizard/crm_phonecall_to_meeting.py:55
+#: code:addons/crm/wizard/crm_phonecall_to_meeting.py:137
+#: view:crm.meeting:0
+#: model:ir.actions.act_window,name:crm.act_crm_opportunity_crm_meeting_new
+#: model:ir.actions.act_window,name:crm.crm_case_categ_meet
+#: model:ir.ui.menu,name:crm.menu_crm_case_categ_meet
+#: model:ir.ui.menu,name:crm.menu_meeting_sale
+#: view:res.partner:0
+#: field:res.partner,meeting_ids:0
+#, python-format
+msgid "Meetings"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Choose day where repeat the meeting"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,date_action_next:0
+#: field:crm.lead,title_action:0
+#: field:crm.meeting,date_action_next:0
+#: field:crm.phonecall,date_action_next:0
+msgid "Next Action"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,end_date:0
+msgid "Repeat Until"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,date_deadline:0
+msgid "Deadline"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,active:0
+msgid ""
+"If the active field is set to true, it will allow you to hide the "
+"event alarm information without removing it."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_phonecall_to_opportunity.py:57
+#, python-format
+msgid "Closed/Cancelled Phone Call Could not convert into Opportunity"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Partner Segmentations"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: field:crm.meeting,user_id:0
+#: view:crm.phonecall:0
+#: field:crm.phonecall,user_id:0
+#: view:res.partner:0
+msgid "Responsible"
+msgstr ""
+
+#. module: crm
+#: view:res.partner:0
+msgid "Previous"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Statistics"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: field:crm.send.mail,email_from:0
+msgid "From"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead2opportunity.action:0
+#: view:res.partner:0
+msgid "Next"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Stage:"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.stage,name:crm.stage_lead5
+#: model:crm.case.stage,name:crm.stage_opportunity5
+#: view:crm.lead:0
+msgid "Won"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,delay_expected:0
+msgid "Overpassed Deadline"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.section,name:crm.section_sales_department
+msgid "Sales Department"
+msgstr ""
+
+#. module: crm
+#: field:crm.send.mail,html:0
+msgid "HTML formatting?"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.stage,type:0
+#: field:crm.lead,type:0
+#: field:crm.lead.report,type:0
+#: view:crm.meeting:0
+#: view:crm.phonecall:0
+#: view:crm.phonecall.report:0
+#: view:res.partner:0
+msgid "Type"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Compute Segmentation"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead,priority:0
+#: selection:crm.lead.report,priority:0
+#: selection:crm.phonecall,priority:0
+#: selection:crm.phonecall.report,priority:0
+msgid "Lowest"
+msgstr ""
+
+#. module: crm
+#: view:crm.add.note:0
+#: view:crm.send.mail:0
+#: field:crm.send.mail.attachment,binary:0
+msgid "Attachment"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "August"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,create_date:0
+#: field:crm.lead.report,creation_date:0
+#: field:crm.meeting,create_date:0
+#: field:crm.phonecall,create_date:0
+#: field:crm.phonecall.report,creation_date:0
+msgid "Creation Date"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor5
+msgid "Need a Website Design"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,recurrent_uid:0
+msgid "Recurrent ID"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.meeting:0
+#: field:crm.send.mail,subject:0
+#: view:res.partner:0
+msgid "Subject"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,tu:0
+msgid "Tue"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:300
+#: view:crm.case.stage:0
+#: view:crm.lead:0
+#: field:crm.lead,stage_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,stage_id:0
+#, python-format
+msgid "Stage"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "History Information"
+msgstr ""
+
+#. module: crm
+#: field:base.action.rule,act_mail_to_partner:0
+msgid "Mail to Partner"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Mailings"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,class:0
+msgid "Mark as"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,count:0
+msgid "Repeat"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,rrule_type:0
+msgid "Let the event automatically repeat at that interval"
+msgstr ""
+
+#. module: crm
+#: view:base.action.rule:0
+msgid "Condition Case Fields"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.section:0
+#: field:crm.case.section,stage_ids:0
+#: view:crm.case.stage:0
+#: model:ir.actions.act_window,name:crm.crm_case_stage_act
+#: model:ir.actions.act_window,name:crm.crm_lead_stage_act
+#: model:ir.actions.act_window,name:crm.crm_opportunity_stage_act
+#: model:ir.ui.menu,name:crm.menu_crm_lead_stage_act
+#: model:ir.ui.menu,name:crm.menu_crm_opportunity_stage_act
+msgid "Stages"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,planned_revenue:0
+#: field:crm.lead2opportunity,planned_revenue:0
+#: field:crm.partner2opportunity,planned_revenue:0
+#: field:crm.phonecall2opportunity,planned_revenue:0
+msgid "Expected Revenue"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_phonecall_categ_action
+msgid ""
+"Create specific phone call categories to better define the type of calls "
+"tracked in the system."
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "September"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,partner_id:0
+msgid "Max Partner ID processed"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.action_report_crm_phonecall
+#: model:ir.ui.menu,name:crm.menu_report_crm_phonecalls_tree
+msgid "Phone Calls Analysis"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,opening_date:0
+#: field:crm.phonecall.report,opening_date:0
+msgid "Opening Date"
+msgstr ""
+
+#. module: crm
+#: help:crm.phonecall,duration:0
+msgid "Duration in Minutes"
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,crm_helpdesk:0
+msgid "Manages a Helpdesk service."
+msgstr ""
+
+#. module: crm
+#: field:crm.partner2opportunity,name:0
+msgid "Opportunity Name"
+msgstr ""
+
+#. module: crm
+#: help:crm.case.section,active:0
+msgid ""
+"If the active field is set to true, it will allow you to hide the sales team "
+"without removing it."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: view:crm.phonecall.report:0
+msgid " Year "
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,edit_all:0
+msgid "Edit All"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,fr:0
+msgid "Fri"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_lead
+msgid "crm.lead"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,write_date:0
+msgid "Write Date"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "End of recurrency"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Reminder"
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,sales_purchase_active:0
+msgid ""
+"Check if you want to use this tab as part of the segmentation rule. If not "
+"checked, the criteria beneath will be ignored"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead2opportunity.partner:0
+#: view:crm.lead2partner:0
+#: view:crm.phonecall:0
+#: view:crm.phonecall2partner:0
+#: model:ir.actions.act_window,name:crm.action_crm_lead2partner
+#: model:ir.actions.act_window,name:crm.action_crm_phonecall2partner
+#: view:res.partner:0
+msgid "Create a Partner"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,state:0
+msgid "Execution Status"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,week_list:0
+msgid "Monday"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,day_close:0
+msgid "Days to Close"
+msgstr ""
+
+#. module: crm
+#: field:crm.add.note,attachment_ids:0
+#: field:crm.case.section,complete_name:0
+#: field:crm.send.mail,attachment_ids:0
+msgid "unknown"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,id:0
+#: field:crm.meeting,id:0
+#: field:crm.phonecall,id:0
+msgid "ID"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_partner2opportunity
+msgid "Partner To Opportunity"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: field:crm.meeting,date:0
+#: field:crm.opportunity2phonecall,date:0
+#: view:crm.phonecall:0
+#: field:crm.phonecall,date:0
+#: field:crm.phonecall2phonecall,date:0
+#: view:res.partner:0
+msgid "Date"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.lead.report:0
+#: view:crm.meeting:0
+#: view:crm.phonecall.report:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: crm
+#: field:crm.phonecall2opportunity,name:0
+msgid "Opportunity Summary"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall.report:0
+msgid "Search"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+msgid "Opportunities by Categories"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Choose day in the month where repeat the meeting"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Segmentation Description"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:res.partner:0
+msgid "History"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_segmentation_tree-act
+msgid ""
+"Create specific partner categories which you can assign to your partners to "
+"better manage your interactions with them. The segmentation tool is able to "
+"assign categories to partners according to criteria you set."
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,code:0
+msgid "Code"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,child_ids:0
+msgid "Child Teams"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,state:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,state:0
+#: view:crm.meeting:0
+#: field:crm.meeting,state:0
+#: field:crm.phonecall,state:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,state:0
+msgid "State"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,freq:0
+msgid "Frequency"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "References"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:392
+#: view:crm.lead:0
+#: view:crm.lead2opportunity:0
+#: view:crm.lead2opportunity.action:0
+#: view:crm.lead2opportunity.partner:0
+#: view:crm.lead2partner:0
+#: view:crm.phonecall:0
+#: view:crm.phonecall2partner:0
+#: view:res.partner:0
+#, python-format
+msgid "Cancel"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_res_users
+msgid "res.users"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_merge_opportunity
+msgid "Merge two Opportunities"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,end_type:0
+msgid "Fix amout of times"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.meeting:0
+#: view:crm.phonecall:0
+msgid "Current"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,exrule:0
+msgid "Exception Rule"
+msgstr ""
+
+#. module: crm
+#: help:base.action.rule,act_mail_to_partner:0
+msgid "Check this if you want the rule to send an email to the partner."
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_phonecall_categ_action
+msgid "Phonecall Categories"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Invite People"
+msgstr ""
+
+#. module: crm
+#: constraint:crm.case.section:0
+msgid "Error ! You cannot create recursive Sales team."
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Search Meetings"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,expr_name:0
+msgid "Sale Amount"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_send_email.py:141
+#, python-format
+msgid "Unable to send mail. Please check SMTP is configured properly."
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,expr_operator:0
+msgid "="
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,state:0
+msgid "Unconfirmed"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.action_report_crm_opportunity
+msgid ""
+"Opportunities Analysis gives you an instant access to your opportunities "
+"with information such as the expected revenue, planned cost, missed "
+"deadlines or the number of interactions per opportunity. This report is "
+"mainly used by the sales manager in order to do the periodic review with the "
+"teams of the sales pipeline."
+msgstr ""
+
+#. module: crm
+#: field:crm.case.categ,name:0
+#: field:crm.installer,name:0
+#: field:crm.lead,name:0
+#: field:crm.segmentation,name:0
+#: field:crm.send.mail.attachment,name:0
+msgid "Name"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,alarm_id:0
+#: field:crm.meeting,base_calendar_alarm_id:0
+msgid "Alarm"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_lead_stage_act
+msgid ""
+"Add specific stages to leads and opportunities allowing your sales to better "
+"organise their sales pipeline. Stages will allow them to easily track how a "
+"specific lead or opportunity is positioned in the sales cycle."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: view:crm.phonecall.report:0
+msgid "My Case(s)"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,birthdate:0
+msgid "Birthdate"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "The"
+msgstr ""
+
+#. module: crm
+#: field:crm.send.mail.attachment,wizard_id:0
+msgid "Wizard"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,section_id:0
+msgid ""
+"Sales team to which this case belongs to. Defines responsible user and e-"
+"mail address for the mail gateway."
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.phonecall:0
+msgid "Creation"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead,priority:0
+#: selection:crm.lead.report,priority:0
+#: selection:crm.phonecall,priority:0
+#: selection:crm.phonecall.report,priority:0
+msgid "High"
+msgstr ""
+
+#. module: crm
+#: model:process.node,note:crm.process_node_partner0
+msgid "Convert to prospect to business partner"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall2opportunity:0
+msgid "_Convert"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.action_view_attendee_form
+msgid ""
+"With Meeting Invitations you can create and manage the meeting invitations "
+"sent/to be sent to your colleagues/partners. You can not only invite OpenERP "
+"users, but also external parties, such as a customer."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,week_list:0
+msgid "Saturday"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,byday:0
+msgid "Fifth"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall2phonecall:0
+msgid "_Schedule"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,delay_close:0
+msgid "Delay to Close"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,we:0
+msgid "Wed"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor6
+msgid "Potential Reseller"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,planned_revenue:0
+msgid "Planned Revenue"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.lead.report:0
+#: view:crm.meeting:0
+#: view:crm.phonecall:0
+#: view:crm.phonecall.report:0
+msgid "Group By..."
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,partner_id:0
+msgid "Optional linked partner, usually after conversion of the lead"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Invitation details"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,parent_id:0
+msgid "Parent Team"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,date_action:0
+msgid "Next Action Date"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation,state:0
+msgid "Running"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,freq:0
+msgid "Hours"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,zip:0
+msgid "Zip"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:213
+#, python-format
+msgid "The case '%s' has been opened."
+msgstr ""
+
+#. module: crm
+#: view:crm.installer:0
+msgid "title"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_phone1
+#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_incoming0
+#: model:ir.ui.menu,name:crm.menu_crm_case_phone_inbound
+msgid "Inbound"
+msgstr ""
+
+#. module: crm
+#: help:crm.case.stage,probability:0
+msgid ""
+"This percentage depicts the default/average probability of the Case for this "
+"stage to be a success"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall.report:0
+#: model:ir.actions.act_window,name:crm.act_crm_opportunity_crm_phonecall_new
+msgid "Phone calls"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Communication History"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,show_as:0
+msgid "Free"
+msgstr ""
+
+#. module: crm
+#: view:crm.installer:0
+msgid "Synchronization"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,allow_unlink:0
+msgid "Allow Delete"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,mo:0
+msgid "Mon"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead,priority:0
+#: selection:crm.lead.report,priority:0
+#: selection:crm.phonecall,priority:0
+#: selection:crm.phonecall.report,priority:0
+msgid "Highest"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_case_categ_phone_incoming0
+msgid ""
+"The Inbound Calls tool allows you to log your inbound calls on the fly. Each "
+"call you get will appear on the partner form to trace every contact you have "
+"with a partner. From the phone call form, you can trigger a request for "
+"another call, a meeting or an opportunity."
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,recurrency:0
+msgid "Recurrent Meeting"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.section:0
+#: view:crm.lead:0
+#: field:crm.lead,description:0
+msgid "Notes"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,freq:0
+msgid "Days"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation.line,expr_value:0
+msgid "Value"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.lead.report:0
+msgid "Opportunity by Categories"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,partner_name:0
+msgid "Customer Name"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_case_categ_meet
+msgid ""
+"The meeting calendar is shared between the sales teams and fully integrated "
+"with other applications such as the employee holidays or the business "
+"opportunities. You can also synchronize meetings with your mobile phone "
+"using the caldav interface."
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_phonecall2opportunity
+msgid "Phonecall To Opportunity"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,reply_to:0
+msgid "Reply-To"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.section:0
+msgid "Select stages for this Sales Team"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+msgid "Opportunities by Stage"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Recurrency Option"
+msgstr ""
+
+#. module: crm
+#: model:process.transition,note:crm.process_transition_leadpartner0
+msgid "Prospect is converting to business partner"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead2opportunity:0
+#: view:crm.partner2opportunity:0
+#: model:ir.actions.act_window,name:crm.phonecall2opportunity_act
+msgid "Convert To Opportunity"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall:0
+#: view:crm.phonecall.report:0
+#: view:res.partner:0
+msgid "Held"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.phonecall:0
+#: view:res.partner:0
+msgid "Reset to Draft"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Extra Info"
+msgstr ""
+
+#. module: crm
+#: view:crm.merge.opportunity:0
+#: model:ir.actions.act_window,name:crm.action_merge_opportunities
+#: model:ir.actions.act_window,name:crm.merge_opportunity_act
+msgid "Merge Opportunities"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead5
+msgid "Google Adwords"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_phonecall
+msgid "crm.phonecall"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead3
+msgid "Mail Campaign 2"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Create"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Dates"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:492
+#, python-format
+msgid "Send"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,priority:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,priority:0
+#: field:crm.phonecall,priority:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,priority:0
+msgid "Priority"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,sales_purchase_active:0
+msgid "Use The Sales Purchase Rules"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_lead2opportunity_partner
+msgid "Lead To Opportunity Partner"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,location:0
+msgid "Location"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Reply"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,freq:0
+msgid "Weeks"
+msgstr ""
+
+#. module: crm
+#: model:process.node,note:crm.process_node_meeting0
+msgid "Schedule a normal or phone meeting"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:375
+#, python-format
+msgid "Error !"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_meeting_categ_action
+msgid ""
+"Create different meeting categories to better organize and classify your "
+"meetings."
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_segmentation_line
+msgid "Segmentation line"
+msgstr ""
+
+#. module: crm
+#: view:crm.opportunity2phonecall:0
+#: view:crm.phonecall2phonecall:0
+msgid "Planned Date"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,base_calendar_url:0
+msgid "Caldav URL"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Expected Revenues"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead6
+msgid "Google Adwords 2"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,type:0
+#: help:crm.lead.report,type:0
+msgid "Type is used to separate Leads and Opportunities"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall2partner:0
+msgid "Are you sure you want to create a partner based on this Phonecall ?"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "July"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_case_section_act
+msgid ""
+"Define a Sales Team to organize your different salesmen or sales departments "
+"into separate teams. Each team will work in its own list of opportunities, "
+"sales orders, etc. Each user can set a default team in his user preferences. "
+"The opportunities and sales order displayed, will automatically be filtered "
+"according to his team."
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,count:0
+msgid "Repeat x times"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_case_section_act
+#: model:ir.model,name:crm.model_crm_case_section
+#: model:ir.ui.menu,name:crm.menu_crm_case_section_act
+msgid "Sales Teams"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_lead2partner
+msgid "Lead to Partner"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+#: field:crm.segmentation.line,segmentation_id:0
+#: model:ir.actions.act_window,name:crm.crm_segmentation-act
+msgid "Segmentation"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Team"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,outlook:0
+msgid "MS-Outlook"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall:0
+#: view:crm.phonecall.report:0
+#: view:res.partner:0
+msgid "Not Held"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,probability:0
+msgid "Probability"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: field:crm.lead.report,month:0
+#: field:crm.meeting,month_list:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,month:0
+msgid "Month"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: model:ir.actions.act_window,name:crm.crm_case_category_act_leads_all
+#: model:ir.ui.menu,name:crm.menu_crm_case_categ0_act_leads
+#: model:process.node,name:crm.process_node_leads0
+msgid "Leads"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_case_category_act_leads_all
+msgid ""
+"Leads allow you to manage and keep track of all initial contacts with a "
+"prospect or partner showing interest in your products or services. A lead is "
+"usually the first step in your sales cycle. Once qualified, a lead may be "
+"converted into a business opportunity, while creating the related partner "
+"for further detailed tracking of any linked activities. You can import a "
+"database of prospects, keep track of your business cards or integrate your "
+"website's contact form with the OpenERP Leads. Leads can be connected to the "
+"email gateway: new emails may create leads, each of them automatically gets "
+"the history of the conversation with the prospect."
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead2opportunity.partner,action:0
+#: selection:crm.lead2partner,action:0
+#: selection:crm.phonecall2partner,action:0
+msgid "Create a new partner"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: view:res.partner:0
+msgid "Start Date"
+msgstr ""
+
+#. module: crm
+#: selection:crm.phonecall,state:0
+#: view:crm.phonecall.report:0
+msgid "Todo"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Delegate"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Decline"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,optin:0
+msgid "If opt-in is checked, this contact has accepted to receive emails."
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Reset to Unconfirmed"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_add_note.py:40
+#: view:crm.add.note:0
+#, python-format
+msgid "Note"
+msgstr ""
+
+#. module: crm
+#: constraint:res.users:0
+msgid "The chosen company is not in the allowed companies for this user"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead,priority:0
+#: selection:crm.lead.report,priority:0
+#: selection:crm.phonecall,priority:0
+#: selection:crm.phonecall.report,priority:0
+msgid "Low"
+msgstr ""
+
+#. module: crm
+#: selection:crm.add.note,state:0
+#: field:crm.lead,date_closed:0
+#: selection:crm.lead,state:0
+#: view:crm.lead.report:0
+#: selection:crm.lead.report,state:0
+#: field:crm.meeting,date_closed:0
+#: selection:crm.merge.opportunity,state:0
+#: field:crm.phonecall,date_closed:0
+#: selection:crm.phonecall.report,state:0
+#: selection:crm.send.mail,state:0
+msgid "Closed"
+msgstr ""
+
+#. module: crm
+#: view:crm.installer:0
+msgid "Plug-In"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_meet2
+msgid "Internal Meeting"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:411
+#: selection:crm.add.note,state:0
+#: view:crm.lead:0
+#: selection:crm.lead,state:0
+#: view:crm.lead.report:0
+#: selection:crm.lead.report,state:0
+#: selection:crm.merge.opportunity,state:0
+#: selection:crm.phonecall,state:0
+#: selection:crm.phonecall.report,state:0
+#: selection:crm.send.mail,state:0
+#, python-format
+msgid "Pending"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_meet1
+msgid "Customer Meeting"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,email_cc:0
+msgid "Global CC"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall:0
+#: model:ir.actions.act_window,name:crm.crm_case_categ_phone0
+#: model:ir.ui.menu,name:crm.menu_crm_case_phone
+#: view:res.partner:0
+msgid "Phone Calls"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead.report,delay_open:0
+#: help:crm.phonecall.report,delay_open:0
+msgid "Number of Days to open the case"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,phone:0
+#: field:crm.phonecall,partner_phone:0
+msgid "Phone"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,active:0
+#: field:crm.lead,active:0
+#: view:crm.lead.report:0
+#: field:crm.meeting,active:0
+#: field:crm.phonecall,active:0
+msgid "Active"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:306
+#, python-format
+msgid "The stage of opportunity '%s' has been changed to '%s'."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:282
+#, python-format
+msgid "Changed Stage to: %s"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,operator:0
+msgid "Mandatory Expression"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,expr_operator:0
+msgid ">"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Uncertain"
+msgstr ""
+
+#. module: crm
+#: field:crm.send.mail,email_cc:0
+msgid "CC"
+msgstr ""
+
+#. module: crm
+#: view:crm.send.mail:0
+#: model:ir.actions.act_window,name:crm.action_crm_send_mail
+msgid "Send Mail"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,freq:0
+msgid "Months"
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,wiki_sale_faq:0
+msgid ""
+"Helps you manage wiki pages for Frequently Asked Questions on Sales "
+"Application."
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,crm_fundraising:0
+msgid "This may help associations in their fundraising process and tracking."
+msgstr ""
+
+#. module: crm
+#: field:crm.lead2opportunity.partner,action:0
+#: field:crm.lead2partner,action:0
+#: field:crm.phonecall2partner,action:0
+msgid "Action"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,crm_claim:0
+msgid "Claims"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,som_interval_decrease:0
+msgid "Decrease (0>1)"
+msgstr ""
+
+#. module: crm
+#: view:crm.add.note:0
+#: view:crm.lead:0
+#: view:crm.send.mail:0
+msgid "Attachments"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,rrule_type:0
+msgid "Weekly"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_send_email.py:72
+#: code:addons/crm/wizard/crm_send_email.py:169
+#: code:addons/crm/wizard/crm_send_email.py:270
+#, python-format
+msgid "Can not send mail!"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Misc"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor8
+#: view:crm.meeting:0
+msgid "Other"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: selection:crm.meeting,state:0
+#: selection:crm.phonecall,state:0
+msgid "Done"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,interval:0
+msgid "Repeat every (Days/Week/Month/Year)"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,som_interval_max:0
+msgid "Max Interval"
+msgstr ""
+
+#. module: crm
+#: view:crm.opportunity2phonecall:0
+msgid "_Schedule Call"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:326
+#: selection:crm.add.note,state:0
+#: view:crm.lead:0
+#: selection:crm.lead,state:0
+#: selection:crm.lead.report,state:0
+#: selection:crm.merge.opportunity,state:0
+#: view:crm.phonecall:0
+#: selection:crm.phonecall.report,state:0
+#: selection:crm.send.mail,state:0
+#: view:res.partner:0
+#, python-format
+msgid "Open"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,week_list:0
+msgid "Tuesday"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,city:0
+msgid "City"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,show_as:0
+msgid "Busy"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,interval:0
+msgid "Repeat every"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,crm_helpdesk:0
+msgid "Helpdesk"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,recurrency:0
+msgid "Recurrent"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:397
+#, python-format
+msgid "The case '%s' has been cancelled."
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,sale_crm:0
+msgid "Opportunity to Quotation"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_send_mail
+msgid "Send new email"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+#: model:ir.actions.act_window,name:crm.act_my_oppor
+msgid "My Open Opportunities"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.open_board_statistical_dash
+msgid "CRM - Statistics Dashboard"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,rrule:0
+msgid ""
+"Defines a rule or repeating pattern for recurring events\n"
+"e.g.: Every other month on the last Sunday of the month for 10 occurrences: "
+" FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,job_id:0
+msgid "Main Job"
+msgstr ""
+
+#. module: crm
+#: field:base.action.rule,trg_max_history:0
+msgid "Maximum Communication History"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead2opportunity.partner:0
+#: view:crm.lead2partner:0
+msgid "Are you sure you want to create a partner based on this lead ?"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: field:crm.meeting,categ_id:0
+msgid "Meeting Type"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:314
+#, python-format
+msgid "Merge with Existing Opportunity"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,state:0
+#: help:crm.phonecall,state:0
+msgid ""
+"The state is set to 'Draft', when a case is created. "
+" \n"
+"If the case is in progress the state is set to 'Open'. "
+" \n"
+"When the case is over, the state is set to 'Done'. "
+" \n"
+"If the case needs to be reviewed then the state is set to 'Pending'."
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: view:res.partner:0
+msgid "End Date"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,byday:0
+msgid "Third"
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,som_interval_max:0
+msgid ""
+"The computation is made on all events that occured during this interval, the "
+"past X periods."
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+msgid "My Win/Lost Ratio for the Last Year"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,thunderbird:0
+msgid "Thunderbird"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "# of Emails"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Search Leads"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,delay_open:0
+msgid "Delay to open"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Recurrency period"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,week_list:0
+msgid "Weekday"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Referrer"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_lead2opportunity
+msgid "Lead To Opportunity"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_calendar_attendee
+msgid "Attendee information"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Segmentation Test"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Continue Process"
+msgstr ""
+
+#. module: crm
+#: view:crm.installer:0
+msgid "Configure Your CRM Application"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_phonecall2partner
+msgid "Phonecall to Partner"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,partner_name:0
+msgid ""
+"The name of the future partner that will be created while converting the "
+"into opportunity"
+msgstr ""
+
+#. module: crm
+#: field:crm.opportunity2phonecall,user_id:0
+#: field:crm.phonecall2phonecall,user_id:0
+msgid "Assign To"
+msgstr ""
+
+#. module: crm
+#: field:crm.add.note,state:0
+#: field:crm.send.mail,state:0
+msgid "Set New State To"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,date_action_last:0
+#: field:crm.meeting,date_action_last:0
+#: field:crm.phonecall,date_action_last:0
+msgid "Last Action"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,duration:0
+#: field:crm.phonecall,duration:0
+#: field:crm.phonecall.report,duration:0
+msgid "Duration"
+msgstr ""
+
+#. module: crm
+#: field:crm.send.mail,reply_to:0
+msgid "Reply To"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+#: model:ir.actions.act_window,name:crm.open_board_crm
+#: model:ir.ui.menu,name:crm.menu_board_crm
+msgid "Sales Dashboard"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_lead_to_partner.py:56
+#, python-format
+msgid "A partner is already defined on this lead."
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,nbr:0
+#: field:crm.phonecall.report,nbr:0
+msgid "# of Cases"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,section_id:0
+#: help:crm.phonecall,section_id:0
+msgid "Sales team to which Case belongs to."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,week_list:0
+msgid "Sunday"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,byday:0
+msgid "Fourth"
+msgstr ""
+
+#. module: crm
+#: selection:crm.add.note,state:0
+#: selection:crm.merge.opportunity,state:0
+#: selection:crm.send.mail,state:0
+msgid "Unchanged"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_segmentation_tree-act
+#: model:ir.ui.menu,name:crm.menu_crm_segmentation-act
+msgid "Partners Segmentation"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,fax:0
+msgid "Fax"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_case_category_act_oppor11
+msgid ""
+"With opportunities you can manage and keep track of your sales pipeline by "
+"creating specific customer- or prospect-related sales documents to follow up "
+"potential sales. Information such as expected revenue, opportunity stage, "
+"expected closing date, communication history and much more can be stored. "
+"Opportunities can be connected to the email gateway: new emails may create "
+"opportunities, each of them automatically gets the history of the "
+"conversation with the customer.\n"
+"\n"
+"You and your team(s) will be able to plan meetings and phone calls from "
+"opportunities, convert them into quotations, manage related documents, track "
+"all customer related activities, and much more."
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Assignment"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,company_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,company_id:0
+#: field:crm.phonecall,company_id:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,week_list:0
+msgid "Friday"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,allday:0
+msgid "All Day"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation.line,operator:0
+msgid "Mandatory / Optional"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.action_view_attendee_form
+#: model:ir.ui.menu,name:crm.menu_attendee_invitations
+msgid "Meeting Invitations"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.categ,object_id:0
+msgid "Object Name"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,email_from:0
+msgid "E-mail address of the contact"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,referred:0
+msgid "Referred By"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: model:ir.model,name:crm.model_crm_add_note
+msgid "Add Internal Note"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:304
+#, python-format
+msgid "The stage of lead '%s' has been changed to '%s'."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,byday:0
+msgid "Last"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,message_ids:0
+#: field:crm.meeting,message_ids:0
+#: field:crm.phonecall,message_ids:0
+msgid "Messages"
+msgstr ""
+
+#. module: crm
+#: help:crm.case.stage,on_change:0
+msgid "Change Probability on next and previous stages."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:455
+#: code:addons/crm/crm.py:457
+#: code:addons/crm/crm_action_rule.py:66
+#: code:addons/crm/wizard/crm_send_email.py:141
+#, python-format
+msgid "Error!"
+msgstr ""
+
+#. module: crm
+#: field:crm.opportunity2phonecall,name:0
+#: field:crm.phonecall2phonecall,name:0
+msgid "Call summary"
+msgstr ""
+
+#. module: crm
+#: selection:crm.add.note,state:0
+#: selection:crm.lead,state:0
+#: selection:crm.lead.report,state:0
+#: selection:crm.meeting,state:0
+#: selection:crm.merge.opportunity,state:0
+#: selection:crm.phonecall,state:0
+#: selection:crm.phonecall.report,state:0
+#: selection:crm.send.mail,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: crm
+#: field:crm.add.note,body:0
+msgid "Note Body"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+msgid "My Planned Revenues by Stage"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,date_closed:0
+#: field:crm.phonecall.report,date_closed:0
+msgid "Close Date"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: view:crm.phonecall.report:0
+msgid " Month "
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Links"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_lead_categ_action
+msgid ""
+"Create specific categories that fit your company's activities to better "
+"classify and analyse your leads and opportunities. Such categories could for "
+"instance reflect your product structure or the different types of sales you "
+"do."
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,som_interval_decrease:0
+msgid ""
+"If the partner has not purchased (or bought) during a period, decrease the "
+"state of mind by this factor. It's a multiplication"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.action_report_crm_phonecall
+msgid ""
+"From this report, you can analyse the performance of your sales team, based "
+"on their phone calls. You can group or filter the information according to "
+"several criteria and drill down the information, by adding more groups in "
+"the report."
+msgstr ""
+
+#. module: crm
+#: view:crm.case.section:0
+msgid "Mailgateway"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,user_id:0
+msgid "By Default Salesman is Administrator when create New User"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "# Mails"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_phonecall_to_opportunity.py:57
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: crm
+#: field:crm.phonecall,name:0
+#: view:res.partner:0
+msgid "Call Summary"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation.line,expr_operator:0
+msgid "Operator"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_phonecall2phonecall
+msgid "Phonecall To Phonecall"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Schedule/Log Call"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,fetchmail:0
+msgid "Fetch Emails"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: crm
+#: help:crm.send.mail,email_cc:0
+msgid ""
+"These addresses will receive a copy of this email. To modify the permanent "
+"CC list, edit the global CC field of this case"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Confirm"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,su:0
+msgid "Sun"
+msgstr ""
+
+#. module: crm
+#: field:crm.phonecall.report,section_id:0
+msgid "Section"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Total of Planned Revenue"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:375
+#, python-format
+msgid ""
+"You can not escalate, You are already at the top level regarding your sales-"
+"team category."
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,operator:0
+msgid "Optional Expression"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,select1:0
+msgid "Day of month"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead2opportunity,probability:0
+msgid "Success Rate (%)"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.stage,name:crm.stage_lead1
+#: model:crm.case.stage,name:crm.stage_opportunity1
+msgid "New"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Mail TO"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,email_from:0
+#: field:crm.meeting,email_from:0
+#: field:crm.phonecall,email_from:0
+msgid "Email"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,channel_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,channel_id:0
+#: field:crm.phonecall,canal_id:0
+msgid "Channel"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.opportunity2phonecall_act
+msgid "Schedule Call"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:135
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:260
+#, python-format
+msgid "Closed/Cancelled Leads Could not convert into Opportunity"
+msgstr ""
+
+#. module: crm
+#: view:crm.segmentation:0
+msgid "Profiling"
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,exclusif:0
+msgid ""
+"Check if the category is limited to partners that match the segmentation "
+"criterions. \n"
+"If checked, remove the category from partners that doesn't match "
+"segmentation criterions"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,exdate:0
+msgid "Exception Date/Times"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,class:0
+msgid "Confidential"
+msgstr ""
+
+#. module: crm
+#: help:crm.meeting,date_deadline:0
+msgid ""
+"Deadline Date is automatically computed from Start "
+"Date + Duration"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,state_id:0
+msgid "Fed. State"
+msgstr ""
+
+#. module: crm
+#: model:process.transition,note:crm.process_transition_leadopportunity0
+msgid "Creating business opportunities from Leads"
+msgstr ""
+
+#. module: crm
+#: help:crm.send.mail,html:0
+msgid "Select this if you want to send email with HTML formatting."
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor4
+msgid "Need Information"
+msgstr ""
+
+#. module: crm
+#: model:process.transition,name:crm.process_transition_leadopportunity0
+msgid "Prospect Opportunity"
+msgstr ""
+
+#. module: crm
+#: view:crm.installer:0
+#: model:ir.actions.act_window,name:crm.action_crm_installer
+msgid "CRM Application Configuration"
+msgstr ""
+
+#. module: crm
+#: field:base.action.rule,act_categ_id:0
+msgid "Set Category to"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.section:0
+msgid "Configuration"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,th:0
+msgid "Thu"
+msgstr ""
+
+#. module: crm
+#: view:crm.add.note:0
+#: view:crm.merge.opportunity:0
+#: view:crm.opportunity2phonecall:0
+#: view:crm.partner2opportunity:0
+#: view:crm.phonecall2opportunity:0
+#: view:crm.phonecall2phonecall:0
+#: view:crm.send.mail:0
+msgid "_Cancel"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: view:crm.phonecall.report:0
+msgid " Month-1 "
+msgstr ""
+
+#. module: crm
+#: help:crm.installer,sale_crm:0
+msgid "This module relates sale from opportunity cases in the CRM."
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,rrule_type:0
+msgid "Daily"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.stage,name:crm.stage_lead2
+#: model:crm.case.stage,name:crm.stage_opportunity2
+msgid "Qualification"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.stage:0
+msgid "Stage Definition"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,byday:0
+msgid "First"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "December"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,config_logo:0
+msgid "Image"
+msgstr ""
+
+#. module: crm
+#: view:base.action.rule:0
+msgid "Condition on Communication History"
+msgstr ""
+
+#. module: crm
+#: help:crm.segmentation,som_interval:0
+msgid ""
+"A period is the average number of days between two cycle of sale or purchase "
+"for this segmentation. \n"
+"It's mainly used to detect if a partner has not purchased or buy for a too "
+"long time, \n"
+"so we suppose that his state of mind has decreased because he probably "
+"bought goods to another supplier. \n"
+"Use this functionality for recurring businesses."
+msgstr ""
+
+#. module: crm
+#: view:crm.send.mail:0
+msgid "_Send Reply"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,vtimezone:0
+msgid "Timezone"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead2opportunity.partner,msg:0
+#: field:crm.lead2partner,msg:0
+#: view:crm.send.mail:0
+msgid "Message"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,sa:0
+msgid "Sat"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,user_id:0
+#: view:crm.lead.report:0
+#: view:crm.phonecall.report:0
+msgid "Salesman"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,date_deadline:0
+msgid "Expected Closing"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_opportunity2phonecall
+msgid "Opportunity to Phonecall"
+msgstr ""
+
+#. module: crm
+#: help:crm.case.section,allow_unlink:0
+msgid "Allows to delete non draft cases"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Schedule Meeting"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Partner Name"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_phone2
+#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_outgoing0
+#: model:ir.ui.menu,name:crm.menu_crm_case_phone_outbound
+msgid "Outbound"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,date_open:0
+#: field:crm.phonecall,date_open:0
+msgid "Opened"
+msgstr ""
+
+#. module: crm
+#: view:crm.case.section:0
+#: field:crm.case.section,member_ids:0
+msgid "Team Members"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,job_ids:0
+#: view:crm.meeting:0
+#: view:crm.phonecall:0
+#: view:res.partner:0
+msgid "Contacts"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor1
+msgid "Interest in Computer"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Invitation Detail"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation,som_interval_default:0
+msgid "Default (0=None)"
+msgstr ""
+
+#. module: crm
+#: help:crm.lead,email_cc:0
+msgid ""
+"These email addresses will be added to the CC field of all inbound and "
+"outbound emails for this record before being sent. Separate multiple email "
+"addresses with a comma"
+msgstr ""
+
+#. module: crm
+#: constraint:res.partner:0
+msgid "Error ! You can not create recursive associated members."
+msgstr ""
+
+#. module: crm
+#: field:crm.partner2opportunity,probability:0
+#: field:crm.phonecall2opportunity,probability:0
+msgid "Success Probability"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:426
+#: selection:crm.add.note,state:0
+#: selection:crm.lead,state:0
+#: selection:crm.lead.report,state:0
+#: selection:crm.merge.opportunity,state:0
+#: selection:crm.phonecall,state:0
+#: selection:crm.phonecall.report,state:0
+#: selection:crm.send.mail,state:0
+#, python-format
+msgid "Draft"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_case_section_act_tree
+msgid "Cases by Sales Team"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,attendee_ids:0
+msgid "Attendees"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: view:crm.phonecall:0
+#: model:ir.model,name:crm.model_crm_meeting
+#: model:process.node,name:crm.process_node_meeting0
+#: model:res.request.link,name:crm.request_link_meeting
+msgid "Meeting"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_case_categ
+msgid "Category of Case"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.phonecall:0
+msgid "7 Days"
+msgstr ""
+
+#. module: crm
+#: view:board.board:0
+msgid "Planned Revenue by Stage and User"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Communication & History"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_lead_report
+msgid "CRM Lead Report"
+msgstr ""
+
+#. module: crm
+#: field:crm.installer,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead,priority:0
+#: selection:crm.lead.report,priority:0
+#: selection:crm.phonecall,priority:0
+#: selection:crm.phonecall.report,priority:0
+msgid "Normal"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,street2:0
+msgid "Street2"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_meeting_categ_action
+#: model:ir.ui.menu,name:crm.menu_crm_case_meeting-act
+msgid "Meeting Categories"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead2opportunity.partner:0
+#: view:crm.lead2partner:0
+#: view:crm.phonecall2partner:0
+msgid "You may have to verify that this partner does not exist already."
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,delay_open:0
+msgid "Delay to Open"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,user_id:0
+#: field:crm.phonecall.report,user_id:0
+msgid "User"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "November"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_action_rule.py:67
+#, python-format
+msgid "No E-Mail ID Found for your Company address!"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "Opportunities By Stage"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_create_partner
+msgid "Schedule Phone Call"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "January"
+msgstr ""
+
+#. module: crm
+#: model:ir.actions.act_window,help:crm.crm_opportunity_stage_act
+msgid ""
+"Create specific stages that will help your sales better organise their sales "
+"pipeline by maintaining them to their sales opportunities. It will allow "
+"them to easily track how is positioned a specific opportunity in the sales "
+"cycle."
+msgstr ""
+
+#. module: crm
+#: model:process.process,name:crm.process_process_contractprocess0
+msgid "Contract"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead4
+msgid "Twitter Ads"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_add_note.py:26
+#: code:addons/crm/wizard/crm_send_email.py:72
+#: code:addons/crm/wizard/crm_send_email.py:169
+#: code:addons/crm/wizard/crm_send_email.py:270
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "Planned Revenues"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor7
+msgid "Need Consulting"
+msgstr ""
+
+#. module: crm
+#: constraint:crm.segmentation:0
+msgid "Error ! You can not create recursive profiles."
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:232
+#, python-format
+msgid "The case '%s' has been closed."
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,partner_address_id:0
+#: field:crm.meeting,partner_address_id:0
+#: field:crm.phonecall,partner_address_id:0
+msgid "Partner Contact"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,recurrent_id:0
+msgid "Recurrent ID date"
+msgstr ""
+
+#. module: crm
+#: sql_constraint:res.users:0
+msgid "You can not have two users with the same login !"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/wizard/crm_merge_opportunities.py:100
+#, python-format
+msgid "Merged into Opportunity: %s"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm.py:347
+#: view:crm.lead:0
+#: view:res.partner:0
+#, python-format
+msgid "Close"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: view:crm.phonecall:0
+#: view:res.partner:0
+msgid "Categorization"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_base_action_rule
+msgid "Action Rules"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,rrule_type:0
+msgid "Recurrency"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,phonecall_id:0
+msgid "Phonecall"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,week_list:0
+msgid "Thursday"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+#: field:crm.send.mail,email_to:0
+msgid "To"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,class:0
+msgid "Private"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,function:0
+msgid "Function"
+msgstr ""
+
+#. module: crm
+#: view:crm.add.note:0
+msgid "_Add"
+msgstr ""
+
+#. module: crm
+#: selection:crm.segmentation.line,expr_name:0
+msgid "State of Mind"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,note:0
+#: view:crm.meeting:0
+#: field:crm.meeting,description:0
+#: view:crm.phonecall:0
+#: field:crm.phonecall,description:0
+#: field:crm.segmentation,description:0
+#: view:res.partner:0
+msgid "Description"
+msgstr ""
+
+#. module: crm
+#: field:base.action.rule,trg_section_id:0
+#: field:crm.case.categ,section_id:0
+#: field:crm.case.resource.type,section_id:0
+#: view:crm.case.section:0
+#: field:crm.case.section,name:0
+#: field:crm.lead,section_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,section_id:0
+#: field:crm.meeting,section_id:0
+#: field:crm.opportunity2phonecall,section_id:0
+#: view:crm.phonecall:0
+#: field:crm.phonecall,section_id:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall2phonecall,section_id:0
+#: field:res.partner,section_id:0
+#: field:res.users,context_section_id:0
+msgid "Sales Team"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "May"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.categ,name:crm.categ_oppor2
+msgid "Interest in Accessories"
+msgstr ""
+
+#. module: crm
+#: code:addons/crm/crm_lead.py:211
+#, python-format
+msgid "The opportunity '%s' has been opened."
+msgstr ""
+
+#. module: crm
+#: field:crm.lead.report,email:0
+msgid "# Emails"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,street:0
+msgid "Street"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+msgid "Opportunities by User and Team"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.section,working_hours:0
+msgid "Working Hours"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: field:crm.lead,is_customer_add:0
+msgid "Customer"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "February"
+msgstr ""
+
+#. module: crm
+#: view:crm.phonecall:0
+#: model:ir.actions.act_window,name:crm.crm_case_categ_meet_create_partner
+#: view:res.partner:0
+msgid "Schedule a Meeting"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.stage,name:crm.stage_lead6
+#: model:crm.case.stage,name:crm.stage_opportunity6
+#: view:crm.lead:0
+msgid "Lost"
+msgstr ""
+
+#. module: crm
+#: field:crm.lead,country_id:0
+#: view:crm.lead.report:0
+#: field:crm.lead.report,country_id:0
+msgid "Country"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+#: selection:crm.lead2opportunity.action,name:0
+#: view:crm.phonecall:0
+#: view:res.partner:0
+msgid "Convert to Opportunity"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,week_list:0
+msgid "Wednesday"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead.report,month:0
+#: selection:crm.meeting,month_list:0
+#: selection:crm.phonecall.report,month:0
+msgid "April"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.resource.type,name:0
+msgid "Campaign Name"
+msgstr ""
+
+#. module: crm
+#: model:ir.model,name:crm.model_crm_phonecall_report
+msgid "Phone calls by user and section"
+msgstr ""
+
+#. module: crm
+#: selection:crm.lead2opportunity.action,name:0
+msgid "Merge with existing Opportunity"
+msgstr ""
+
+#. module: crm
+#: field:crm.meeting,select1:0
+msgid "Option"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.stage,name:crm.stage_lead4
+#: model:crm.case.stage,name:crm.stage_opportunity4
+msgid "Negotiation"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead:0
+msgid "Exp.Closing"
+msgstr ""
+
+#. module: crm
+#: field:crm.case.stage,sequence:0
+#: field:crm.meeting,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: crm
+#: field:crm.send.mail,body:0
+msgid "Message Body"
+msgstr ""
+
+#. module: crm
+#: view:crm.meeting:0
+msgid "Accept"
+msgstr ""
+
+#. module: crm
+#: field:crm.segmentation.line,expr_name:0
+msgid "Control Variable"
+msgstr ""
+
+#. module: crm
+#: selection:crm.meeting,byday:0
+msgid "Second"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.stage,name:crm.stage_lead3
+#: model:crm.case.stage,name:crm.stage_opportunity3
+msgid "Proposition"
+msgstr ""
+
+#. module: crm
+#: field:res.partner,phonecall_ids:0
+msgid "Phonecalls"
+msgstr ""
+
+#. module: crm
+#: view:crm.lead.report:0
+#: field:crm.lead.report,name:0
+#: view:crm.phonecall.report:0
+#: field:crm.phonecall.report,name:0
+msgid "Year"
+msgstr ""
+
+#. module: crm
+#: model:crm.case.resource.type,name:crm.type_lead8
+msgid "Newsletter"
+msgstr ""
diff --git a/addons/import_base/__openerp__.py b/addons/import_base/__openerp__.py
index 962541f427a..f244338a7e3 100644
--- a/addons/import_base/__openerp__.py
+++ b/addons/import_base/__openerp__.py
@@ -31,7 +31,7 @@
'website': 'http://www.openerp.com',
'depends': ['base'],
'init_xml': [],
- 'update_xml': [],
+ 'update_xml': ["import_base_view.xml"],
'demo_xml': [],
'test': [], #TODO provide test
'installable': True,
diff --git a/addons/import_base/import_base_view.xml b/addons/import_base/import_base_view.xml
new file mode 100644
index 00000000000..1368b50b6e4
--- /dev/null
+++ b/addons/import_base/import_base_view.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/import_base/import_framework.py b/addons/import_base/import_framework.py
index 9b25ecb1ecf..b558b24696f 100644
--- a/addons/import_base/import_framework.py
+++ b/addons/import_base/import_framework.py
@@ -22,11 +22,13 @@ import pprint
import mapper
import pooler
import tools
-
+from tools.translate import _
from threading import Thread
import datetime
import logging
+import StringIO
+import traceback
pp = pprint.PrettyPrinter(indent=4)
@@ -46,8 +48,10 @@ class import_framework(Thread):
"""
DO_NOT_FIND_DOMAIN = [('id', '=', 0)]
+ #TODO don't use context to pass credential parameters
def __init__(self, obj, cr, uid, instance_name, module_name, email_to_notify=False, context=None):
Thread.__init__(self)
+ self.external_id_field = 'id'
self.obj = obj
self.cr = cr
self.uid = uid
@@ -56,10 +60,9 @@ class import_framework(Thread):
self.context = context or {}
self.email = email_to_notify
self.table_list = []
+ self.logger = logging.getLogger('import_framework')
self.initialize()
-
-
-
+
"""
Abstract Method to be implemented in
the real instance
@@ -71,6 +74,13 @@ class import_framework(Thread):
"""
pass
+ def init_run(self):
+ """
+ call after intialize run in the thread, not in the main process
+ TO use for long initialization operation
+ """
+ pass
+
def get_data(self, table):
"""
@return: a list of dictionaries
@@ -78,6 +88,22 @@ class import_framework(Thread):
"""
return [{}]
+ def get_link(self, from_table, ids, to_table):
+ """
+ @return: a dictionaries that contains the association between the id (from_table)
+ and the list (to table) of id linked
+ """
+ return {}
+
+ def get_external_id(self, data):
+ """
+ @return the external id
+ the default implementation return self.external_id_field (that has 'id') by default
+ if the name of id field is different, you can overwrite this method or change the value
+ of self.external_id_field
+ """
+ return data[self.external_id_field]
+
def get_mapping(self):
"""
@return: { TABLE_NAME : {
@@ -140,7 +166,7 @@ class import_framework(Thread):
and each data_i have a external id => in data_id['id']
"""
if not datas:
- return (0, 'No data in this table')
+ return (0, 'No data found')
mapping['id'] = 'id_new'
res = []
@@ -154,14 +180,15 @@ class import_framework(Thread):
for k, field_name in self_dependencies:
data[k] = data.get(field_name) and self._generate_xml_id(data.get(field_name), table)
- data['id_new'] = self._generate_xml_id(data['id'], table)
+ data['id_new'] = self._generate_xml_id(self.get_external_id(data), table)
fields, values = self._fields_mapp(data, mapping, table)
res.append(values)
model_obj = self.obj.pool.get(model)
if not model_obj:
- raise ValueError("%s is not a valid model name" % model)
-
+ raise ValueError(_("%s is not a valid model name") % model)
+ self.logger.debug(_("fields imported : "))
+ self.logger.debug(fields)
(p, r, warning, s) = model_obj.import_data(self.cr, self.uid, fields, res, mode='update', current_module=self.module_name, noupdate=True, context=self.context)
for (field, field_name) in self_dependencies:
self._import_self_dependencies(model_obj, field, datas)
@@ -296,10 +323,14 @@ class import_framework(Thread):
"""
domain_search = not domain_search and [('name', 'ilike', name)] or domain_search
obj = self.obj.pool.get(model)
+ if not obj: #if the model doesn't exist
+ return False
+
xml_id = self._generate_xml_id(name, table)
xml_ref = self.mapped_id_if_exist(model, domain_search, table, name)
fields.append('id')
data.append(xml_id)
+
obj.import_data(self.cr, self.uid, fields, [data], mode='update', current_module=self.module_name, noupdate=True, context=self.context)
return xml_ref or xml_id
@@ -343,8 +374,10 @@ class import_framework(Thread):
"""
self.data_started = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self.cr = pooler.get_db(self.cr.dbname).cursor()
+ error = False
+ result = []
try:
- result = []
+ self.init_run()
imported = set() #to invoid importing 2 times the sames modules
for table in self.table_list:
to_import = self.get_mapping()[table].get('import', True)
@@ -352,16 +385,22 @@ class import_framework(Thread):
res = self._resolve_dependencies(self.get_mapping()[table].get('dependencies', []), imported)
result.extend(res)
if to_import:
+ self.logger.debug(_("import : ") + table )
(position, warning) = self._import_table(table)
result.append((table, position, warning))
imported.add(table)
self.cr.commit()
-
+
+ except Exception, err:
+ sh = StringIO.StringIO()
+ traceback.print_exc(file=sh)
+ error = sh.getvalue()
+ print error
finally:
self.cr.close()
+
self.date_ended = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
- self._send_notification_email(result)
-
+ self._send_notification_email(result, error)
def _resolve_dependencies(self, dep, imported):
"""
@@ -375,25 +414,29 @@ class import_framework(Thread):
res = self._resolve_dependencies(self.get_mapping()[dependency].get('dependencies', []), imported)
result.extend(res)
if to_import:
+ self.logger.debug("import dependency : " + dependency)
r = self._import_table(dependency)
(position, warning) = r
result.append((dependency, position, warning))
imported.add(dependency)
return result
- def _send_notification_email(self, result):
- if not self.email:
- return
+ def _send_notification_email(self, result, error):
+ if not self.email or not self.email[0]:
+ return False
+
tools.email_send(
- 'import_sugarcrm@module.openerp',
+ 'import@module.openerp',
self.email,
- self.get_email_subject(result),
- self.get_email_body(result),
+ self.get_email_subject(result, error),
+ self.get_email_body(result, error),
)
- logger = logging.getLogger('import_sugarcam')
- logger.info("Import finished, notification email sended")
+ if error:
+ self.logger.error(_("Import failed due to an unexpected error"))
+ else:
+ self.logger.info(_("Import finished, notification email sended"))
- def get_email_subject(self, result):
+ def get_email_subject(self, result, error=False):
"""
This method define the subject of the email send by openerp at the end of import
@param result: a list of tuple
@@ -401,9 +444,11 @@ class import_framework(Thread):
@return the subject of the mail
"""
- return "Import of your data finished at %s" % self.date_ended
+ if error:
+ return _("Data Import failed at %s due to an unexpected error") % self.date_ended
+ return _("Import of your data finished at %s") % self.date_ended
- def get_email_body(self, result):
+ def get_email_body(self, result, error=False):
"""
This method define the body of the email send by openerp at the end of import. The body is separated in two part
the header (@see get_body_header), and the generate body with the list of table and number of record imported.
@@ -414,19 +459,43 @@ class import_framework(Thread):
"""
- body = "started at %s and finished at %s \n" % (self.data_started, self.date_ended)
+ body = _("started at %s and finished at %s \n") % (self.data_started, self.date_ended)
+ if error:
+ body += _("but failed, in consequence no data were imported to keep database consistency \n error : \n") + error
+
for (table, nb, warning) in result:
if not warning:
- warning = "with no warning"
+ warning = _("with no warning")
else:
- warning = "with warning : %s" % warning
- body += "%s records were imported from table %s, %s \n" % (nb, table, warning)
+ warning = _("with warning : %s") % warning
+ body += _("%s has been successfully imported from %s %s, %s \n") % (nb, self.instance_name, table, warning)
return self.get_body_header(result) + "\n\n" + body
def get_body_header(self, result):
"""
@return the first sentences written in the mail's body
"""
- return "The import of data \n instance name : %s \n" % self.instance_name
+ return _("The import of data \n instance name : %s \n") % self.instance_name
-#For example of use see import_sugarcrm
+
+ #TODO documentation test
+ def run_test(self):
+ back_get_data = self.get_data
+ back_get_link = self.get_link
+ back_init = self.initialize
+ self.get_data = self.get_data_test
+ self.get_link = self.get_link_test
+ self.initialize = self.intialize_test
+ self.run()
+ self.get_data = back_get_data
+ self.get_link = back_get_link
+ self.initialize = back_init
+
+ def get_data_test(self, table):
+ return [{}]
+
+ def get_link_test(self, from_table, ids, to_table):
+ return {}
+
+ def intialize_test(self):
+ pass
diff --git a/addons/import_base/mapper.py b/addons/import_base/mapper.py
index 7f97ed0b615..0827509ffab 100644
--- a/addons/import_base/mapper.py
+++ b/addons/import_base/mapper.py
@@ -18,7 +18,7 @@
# along with this program. If not, see .
#
##############################################################################
-
+import tools
class mapper(object):
"""
@@ -50,14 +50,13 @@ class concat(mapper):
Use : contact('field_name1', 'field_name2', delimiter='_')
concat value of fields using the delimiter, delimiter is optional
and by default is a space
-
"""
def __init__(self, *arg, **delimiter):
self.arg = arg
self.delimiter = delimiter and delimiter.get('delimiter', ' ') or ' '
def __call__(self, external_values):
- return self.delimiter.join(map(lambda x : external_values.get(x,''), self.arg))
+ return self.delimiter.join(map(lambda x : tools.ustr(external_values.get(x,'')), self.arg))
class ppconcat(mapper):
"""
@@ -71,7 +70,7 @@ class ppconcat(mapper):
self.delimiter = delimiter and delimiter.get('delimiter', ' ') or '\n\n'
def __call__(self, external_values):
- return self.delimiter.join(map(lambda x : x + ": " + external_values.get(x,''), self.arg))
+ return self.delimiter.join(map(lambda x : x + ": " + tools.ustr(external_values.get(x,'')), self.arg))
class const(mapper):
"""
@@ -105,7 +104,6 @@ class value(mapper):
val = external_values.get(self.fallback, self.default)
return val
-
class map_val(mapper):
"""
@@ -169,5 +167,3 @@ class call(mapper):
else:
args.append(arg)
return self.fun(external_values, *args)
-
-
\ No newline at end of file
diff --git a/addons/import_sugarcrm/__init__.py b/addons/import_sugarcrm/__init__.py
new file mode 100644
index 00000000000..250589105b0
--- /dev/null
+++ b/addons/import_sugarcrm/__init__.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import import_sugarcrm
+import sugar
+import wizard
+
diff --git a/addons/import_sugarcrm/__openerp__.py b/addons/import_sugarcrm/__openerp__.py
new file mode 100644
index 00000000000..071f58099b3
--- /dev/null
+++ b/addons/import_sugarcrm/__openerp__.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+{
+ 'name': 'Import SugarCRM Data into OpenERP Module.',
+ 'version': '1.0',
+ 'category': 'Generic Modules',
+ 'description': """This Module Import SugarCRM "Leads", "Opportunities", "Users", "Accounts",
+ "Contacts", "Employees", Meetings, Phonecalls, Emails, and Project, Project Tasks Data into OpenERP Module.""",
+ 'author': 'OpenERP SA',
+ 'website': 'http://www.openerp.com',
+ 'depends': ['import_base','crm', 'document'],
+ 'init_xml': [],
+ 'update_xml': ["wizard/import_message_view.xml",
+ "import_sugarcrm_view.xml"],
+ 'demo_xml': [],
+ 'test': [],
+ 'installable': True,
+ 'active': False,
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/import_sugarcrm/doc/import_sugarcrm_installation_manual.odt b/addons/import_sugarcrm/doc/import_sugarcrm_installation_manual.odt
new file mode 100644
index 00000000000..2dfde16bc97
Binary files /dev/null and b/addons/import_sugarcrm/doc/import_sugarcrm_installation_manual.odt differ
diff --git a/addons/import_sugarcrm/doc/import_sugarcrm_user_manual.odt b/addons/import_sugarcrm/doc/import_sugarcrm_user_manual.odt
new file mode 100644
index 00000000000..2a16eeb566c
Binary files /dev/null and b/addons/import_sugarcrm/doc/import_sugarcrm_user_manual.odt differ
diff --git a/addons/import_sugarcrm/doc/import_sugarcrm_zsi_installation.txt b/addons/import_sugarcrm/doc/import_sugarcrm_zsi_installation.txt
new file mode 100644
index 00000000000..e399d63120b
--- /dev/null
+++ b/addons/import_sugarcrm/doc/import_sugarcrm_zsi_installation.txt
@@ -0,0 +1,8 @@
+Install the SOAP framwwork for Python :
+ 1. download the soap framework from http://pypi.python.org/pypi/ZSI/
+ extract the file “ZSI-2.0-rc3.tar.gz” and run following 2 commands
+ ./setup.py build
+ ./setup.py install
+ this will install soap framework for python.
+
+or use the ZSI package of your distribution
diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py
new file mode 100644
index 00000000000..b27748d48be
--- /dev/null
+++ b/addons/import_sugarcrm/import_sugarcrm.py
@@ -0,0 +1,1147 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from osv import fields, osv
+import sugar
+from tools.translate import _
+from import_base.import_framework import *
+from import_base.mapper import *
+from datetime import datetime
+import base64
+import pprint
+pp = pprint.PrettyPrinter(indent=4)
+#copy old import here
+
+import htmllib
+
+def unescape_htmlentities(s):
+ p = htmllib.HTMLParser(None)
+ p.save_bgn()
+ p.feed(s)
+ return p.save_end()
+
+class related_ref(dbmapper):
+ def __init__(self, type):
+ self.type = type
+
+ def __call__(self, external_val):
+ if external_val.get('parent_type') in self.type and external_val.get('parent_id'):
+ return self.parent.xml_id_exist(external_val['parent_type'], external_val['parent_id'])
+ return ''
+
+class sugar_import(import_framework):
+ URL = False
+ TABLE_CONTACT = 'Contacts'
+ TABLE_ACCOUNT = 'Accounts'
+ TABLE_USER = 'Users'
+ TABLE_EMPLOYEE = 'Employees'
+ TABLE_RESSOURCE = "resource"
+ TABLE_OPPORTUNITY = 'Opportunities'
+ TABLE_LEAD = 'Leads'
+ TABLE_STAGE = 'crm_stage'
+ TABLE_ATTENDEE = 'calendar_attendee'
+ TABLE_CALL = 'Calls'
+ TABLE_MEETING = 'Meetings'
+ TABLE_TASK = 'Tasks'
+ TABLE_PROJECT = 'Project'
+ TABLE_PROJECT_TASK = 'ProjectTask'
+ TABLE_BUG = 'Bugs'
+ TABLE_CASE = 'Cases'
+ TABLE_NOTE = 'Notes'
+ TABLE_EMAIL = 'Emails'
+ TABLE_COMPAIGN = 'Campaigns'
+ TABLE_DOCUMENT = 'Documents'
+ TABLE_HISTORY_ATTACHMNET = 'history_attachment'
+
+ MAX_RESULT_PER_PAGE = 200
+
+ def initialize(self):
+ #login
+ PortType,sessionid = sugar.login(self.context.get('username',''), self.context.get('password',''), self.context.get('url',''))
+ if sessionid == '-1':
+ raise osv.except_osv(_('Error !'), _('Authentication error !\nBad Username or Password or bad SugarSoap Api url !'))
+ self.context['port'] = PortType
+ self.context['session_id'] = sessionid
+
+ def get_data(self, table):
+ offset = 0
+ res = []
+ while True:
+ r = sugar.search(self.context.get('port'), self.context.get('session_id'), table, offset, self.MAX_RESULT_PER_PAGE)
+ res.extend(r)
+ if len(r) < self.MAX_RESULT_PER_PAGE:
+ break;
+ offset += self.MAX_RESULT_PER_PAGE
+ return res
+
+ #def get_link(self, from_table, ids, to_table):
+ #return sugar.relation_search(self.context.get('port'), self.context.get('session_id'), from_table, module_id=ids, related_module=to_table)
+
+ """
+ Common import method
+ """
+ def get_category(self, val, model, name):
+ fields = ['name', 'object_id']
+ data = [name, model]
+ return self.import_object(fields, data, 'crm.case.categ', 'crm_categ', name, [('object_id.model','=',model), ('name', 'ilike', name)])
+
+ def get_job_title(self, dict, salutation):
+ fields = ['shortcut', 'name', 'domain']
+ if salutation:
+ data = [salutation, salutation, 'Contact']
+ return self.import_object(fields, data, 'res.partner.title', 'contact_title', salutation, [('shortcut', '=', salutation)])
+
+ def get_channel_id(self, dict, val):
+ if not val:
+ return False
+ fields = ['name']
+ data = [val]
+ return self.import_object(fields, data, 'res.partner.canal', 'crm_channel', val)
+
+ def get_all_states(self, external_val, country_id):
+ """Get states or create new state unless country_id is False"""
+ state_code = external_val[0:3] #take the tree first char
+ fields = ['country_id/id', 'name', 'code']
+ data = [country_id, external_val, state_code]
+ if country_id:
+ return self.import_object(fields, data, 'res.country.state', 'country_state', external_val)
+ return False
+
+ def get_all_countries(self, val):
+ """Get Country, if no country match do not create anything, to avoid duplicate country code"""
+ return self.mapped_id_if_exist('res.country', [('name', 'ilike', val)], 'country', val)
+
+ def get_float_time(self, dict, hour, min):
+ min = int(min) * 100 / 60
+ return "%s.%i" % (hour, min)
+
+ """
+ import Documents
+ """
+
+ def import_related_document(self, val):
+ res_model = False
+ res_id = False
+ sugar_document_account = sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Documents', module_id=val.get('id'), related_module='Accounts', query=None, deleted=None)
+ sugar_document_contact = sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Documents', module_id=val.get('id'), related_module=self.TABLE_CONTACT, query=None, deleted=None)
+ sugar_document_opportunity = sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Documents', module_id=val.get('id'), related_module=self.TABLE_OPPORTUNITY, query=None, deleted=None)
+ sugar_document_case = sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Documents', module_id=val.get('id'), related_module=self.TABLE_CASE, query=None, deleted=None)
+ sugar_document_bug = sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Documents', module_id=val.get('id'), related_module=self.TABLE_BUG, query=None, deleted=None)
+ if sugar_document_account:
+ res_id = self.get_mapped_id(self.TABLE_ACCOUNT,sugar_document_account[0])
+ res_model = 'res.partner'
+ elif sugar_document_contact:
+ res_id = self.get_mapped_id(self.TABLE_CONTACT, sugar_document_contact[0])
+ res_model = 'res.partner.address'
+ elif sugar_document_opportunity:
+ res_id = self.get_mapped_id(self.TABLE_OPPORTUNITY, sugar_document_opportunity[0])
+ res_model = 'crm.lead'
+ elif sugar_document_case:
+ res_id = self.get_mapped_id(self.TABLE_CASE, sugar_document_case[0])
+ res_model = 'crm.claim'
+ elif sugar_document_bug:
+ res_id = self.get_mapped_id(self.TABLE_BUG, sugar_document_bug[0])
+ res_model = 'project.issue'
+ return res_id,res_model
+
+ def import_document(self, val):
+ File,Filename = sugar.get_document_revision_search(self.context.get('port'), self.context.get('session_id'), val.get('document_revision_id'))
+ #File = base64.encodestring(File)
+ res_id, res_model = self.import_related_document(val)
+ val['res_id'] = res_id
+ val['res_model'] = res_model
+ if File:
+ val['datas'] = File
+ val['datas_fname'] = Filename
+ return val
+
+ def get_document_mapping(self):
+ return {
+ 'model' : 'ir.attachment',
+ 'dependencies' : [self.TABLE_USER],
+ 'hook' : self.import_document,
+ 'map' : {
+ 'name':'document_name',
+ 'description': ppconcat('description'),
+ 'datas': 'datas',
+ 'datas_fname': 'datas_fname',
+ 'res_model': 'res_model',
+ 'res_id': 'res_id',
+ }
+ }
+
+
+ """
+ import Emails
+ """
+
+
+ def import_email(self, val):
+ vals = sugar.email_search(self.context.get('port'), self.context.get('session_id'), self.TABLE_EMAIL, val.get('id'))
+ model_obj = self.obj.pool.get('ir.model.data')
+ for val in vals:
+ xml_id = self.xml_id_exist(val.get('parent_type'), val.get('parent_id'))
+ model_ids = model_obj.search(self.cr, self.uid, [('name', 'like', xml_id)])
+ if model_ids:
+ model = model_obj.browse(self.cr, self.uid, model_ids)[0]
+ if model.model == 'res.partner':
+ val['partner_id/.id'] = model.res_id
+ else:
+ val['res_id'] = model.res_id
+ val['model'] = model.model
+ return val
+
+ def get_email_mapping(self):
+ return {
+ 'model' : 'mailgate.message',
+ 'dependencies' : [self.TABLE_USER, self.TABLE_ACCOUNT, self.TABLE_CONTACT, self.TABLE_LEAD, self.TABLE_OPPORTUNITY, self.TABLE_MEETING, self.TABLE_CALL],
+ 'hook' : self.import_email,
+ 'map' : {
+ 'name':'name',
+ 'history' : const("1"),
+ 'date':'date_sent',
+ 'email_from': 'from_addr_name',
+ 'email_to': 'to_addrs_names',
+ 'email_cc': 'cc_addrs_names',
+ 'email_bcc': 'bcc_addrs_names',
+ 'message_id': 'message_id',
+ 'res_id': 'res_id',
+ 'model': 'model',
+ 'partner_id/.id': 'partner_id/.id',
+ 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'),
+ 'description': ppconcat('description', 'description_html'),
+ }
+ }
+
+ """
+ import History(Notes)
+ """
+
+
+ def import_history(self, val):
+ model_obj = self.obj.pool.get('ir.model.data')
+ xml_id = self.xml_id_exist(val.get('parent_type'), val.get('parent_id'))
+ model_ids = model_obj.search(self.cr, self.uid, [('name', 'like', xml_id)])
+ if model_ids:
+ model = model_obj.browse(self.cr, self.uid, model_ids)[0]
+ if model.model == 'res.partner':
+ val['partner_id/.id'] = model.res_id
+ val['res_id'] = model.res_id
+ val['model'] = model.model
+ File, Filename = sugar.attachment_search(self.context.get('port'), self.context.get('session_id'), self.TABLE_NOTE, val.get('id'))
+ if File:
+ val['datas'] = File
+ val['datas_fname'] = Filename
+ return val
+
+ def get_history_mapping(self):
+ return {
+ 'model' : 'ir.attachment',
+ 'dependencies' : [self.TABLE_USER, self.TABLE_ACCOUNT, self.TABLE_CONTACT, self.TABLE_LEAD, self.TABLE_OPPORTUNITY, self.TABLE_MEETING, self.TABLE_CALL, self.TABLE_EMAIL],
+ 'hook' : self.import_history,
+ 'map' : {
+ 'name':'name',
+ 'user_id/id': ref(self.TABLE_USER, 'created_by'),
+ 'description': ppconcat('description', 'description_html'),
+ 'res_id': 'res_id',
+ 'res_model': 'model',
+ 'partner_id/.id' : 'partner_id/.id',
+ 'datas' : 'datas',
+ 'datas_fname' : 'datas_fname'
+ }
+ }
+
+ """
+ import Claims(Cases)
+ """
+ def get_claim_priority(self, val):
+ priority_dict = {
+ 'P1': '2',
+ 'P2': '3',
+ 'P3': '4'
+ }
+ return priority_dict.get(val.get('priority'), '')
+
+ def get_contact_info_from_account(self, val):
+ partner_id = self.get_mapped_id(self.TABLE_ACCOUNT, val.get('account_id'))
+ partner_address_id = False
+ partner_phone = False
+ partner_email = False
+ partner = self.obj.pool.get('res.partner').browse(self.cr, self.uid, [partner_id])[0]
+ if partner.address and partner.address[0]:
+ address = partner.address[0]
+ partner_address_id = address.id
+ partner_phone = address.phone
+ partner_email = address.email
+ return partner_address_id, partner_phone,partner_email
+
+ def import_crm_claim(self, val):
+ partner_address_id, partner_phone,partner_email = self.get_contact_info_from_account(val)
+ val['partner_address_id/.id'] = partner_address_id
+ val['partner_phone'] = partner_phone
+ val['email_from'] = partner_email
+ return val
+
+ def get_crm_claim_mapping(self):
+ return {
+ 'model' : 'crm.claim',
+ 'dependencies' : [self.TABLE_USER, self.TABLE_ACCOUNT, self.TABLE_CONTACT, self.TABLE_LEAD],
+ 'hook' : self.import_crm_claim,
+ 'map' : {
+ 'name': concat('case_number','name', delimiter='-'),
+ 'date': 'date_entered',
+ 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'),
+ 'description': ppconcat('description', 'resolution', 'work_log'),
+ 'partner_id/id': ref(self.TABLE_ACCOUNT, 'account_id'),
+ 'partner_address_id/.id': 'partner_address_id/.id',
+ 'categ_id/id': call(self.get_category, 'crm.claim', value('type')),
+ 'partner_phone': 'partner_phone',
+ 'email_from': 'email_from',
+ 'priority': self.get_claim_priority,
+ 'state': map_val('status', self.project_issue_state)
+ }
+ }
+ """
+ Import Project Issue(Bugs)
+ """
+ project_issue_state = {
+ 'New' : 'draft',
+ 'Assigned':'open',
+ 'Closed': 'done',
+ 'Pending': 'pending',
+ 'Rejected': 'cancel',
+ }
+
+ def get_project_issue_priority(self, val):
+ priority_dict = {
+ 'Urgent': '1',
+ 'High': '2',
+ 'Medium': '3',
+ 'Low': '4'
+ }
+ return priority_dict.get(val.get('priority'), '')
+
+ def get_bug_project_id(self, dict, val):
+ fields = ['name']
+ data = [val]
+ return self.import_object(fields, data, 'project.project', 'project_issue', val)
+
+ def get_project_issue_mapping(self):
+ return {
+ 'model' : 'project.issue',
+ 'dependencies' : [self.TABLE_USER],
+ 'map' : {
+ 'name': concat('bug_number', 'name', delimiter='-'),
+ 'project_id/id': call(self.get_bug_project_id, 'sugarcrm_bugs'),
+ 'categ_id/id': call(self.get_category, 'project.issue', value('type')),
+ 'description': ppconcat('description', 'source', 'resolution', 'work_log', 'found_in_release', 'release_name', 'fixed_in_release_name', 'fixed_in_release'),
+ 'priority': self.get_project_issue_priority,
+ 'state': map_val('status', self.project_issue_state),
+ 'assigned_to/id' : ref(self.TABLE_USER, 'assigned_user_id'),
+ }
+ }
+
+ """
+ import Project Tasks
+ """
+ project_task_state = {
+ 'Not Started': 'draft',
+ 'In Progress': 'open',
+ 'Completed': 'done',
+ 'Pending Input': 'pending',
+ 'Deferred': 'cancelled',
+ }
+
+ def get_project_task_priority(self, val):
+ priority_dict = {
+ 'High': '0',
+ 'Medium': '2',
+ 'Low': '3'
+ }
+ return priority_dict.get(val.get('priority'), '')
+
+ def get_project_task_mapping(self):
+ return {
+ 'model' : 'project.task',
+ 'dependencies' : [self.TABLE_USER, self.TABLE_PROJECT],
+ 'map' : {
+ 'name': 'name',
+ 'date_start': 'date_start',
+ 'date_end': 'date_finish',
+ 'project_id/id': ref(self.TABLE_PROJECT, 'project_id'),
+ 'planned_hours': 'estimated_effort',
+ 'priority': self.get_project_task_priority,
+ 'description': ppconcat('description','milestone_flag', 'project_task_id', 'task_number', 'percent_complete'),
+ 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'),
+ 'partner_id/id': 'partner_id/id',
+ 'contact_id/id': 'contact_id/id',
+ 'state': map_val('status', self.project_task_state)
+ }
+ }
+
+ """
+ import Projects
+ """
+ project_state = {
+ 'Draft' : 'draft',
+ 'In Review': 'open',
+ 'Published': 'close'
+ }
+
+ def import_project_account(self, val):
+ partner_id = False
+ partner_invoice_id = False
+ sugar_project_account = sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Project', module_id=val.get('id'), related_module=self.TABLE_ACCOUNT, query=None, deleted=None)
+ sugar_project_contact = sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Project', module_id=val.get('id'), related_module=self.TABLE_CONTACT, query=None, deleted=None)
+ for contact_id in sugar_project_contact:
+ partner_invoice_id = self.get_mapped_id(self.TABLE_CONTACT, contact_id)
+ for account_id in sugar_project_account:
+ partner_id = self.get_mapped_id(self.TABLE_ACCOUNT, account_id)
+ return partner_id, partner_invoice_id
+
+ def import_project(self, val):
+ partner_id, partner_invoice_id = self.import_project_account(val)
+ val['partner_id/.id'] = partner_id
+ val['contact_id/.id'] = partner_invoice_id
+ return val
+
+ def get_project_mapping(self):
+ return {
+ 'model' : 'project.project',
+ 'dependencies' : [self.TABLE_CONTACT, self.TABLE_ACCOUNT, self.TABLE_USER],
+ 'hook' : self.import_project,
+ 'map' : {
+ 'name': 'name',
+ 'date_start': 'estimated_start_date',
+ 'date': 'estimated_end_date',
+ 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'),
+ 'partner_id/.id': 'partner_id/.id',
+ 'contact_id/.id': 'contact_id/.id',
+ 'state': map_val('status', self.project_state)
+ }
+ }
+
+ """
+ import Tasks
+ """
+ task_state = {
+ 'Completed' : 'done',
+ 'Not Started':'draft',
+ 'In Progress': 'open',
+ 'Pending Input': 'draft',
+ 'deferred': 'cancel'
+ }
+
+ def import_task(self, val):
+ date = val.get('date_start') or datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
+ val['date'] = ''.join(date)
+ date_deadline = val.get('date_due') or datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
+ val['date_deadline'] = ''.join(date_deadline)
+ return val
+
+ def get_task_mapping(self):
+ return {
+ 'model' : 'crm.meeting',
+ 'dependencies' : [self.TABLE_CONTACT, self.TABLE_ACCOUNT, self.TABLE_USER],
+ 'hook' : self.import_task,
+ 'map' : {
+ 'name': 'name',
+ 'date': 'date',
+ 'date_deadline': 'date_deadline',
+ 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'),
+ 'categ_id/id': call(self.get_category, 'crm.meeting', const('Tasks')),
+ 'partner_id/id': related_ref(self.TABLE_ACCOUNT),
+ 'partner_address_id/id': ref(self.TABLE_CONTACT,'contact_id'),
+ 'state': map_val('status', self.task_state)
+ }
+ }
+
+ """
+ import Calls
+ """
+ #TODO adapt with project trunk-crm-imp
+ call_state = {
+ 'Planned' : 'open',
+ 'Held':'done',
+ 'Not Held': 'pending',
+ }
+
+ def get_calls_mapping(self):
+ return {
+ 'model' : 'crm.phonecall',
+ 'dependencies' : [self.TABLE_ACCOUNT, self.TABLE_CONTACT, self.TABLE_OPPORTUNITY, self.TABLE_LEAD],
+ 'map' : {
+ 'name': 'name',
+ 'date': 'date_start',
+ 'duration': call(self.get_float_time, value('duration_hours'), value('duration_minutes')),
+ 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'),
+ 'partner_id/id': related_ref(self.TABLE_ACCOUNT),
+ 'partner_address_id/id': related_ref(self.TABLE_CONTACT),
+ 'categ_id/id': call(self.get_category, 'crm.phonecall', value('direction')),
+ 'opportunity_id/id': related_ref(self.TABLE_OPPORTUNITY),
+ 'description': ppconcat('description'),
+ 'state': map_val('status', self.call_state)
+ }
+ }
+
+ """
+ import meeting
+ """
+ meeting_state = {
+ 'Planned' : 'draft',
+ 'Held': 'open',
+ 'Not Held': 'draft',
+ }
+#TODO
+ def get_attendee_id(self, cr, uid, module_name, module_id):
+ contact_id = False
+ user_id = False
+ attendee_id= []
+ attendee_dict = sugar.user_get_attendee_list(self.context.get('port'), self.context.get('session_id'), module_name, module_id)
+ for attendee in attendee_dict:
+ user_id = self.xml_id_exist(self.TABLE_USER, attendee.get('id', False))
+ contact_id = False
+ if not user_id:
+ contact_id = self.xml_id_exist(self.TABLE_CONTACT, attendee.get('id', False))
+ fields = ['user_id/id', 'email', 'partner_address_id/id']
+ data = [user_id, attendee.get('email1'), contact_id]
+ attendee_xml_id = self.import_object(fields, data, 'calendar.attendee', self.TABLE_ATTENDEE, user_id or contact_id or attendee.get('email1'), ['|',('user_id', '=', attendee.get('id')),('partner_address_id','=',attendee.get('id')),('email', '=', attendee.get('email1'))])
+ attendee_id.append(attendee_xml_id)
+ return ','.join(attendee_id)
+
+ def get_alarm_id(self, dict_val, val):
+ alarm_dict = {
+ '60': '1 minute before',
+ '300': '5 minutes before',
+ '600': '10 minutes before',
+ '900': '15 minutes before',
+ '1800':'30 minutes before',
+ '3600': '1 hour before',
+ }
+ return self.mapped_id_if_exist('res.alarm', [('name', 'like', alarm_dict.get(val))], 'alarm', val)
+
+ #TODO attendees
+
+ def import_meeting(self, val):
+ attendee_id = self.get_attendee_id(self.cr, self.uid, 'Meetings', val.get('id')) #TODO
+ val['attendee_ids/id'] = attendee_id
+ return val
+
+ def get_meeting_mapping(self):
+ return {
+ 'model' : 'crm.meeting',
+ 'dependencies' : [self.TABLE_CONTACT, self.TABLE_OPPORTUNITY, self.TABLE_LEAD, self.TABLE_TASK],
+ 'hook': self.import_meeting,
+ 'map' : {
+ 'name': 'name',
+ 'date': 'date_start',
+ 'duration': call(self.get_float_time, value('duration_hours'), value('duration_minutes')),
+ 'location': 'location',
+ 'attendee_ids/id':'attendee_ids/id',
+ 'alarm_id/id': call(self.get_alarm_id, value('reminder_time')),
+ 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'),
+ 'partner_id/id': related_ref(self.TABLE_ACCOUNT),
+ 'partner_address_id/id': related_ref(self.TABLE_CONTACT),
+ 'state': map_val('status', self.meeting_state)
+ }
+ }
+
+ """
+ import Opportunity
+ """
+ opp_state = {
+ 'Need Analysis' : 'New',
+ 'Closed Lost': 'Lost',
+ 'Closed Won': 'Won',
+ 'Value Proposition': 'Proposition',
+ 'Negotiation/Review': 'Negotiation'
+ }
+
+ def get_opportunity_status(self, sugar_val):
+ fields = ['name', 'type']
+ name = 'Opportunity_' + sugar_val['sales_stage']
+ data = [sugar_val['sales_stage'], 'Opportunity']
+ return self.import_object(fields, data, 'crm.case.stage', self.TABLE_STAGE, name, [('type', '=', 'opportunity'), ('name', 'ilike', sugar_val['sales_stage'])])
+
+ def import_opportunity_contact(self, val):
+ sugar_opportunities_contact = set(sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Opportunities', module_id=val.get('id'), related_module='Contacts', query=None, deleted=None))
+
+ partner_contact_id = False
+ partner_contact_email = False
+ partner_address_obj = self.obj.pool.get('res.partner.address')
+ partner_xml_id = self.name_exist(self.TABLE_ACCOUNT, val['account_name'], 'res.partner')
+
+ for contact in sugar_opportunities_contact:
+ address_id = self.get_mapped_id(self.TABLE_CONTACT, contact)
+ if address_id:
+ address = partner_address_obj.browse(self.cr, self.uid, address_id)
+ partner_name = address.partner_id and address.partner_id.name or False
+ if not partner_name: #link with partner id
+ fields = ['partner_id/id']
+ data = [partner_xml_id]
+ self.import_object(fields, data, 'res.partner.address', self.TABLE_CONTACT, contact, self.DO_NOT_FIND_DOMAIN)
+ if not partner_name or partner_name == val.get('account_name'):
+ partner_contact_id = self.xml_id_exist(self.TABLE_CONTACT, contact)
+ partner_contact_email = address.email
+ return partner_contact_id, partner_contact_email
+
+ def import_opp(self, val):
+ partner_contact_id, partner_contact_email = self.import_opportunity_contact(val)
+ val['partner_address_id/id'] = partner_contact_id
+ val['email_from'] = partner_contact_email
+ return val
+
+ def get_opp_mapping(self):
+ return {
+ 'model' : 'crm.lead',
+ 'dependencies' : [self.TABLE_USER, self.TABLE_ACCOUNT, self.TABLE_CONTACT,self.TABLE_COMPAIGN],
+ 'hook' : self.import_opp,
+ 'map' : {
+ 'name': 'name',
+ 'probability': 'probability',
+ 'partner_id/id': refbyname(self.TABLE_ACCOUNT, 'account_name', 'res.partner'),
+ 'title_action': 'next_step',
+ 'partner_address_id/id': 'partner_address_id/id',
+ 'planned_revenue': 'amount',
+ 'date_deadline': 'date_closed',
+ 'user_id/id' : ref(self.TABLE_USER, 'assigned_user_id'),
+ 'stage_id/id' : self.get_opportunity_status,
+ 'type' : const('opportunity'),
+ 'categ_id/id': call(self.get_category, 'crm.lead', value('opportunity_type')),
+ 'email_from': 'email_from',
+ 'state': map_val('status', self.opp_state),
+ 'description' : 'description',
+ }
+ }
+
+ """
+ import campaign
+ """
+
+ def get_compaign_mapping(self):
+ return {
+ 'model' : 'crm.case.resource.type',
+ 'map' : {
+ 'name': 'name',
+ }
+ }
+
+ """
+ import lead
+ """
+ def get_lead_status(self, sugar_val):
+ fields = ['name', 'type']
+ name = 'lead_' + sugar_val.get('status', '')
+ data = [sugar_val.get('status', ''), 'lead']
+ return self.import_object(fields, data, 'crm.case.stage', self.TABLE_STAGE, name, [('type', '=', 'lead'), ('name', 'ilike', sugar_val.get('status', ''))])
+
+ lead_state = {
+ 'New' : 'draft',
+ 'Assigned':'open',
+ 'In Progress': 'open',
+ 'Recycled': 'cancel',
+ 'Dead': 'done',
+ 'Converted': 'done',
+ }
+
+ def import_lead(self, val):
+ if val.get('opportunity_id'): #if lead is converted into opp, don't import as lead
+ return False
+ if val.get('primary_address_country'):
+ country_id = self.get_all_countries(val.get('primary_address_country'))
+ val['country_id/id'] = country_id
+ val['state_id/id'] = self.get_all_states(val.get('primary_address_state'), country_id)
+ return val
+
+ def get_lead_mapping(self):
+ return {
+ 'model' : 'crm.lead',
+ 'dependencies' : [self.TABLE_COMPAIGN, self.TABLE_USER],
+ 'hook' : self.import_lead,
+ 'map' : {
+ 'name': concat('first_name', 'last_name'),
+ 'contact_name': concat('first_name', 'last_name'),
+ 'description': ppconcat('description', 'refered_by', 'lead_source', 'lead_source_description', 'website', 'email2', 'status_description', 'lead_source_description', 'do_not_call'),
+ 'partner_name': 'account_name',
+ 'email_from': 'email1',
+ 'phone': 'phone_work',
+ 'mobile': 'phone_mobile',
+ 'title/id': call(self.get_job_title, value('salutation')),
+ 'function':'title',
+ 'street': 'primary_address_street',
+ 'street2': 'alt_address_street',
+ 'zip': 'primary_address_postalcode',
+ 'city':'primary_address_city',
+ 'user_id/id' : ref(self.TABLE_USER, 'assigned_user_id'),
+ 'stage_id/id' : self.get_lead_status,
+ 'type' : const('lead'),
+ 'state': map_val('status', self.lead_state) ,
+ 'fax': 'phone_fax',
+ 'referred': 'refered_by',
+ 'optout': 'do_not_call',
+ 'channel_id/id': call(self.get_channel_id, value('lead_source')),
+ 'type_id/id': ref(self.TABLE_COMPAIGN, 'campaign_id'),
+ 'country_id/id': 'country_id/id',
+ 'state_id/id': 'state_id/id',
+ }
+ }
+
+ """
+ import contact
+ """
+
+ def get_email(self, val):
+ email_address = sugar.get_contact_by_email(self.context.get('port'), self.context.get('username'), self.context.get('password'), val.get('email1'))
+ if email_address:
+ return ','.join(email_address)
+
+ def import_contact(self, val):
+ if val.get('primary_address_country'):
+ country_id = self.get_all_countries(val.get('primary_address_country'))
+ state = self.get_all_states(val.get('primary_address_state'), country_id)
+ val['country_id/id'] = country_id
+ val['state_id/id'] = state
+ return val
+
+ def get_contact_mapping(self):
+ return {
+ 'model' : 'res.partner.address',
+ 'dependencies' : [self.TABLE_ACCOUNT],
+ 'hook' : self.import_contact,
+ 'map' : {
+ 'name': concat('first_name', 'last_name'),
+ 'partner_id/id': ref(self.TABLE_ACCOUNT,'account_id'),
+ 'phone': 'phone_work',
+ 'mobile': 'phone_mobile',
+ 'fax': 'phone_fax',
+ 'function': 'title',
+ 'street': 'primary_address_street',
+ 'zip': 'primary_address_postalcode',
+ 'city': 'primary_address_city',
+ 'country_id/id': 'country_id/id',
+ 'state_id/id': 'state_id/id',
+ 'email': self.get_email,
+ 'type': const('contact')
+ }
+ }
+
+ """
+ import Account
+ """
+
+ def get_address_type(self, val, type):
+ if type == 'invoice':
+ type_address = 'billing'
+ else:
+ type_address = 'shipping'
+
+ if type == 'default':
+ map_partner_address = {
+ 'name': 'name',
+ 'type': const('default'),
+ 'email': 'email1'
+ }
+ else:
+ map_partner_address = {
+ 'name': 'name',
+ 'phone': 'phone_office',
+ 'mobile': 'phone_mobile',
+ 'fax': 'phone_fax',
+ 'type': 'type',
+ 'street': type_address + '_address_street',
+ 'zip': type_address +'_address_postalcode',
+ 'city': type_address +'_address_city',
+ 'country_id/id': 'country_id/id',
+ 'type': 'type',
+ }
+
+ if val.get(type_address +'_address_country'):
+ country_id = self.get_all_countries(val.get(type_address +'_address_country'))
+ state = self.get_all_states(val.get(type_address +'_address_state'), country_id)
+ val['country_id/id'] = country_id
+ val['state_id/id'] = state
+
+ val['type'] = type
+ val['id_new'] = val['id'] + '_address_' + type
+ return self.import_object_mapping(map_partner_address, val, 'res.partner.address', self.TABLE_CONTACT, val['id_new'], self.DO_NOT_FIND_DOMAIN)
+
+ def get_partner_address(self, val):
+ address_id=[]
+ type_dict = {'billing_address_street' : 'invoice', 'shipping_address_street' : 'delivery', 'type': 'default'}
+ for key, type_value in type_dict.items():
+ if val.get(key):
+ id = self.get_address_type(val, type_value)
+ address_id.append(id)
+
+ return ','.join(address_id)
+
+ def get_partner_mapping(self):
+ return {
+ 'model' : 'res.partner',
+ 'dependencies' : [self.TABLE_USER],
+ 'map' : {
+ 'name': 'name',
+ 'website': 'website',
+ 'user_id/id': ref(self.TABLE_USER,'assigned_user_id'),
+ 'ref': 'sic_code',
+ 'comment': ppconcat('description', 'employees', 'ownership', 'annual_revenue', 'rating', 'industry', 'ticker_symbol'),
+ 'customer': const('1'),
+ 'supplier': const('0'),
+ 'address/id':'address/id',
+ 'parent_id/id_parent' : 'parent_id',
+ 'address/id' : self.get_partner_address,
+ }
+ }
+
+ """
+ import Employee
+ """
+ def get_ressource(self, val):
+ map_resource = {
+ 'name': concat('first_name', 'last_name'),
+ }
+ return self.import_object_mapping(map_resource, val, 'resource.resource', self.TABLE_RESSOURCE, val['id'], self.DO_NOT_FIND_DOMAIN)
+
+ def get_job_id(self, val):
+ fields = ['name']
+ data = [val.get('title')]
+ return self.import_object(fields, data, 'hr.job', 'hr_job', val.get('title'))
+
+ def get_user_address(self, val):
+ map_user_address = {
+ 'name': concat('first_name', 'last_name'),
+ 'city': 'address_city',
+ 'country_id/id': 'country_id/id',
+ 'state_id/id': 'state_id/id',
+ 'street': 'address_street',
+ 'zip': 'address_postalcode',
+ 'fax': 'phone_fax',
+ 'phone': 'phone_work',
+ 'mobile':'phone_mobile',
+ 'email': 'email1'
+ }
+
+ if val.get('address_country'):
+ country_id = self.get_all_countries(val.get('address_country'))
+ state_id = self.get_all_states(val.get('address_state'), country_id)
+ val['country_id/id'] = country_id
+ val['state_id/id'] = state_id
+
+ return self.import_object_mapping(map_user_address, val, 'res.partner.address', self.TABLE_CONTACT, val['id'], self.DO_NOT_FIND_DOMAIN)
+
+ def get_employee_mapping(self):
+ return {
+ 'model' : 'hr.employee',
+ 'dependencies' : [self.TABLE_USER],
+ 'map' : {
+ 'resource_id/id': self.get_ressource,
+ 'name': concat('first_name', 'last_name'),
+ 'work_phone': 'phone_work',
+ 'mobile_phone': 'phone_mobile',
+ 'user_id/id': ref(self.TABLE_USER, 'id'),
+ 'address_home_id/id': self.get_user_address,
+ 'notes': ppconcat('messenger_type', 'messenger_id', 'description'),
+ 'job_id/id': self.get_job_id,
+ 'work_email' : 'email1',
+ 'coach_id/id_parent' : 'reports_to_id',
+ }
+ }
+
+ """
+ import user
+ """
+ def import_user(self, val):
+ user_obj = self.obj.pool.get('res.users')
+ user_ids = user_obj.search(self.cr, self.uid, [('login', '=', val.get('user_name'))])
+ if user_ids:
+ val['.id'] = str(user_ids[0])
+ else:
+ val['password'] = 'sugarcrm' #default password for all user #TODO needed in documentation
+
+ val['context_lang'] = self.context.get('lang','en_US')
+ return val
+
+ def get_users_department(self, val):
+ dep = val.get('department')
+ fields = ['name']
+ data = [dep]
+ if not dep:
+ return False
+ return self.import_object(fields, data, 'hr.department', 'hr_department_user', dep)
+
+ def get_user_mapping(self):
+ return {
+ 'model' : 'res.users',
+ 'hook' : self.import_user,
+ 'map' : {
+ 'name': concat('first_name', 'last_name'),
+ 'login': value('user_name', fallback='last_name'),
+ 'context_lang' : 'context_lang',
+ 'password' : 'password',
+ '.id' : '.id',
+ 'context_department_id/id': self.get_users_department,
+ 'user_email' : 'email1',
+ }
+ }
+
+
+ def get_mapping(self):
+ return {
+ self.TABLE_USER : self.get_user_mapping(),
+ self.TABLE_EMPLOYEE : self.get_employee_mapping(),
+ self.TABLE_ACCOUNT : self.get_partner_mapping(),
+ self.TABLE_CONTACT : self.get_contact_mapping(),
+ self.TABLE_LEAD : self.get_lead_mapping(),
+ self.TABLE_OPPORTUNITY : self.get_opp_mapping(),
+ self.TABLE_MEETING : self.get_meeting_mapping(),
+ self.TABLE_CALL : self.get_calls_mapping(),
+ self.TABLE_TASK : self.get_task_mapping(),
+ self.TABLE_PROJECT : self.get_project_mapping(),
+ self.TABLE_PROJECT_TASK: self.get_project_task_mapping(),
+ self.TABLE_BUG: self.get_project_issue_mapping(),
+ self.TABLE_CASE: self.get_crm_claim_mapping(),
+ self.TABLE_NOTE: self.get_history_mapping(),
+ self.TABLE_EMAIL: self.get_email_mapping(),
+ self.TABLE_DOCUMENT: self.get_document_mapping(),
+ self.TABLE_COMPAIGN: self.get_compaign_mapping()
+ }
+
+ """
+ Email notification
+ """
+ def get_email_subject(self, result, error=False):
+ if error:
+ return "Sugarcrm data import failed at %s due to an unexpected error" % self.date_ended
+ return "your sugarcrm data were successfully imported at %s" % self.date_ended
+
+ def get_body_header(self, result):
+ return "Sugarcrm import : report of last import"
+
+
+class import_sugarcrm(osv.osv):
+ """Import SugarCRM DATA"""
+
+ _name = "import.sugarcrm"
+ _description = __doc__
+ _columns = {
+ 'username': fields.char('User Name', size=64, required=True),
+ 'password': fields.char('Password', size=24,required=True),
+ 'url' : fields.char('SugarSoap Api url:', size=264, required=True, help="Webservice's url where to get the data.\
+ example : 'http://example.com/sugarcrm/soap.php', or copy the address of your sugarcrm application http://trial.sugarcrm.com/qbquyj4802/index.php?module=Home&action=index"),
+ 'user' : fields.boolean('User', help="Check this box to import sugarCRM Users into OpenERP users, warning if a user with the same login exist in OpenERP, user information will be erase by sugarCRM user information", readonly=True),
+ 'opportunity': fields.boolean('Leads & Opp', help="Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads and Opportunities"),
+ 'contact': fields.boolean('Contacts', help="Check this box to import sugarCRM Contacts into OpenERP addresses"),
+ 'account': fields.boolean('Accounts', help="Check this box to import sugarCRM Accounts into OpenERP partners"),
+ 'employee': fields.boolean('Employee', help="Check this box to import sugarCRM Employees into OpenERP employees"),
+ 'meeting': fields.boolean('Meetings', help="Check this box to import sugarCRM Meetings and Tasks into OpenERP meetings"),
+ 'call': fields.boolean('Calls', help="Check this box to import sugarCRM Calls into OpenERP calls"),
+ 'claim': fields.boolean('Cases', help="Check this box to import sugarCRM Cases into OpenERP claims"),
+ 'email_history': fields.boolean('Email and Note',help="Check this box to import sugarCRM Emails, Notes and Attachments into OpenERP Messages and Attachments"),
+ 'project': fields.boolean('Projects', help="Check this box to import sugarCRM Projects into OpenERP projects"),
+ 'project_task': fields.boolean('Project Tasks', help="Check this box to import sugarCRM Project Tasks into OpenERP tasks"),
+ 'bug': fields.boolean('Bugs', help="Check this box to import sugarCRM Bugs into OpenERP project issues"),
+ 'document': fields.boolean('Documents', help="Check this box to import sugarCRM Documents into OpenERP documents"),
+ 'email_from': fields.char('Notify End Of Import To:', size=128),
+ 'instance_name': fields.char("Instance's Name", size=64, help="Prefix of SugarCRM id to differentiate xml_id of SugarCRM models datas come from different server."),
+ }
+
+ def _get_email_id(self, cr, uid, context=None):
+ return self.pool.get('res.users').browse(cr, uid, uid, context=context).user_email
+
+ def _module_installed(self, cr, uid, model, context=None):
+ module_id = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', model), ('state', "=", "installed")], context=context)
+ return bool(module_id)
+
+ def _project_installed(self, cr, uid, context=None):
+ return self._module_installed(cr,uid,'project',context=context)
+
+ def _crm_claim_installed(self, cr, uid, context=None):
+ return self._module_installed(cr,uid,'crm_claim',context=context)
+
+ def _project_issue_installed(self, cr, uid, context=None):
+ return self._module_installed(cr,uid,'project_issue',context=context)
+
+ def _hr_installed(self, cr, uid, context=None):
+ return self._module_installed(cr,uid,'hr',context=context)
+
+ _defaults = {#to be set to true, but easier for debugging
+ 'user' : True,
+ 'opportunity': True,
+ 'contact' : True,
+ 'account' : True,
+ 'employee' : _hr_installed,
+ 'meeting' : True,
+ 'call' : True,
+ 'claim' : _crm_claim_installed,
+ 'email_history' : True,
+ 'project' : _project_installed,
+ 'project_task': _project_installed,
+ 'bug': _project_issue_installed,
+ 'document': True,
+ 'instance_name': 'sugarcrm',
+ 'email_from': _get_email_id,
+ 'username' : 'admin',
+ 'password' : '',
+ 'url': "http://sugarcrm.example.com/soap.php"
+ }
+
+ def check_url(self, url, context):
+ if not context:
+ context = {}
+ user = context.get('username')
+ password = context.get('password')
+
+ try :
+ sugar.login(user, password, url)
+ return True
+ except Exception:
+ return False
+
+
+ def parse_valid_url(self, context=None):
+ if not context:
+ context = {}
+ url = context.get('url')
+ url_split = str(url).split('/')
+ while len(url_split) >= 3:
+ #3 case, soap.php is already at the end of url should be valid
+ #url end by / or not
+ if url_split[-1] == 'soap.php':
+ url = "/".join(url_split)
+ elif url_split[-1] == '':
+ url = "/".join(url_split) + "soap.php"
+ else:
+ url = "/".join(url_split) + "/soap.php"
+
+ if self.check_url(url, context):
+ return url
+ else:
+ url_split = url_split[:-1] #take parent folder
+ return url
+
+ def get_key(self, cr, uid, ids, context=None):
+ """Select Key as For which Module data we want import data."""
+ if not context:
+ context = {}
+ key_list = []
+ module = {}
+ for current in self.browse(cr, uid, ids, context):
+ context.update({'username': current.username, 'password': current.password, 'url': current.url, 'email_user': current.email_from or False, 'instance_name': current.instance_name or False})
+ if current.user:
+ key_list.append('Users')
+ if current.contact:
+ key_list.append('Contacts')
+ if current.account:
+ key_list.append('Accounts')
+ if current.opportunity:
+ key_list.append('Leads')
+ key_list.append('Opportunities')
+ if current.employee:
+ key_list.append('Employees')
+ module.update({'Employees':'hr'})
+ if current.meeting:
+ key_list.append('Meetings')
+ if current.call:
+ key_list.append('Calls')
+ if current.claim:
+ key_list.append('Cases')
+ module.update({'Cases':'crm_claim'})
+ if current.email_history:
+ key_list.append('Emails')
+ key_list.append('Notes')
+ if current.project:
+ key_list.append('Project')
+ module.update({'Project':'project'})
+ if current.project_task:
+ key_list.append('ProjectTask')
+ module.update({'ProjectTask':'project'})
+ if current.bug:
+ key_list.append('Bugs')
+ module.update({'Bugs':'project_issue'})
+ if current.document:
+ key_list.append('Documents')
+ return key_list,module
+
+
+ def do_import_all(self, cr, uid, *args):
+ """
+ scheduler Method
+ """
+ context = {'username': args[4], 'password': args[5], 'url': args[3], 'instance_name': args[3]}
+ imp = sugar_import(self, cr, uid, args[2], "import_sugarcrm", [args[1]], context)
+ imp.set_table_list(args[0])
+ imp.start()
+ return True
+
+ def import_from_scheduler_all(self, cr, uid, ids, context=None):
+ keys, module_list = self.get_key(cr, uid, ids, context)
+ if not keys:
+ raise osv.except_osv(_('Warning !'), _('Select Module to Import.'))
+ key_list = module_list.keys()
+ for module in key_list :
+ module = module_list[module]
+ state = self.get_all(cr,uid,module,context=context)
+ if state == False:
+ keys = ', '.join(key_list)
+ raise osv.except_osv(_('Error !!'), _("%s data required %s Module to be installed, Please install %s module") %(keys,module,module))
+ cron_obj = self.pool.get('ir.cron')
+ url = self.parse_valid_url(context)
+ args = (keys,context.get('email_user'), context.get('instance_name'), url, context.get('username'), context.get('password') )
+ new_create_id = cron_obj.create(cr, uid, {'name': 'Import SugarCRM datas','interval_type': 'hours','interval_number': 1, 'numbercall': -1,'model': 'import.sugarcrm','function': 'do_import_all', 'args': args, 'active': False})
+ return {
+ 'name': 'SugarCRM Scheduler',
+ 'view_type': 'form',
+ 'view_mode': 'form,tree',
+ 'res_model': 'ir.cron',
+ 'res_id': new_create_id,
+ 'type': 'ir.actions.act_window',
+ }
+
+ def import_all(self, cr, uid, ids, context=None):
+
+# """Import all sugarcrm data into openerp module"""
+ keys, module_list = self.get_key(cr, uid, ids, context)
+ if not keys:
+ raise osv.except_osv(_('Warning !'), _('Select Module to Import.'))
+ key_list = module_list.keys()
+ for module in key_list :
+ module = module_list[module]
+ state = self._module_installed(cr,uid,module,context=context)
+ if state == False:
+ keys = ', '.join(key_list)
+ raise osv.except_osv(_('Error !!'), _("%s data required %s Module to be installed, Please install %s module") %(keys,module,module))
+ url = self.parse_valid_url(context)
+ context.update({'url': url})
+ imp = sugar_import(self, cr, uid, context.get('instance_name'), "import_sugarcrm", [context.get('email_user')], context)
+ imp.set_table_list(keys)
+ imp.start()
+ obj_model = self.pool.get('ir.model.data')
+ model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','import.message.form')])
+ resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'])
+ return {
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'import.message',
+ 'views': [(resource_id,'form')],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ }
+
+import_sugarcrm()
diff --git a/addons/import_sugarcrm/import_sugarcrm_view.xml b/addons/import_sugarcrm/import_sugarcrm_view.xml
new file mode 100644
index 00000000000..1f12a8fde57
--- /dev/null
+++ b/addons/import_sugarcrm/import_sugarcrm_view.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+ import.sugarcrm.form
+ import.sugarcrm
+ form
+
+
+
+
+
+
+
+
+ Import SugarCRM
+ import.sugarcrm
+ form
+ tree,form
+
+ new
+
+
+
+
+
+
+
+
diff --git a/addons/import_sugarcrm/sugar.py b/addons/import_sugarcrm/sugar.py
new file mode 100644
index 00000000000..783878723e9
--- /dev/null
+++ b/addons/import_sugarcrm/sugar.py
@@ -0,0 +1,170 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+
+import hashlib
+from sugarsoap_services import *
+from sugarsoap_services_types import *
+from osv import osv
+from tools.translate import _
+import base64
+from lxml import etree
+import tools
+import import_sugarcrm
+
+import logging
+
+
+class LoginError(Exception): pass
+
+def login(username, password, url):
+ setURL(url)
+ loc = sugarsoapLocator()
+ portType = loc.getsugarsoapPortType(url)
+ request = loginRequest()
+ uauth = ns0.user_auth_Def(request)
+ request._user_auth = uauth
+
+ uauth._user_name = username
+ uauth._password = hashlib.md5(password).hexdigest()
+ uauth._version = '1.1'
+ try:
+ response = portType.login(request)
+ except:
+ raise osv.except_osv(_('Error !'), _('Authentication error !\nBad Username or Password bad SugarSoap Api url !'))
+ if -1 == response._return._id:
+ raise LoginError(response._return._error._description)
+
+ return (portType, response._return._id)
+
+def relation_search(portType, sessionid, module_name=None, module_id=None, related_module=None, query=None, deleted=None):
+ se_req = get_relationshipsRequest()
+ se_req._session = sessionid
+ se_req._module_name = module_name
+ se_req._module_id = module_id
+ se_req._related_module = related_module
+ se_resp = portType.get_relationships(se_req)
+ ans_list = []
+ if se_resp:
+ list = se_resp._return.get_element_ids()
+ for i in list:
+ ans_list.append(i.get_element_id())
+ return ans_list
+
+def attachment_search(portType, sessionid, module_name, module_id=None):
+ se_req = get_note_attachmentRequest()
+ se_req._session = sessionid
+ se_req._id = module_id
+ se_req._module_name = module_name
+ se_resp = portType.get_note_attachment(se_req)
+ file = se_resp._return._note_attachment.File
+ filename = se_resp._return._note_attachment.Filename
+ return file, filename
+
+def user_get_attendee_list(portType, sessionid, module_name=None, module_id=None):
+ se_req = get_attendee_listRequest()
+ se_req._session = sessionid
+ se_req._module_name = module_name
+ se_req._id = module_id
+ se_resp = portType.get_attendee_list(se_req)
+ list = se_resp.get_element_return()
+ arch = base64.decodestring(list.Result)
+ eview = etree.XML(arch)
+ attendee_list = []
+ for child in eview:
+ attendee_dict = {}
+ for ch in child.getchildren():
+ attendee_dict[ch.tag] = tools.ustr(ch.text)
+ attendee_list.append(attendee_dict)
+ return attendee_list
+
+def get_contact_by_email(portType, username, password, email_address=None):
+ se_req = contact_by_emailRequest()
+ se_req._user_name = username
+ se_req._password = password
+ se_req._email_address = email_address
+ try:
+ se_resp = portType.contact_by_email(se_req)
+ email_list = []
+ for list in se_resp.get_element_return():
+ if list.Email_address in email_list:
+ continue
+ elif list.Email_address:
+ email_list.append(list.Email_address)
+ return email_list
+ except Exception,e:
+ logging.getLogger('sugarcrm_soap').error('Exception: %s\n' % (tools.ustr(e)))
+ return False
+
+def get_document_revision_search(portType, sessionid, module_id=None):
+ se_req = get_document_revisionRequest()
+ se_req._session = sessionid
+ se_req._i = module_id
+ se_resp = portType.get_document_list(se_req)
+ file = se_resp._return.Document_revision.File
+ filename = se_resp._return.Document_revision.Filename
+ return file, filename
+
+
+def email_search(portType, sessionid, module_name, module_id, select_fields=None):
+ se_req = get_entryRequest()
+ se_req._session = sessionid
+ se_req._module_name = module_name
+ se_req._id = module_id
+ se_req._select_fields = select_fields
+
+ se_resp = portType.get_entry(se_req)
+ ans_list = []
+ if se_resp:
+ list = se_resp._return._entry_list
+
+ for i in list:
+ ans_dir = {}
+ for j in i._name_value_list:
+ ans_dir[tools.ustr(j._name)] = tools.ustr(j._value)
+ #end for
+ ans_list.append(ans_dir)
+ #end for
+ return ans_list
+
+def search(portType, sessionid, module_name, offset, max_results, query=None, order_by=None, select_fields=None, deleted=None):
+ se_req = get_entry_listRequest()
+ se_req._session = sessionid
+ se_req._module_name = module_name
+ if query != None:
+ se_req._query = query
+ se_req._order_by = order_by
+ se_req._offset = offset
+ se_req._select_fields = select_fields
+ se_req._max_results = max_results
+ se_req._deleted = deleted
+ se_resp = portType.get_entry_list(se_req)
+ ans_list = []
+ if se_resp:
+ list = se_resp._return._entry_list
+ for i in list:
+ ans_dir = {}
+ for j in i._name_value_list:
+ ans_dir[tools.ustr(j._name)] = import_sugarcrm.unescape_htmlentities(tools.ustr(j._value))
+ #end for
+ ans_list.append(ans_dir)
+ #end for
+ return ans_list
diff --git a/addons/import_sugarcrm/sugarsoap_services.py b/addons/import_sugarcrm/sugarsoap_services.py
new file mode 100644
index 00000000000..a80102e5081
--- /dev/null
+++ b/addons/import_sugarcrm/sugarsoap_services.py
@@ -0,0 +1,1420 @@
+##################################################
+# sugarsoap_services.py
+# generated by ZSI.generate.wsdl2python
+##################################################
+
+
+from sugarsoap_services_types import *
+from osv import osv
+from tools.translate import _
+import socket
+import import_sugarcrm
+
+
+
+IP = socket.gethostbyname(socket.gethostname())
+URL = False
+
+try:
+ import ZSI
+ from ZSI.TCcompound import Struct
+ from ZSI import client
+except ImportError:
+ raise osv.except_osv(_('ZSI Import Error!'), _('Please install SOAP for python - ZSI-2.0-rc3.tar.gz - python-zci'))
+
+def setURL(url):
+ global URL
+ URL = url
+
+# Locator
+class sugarsoapLocator:
+ sugarsoapPortType_address = URL
+ def getsugarsoapPortTypeAddress(self):
+ return sugarsoapLocator.sugarsoapPortType_address
+ def getsugarsoapPortType(self, url=None, **kw):
+ return sugarsoapBindingSOAP(url or sugarsoapLocator.sugarsoapPortType_address, **kw)
+
+# Methods
+class sugarsoapBindingSOAP:
+ def __init__(self, url, **kw):
+ kw.setdefault("readerclass", None)
+ kw.setdefault("writerclass", None)
+ # no resource properties
+ self.binding = client.Binding(url=url, **kw)
+ # no ws-addressing
+
+ # op: create_session
+ def create_session(self, request):
+ if isinstance(request, create_sessionRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction= URL+"/create_session", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=create_sessionResponse.typecode.ofwhat, pyclass=create_sessionResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: end_session
+ def end_session(self, request):
+ if isinstance(request, end_sessionRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/end_session", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=end_sessionResponse.typecode.ofwhat, pyclass=end_sessionResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: contact_by_email
+ def contact_by_email(self, request):
+ if isinstance(request, contact_by_emailRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/contact_by_email", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=contact_by_emailResponse.typecode.ofwhat, pyclass=contact_by_emailResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: user_list
+ def user_list(self, request):
+ if isinstance(request, user_listRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/user_list", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=user_listResponse.typecode.ofwhat, pyclass=user_listResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: search
+ def search(self, request):
+ if isinstance(request, searchRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/search", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=searchResponse.typecode.ofwhat, pyclass=searchResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: track_email
+ def track_email(self, request):
+ if isinstance(request, track_emailRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/track_email", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=track_emailResponse.typecode.ofwhat, pyclass=track_emailResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: create_contact
+ def create_contact(self, request):
+ if isinstance(request, create_contactRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/create_contact", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=create_contactResponse.typecode.ofwhat, pyclass=create_contactResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: create_lead
+ def create_lead(self, request):
+ if isinstance(request, create_leadRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/create_lead", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=create_leadResponse.typecode.ofwhat, pyclass=create_leadResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: create_account
+ def create_account(self, request):
+ if isinstance(request, create_accountRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/create_account", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=create_accountResponse.typecode.ofwhat, pyclass=create_accountResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: create_opportunity
+ def create_opportunity(self, request):
+ if isinstance(request, create_opportunityRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/create_opportunity", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=create_opportunityResponse.typecode.ofwhat, pyclass=create_opportunityResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: create_case
+ def create_case(self, request):
+ if isinstance(request, create_caseRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/create_case", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=create_caseResponse.typecode.ofwhat, pyclass=create_caseResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: login
+ def login(self, request):
+ if isinstance(request, loginRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/login", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=loginResponse.typecode.ofwhat, pyclass=loginResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: is_loopback
+ def is_loopback(self, request):
+ if isinstance(request, is_loopbackRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/is_loopback", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=is_loopbackResponse.typecode.ofwhat, pyclass=is_loopbackResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: seamless_login
+ def seamless_login(self, request):
+ if isinstance(request, seamless_loginRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/seamless_login", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=seamless_loginResponse.typecode.ofwhat, pyclass=seamless_loginResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ #op: get_document_list
+ def get_document_list(self, request):
+ if isinstance(request, get_document_revisionRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction="http://"+ IP +"/sugarcrm/soap.php/get_document_list", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_document_revisionResponse.typecode.ofwhat, pyclass=get_document_revisionResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_entry_list
+ def get_entry_list(self, request):
+ if isinstance(request, get_entry_listRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_entry_list", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_entry_listResponse.typecode.ofwhat, pyclass=get_entry_listResponse.typecode.pyclass)
+ try:
+ response = self.binding.Receive(typecode)
+ except:
+ return None
+ return response
+
+ # op: get_entry
+ def get_entry(self, request):
+ if isinstance(request, get_entryRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_entry", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_entryResponse.typecode.ofwhat, pyclass=get_entryResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_entries
+ def get_entries(self, request):
+ if isinstance(request, get_entriesRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_entries", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_entriesResponse.typecode.ofwhat, pyclass=get_entriesResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: set_entry
+ def set_entry(self, request):
+ if isinstance(request, set_entryRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/set_entry", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=set_entryResponse.typecode.ofwhat, pyclass=set_entryResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: set_entries
+ def set_entries(self, request):
+ if isinstance(request, set_entriesRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/set_entries", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=set_entriesResponse.typecode.ofwhat, pyclass=set_entriesResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: set_note_attachment
+ def set_note_attachment(self, request):
+ if isinstance(request, set_note_attachmentRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/set_note_attachment", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=set_note_attachmentResponse.typecode.ofwhat, pyclass=set_note_attachmentResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_note_attachment
+ def get_note_attachment(self, request):
+ if isinstance(request, get_note_attachmentRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_note_attachment", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_note_attachmentResponse.typecode.ofwhat, pyclass=get_note_attachmentResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: relate_note_to_module
+ def relate_note_to_module(self, request):
+ if isinstance(request, relate_note_to_moduleRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/relate_note_to_module", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=relate_note_to_moduleResponse.typecode.ofwhat, pyclass=relate_note_to_moduleResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_related_notes
+ def get_related_notes(self, request):
+ if isinstance(request, get_related_notesRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_related_notes", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_related_notesResponse.typecode.ofwhat, pyclass=get_related_notesResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: logout
+ def logout(self, request):
+ if isinstance(request, logoutRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/logout", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=logoutResponse.typecode.ofwhat, pyclass=logoutResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_module_fields
+ def get_module_fields(self, request):
+ if isinstance(request, get_module_fieldsRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_module_fields", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_module_fieldsResponse.typecode.ofwhat, pyclass=get_module_fieldsResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_available_modules
+ def get_available_modules(self, request):
+ if isinstance(request, get_available_modulesRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_available_modules", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_available_modulesResponse.typecode.ofwhat, pyclass=get_available_modulesResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: update_portal_user
+ def update_portal_user(self, request):
+ if isinstance(request, update_portal_userRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/update_portal_user", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=update_portal_userResponse.typecode.ofwhat, pyclass=update_portal_userResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: test
+ def test(self, request):
+ if isinstance(request, testRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/test", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=testResponse.typecode.ofwhat, pyclass=testResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_user_id
+ def get_user_id(self, request):
+ if isinstance(request, get_user_idRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_user_id", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_user_idResponse.typecode.ofwhat, pyclass=get_user_idResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_user_team_id
+ def get_user_team_id(self, request):
+ if isinstance(request, get_user_team_idRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_user_team_id", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_user_team_idResponse.typecode.ofwhat, pyclass=get_user_team_idResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_server_time
+ def get_server_time(self, request):
+ if isinstance(request, get_server_timeRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_server_time", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_server_timeResponse.typecode.ofwhat, pyclass=get_server_timeResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_gmt_time
+ def get_gmt_time(self, request):
+ if isinstance(request, get_gmt_timeRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_gmt_time", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_gmt_timeResponse.typecode.ofwhat, pyclass=get_gmt_timeResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_sugar_flavor
+ def get_sugar_flavor(self, request):
+ if isinstance(request, get_sugar_flavorRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_sugar_flavor", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_sugar_flavorResponse.typecode.ofwhat, pyclass=get_sugar_flavorResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_server_version
+ def get_server_version(self, request):
+ if isinstance(request, get_server_versionRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_server_version", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_server_versionResponse.typecode.ofwhat, pyclass=get_server_versionResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_relationships
+ def get_relationships(self, request):
+ if isinstance(request, get_relationshipsRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_relationships", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_relationshipsResponse.typecode.ofwhat, pyclass=get_relationshipsResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: set_relationship
+ def set_relationship(self, request):
+ if isinstance(request, set_relationshipRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/set_relationship", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=set_relationshipResponse.typecode.ofwhat, pyclass=set_relationshipResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: set_relationships
+ def set_relationships(self, request):
+ if isinstance(request, set_relationshipsRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/set_relationships", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=set_relationshipsResponse.typecode.ofwhat, pyclass=set_relationshipsResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: set_document_revision
+ def set_document_revision(self, request):
+ if isinstance(request, set_document_revisionRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/set_document_revision", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=set_document_revisionResponse.typecode.ofwhat, pyclass=set_document_revisionResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: search_by_module
+ def search_by_module(self, request):
+ if isinstance(request, search_by_moduleRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/search_by_module", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=search_by_moduleResponse.typecode.ofwhat, pyclass=search_by_moduleResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: sync_get_modified_relationships
+ def sync_get_modified_relationships(self, request):
+ if isinstance(request, sync_get_modified_relationshipsRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/sync_get_modified_relationships", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=sync_get_modified_relationshipsResponse.typecode.ofwhat, pyclass=sync_get_modified_relationshipsResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_modified_entries
+ def get_modified_entries(self, request):
+ if isinstance(request, get_modified_entriesRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_modified_entries", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_modified_entriesResponse.typecode.ofwhat, pyclass=get_modified_entriesResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+ # op: get_attendee_list
+ def get_attendee_list(self, request):
+ if isinstance(request, get_attendee_listRequest) is False:
+ raise TypeError, "%s incorrect request type" % (request.__class__)
+ kw = {}
+ # no input wsaction
+ self.binding.Send(None, None, request, soapaction=URL+"/get_attendee_list", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw)
+ # no output wsaction
+ typecode = Struct(pname=None, ofwhat=get_attendee_listResponse.typecode.ofwhat, pyclass=get_attendee_listResponse.typecode.pyclass)
+ response = self.binding.Receive(typecode)
+ return response
+
+_create_sessionRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_session"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_sessionRequest:
+ typecode = _create_sessionRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ return
+create_sessionRequest.typecode.pyclass = create_sessionRequest
+
+_create_sessionResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_sessionResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_sessionResponse:
+ typecode = _create_sessionResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+create_sessionResponse.typecode.pyclass = create_sessionResponse
+
+_end_sessionRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","end_session"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class end_sessionRequest:
+ typecode = _end_sessionRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ return
+end_sessionRequest.typecode.pyclass = end_sessionRequest
+
+_end_sessionResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","end_sessionResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class end_sessionResponse:
+ typecode = _end_sessionResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+end_sessionResponse.typecode.pyclass = end_sessionResponse
+
+_contact_by_emailRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","contact_by_email"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="email_address", aname="_email_address", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class contact_by_emailRequest:
+ typecode = _contact_by_emailRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._email_address = None
+ return
+contact_by_emailRequest.typecode.pyclass = contact_by_emailRequest
+
+_contact_by_emailResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","contact_by_emailResponse"), ofwhat=[ns0.contact_detail_array_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class contact_by_emailResponse:
+ typecode = _contact_by_emailResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+contact_by_emailResponse.typecode.pyclass = contact_by_emailResponse
+
+_user_listRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","user_list"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class user_listRequest:
+ typecode = _user_listRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ return
+user_listRequest.typecode.pyclass = user_listRequest
+
+_user_listResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","user_listResponse"), ofwhat=[ns0.user_detail_array_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class user_listResponse:
+ typecode = _user_listResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+user_listResponse.typecode.pyclass = user_listResponse
+
+_searchRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","search"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="name", aname="_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class searchRequest:
+ typecode = _searchRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._name = None
+ return
+searchRequest.typecode.pyclass = searchRequest
+
+_searchResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","searchResponse"), ofwhat=[ns0.contact_detail_array_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class searchResponse:
+ typecode = _searchResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+searchResponse.typecode.pyclass = searchResponse
+
+_track_emailRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","track_email"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="parent_id", aname="_parent_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="contact_ids", aname="_contact_ids", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCtimes.gDate(pname="date_sent", aname="_date_sent", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="email_subject", aname="_email_subject", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="email_body", aname="_email_body", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class track_emailRequest:
+ typecode = _track_emailRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._parent_id = None
+ self._contact_ids = None
+ self._date_sent = None
+ self._email_subject = None
+ self._email_body = None
+ return
+track_emailRequest.typecode.pyclass = track_emailRequest
+
+_track_emailResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","track_emailResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class track_emailResponse:
+ typecode = _track_emailResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+track_emailResponse.typecode.pyclass = track_emailResponse
+
+_create_contactRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_contact"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="first_name", aname="_first_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="last_name", aname="_last_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="email_address", aname="_email_address", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_contactRequest:
+ typecode = _create_contactRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._first_name = None
+ self._last_name = None
+ self._email_address = None
+ return
+create_contactRequest.typecode.pyclass = create_contactRequest
+
+_create_contactResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_contactResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_contactResponse:
+ typecode = _create_contactResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+create_contactResponse.typecode.pyclass = create_contactResponse
+
+_create_leadRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_lead"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="first_name", aname="_first_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="last_name", aname="_last_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="email_address", aname="_email_address", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_leadRequest:
+ typecode = _create_leadRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._first_name = None
+ self._last_name = None
+ self._email_address = None
+ return
+create_leadRequest.typecode.pyclass = create_leadRequest
+
+_create_leadResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_leadResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_leadResponse:
+ typecode = _create_leadResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+create_leadResponse.typecode.pyclass = create_leadResponse
+
+_create_accountRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_account"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="name", aname="_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="phone", aname="_phone", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="website", aname="_website", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_accountRequest:
+ typecode = _create_accountRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._name = None
+ self._phone = None
+ self._website = None
+ return
+create_accountRequest.typecode.pyclass = create_accountRequest
+
+_create_accountResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_accountResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_accountResponse:
+ typecode = _create_accountResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+create_accountResponse.typecode.pyclass = create_accountResponse
+
+_create_opportunityRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_opportunity"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="name", aname="_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="amount", aname="_amount", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_opportunityRequest:
+ typecode = _create_opportunityRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._name = None
+ self._amount = None
+ return
+create_opportunityRequest.typecode.pyclass = create_opportunityRequest
+
+_create_opportunityResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_opportunityResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_opportunityResponse:
+ typecode = _create_opportunityResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+create_opportunityResponse.typecode.pyclass = create_opportunityResponse
+
+_create_caseRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_case"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="name", aname="_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_caseRequest:
+ typecode = _create_caseRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._name = None
+ return
+create_caseRequest.typecode.pyclass = create_caseRequest
+
+_create_caseResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","create_caseResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class create_caseResponse:
+ typecode = _create_caseResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+create_caseResponse.typecode.pyclass = create_caseResponse
+
+_loginRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","login"), ofwhat=[ns0.user_auth_Def(pname="user_auth", aname="_user_auth", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="application_name", aname="_application_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class loginRequest:
+ typecode = _loginRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_auth = None
+ self._application_name = None
+ return
+loginRequest.typecode.pyclass = loginRequest
+
+_loginResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","loginResponse"), ofwhat=[ns0.set_entry_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class loginResponse:
+ typecode = _loginResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+loginResponse.typecode.pyclass = loginResponse
+
+_is_loopbackRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","is_loopback"), ofwhat=[], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class is_loopbackRequest:
+ typecode = _is_loopbackRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ return
+is_loopbackRequest.typecode.pyclass = is_loopbackRequest
+
+_is_loopbackResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","is_loopbackResponse"), ofwhat=[ZSI.TCnumbers.Iint(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class is_loopbackResponse:
+ typecode = _is_loopbackResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+is_loopbackResponse.typecode.pyclass = is_loopbackResponse
+
+_seamless_loginRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","seamless_login"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class seamless_loginRequest:
+ typecode = _seamless_loginRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ return
+seamless_loginRequest.typecode.pyclass = seamless_loginRequest
+
+_seamless_loginResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","seamless_loginResponse"), ofwhat=[ZSI.TCnumbers.Iint(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class seamless_loginResponse:
+ typecode = _seamless_loginResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+seamless_loginResponse.typecode.pyclass = seamless_loginResponse
+
+_get_entry_listRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_entry_list"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="query", aname="_query", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="order_by", aname="_order_by", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="offset", aname="_offset", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="select_fields", aname="_select_fields", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="max_results", aname="_max_results", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="deleted", aname="_deleted", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_entry_listRequest:
+ typecode = _get_entry_listRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._query = None
+ self._order_by = None
+ self._offset = None
+ self._select_fields = None
+ self._max_results = None
+ self._deleted = None
+ return
+get_entry_listRequest.typecode.pyclass = get_entry_listRequest
+
+_get_entry_listResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_entry_listResponse"), ofwhat=[ns0.get_entry_list_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_entry_listResponse:
+ typecode = _get_entry_listResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_entry_listResponse.typecode.pyclass = get_entry_listResponse
+
+_get_entryRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_entry"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="id", aname="_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="select_fields", aname="_select_fields", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_entryRequest:
+ typecode = _get_entryRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._id = None
+ self._select_fields = None
+ return
+get_entryRequest.typecode.pyclass = get_entryRequest
+
+_get_entryResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_entryResponse"), ofwhat=[ns0.get_entry_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_entryResponse:
+ typecode = _get_entryResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_entryResponse.typecode.pyclass = get_entryResponse
+
+_get_entriesRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_entries"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="ids", aname="_ids", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="select_fields", aname="_select_fields", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_entriesRequest:
+ typecode = _get_entriesRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._ids = None
+ self._select_fields = None
+ return
+get_entriesRequest.typecode.pyclass = get_entriesRequest
+
+_get_entriesResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_entriesResponse"), ofwhat=[ns0.get_entry_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_entriesResponse:
+ typecode = _get_entriesResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_entriesResponse.typecode.pyclass = get_entriesResponse
+
+_set_entryRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_entry"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.name_value_list_Def(pname="name_value_list", aname="_name_value_list", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+
+class get_document_revisionRequest:
+ def __init__(self):
+ self._session = None
+ self._i = None
+ return
+get_document_revisionRequest.typecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_document_revision"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="i", aname="_i", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=get_document_revisionRequest, encoded="http://www.sugarcrm.com/sugarcrm")
+
+class get_document_revisionResponse:
+ def __init__(self):
+ self._return = None
+ return
+get_document_revisionResponse.typecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_document_revisionResponse"), ofwhat=[ns0.return_document_revision_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=get_document_revisionResponse, encoded="http://www.sugarcrm.com/sugarcrm")
+
+
+
+class set_entryRequest:
+ typecode = _set_entryRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._name_value_list = None
+ return
+set_entryRequest.typecode.pyclass = set_entryRequest
+
+_set_entryResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_entryResponse"), ofwhat=[ns0.set_entry_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_entryResponse:
+ typecode = _set_entryResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+set_entryResponse.typecode.pyclass = set_entryResponse
+
+_set_entriesRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_entries"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.name_value_lists_Def(pname="name_value_lists", aname="_name_value_lists", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_entriesRequest:
+ typecode = _set_entriesRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._name_value_lists = None
+ return
+set_entriesRequest.typecode.pyclass = set_entriesRequest
+
+_set_entriesResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_entriesResponse"), ofwhat=[ns0.set_entries_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_entriesResponse:
+ typecode = _set_entriesResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+set_entriesResponse.typecode.pyclass = set_entriesResponse
+
+_set_note_attachmentRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_note_attachment"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.note_attachment_Def(pname="note", aname="_note", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_note_attachmentRequest:
+ typecode = _set_note_attachmentRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._note = None
+ return
+set_note_attachmentRequest.typecode.pyclass = set_note_attachmentRequest
+
+_set_note_attachmentResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_note_attachmentResponse"), ofwhat=[ns0.set_entry_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_note_attachmentResponse:
+ typecode = _set_note_attachmentResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+set_note_attachmentResponse.typecode.pyclass = set_note_attachmentResponse
+
+_get_note_attachmentRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_note_attachment"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="id", aname="_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_note_attachmentRequest:
+ typecode = _get_note_attachmentRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._id = None
+ return
+get_note_attachmentRequest.typecode.pyclass = get_note_attachmentRequest
+
+_get_note_attachmentResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_note_attachmentResponse"), ofwhat=[ns0.return_note_attachment_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_note_attachmentResponse:
+ typecode = _get_note_attachmentResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_note_attachmentResponse.typecode.pyclass = get_note_attachmentResponse
+
+_relate_note_to_moduleRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","relate_note_to_module"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="note_id", aname="_note_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_id", aname="_module_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class relate_note_to_moduleRequest:
+ typecode = _relate_note_to_moduleRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._note_id = None
+ self._module_name = None
+ self._module_id = None
+ return
+relate_note_to_moduleRequest.typecode.pyclass = relate_note_to_moduleRequest
+
+_relate_note_to_moduleResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","relate_note_to_moduleResponse"), ofwhat=[ns0.error_value_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class relate_note_to_moduleResponse:
+ typecode = _relate_note_to_moduleResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+relate_note_to_moduleResponse.typecode.pyclass = relate_note_to_moduleResponse
+
+_get_related_notesRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_related_notes"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_id", aname="_module_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="select_fields", aname="_select_fields", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_related_notesRequest:
+ typecode = _get_related_notesRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._module_id = None
+ self._select_fields = None
+ return
+get_related_notesRequest.typecode.pyclass = get_related_notesRequest
+
+_get_related_notesResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_related_notesResponse"), ofwhat=[ns0.get_entry_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_related_notesResponse:
+ typecode = _get_related_notesResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_related_notesResponse.typecode.pyclass = get_related_notesResponse
+
+_logoutRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","logout"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class logoutRequest:
+ typecode = _logoutRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ return
+logoutRequest.typecode.pyclass = logoutRequest
+
+_logoutResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","logoutResponse"), ofwhat=[ns0.error_value_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class logoutResponse:
+ typecode = _logoutResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+logoutResponse.typecode.pyclass = logoutResponse
+
+_get_module_fieldsRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_module_fields"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_module_fieldsRequest:
+ typecode = _get_module_fieldsRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ return
+get_module_fieldsRequest.typecode.pyclass = get_module_fieldsRequest
+
+_get_module_fieldsResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_module_fieldsResponse"), ofwhat=[ns0.module_fields_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_module_fieldsResponse:
+ typecode = _get_module_fieldsResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_module_fieldsResponse.typecode.pyclass = get_module_fieldsResponse
+
+_get_available_modulesRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_available_modules"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_available_modulesRequest:
+ typecode = _get_available_modulesRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ return
+get_available_modulesRequest.typecode.pyclass = get_available_modulesRequest
+
+_get_available_modulesResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_available_modulesResponse"), ofwhat=[ns0.module_list_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_available_modulesResponse:
+ typecode = _get_available_modulesResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_available_modulesResponse.typecode.pyclass = get_available_modulesResponse
+
+_update_portal_userRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","update_portal_user"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="portal_name", aname="_portal_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.name_value_list_Def(pname="name_value_list", aname="_name_value_list", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class update_portal_userRequest:
+ typecode = _update_portal_userRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._portal_name = None
+ self._name_value_list = None
+ return
+update_portal_userRequest.typecode.pyclass = update_portal_userRequest
+
+_update_portal_userResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","update_portal_userResponse"), ofwhat=[ns0.error_value_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class update_portal_userResponse:
+ typecode = _update_portal_userResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+update_portal_userResponse.typecode.pyclass = update_portal_userResponse
+
+_testRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","test"), ofwhat=[ZSI.TC.String(pname="string", aname="_string", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class testRequest:
+ typecode = _testRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._string = None
+ return
+testRequest.typecode.pyclass = testRequest
+
+_testResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","testResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class testResponse:
+ typecode = _testResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+testResponse.typecode.pyclass = testResponse
+
+_get_user_idRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_user_id"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_user_idRequest:
+ typecode = _get_user_idRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ return
+get_user_idRequest.typecode.pyclass = get_user_idRequest
+
+_get_user_idResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_user_idResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_user_idResponse:
+ typecode = _get_user_idResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_user_idResponse.typecode.pyclass = get_user_idResponse
+
+_get_user_team_idRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_user_team_id"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_user_team_idRequest:
+ typecode = _get_user_team_idRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ return
+get_user_team_idRequest.typecode.pyclass = get_user_team_idRequest
+
+_get_user_team_idResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_user_team_idResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_user_team_idResponse:
+ typecode = _get_user_team_idResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_user_team_idResponse.typecode.pyclass = get_user_team_idResponse
+
+_get_server_timeRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_server_time"), ofwhat=[], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_server_timeRequest:
+ typecode = _get_server_timeRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ return
+get_server_timeRequest.typecode.pyclass = get_server_timeRequest
+
+_get_server_timeResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_server_timeResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_server_timeResponse:
+ typecode = _get_server_timeResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_server_timeResponse.typecode.pyclass = get_server_timeResponse
+
+_get_gmt_timeRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_gmt_time"), ofwhat=[], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_gmt_timeRequest:
+ typecode = _get_gmt_timeRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ return
+get_gmt_timeRequest.typecode.pyclass = get_gmt_timeRequest
+
+_get_gmt_timeResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_gmt_timeResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_gmt_timeResponse:
+ typecode = _get_gmt_timeResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_gmt_timeResponse.typecode.pyclass = get_gmt_timeResponse
+
+_get_sugar_flavorRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_sugar_flavor"), ofwhat=[], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_sugar_flavorRequest:
+ typecode = _get_sugar_flavorRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ return
+get_sugar_flavorRequest.typecode.pyclass = get_sugar_flavorRequest
+
+_get_sugar_flavorResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_sugar_flavorResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_sugar_flavorResponse:
+ typecode = _get_sugar_flavorResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_sugar_flavorResponse.typecode.pyclass = get_sugar_flavorResponse
+
+_get_server_versionRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_server_version"), ofwhat=[], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_server_versionRequest:
+ typecode = _get_server_versionRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ return
+get_server_versionRequest.typecode.pyclass = get_server_versionRequest
+
+_get_server_versionResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_server_versionResponse"), ofwhat=[ZSI.TC.String(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_server_versionResponse:
+ typecode = _get_server_versionResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_server_versionResponse.typecode.pyclass = get_server_versionResponse
+
+_get_relationshipsRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_relationships"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_id", aname="_module_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="related_module", aname="_related_module", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="related_module_query", aname="_related_module_query", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="deleted", aname="_deleted", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_relationshipsRequest:
+ typecode = _get_relationshipsRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._module_id = None
+ self._related_module = None
+ self._related_module_query = None
+ self._deleted = None
+ return
+get_relationshipsRequest.typecode.pyclass = get_relationshipsRequest
+
+_get_relationshipsResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_relationshipsResponse"), ofwhat=[ns0.get_relationships_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_relationshipsResponse:
+ typecode = _get_relationshipsResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_relationshipsResponse.typecode.pyclass = get_relationshipsResponse
+
+_set_relationshipRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_relationship"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.set_relationship_value_Def(pname="set_relationship_value", aname="_set_relationship_value", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_relationshipRequest:
+ typecode = _set_relationshipRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._set_relationship_value = None
+ return
+set_relationshipRequest.typecode.pyclass = set_relationshipRequest
+
+_set_relationshipResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_relationshipResponse"), ofwhat=[ns0.error_value_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_relationshipResponse:
+ typecode = _set_relationshipResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+set_relationshipResponse.typecode.pyclass = set_relationshipResponse
+
+_set_relationshipsRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_relationships"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.set_relationship_list_Def(pname="set_relationship_list", aname="_set_relationship_list", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_relationshipsRequest:
+ typecode = _set_relationshipsRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._set_relationship_list = None
+ return
+set_relationshipsRequest.typecode.pyclass = set_relationshipsRequest
+
+_set_relationshipsResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_relationshipsResponse"), ofwhat=[ns0.set_relationship_list_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_relationshipsResponse:
+ typecode = _set_relationshipsResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+set_relationshipsResponse.typecode.pyclass = set_relationshipsResponse
+
+_set_document_revisionRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_document_revision"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.document_revision_Def(pname="note", aname="_note", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_document_revisionRequest:
+ typecode = _set_document_revisionRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._note = None
+ return
+set_document_revisionRequest.typecode.pyclass = set_document_revisionRequest
+
+_set_document_revisionResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","set_document_revisionResponse"), ofwhat=[ns0.set_entry_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class set_document_revisionResponse:
+ typecode = _set_document_revisionResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+set_document_revisionResponse.typecode.pyclass = set_document_revisionResponse
+
+_search_by_moduleRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","search_by_module"), ofwhat=[ZSI.TC.String(pname="user_name", aname="_user_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="password", aname="_password", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="search_string", aname="_search_string", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="modules", aname="_modules", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="offset", aname="_offset", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="max_results", aname="_max_results", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class search_by_moduleRequest:
+ typecode = _search_by_moduleRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._user_name = None
+ self._password = None
+ self._search_string = None
+ self._modules = None
+ self._offset = None
+ self._max_results = None
+ return
+search_by_moduleRequest.typecode.pyclass = search_by_moduleRequest
+
+_search_by_moduleResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","search_by_moduleResponse"), ofwhat=[ns0.get_entry_list_result_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class search_by_moduleResponse:
+ typecode = _search_by_moduleResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+search_by_moduleResponse.typecode.pyclass = search_by_moduleResponse
+
+_sync_get_modified_relationshipsRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","sync_get_modified_relationships"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="related_module", aname="_related_module", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="from_date", aname="_from_date", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="to_date", aname="_to_date", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="offset", aname="_offset", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="max_results", aname="_max_results", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="deleted", aname="_deleted", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_id", aname="_module_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="select_fields", aname="_select_fields", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="ids", aname="_ids", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="relationship_name", aname="_relationship_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="deletion_date", aname="_deletion_date", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="php_serialize", aname="_php_serialize", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class sync_get_modified_relationshipsRequest:
+ typecode = _sync_get_modified_relationshipsRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._related_module = None
+ self._from_date = None
+ self._to_date = None
+ self._offset = None
+ self._max_results = None
+ self._deleted = None
+ self._module_id = None
+ self._select_fields = None
+ self._ids = None
+ self._relationship_name = None
+ self._deletion_date = None
+ self._php_serialize = None
+ return
+sync_get_modified_relationshipsRequest.typecode.pyclass = sync_get_modified_relationshipsRequest
+
+_sync_get_modified_relationshipsResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","sync_get_modified_relationshipsResponse"), ofwhat=[ns0.get_entry_list_result_encoded_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class sync_get_modified_relationshipsResponse:
+ typecode = _sync_get_modified_relationshipsResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+sync_get_modified_relationshipsResponse.typecode.pyclass = sync_get_modified_relationshipsResponse
+
+_get_modified_entriesRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_modified_entries"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="ids", aname="_ids", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.select_fields_Def(pname="select_fields", aname="_select_fields", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_modified_entriesRequest:
+ typecode = _get_modified_entriesRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._ids = None
+ self._select_fields = None
+ return
+get_modified_entriesRequest.typecode.pyclass = get_modified_entriesRequest
+
+_get_modified_entriesResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_modified_entriesResponse"), ofwhat=[ns0.get_sync_result_encoded_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_modified_entriesResponse:
+ typecode = _get_modified_entriesResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_modified_entriesResponse.typecode.pyclass = get_modified_entriesResponse
+
+_get_attendee_listRequestTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_attendee_list"), ofwhat=[ZSI.TC.String(pname="session", aname="_session", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="module_name", aname="_module_name", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="id", aname="_id", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_attendee_listRequest:
+ typecode = _get_attendee_listRequestTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._session = None
+ self._module_name = None
+ self._id = None
+ return
+get_attendee_listRequest.typecode.pyclass = get_attendee_listRequest
+
+_get_attendee_listResponseTypecode = Struct(pname=("http://www.sugarcrm.com/sugarcrm","get_attendee_listResponse"), ofwhat=[ns0.get_sync_result_encoded_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://www.sugarcrm.com/sugarcrm")
+class get_attendee_listResponse:
+ typecode = _get_attendee_listResponseTypecode
+ __metaclass__ = pyclass_type
+ def __init__(self):
+ self._return = None
+ return
+get_attendee_listResponse.typecode.pyclass = get_attendee_listResponse
diff --git a/addons/import_sugarcrm/sugarsoap_services_types.py b/addons/import_sugarcrm/sugarsoap_services_types.py
new file mode 100644
index 00000000000..acd22bbb97f
--- /dev/null
+++ b/addons/import_sugarcrm/sugarsoap_services_types.py
@@ -0,0 +1,646 @@
+##################################################
+# sugarsoap_services_types.py
+# generated by ZSI.generate.wsdl2python
+##################################################
+from osv import osv
+from tools.translate import _
+try:
+ import ZSI
+ import ZSI.TCcompound
+ from ZSI.TC import TypeDefinition
+ from ZSI.TC import _get_type_definition as GTD
+ from ZSI.generate.pyclass import pyclass_type
+except ImportError:
+ raise osv.except_osv(_('ZSI Import Error!'), _('Please install SOAP for python - ZSI-2.0-rc3.tar.gz from http://pypi.python.org/pypi/ZSI/'))
+
+##############################
+# targetNamespace
+# http://www.sugarcrm.com/sugarcrm
+##############################
+
+class ns0:
+ targetNamespace = "http://www.sugarcrm.com/sugarcrm"
+
+ class contact_detail_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "contact_detail")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #Unused variable ns.
+ #ns = ns0.contact_detail_Def.schema
+ TClist = [ZSI.TC.String(pname="email_address", aname="_email_address", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="name1", aname="_name1", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="name2", aname="_name2", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="association", aname="_association", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="id", aname="_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="msi_id", aname="_msi_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="type", aname="_type", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._email_address = None
+ self._name1 = None
+ self._name2 = None
+ self._association = None
+ self._id = None
+ self._msi_id = None
+ self._type = None
+ return
+ Holder.__name__ = "contact_detail_Holder"
+ self.pyclass = Holder
+
+ class contact_detail_array_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "contact_detail_array")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.contact_detail_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'contact_detail[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class user_detail_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "user_detail")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.user_detail_Def.schema
+ TClist = [ZSI.TC.String(pname="email_address", aname="_email_address", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="user_name", aname="_user_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="first_name", aname="_first_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="last_name", aname="_last_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="department", aname="_department", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="id", aname="_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="title", aname="_title", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._email_address = None
+ self._user_name = None
+ self._first_name = None
+ self._last_name = None
+ self._department = None
+ self._id = None
+ self._title = None
+ return
+ Holder.__name__ = "user_detail_Holder"
+ self.pyclass = Holder
+
+ class user_detail_array_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "user_detail_array")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.user_detail_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'user_detail[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class note_attachment_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "note_attachment")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ # ns = ns0.note_attachment_Def.schema
+ TClist = [ZSI.TC.String(pname="id", aname="_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="filename", aname="_filename", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="file", aname="_file", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._id = None
+ self._filename = None
+ self._file = None
+ return
+ Holder.__name__ = "note_attachment_Holder"
+ self.pyclass = Holder
+
+ class return_note_attachment_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "return_note_attachment")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.return_note_attachment_Def.schema
+ TClist = [GTD("http://www.sugarcrm.com/sugarcrm","note_attachment",lazy=False)(pname="note_attachment", aname="_note_attachment", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._note_attachment = None
+ self._error = None
+ return
+ Holder.__name__ = "return_note_attachment_Holder"
+ self.pyclass = Holder
+
+ class user_auth_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "user_auth")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.user_auth_Def.schema
+ TClist = [ZSI.TC.String(pname="user_name", aname="_user_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="password", aname="_password", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="version", aname="_version", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._user_name = None
+ self._password = None
+ self._version = None
+ return
+ Holder.__name__ = "user_auth_Holder"
+ self.pyclass = Holder
+
+ class field_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "field")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.field_Def.schema
+ TClist = [ZSI.TC.String(pname="name", aname="_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="type", aname="_type", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="label", aname="_label", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="required", aname="_required", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","name_value_list",lazy=False)(pname="options", aname="_options", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._name = None
+ self._type = None
+ self._label = None
+ self._required = None
+ self._options = None
+ return
+ Holder.__name__ = "field_Holder"
+ self.pyclass = Holder
+
+ class field_list_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "field_list")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.field_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'field[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class name_value_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "name_value")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.name_value_Def.schema
+ TClist = [ZSI.TC.String(pname="name", aname="_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="value", aname="_value", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._name = None
+ self._value = None
+ return
+ Holder.__name__ = "name_value_Holder"
+ self.pyclass = Holder
+
+ class name_value_list_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "name_value_list")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.name_value_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'name_value[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class name_value_lists_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "name_value_lists")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.name_value_list_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'name_value_list[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class select_fields_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "select_fields")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ZSI.TC.String(None, typed=False)
+ atype = (u'http://www.w3.org/2001/XMLSchema', u'string[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class module_fields_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "module_fields")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ # ns = ns0.module_fields_Def.schema
+ TClist = [ZSI.TC.String(pname="module_name", aname="_module_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","field_list",lazy=False)(pname="module_fields", aname="_module_fields", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._module_name = None
+ self._module_fields = None
+ self._error = None
+ return
+ Holder.__name__ = "module_fields_Holder"
+ self.pyclass = Holder
+
+ class module_list_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "module_list")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.module_list_Def.schema
+ TClist = [GTD("http://www.sugarcrm.com/sugarcrm","select_fields",lazy=False)(pname="modules", aname="_modules", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._modules = None
+ self._error = None
+ return
+ Holder.__name__ = "module_list_Holder"
+ self.pyclass = Holder
+
+ class error_value_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "error_value")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.error_value_Def.schema
+ TClist = [ZSI.TC.String(pname="number", aname="_number", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="name", aname="_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="description", aname="_description", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._number = None
+ self._name = None
+ self._description = None
+ return
+ Holder.__name__ = "error_value_Holder"
+ self.pyclass = Holder
+
+ class entry_value_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "entry_value")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.entry_value_Def.schema
+ TClist = [ZSI.TC.String(pname="id", aname="_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="module_name", aname="_module_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","name_value_list",lazy=False)(pname="name_value_list", aname="_name_value_list", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._id = None
+ self._module_name = None
+ self._name_value_list = None
+ return
+ Holder.__name__ = "entry_value_Holder"
+ self.pyclass = Holder
+
+ class entry_list_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "entry_list")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.entry_value_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'entry_value[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class get_entry_list_result_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "get_entry_list_result")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.get_entry_list_result_Def.schema
+ TClist = [ZSI.TCnumbers.Iint(pname="result_count", aname="_result_count", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="next_offset", aname="_next_offset", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","field_list",lazy=False)(pname="field_list", aname="_field_list", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","entry_list",lazy=False)(pname="entry_list", aname="_entry_list", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._result_count = None
+ self._next_offset = None
+ self._field_list = None
+ self._entry_list = None
+ self._error = None
+ return
+ Holder.__name__ = "get_entry_list_result_Holder"
+ self.pyclass = Holder
+
+ class get_entry_result_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "get_entry_result")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.get_entry_result_Def.schema
+ TClist = [GTD("http://www.sugarcrm.com/sugarcrm","field_list",lazy=False)(pname="field_list", aname="_field_list", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","entry_list",lazy=False)(pname="entry_list", aname="_entry_list", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._field_list = None
+ self._entry_list = None
+ self._error = None
+ return
+ Holder.__name__ = "get_entry_result_Holder"
+ self.pyclass = Holder
+
+ class set_entry_result_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "set_entry_result")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.set_entry_result_Def.schema
+ TClist = [ZSI.TC.String(pname="id", aname="_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._id = None
+ self._error = None
+ return
+ Holder.__name__ = "set_entry_result_Holder"
+ self.pyclass = Holder
+
+ class set_entries_result_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "set_entries_result")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.set_entries_result_Def.schema
+ TClist = [GTD("http://www.sugarcrm.com/sugarcrm","select_fields",lazy=False)(pname="ids", aname="_ids", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._ids = None
+ self._error = None
+ return
+ Holder.__name__ = "set_entries_result_Holder"
+ self.pyclass = Holder
+
+ class id_mod_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "id_mod")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.id_mod_Def.schema
+ TClist = [ZSI.TC.String(pname="id", aname="_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="date_modified", aname="_date_modified", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="deleted", aname="_deleted", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._id = None
+ self._date_modified = None
+ self._deleted = None
+ return
+ Holder.__name__ = "id_mod_Holder"
+ self.pyclass = Holder
+
+ class ids_mods_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "ids_mods")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.id_mod_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'id_mod[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class get_relationships_result_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "get_relationships_result")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.get_relationships_result_Def.schema
+ TClist = [GTD("http://www.sugarcrm.com/sugarcrm","ids_mods",lazy=False)(pname="ids", aname="_ids", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._ids = None
+ self._error = None
+ return
+ Holder.__name__ = "get_relationships_result_Holder"
+ self.pyclass = Holder
+
+ class set_relationship_value_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "set_relationship_value")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.set_relationship_value_Def.schema
+ TClist = [ZSI.TC.String(pname="module1", aname="_module1", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="module1_id", aname="_module1_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="module2", aname="_module2", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="module2_id", aname="_module2_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._module1 = None
+ self._module1_id = None
+ self._module2 = None
+ self._module2_id = None
+ return
+ Holder.__name__ = "set_relationship_value_Holder"
+ self.pyclass = Holder
+
+ class set_relationship_list_Def(ZSI.TC.Array, TypeDefinition):
+ #complexType/complexContent base="SOAP-ENC:Array"
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "set_relationship_list")
+ def __init__(self, pname, ofwhat=(), extend=False, restrict=False, attributes=None, **kw):
+ ofwhat = ns0.set_relationship_value_Def(None, typed=False)
+ atype = (u'http://www.sugarcrm.com/sugarcrm', u'set_relationship_value[]')
+ ZSI.TCcompound.Array.__init__(self, atype, ofwhat, pname=pname, childnames='item', **kw)
+
+ class set_relationship_list_result_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "set_relationship_list_result")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.set_relationship_list_result_Def.schema
+ TClist = [ZSI.TCnumbers.Iint(pname="created", aname="_created", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="failed", aname="_failed", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._created = None
+ self._failed = None
+ self._error = None
+ return
+ Holder.__name__ = "set_relationship_list_result_Holder"
+ self.pyclass = Holder
+
+ class document_revision_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "document_revision")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.document_revision_Def.schema
+ TClist = [ZSI.TC.String(pname="id", aname="_id", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="document_name", aname="_document_name", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="revision", aname="_revision", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="filename", aname="_filename", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="file", aname="_file", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._id = None
+ self._document_name = None
+ self._revision = None
+ self._filename = None
+ self._file = None
+ return
+ Holder.__name__ = "document_revision_Holder"
+ self.pyclass = Holder
+
+ class get_entry_list_result_encoded_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "get_entry_list_result_encoded")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ # ns = ns0.get_entry_list_result_encoded_Def.schema
+ TClist = [ZSI.TCnumbers.Iint(pname="result_count", aname="_result_count", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="next_offset", aname="_next_offset", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="total_count", aname="_total_count", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","select_fields",lazy=False)(pname="field_list", aname="_field_list", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="entry_list", aname="_entry_list", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._result_count = None
+ self._next_offset = None
+ self._total_count = None
+ self._field_list = None
+ self._entry_list = None
+ self._error = None
+ return
+ Holder.__name__ = "get_entry_list_result_encoded_Holder"
+ self.pyclass = Holder
+
+ class get_sync_result_encoded_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "get_sync_result_encoded")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ # ns = ns0.get_sync_result_encoded_Def.schema
+ TClist = [ZSI.TC.String(pname="result", aname="_result", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._result = None
+ self._error = None
+ return
+ Holder.__name__ = "get_sync_result_encoded_Holder"
+ self.pyclass = Holder
+
+ class get_quick_sync_result_encoded_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "get_quick_sync_result_encoded")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.get_quick_sync_result_encoded_Def.schema
+ TClist = [ZSI.TC.String(pname="result", aname="_result", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="result_count", aname="_result_count", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="next_offset", aname="_next_offset", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TCnumbers.Iint(pname="total_count", aname="_total_count", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._result = None
+ self._result_count = None
+ self._next_offset = None
+ self._total_count = None
+ self._error = None
+ return
+ Holder.__name__ = "get_quick_sync_result_encoded_Holder"
+ self.pyclass = Holder
+
+ class return_document_revision_Def(ZSI.TCcompound.ComplexType, TypeDefinition):
+ schema = "http://www.sugarcrm.com/sugarcrm"
+ type = (schema, "return_document_revision")
+ def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw):
+ #ns = ns0.return_document_revision_Def.schema
+ TClist = [GTD("http://www.sugarcrm.com/sugarcrm","document_revision",lazy=False)(pname="document_revision", aname="_document_revision", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("http://www.sugarcrm.com/sugarcrm","error_value",lazy=False)(pname="error", aname="_error", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))]
+ self.attribute_typecode_dict = attributes or {}
+ if extend: TClist += ofwhat
+ if restrict: TClist = ofwhat
+ ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw)
+ class Holder:
+ __metaclass__ = pyclass_type
+ typecode = self
+ def __init__(self):
+ # pyclass
+ self._document_revision = None
+ self._error = None
+ return
+ Holder.__name__ = "return_document_revision_Holder"
+ self.pyclass = Holder
+
+# end class ns0 (tns: http://www.sugarcrm.com/sugarcrm)
diff --git a/addons/import_sugarcrm/wizard/__init__.py b/addons/import_sugarcrm/wizard/__init__.py
new file mode 100644
index 00000000000..6910c3981bd
--- /dev/null
+++ b/addons/import_sugarcrm/wizard/__init__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import import_message
diff --git a/addons/import_sugarcrm/wizard/import_message.py b/addons/import_sugarcrm/wizard/import_message.py
new file mode 100644
index 00000000000..7c9f1703282
--- /dev/null
+++ b/addons/import_sugarcrm/wizard/import_message.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from osv import fields, osv
+
+class import_message(osv.osv):
+ """Import Message"""
+
+ _name = "import.message"
+ _description = __doc__
+
+import_message()
diff --git a/addons/import_sugarcrm/wizard/import_message_view.xml b/addons/import_sugarcrm/wizard/import_message_view.xml
new file mode 100644
index 00000000000..581d862e408
--- /dev/null
+++ b/addons/import_sugarcrm/wizard/import_message_view.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ import.message.form
+ import.message
+ form
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/l10n_be/account_tax_template.xml b/addons/l10n_be/account_tax_template.xml
index a4d42779a97..d72b093b5f8 100644
--- a/addons/l10n_be/account_tax_template.xml
+++ b/addons/l10n_be/account_tax_template.xml
@@ -6,7 +6,7 @@
10
VAT-OUT-21-S
- VAT 21%
+ VAT 21% - Services
@@ -48,7 +48,7 @@
20
VAT-OUT-12-S
- VAT 12%
+ VAT 12% - Services
@@ -90,7 +90,7 @@
30
VAT-OUT-06-S
- VAT 6%
+ VAT 6% - Services
@@ -132,7 +132,7 @@
40
VAT-OUT-00-S
- VAT 0%
+ VAT 0% - Services
0
percent
@@ -2070,7 +2070,7 @@
722
VAT-IN-V82-CAR-EXC-C2
- Frais de voiture - VAT 50% Deductible
+ Frais de voiture - VAT 50% Deductible (Price Excl.)
@@ -2090,7 +2090,7 @@
723
VAT-IN-V82-CAR-EXC-C3
- Frais de voiture - Montant de la note de crédit
+ Frais de voiture - Montant de la note de crédit (Price Excl.)
0
diff --git a/addons/l10n_br/i18n/ar.po b/addons/l10n_br/i18n/ar.po
index 11efed7ca5f..7afeef593cc 100644
--- a/addons/l10n_br/i18n/ar.po
+++ b/addons/l10n_br/i18n/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-22 04:48+0000\n"
-"X-Generator: Launchpad (build 13996)\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:39+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
#. module: l10n_br
#: model:ir.actions.todo,note:l10n_br.config_call_account_template_brazilian_localization
diff --git a/addons/mrp/i18n/da.po b/addons/mrp/i18n/da.po
new file mode 100644
index 00000000000..b1858f9621c
--- /dev/null
+++ b/addons/mrp/i18n/da.po
@@ -0,0 +1,2394 @@
+# Danish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-09-22 19:10+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Danish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:38+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
+
+#. module: mrp
+#: field:mrp.production,move_created_ids:0
+#: field:mrp.production,move_created_ids2:0
+msgid "Moves Created"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_production_action
+msgid ""
+"Manufacturing Orders are usually proposed automatically by OpenERP based on "
+"the bill of materials and the procurement rules, but you can also create "
+"manufacturing orders manually. OpenERP will handle the consumption of the "
+"raw materials (stock decrease) and the production of the finished products "
+"(stock increase) when the order is processed."
+msgstr ""
+
+#. module: mrp
+#: help:mrp.production,location_src_id:0
+msgid "Location where the system will look for components."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,workcenter_lines:0
+msgid "Work Centers Utilisation"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.routing.workcenter:0
+msgid "Routing Work Centers"
+msgstr ""
+
+#. module: mrp
+#: model:ir.module.module,shortdesc:mrp.module_meta_information
+msgid "Manufacturing Resource Planning"
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "No. Of Cycles"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.routing.workcenter,cycle_nbr:0
+msgid "Number of Cycles"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_minimumstockprocure0
+msgid ""
+"The 'Minimum stock rule' allows the system to create procurement orders "
+"automatically as soon as the minimum stock is reached."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,picking_id:0
+#: field:mrp.production.order,picking_id:0
+msgid "Picking list"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:121
+#, python-format
+msgid "Hourly Cost"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:130
+#, python-format
+msgid "Cost Price per Uom"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Scrap Products"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+#: field:mrp.production.order,day:0
+msgid "Day"
+msgstr "Dag"
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_routing_action
+#: model:ir.ui.menu,name:mrp.menu_mrp_routing_action
+msgid "Routings"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter,product_id:0
+msgid "Work Center Product"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+msgid "Search Bill Of Material"
+msgstr "Søg stykliste"
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_stockproduct1
+msgid "For stockable products and consumables"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_stockproduction0
+msgid "To Produce"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.routing.workcenter,cycle_nbr:0
+msgid ""
+"Number of iterations this work center has to do in the specified operation "
+"of the routing."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+#: field:mrp.bom,code:0
+#: view:mrp.production:0
+#: field:mrp.production,name:0
+msgid "Reference"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Finished Products"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_servicerfq0
+#: model:process.transition,name:mrp.process_transition_stockrfq0
+msgid "To Buy"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+msgid "Raw Material Location"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.installer,mrp_operations:0
+msgid ""
+"Enhances production orders with readiness states as well as the start date "
+"and end date of execution of the order."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_purchaseprocure0
+msgid "The system launches automatically a RFQ to the preferred supplier."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Products to Finish"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.bom,method:0
+msgid "Set / Pack"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.installer,mrp_subproduct:0
+msgid "MRP Subproducts"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: field:mrp.production,state:0
+#: view:mrp.production.order:0
+#: field:mrp.production.order,state:0
+msgid "State"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter,costs_hour:0
+msgid "Cost per hour"
+msgstr "Kost pr. time"
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_stockproduction0
+msgid ""
+"In case the Supply method of the product is Produce, the system creates a "
+"production order."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "UOM"
+msgstr ""
+
+#. module: mrp
+#: field:change.production.qty,product_qty:0
+#: field:mrp.bom,product_qty:0
+#: field:mrp.production,product_qty:0
+#: view:mrp.production.order:0
+#: field:mrp.production.order,product_qty:0
+#: field:mrp.production.product.line,product_qty:0
+msgid "Product Qty"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,product_id:0
+msgid ""
+"Fill this product to track easily your production costs in the analytic "
+"accounting."
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_purchaseprocure0
+msgid "For purchased material"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom.revision,indice:0
+msgid "Revision"
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.next_id_77
+msgid "Reporting"
+msgstr "Rapportering"
+
+#. module: mrp
+#: field:mrp.workcenter,costs_cycle_account_id:0
+msgid "Cycle Account"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:121
+#, python-format
+msgid "Work Cost"
+msgstr ""
+
+#. module: mrp
+#: report:bom.structure:0
+msgid "["
+msgstr "["
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_procureserviceproduct0
+msgid "Procurement of services"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.workcenter:0
+msgid "Capacity Information"
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "Destination Location"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.installer:0
+msgid "title"
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_mrp_bom
+msgid "Master Data"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_stockmts0
+msgid ""
+"The system waits for the products to be available in the stock. These "
+"products are typically procured manually or through a minimum stock rule."
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "Partner Ref"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.workcenter.load,measure_unit:0
+msgid "Amount in hours"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,product_lines:0
+msgid "Scheduled goods"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.bom,type:0
+msgid "Sets / Phantom"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,position:0
+msgid "Reference to a position in an external plan."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "August"
+msgstr "August"
+
+#. module: mrp
+#: constraint:stock.move:0
+msgid "You try to assign a lot which is not from the same product"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_production_order
+msgid "Production Order Report"
+msgstr "Produktionsordre rapport"
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "June"
+msgstr "Juni"
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_product_produce
+msgid "Product Produce"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "October"
+msgstr "Oktober"
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:177
+#, python-format
+msgid "Components Cost of "
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_procurestockableproduct0
+msgid "Procurement of stockable Product"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+msgid "Default UOM"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:130
+#: report:bom.structure:0
+#: field:mrp.product_price,number:0
+#: report:mrp.production.order:0
+#, python-format
+msgid "Quantity"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production.workcenter.line,hour:0
+msgid "Nbr of hours"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Confirm Production"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_stockproduct0
+msgid ""
+"The system creates an order (production or purchased) depending on the sold "
+"quantity and the products parameters."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_servicemts0
+msgid ""
+"This is used in case of a service without any impact in the system, a "
+"training session for instance."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.installer,mrp_repair:0
+msgid "Repairs"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.installer,stock_location:0
+msgid "Advanced Routes"
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_view_resource_calendar_search_mrp
+msgid "Working Time"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action_report_in_out_picking_tree
+msgid "Weekly Stock Value Variation"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.installer,mrp_repair:0
+msgid ""
+"Enables warranty and repair management (and their impact on stocks and "
+"invoicing)."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,date_planned_date:0
+#: report:mrp.production.order:0
+#: field:mrp.production.order,date_planned:0
+msgid "Scheduled Date"
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "Bill Of Material"
+msgstr "Stykliste"
+
+#. module: mrp
+#: help:mrp.routing,location_id:0
+msgid ""
+"Keep empty if you produce at the location where the finished products are "
+"needed.Set a location if you produce at a fixed location. This can be a "
+"partner location if you subcontract the manufacturing operations."
+msgstr ""
+
+#. module: mrp
+#: view:board.board:0
+msgid "Stock Value Variation"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action2
+msgid "Bill of Materials Structure"
+msgstr "Stykliste struktur"
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_serviceproduct0
+msgid "Product type is service"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_property_group_action
+msgid ""
+"Define specific property groups that can be assigned to the properties of "
+"your bill of materials."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_bom0
+msgid "Manufacturing decomposition"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_serviceproduct1
+msgid "For Services."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom.revision,date:0
+msgid "Modification Date"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,costs_cycle_account_id:0
+#: help:mrp.workcenter,costs_hour_account_id:0
+msgid ""
+"Complete this only if you want automatic analytic accounting entries on "
+"production orders."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production.workcenter.line,cycle:0
+msgid "Nbr of cycles"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_orderrfq0
+#: model:process.node,note:mrp.process_node_rfq0
+msgid "Request for Quotation."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_billofmaterialrouting0
+msgid ""
+"The Bill of Material is linked to a routing, i.e. the succession of work "
+"centers."
+msgstr ""
+
+#. module: mrp
+#: constraint:product.product:0
+msgid "Error: Invalid ean code"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.routing:0
+#: field:mrp.routing,location_id:0
+msgid "Production Location"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Change Qty"
+msgstr "Ændre antal"
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Force Reservation"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom.revision,author_id:0
+msgid "Author"
+msgstr ""
+
+#. module: mrp
+#: field:report.mrp.inout,value:0
+msgid "Stock value"
+msgstr "Lager værdi"
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action_product_bom_structure
+msgid "Product BoM Structure"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Search Production"
+msgstr "Søg produktion"
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:130
+#, python-format
+msgid "Supplier Price per Uom"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "March"
+msgstr "Marts"
+
+#. module: mrp
+#: field:mrp.bom,child_complete_ids:0
+msgid "BoM Hierarchy"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.act_mrp_product_produce
+#: view:mrp.product.produce:0
+#: view:mrp.production:0
+msgid "Produce"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,costs_cycle:0
+msgid "Specify Cost of Work Center per cycle."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,state:0
+#: view:mrp.production.order:0
+#: selection:mrp.production.order,state:0
+msgid "Picking Exception"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,bom_lines:0
+msgid "BoM Lines"
+msgstr "Stykliste linier"
+
+#. module: mrp
+#: field:mrp.workcenter,time_start:0
+msgid "Time before prod."
+msgstr ""
+
+#. module: mrp
+#: help:mrp.routing,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the routing "
+"without removing it."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_billofmaterialrouting0
+msgid "Material Routing"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: field:mrp.production,move_lines2:0
+#: report:mrp.production.order:0
+#: field:mrp.production.order,consumed_products:0
+msgid "Consumed Products"
+msgstr ""
+
+#. module: mrp
+#: constraint:mrp.bom:0
+msgid "Error ! You can not create recursive BoM."
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action_mrp_workcenter_load_wizard
+#: model:ir.model,name:mrp.model_mrp_workcenter_load
+#: model:ir.model,name:mrp.model_report_workcenter_load
+msgid "Work Center Load"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/procurement.py:45
+#, python-format
+msgid "No BoM defined for this product !"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_bom_form_action2
+#: model:ir.ui.menu,name:mrp.menu_mrp_bom_form_action2
+msgid "Bill of Material Components"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production.order,nbr:0
+msgid "# of Lines"
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_mrp_planning
+msgid "Planning"
+msgstr "Planlægning"
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Ready"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.production,routing_id:0
+msgid ""
+"The list of operations (list of work centers) to produce the finished "
+"product. The routing is mainly used to compute work center costs during "
+"operations and to plan future loads on work centers based on production "
+"plannification."
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,time_cycle:0
+msgid "Time in hours for doing one cycle."
+msgstr ""
+
+#. module: mrp
+#: report:bom.structure:0
+msgid "BOM Ref"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: selection:mrp.production,state:0
+#: view:mrp.production.order:0
+#: selection:mrp.production.order,state:0
+msgid "In Production"
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_mrp_property
+msgid "Master Bill of Materials"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,product_uos:0
+msgid ""
+"Product UOS (Unit of Sale) is the unit of measurement for the invoicing and "
+"promotion of stock."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.product_price:0
+#: view:mrp.workcenter.load:0
+msgid "Print"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+#: view:mrp.workcenter:0
+msgid "Type"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:150
+#: code:addons/mrp/report/price.py:201
+#, python-format
+msgid "Total Cost of "
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_minimumstockrule0
+msgid "Linked to the 'Minimum stock rule' supplying method."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.workcenter.load,time_unit:0
+msgid "Per month"
+msgstr "Pr. måned"
+
+#. module: mrp
+#: code:addons/mrp/mrp.py:595
+#: code:addons/mrp/wizard/change_production_qty.py:77
+#: code:addons/mrp/wizard/change_production_qty.py:82
+#, python-format
+msgid "Couldn't find bill of material for product"
+msgstr ""
+
+#. module: mrp
+#: report:bom.structure:0
+msgid "Product Name"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/mrp.py:495
+#, python-format
+msgid "Invalid action !"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,product_efficiency:0
+msgid "A factor of 0.9 means a loss of 10% within the production process."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.installer:0
+msgid ""
+"Add more functionalities to the core Manufacturing Application with the "
+"following addons."
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "Printing date"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_orderrfq0
+#: model:process.node,name:mrp.process_node_rfq0
+msgid "RFQ"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_producttostockrules0
+msgid "Procurement rule"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,costs_hour:0
+msgid "Specify Cost of Work center per hour."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Partial"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "September"
+msgstr "September"
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "WorkCenter"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_procureserviceproduct0
+msgid ""
+"Depending on the chosen method to 'supply' the service, the procurement "
+"order creates a RFQ for a subcontracting purchase order or waits until the "
+"service is done (= the delivery of the products)."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,priority:0
+#: selection:mrp.production.order,priority:0
+msgid "Urgent"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_routing_workcenter
+msgid "Work Center Usage"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_production
+msgid "Manufacturing Order"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_productionprocureproducts0
+msgid "Procurement of raw material"
+msgstr "Indkøb af råmaterialer"
+
+#. module: mrp
+#: help:mrp.routing.workcenter,hour_nbr:0
+msgid ""
+"Time in hours for this work center to achieve the operation of the specified "
+"routing."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: field:mrp.production,cycle_total:0
+msgid "Total Cycles"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,state:0
+#: view:mrp.production.order:0
+#: selection:mrp.production.order,state:0
+msgid "Ready to Produce"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom.revision,name:0
+msgid "Modification name"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+#: view:mrp.production:0
+#: field:mrp.production.order,date:0
+msgid "Date"
+msgstr "Dato"
+
+#. module: mrp
+#: field:mrp.bom,type:0
+msgid "BoM Type"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/procurement.py:47
+#, python-format
+msgid ""
+"Procurement '%s' has an exception: 'No BoM defined for this product !'"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+#: view:mrp.property:0
+msgid "Search"
+msgstr "Søg"
+
+#. module: mrp
+#: field:report.workcenter.load,cycle:0
+msgid "Nbr of cycle"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_res_company
+msgid "Companies"
+msgstr "Virksomheder"
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_minimumstockrule0
+#: model:process.node,name:mrp.process_node_productminimumstockrule0
+msgid "Minimum Stock"
+msgstr "Minimum lager"
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menus_dash_mrp
+msgid "Dashboard"
+msgstr "Oversigt"
+
+#. module: mrp
+#: view:board.board:0
+msgid "Work Center Future Load"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_stockproduct0
+#: model:process.node,name:mrp.process_node_stockproduct1
+#: model:process.process,name:mrp.process_process_stockableproductprocess0
+msgid "Stockable Product"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:121
+#, python-format
+msgid "Work Center name"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.routing,code:0
+msgid "Code"
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "No. Of Hours"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.installer,mrp_jit:0
+msgid "Just In Time Scheduling"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.property:0
+#: view:mrp.property.group:0
+msgid "Property Group"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Qty"
+msgstr "Antal"
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_production0
+msgid "Manufacturing Plan."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.routing:0
+#: view:mrp.workcenter:0
+msgid "Inactive"
+msgstr "Inaktiv"
+
+#. module: mrp
+#: help:mrp.installer,mrp_subproduct:0
+msgid ""
+"Enables multiple product output from a single production order: without "
+"this, a production order can have only one output product."
+msgstr ""
+
+#. module: mrp
+#: view:change.production.qty:0
+#: view:mrp.product.produce:0
+#: view:mrp.product_price:0
+#: view:mrp.production:0
+#: view:mrp.workcenter.load:0
+msgid "Cancel"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Split in production lots"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,capacity_per_cycle:0
+msgid ""
+"Number of operations this Work Center can do in parallel. If this Work "
+"Center represents a team of 5 workers, the capacity per cycle is 5."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_servicerfq0
+msgid ""
+"If the service has a 'Buy' supply method, this creates a RFQ, a "
+"subcontracting demand for instance."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,move_prod_id:0
+msgid "Move product"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Late"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_servicemts0
+msgid "Make to stock"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.routing.workcenter,sequence:0
+msgid ""
+"Gives the sequence order when displaying a list of routing work centers."
+msgstr ""
+
+#. module: mrp
+#: report:bom.structure:0
+msgid "BOM Name"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Start Production"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.open_board_manufacturing
+#: model:ir.ui.menu,name:mrp.menu_board_manufacturing
+msgid "Production Dashboard"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Source Loc."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,position:0
+msgid "Internal Reference"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.installer,stock_location:0
+msgid ""
+"Manages product routes and paths within and between locations (e.g. "
+"warehouses)."
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_billofmaterial0
+msgid "Product's structure"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,name:0
+#: report:mrp.production.order:0
+#: field:mrp.production.product.line,name:0
+#: field:mrp.routing,name:0
+#: field:mrp.routing.workcenter,name:0
+msgid "Name"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.installer:0
+msgid "MRP Application Configuration"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.installer,mrp_jit:0
+msgid ""
+"Enables Just In Time computation of procurement orders.\n"
+"\n"
+"While it's more resource intensive than the default setup, the JIT computer "
+"avoids having to wait for the procurement scheduler to run or having to run "
+"the procurement scheduler manually."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.product.produce,mode:0
+msgid "Mode"
+msgstr ""
+
+#. module: mrp
+#: report:bom.structure:0
+msgid "]"
+msgstr "]"
+
+#. module: mrp
+#: field:mrp.workcenter.load,measure_unit:0
+msgid "Amount measuring unit"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_production_action_planning
+msgid ""
+"Manufacturing Orders describe the operations that need to be carried out and "
+"the raw materials usage for each production stage. You use specifications "
+"(bills of materials or BoM) to work out the raw material requirements and "
+"the manufacturing orders needed for the finished products. Once the bills of "
+"materials have been defined, OpenERP is capable of automatically deciding on "
+"the manufacturing route depending on the needs of the company."
+msgstr ""
+
+#. module: mrp
+#: constraint:mrp.production:0
+msgid "Order quantity cannot be negative or zero !"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_production_action3
+msgid "Manufacturing Orders in Progress"
+msgstr "Igangværende produktionsordre"
+
+#. module: mrp
+#: model:ir.module.module,description:mrp.module_meta_information
+msgid ""
+"\n"
+" This is the base module to manage the manufacturing process in OpenERP.\n"
+"\n"
+" Features:\n"
+" * Make to Stock / Make to Order (by line)\n"
+" * Multi-level BoMs, no limit\n"
+" * Multi-level routing, no limit\n"
+" * Routing and work center integrated with analytic accounting\n"
+" * Scheduler computation periodically / Just In Time module\n"
+" * Multi-pos, multi-warehouse\n"
+" * Different reordering policies\n"
+" * Cost method by product: standard price, average price\n"
+" * Easy analysis of troubles or needs\n"
+" * Very flexible\n"
+" * Allows to browse Bill of Materials in complete structure\n"
+" that include child and phantom BoMs\n"
+" It supports complete integration and planification of stockable goods,\n"
+" consumable of services. Services are completely integrated with the "
+"rest\n"
+" of the software. For instance, you can set up a sub-contracting service\n"
+" in a BoM to automatically purchase on order the assembly of your "
+"production.\n"
+"\n"
+" Reports provided by this module:\n"
+" * Bill of Material structure and components\n"
+" * Load forecast on Work Centers\n"
+" * Print a production order\n"
+" * Stock forecasts\n"
+" Dashboard provided by this module::\n"
+" * List of next production orders\n"
+" * List of deliveries (out picking)\n"
+" * Graph of work center load\n"
+" * List of procurement in exception\n"
+" "
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_production_action4
+msgid "Manufacturing Orders Waiting Products"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+#: view:mrp.production:0
+#: view:mrp.production.order:0
+#: view:mrp.property:0
+#: view:mrp.routing:0
+#: view:mrp.workcenter:0
+msgid "Group By..."
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:121
+#, python-format
+msgid "Cycles Cost"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.workcenter.load,measure_unit:0
+msgid "Amount in cycles"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,location_dest_id:0
+#: view:mrp.production.order:0
+#: field:mrp.production.order,location_dest_id:0
+msgid "Finished Products Location"
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_pm_resources_config
+msgid "Resources"
+msgstr "Ressourcer"
+
+#. module: mrp
+#: field:mrp.workcenter,costs_journal_id:0
+msgid "Analytic Journal"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_workcenter_action
+#: model:ir.ui.menu,name:mrp.menu_view_resource_search_mrp
+#: field:mrp.routing,workcenter_lines:0
+msgid "Work Centers"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.workcenter.load,time_unit:0
+msgid "Per week"
+msgstr "Pr. uge"
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_routing_action
+msgid ""
+"Routings allow you to create and manage the manufacturing operations that "
+"should be followed within your work centers in order to produce a product. "
+"They are attached to bills of materials that will define the required raw "
+"materials."
+msgstr ""
+
+#. module: mrp
+#: field:report.workcenter.load,hour:0
+msgid "Nbr of hour"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.routing:0
+msgid "Work Center Operations"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.routing:0
+msgid "Notes"
+msgstr "Noter"
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_bom
+#: view:mrp.bom:0
+#: field:mrp.production,bom_id:0
+#: field:mrp.production.order,bom_id:0
+#: model:process.node,name:mrp.process_node_billofmaterial0
+msgid "Bill of Material"
+msgstr "Stykliste"
+
+#. module: mrp
+#: view:mrp.workcenter.load:0
+msgid "Select time unit"
+msgstr ""
+
+#. module: mrp
+#: view:report.workcenter.load:0
+msgid "Work Center load"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.production,location_dest_id:0
+msgid "Location where the system will stock the finished products."
+msgstr ""
+
+#. module: mrp
+#: help:mrp.production,picking_id:0
+msgid ""
+"This is the internal picking list that brings the finished product to the "
+"production plan"
+msgstr ""
+
+#. module: mrp
+#: field:stock.change.standard.price,change_parent_price:0
+msgid "Change Parent Price"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_producttostockrules0
+msgid ""
+"The Minimum Stock Rule is an automatic procurement rule based on a mini and "
+"maxi quantity. It's available in the Inventory management menu and "
+"configured by product."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.workcenter.load,time_unit:0
+msgid "Day by day"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+msgid "Revisions"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.installer:0
+msgid "Configure Your Manufacturing Resource Planning Application"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,priority:0
+#: field:mrp.production.order,priority:0
+msgid "Priority"
+msgstr "Prioritet"
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_stock_picking
+msgid "Picking List"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+msgid "Month -1"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/mrp.py:924
+#, python-format
+msgid "Manufacturing order '%s' is scheduled for the %s."
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "Production Order N° :"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/mrp.py:640
+#, python-format
+msgid "Manufacturing order '%s' is ready to produce."
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_production_product_line
+msgid "Production Scheduled Product"
+msgstr ""
+
+#. module: mrp
+#: help:res.company,manufacturing_lead:0
+msgid "Security days for each manufacturing operation."
+msgstr ""
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_mts0
+#: model:process.transition,name:mrp.process_transition_servicemts0
+#: model:process.transition,name:mrp.process_transition_stockmts0
+msgid "Make to Stock"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "July"
+msgstr "Juli"
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_bom_form_action
+msgid ""
+"Master Bills of Materials allow you to create and manage the list of "
+"necessary raw materials used to make a finished product. OpenERP will use "
+"these BoMs to automatically propose manufacturing orders according to "
+"product needs. You can either create a bill of materials to define specific "
+"production steps or define a single multi-level bill of materials."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_stockrfq0
+msgid ""
+"In case the Supply method of the product is Buy, the system creates a "
+"purchase order."
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_procurement_order
+msgid "Procurement"
+msgstr "Indkøb"
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action_view_mrp_product_price_wizard
+#: view:mrp.product_price:0
+msgid "Product Cost Structure"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:130
+#, python-format
+msgid "Components suppliers"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_installer
+msgid "mrp.installer"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Production Work Centers"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+#: field:mrp.production.order,month:0
+msgid "Month"
+msgstr "Måned"
+
+#. module: mrp
+#: code:addons/mrp/wizard/change_production_qty.py:62
+#, python-format
+msgid "Active Id is not found"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.workcenter:0
+msgid "Search for mrp workcenter"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom:0
+msgid "BoM Structure"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,date_start:0
+#: field:mrp.production.order,date_start:0
+msgid "Start Date"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter,costs_hour_account_id:0
+msgid "Hour Account"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Destination Loc."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production.order,product_id2:0
+msgid "Product Consumed"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Pending"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,active:0
+#: field:mrp.routing,active:0
+msgid "Active"
+msgstr "Aktiv"
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_procureproducts0
+msgid "Procure Products"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action_report_workcenter_load_tree
+#: view:report.workcenter.load:0
+msgid "Work Center Loads"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_property_action
+#: model:ir.ui.menu,name:mrp.menu_mrp_property_action
+#: view:mrp.bom:0
+#: field:mrp.bom,property_ids:0
+#: view:mrp.property:0
+#: view:procurement.order:0
+#: field:procurement.order,property_ids:0
+msgid "Properties"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.production,origin:0
+msgid ""
+"Reference of the document that generated this production order request."
+msgstr ""
+
+#. module: mrp
+#: sql_constraint:mrp.bom:0
+msgid ""
+"All product quantities must be greater than 0.\n"
+"You should install the mrp_subproduct module if you want to manage extra "
+"products on BoMs !"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Extra Information"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_change_production_qty
+msgid "Change Quantity of Products"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_productionorder0
+msgid "Drives the procurement orders for raw material."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+msgid "Current"
+msgstr "Nuværende"
+
+#. module: mrp
+#: field:mrp.workcenter,costs_general_account_id:0
+msgid "General Account"
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "SO Number"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,state:0
+#: view:mrp.production.order:0
+#: selection:mrp.production.order,state:0
+msgid "Done"
+msgstr "Udført!"
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_stock_change_standard_price
+msgid "Change Standard Price"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,origin:0
+#: report:mrp.production.order:0
+#: field:mrp.production.order,origin:0
+msgid "Source Document"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,priority:0
+#: selection:mrp.production.order,priority:0
+msgid "Not urgent"
+msgstr ""
+
+#. module: mrp
+#: help:stock.change.standard.price,change_parent_price:0
+msgid ""
+"This will change the price of parent products also according to the BoM "
+"structure specified for the product."
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_production_action2
+msgid "Manufacturing Orders To Start"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/mrp.py:495
+#, python-format
+msgid "Cannot delete Production Order(s) which are in %s State!"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_workcenter
+#: field:mrp.production.workcenter.line,workcenter_id:0
+#: field:mrp.routing.workcenter,workcenter_id:0
+#: view:mrp.workcenter:0
+#: field:report.workcenter.load,workcenter_id:0
+msgid "Work Center"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter,capacity_per_cycle:0
+msgid "Capacity per Cycle"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_product_product
+#: view:mrp.bom:0
+#: field:mrp.bom,product_id:0
+#: view:mrp.production:0
+#: field:mrp.production,product_id:0
+#: report:mrp.production.order:0
+#: view:mrp.production.order:0
+#: field:mrp.production.order,product_id:0
+#: field:mrp.production.product.line,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: field:mrp.production,hour_total:0
+msgid "Total Hours"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,location_src_id:0
+#: field:mrp.production.order,location_src_id:0
+msgid "Raw Materials Location"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.product_price:0
+msgid "Print Cost Structure of Product."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,product_uos:0
+#: field:mrp.production.product.line,product_uos:0
+msgid "Product UOS"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_workcenter_action
+msgid ""
+"Work Centers allow you to create and manage manufacturing units consisting "
+"of one or more persons and/or machines that can be considered as a unit for "
+"capacity and planning forecasting."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Consume Products"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,product_uom:0
+#: field:mrp.production,product_uom:0
+#: field:mrp.production.order,product_uom:0
+#: field:mrp.production.product.line,product_uom:0
+msgid "Product UOM"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_stock0
+#: model:process.transition,name:mrp.process_transition_servicemto0
+#: model:process.transition,name:mrp.process_transition_stockproduct0
+msgid "Make to Order"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action_report_mrp_production_order
+#: model:ir.ui.menu,name:mrp.menu_report_mrp_production_orders_tree
+msgid "Production Analysis"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/mrp.py:349
+#, python-format
+msgid "Copy"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.lot.line:0
+msgid "Production Products"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,date_finished:0
+#: field:mrp.production.order,date_finished:0
+msgid "End Date"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter,resource_id:0
+msgid "Resource"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,date_start:0
+#: help:mrp.bom,date_stop:0
+msgid "Validity of this BoM or component. Keep empty if it's always valid."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,product_uos:0
+msgid "Product UoS"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+msgid "#Line Orders"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,priority:0
+#: selection:mrp.production.order,priority:0
+msgid "Very Urgent"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,routing_id:0
+msgid ""
+"The list of operations (list of work centers) to produce the finished "
+"product. The routing is mainly used to compute work center costs during "
+"operations and to plan future loads on work centers based on production "
+"planning."
+msgstr ""
+
+#. module: mrp
+#: view:change.production.qty:0
+msgid "Approve"
+msgstr "Godkend"
+
+#. module: mrp
+#: view:mrp.property.group:0
+msgid "Properties categories"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.production.workcenter.line,sequence:0
+msgid "Gives the sequence order when displaying a list of work orders."
+msgstr ""
+
+#. module: mrp
+#: report:mrp.production.order:0
+msgid "Source Location"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: view:mrp.production.product.line:0
+msgid "Scheduled Products"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.lot.line:0
+msgid "Production Products Consommation"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_production_action
+#: model:ir.actions.act_window,name:mrp.mrp_production_action_planning
+#: model:ir.ui.menu,name:mrp.menu_mrp_production_action
+#: model:ir.ui.menu,name:mrp.menu_mrp_production_order_action
+#: view:mrp.production:0
+msgid "Manufacturing Orders"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.product.produce,mode:0
+msgid ""
+"'Consume only' mode will only consume the products with the quantity "
+"selected.\n"
+"'Consume & Produce' mode will consume as well as produce the products with "
+"the quantity selected and it will finish the production order when total "
+"ordered quantities are produced."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: report:mrp.production.order:0
+msgid "Work Orders"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter,costs_cycle:0
+msgid "Cost per cycle"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_serviceproduct0
+#: model:process.node,name:mrp.process_node_serviceproduct1
+msgid "Service"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,state:0
+#: selection:mrp.production.order,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+msgid "BOM"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,product_uom:0
+msgid ""
+"UoM (Unit of Measure) is the unit of measurement for the inventory control"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_bom0
+msgid ""
+"The Bill of Material is the product's decomposition. The components (that "
+"are products themselves) can also have their own Bill of Material (multi-"
+"level)."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,company_id:0
+#: field:mrp.production,company_id:0
+#: view:mrp.production.order:0
+#: field:mrp.production.order,company_id:0
+#: field:mrp.routing,company_id:0
+#: field:mrp.routing.workcenter,company_id:0
+#: view:mrp.workcenter:0
+msgid "Company"
+msgstr "Virksomhed"
+
+#. module: mrp
+#: field:mrp.workcenter,time_cycle:0
+msgid "Time for 1 cycle (hour)"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.report.xml,name:mrp.report_mrp_production_report
+#: field:mrp.production.product.line,production_id:0
+#: field:mrp.production.workcenter.line,production_id:0
+#: model:process.node,name:mrp.process_node_production0
+#: model:process.node,name:mrp.process_node_productionorder0
+msgid "Production Order"
+msgstr "Produktionsordre"
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_productminimumstockrule0
+msgid "Automatic procurement rule"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Compute Data"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,product_uos_qty:0
+msgid "Product UoS Qty"
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:130
+#: view:mrp.bom:0
+#, python-format
+msgid "Components"
+msgstr ""
+
+#. module: mrp
+#: report:bom.structure:0
+#: model:ir.actions.report.xml,name:mrp.report_bom_structure
+msgid "BOM Structure"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,date_stop:0
+msgid "Valid Until"
+msgstr "Gyldig indtil"
+
+#. module: mrp
+#: field:mrp.bom,date_start:0
+msgid "Valid From"
+msgstr "Gyldig fra"
+
+#. module: mrp
+#: selection:mrp.bom,type:0
+msgid "Normal BoM"
+msgstr ""
+
+#. module: mrp
+#: field:res.company,manufacturing_lead:0
+msgid "Manufacturing Lead Time"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,product_uos_qty:0
+#: field:mrp.production.product.line,product_uos_qty:0
+msgid "Product UOS Qty"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.action_report_in_out_picking_tree
+msgid ""
+"Weekly Stock Value Variation enables you to track the stock value evolution "
+"linked to manufacturing activities, receptions of products and delivery "
+"orders."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.product.produce:0
+msgid "Confirm"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,product_efficiency:0
+msgid "Manufacturing Efficiency"
+msgstr ""
+
+#. module: mrp
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the bills of "
+"material without removing it."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,product_rounding:0
+msgid "Product Rounding"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_production_workcenter_line
+#: field:mrp.production.workcenter.line,name:0
+msgid "Work Order"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.action_report_mrp_production_order
+msgid ""
+"This reporting allows you to analyse your manufacturing activities and "
+"performance."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.product.produce,mode:0
+msgid "Consume Only"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Recreate Picking"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,type:0
+msgid ""
+"If a sub-product is used in several products, it can be useful to create its "
+"own BoM. Though if you don't want separated production orders for this sub-"
+"product, select Set/Phantom as BoM type. If a Phantom BoM is used for a root "
+"product, it will be sold and shipped as a set of components, instead of "
+"being produced."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,method:0
+msgid "Method"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.production,state:0
+msgid ""
+"When the production order is created the state is set to 'Draft'.\n"
+" If the order is confirmed the state is set to 'Waiting Goods'.\n"
+" If any exceptions are there, the state is set to 'Picking Exception'. "
+" \n"
+"If the stock is available then the state is set to 'Ready to Produce'.\n"
+" When the production gets started then the state is set to 'In Production'.\n"
+" When the production is over, the state is set to 'Done'."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.bom,method:0
+msgid "On Order"
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_mrp_configuration
+#: view:res.company:0
+msgid "Configuration"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter,time_stop:0
+msgid "Time after prod."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.workcenter.load,time_unit:0
+msgid "Type of period"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Total Qty"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.routing.workcenter,hour_nbr:0
+msgid "Number of Hours"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.workcenter:0
+msgid "Costing Information"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,name:mrp.process_node_purchaseprocure0
+msgid "Procurement Orders"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,product_rounding:0
+msgid "Rounding applied on the product quantity."
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_stock0
+msgid "Assignment from Production or Purchase Order."
+msgstr ""
+
+#. module: mrp
+#: field:mrp.routing.workcenter,routing_id:0
+msgid "Parent Routing"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.installer:0
+msgid "Configure"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,time_start:0
+msgid "Time in hours for the setup."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "December"
+msgstr "December"
+
+#. module: mrp
+#: field:mrp.installer,config_logo:0
+msgid "Image"
+msgstr "Billede"
+
+#. module: mrp
+#: field:mrp.bom.revision,bom_id:0
+#: field:procurement.order,bom_id:0
+msgid "BoM"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_report_mrp_inout
+#: view:report.mrp.inout:0
+msgid "Stock value variation"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_mts0
+#: model:process.node,note:mrp.process_node_servicemts0
+msgid "Assignment from stock."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,state:0
+#: view:mrp.production.order:0
+#: selection:mrp.production.order,state:0
+msgid "Waiting Goods"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom.revision,last_indice:0
+msgid "last indice"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.bom,revision_ids:0
+#: view:mrp.bom.revision:0
+msgid "BoM Revisions"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,state:0
+#: selection:mrp.production.order,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: mrp
+#: field:report.mrp.inout,date:0
+#: field:report.workcenter.load,name:0
+msgid "Week"
+msgstr "Uge"
+
+#. module: mrp
+#: field:mrp.installer,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production,priority:0
+#: selection:mrp.production.order,priority:0
+msgid "Normal"
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_routing0
+msgid "Manufacturing Steps."
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:136
+#: model:ir.actions.report.xml,name:mrp.report_cost_structure
+#, python-format
+msgid "Cost Structure"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.product.produce,mode:0
+msgid "Consume & Produce"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "November"
+msgstr "November"
+
+#. module: mrp
+#: field:mrp.bom,bom_id:0
+msgid "Parent BoM"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_bom_form_action2
+msgid ""
+"Bills of materials components are components and sub-products used to create "
+"master bills of materials. Use this menu to search in which BoM a specific "
+"component is used."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "January"
+msgstr "Januar"
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_stockproduct0
+msgid "Product type is Stockable or Consumable."
+msgstr ""
+
+#. module: mrp
+#: code:addons/mrp/mrp.py:595
+#: code:addons/mrp/wizard/change_production_qty.py:77
+#: code:addons/mrp/wizard/change_production_qty.py:82
+#, python-format
+msgid "Error"
+msgstr "Fejl"
+
+#. module: mrp
+#: field:mrp.product.produce,product_qty:0
+msgid "Select Quantity"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.act_product_product_2_mrp_bom
+#: model:ir.actions.act_window,name:mrp.mrp_bom_form_action
+#: model:ir.ui.menu,name:mrp.menu_mrp_bom_form_action
+#: field:product.product,bom_ids:0
+msgid "Bill of Materials"
+msgstr "Stykliste"
+
+#. module: mrp
+#: help:mrp.routing.workcenter,routing_id:0
+msgid ""
+"Routing indicates all the Work Centers used, for how long and/or cycles.If "
+"Routing is indicated then,the third tab of a production order (Work Centers) "
+"will be automatically pre-completed."
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_bom_revision
+msgid "Bill of Material Revision"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.routing.workcenter:0
+#: view:mrp.workcenter:0
+msgid "General Information"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+msgid "Productions"
+msgstr "Produktioner"
+
+#. module: mrp
+#: code:addons/mrp/report/price.py:194
+#, python-format
+msgid "Work Cost of "
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,note:0
+msgid ""
+"Description of the Work Center. Explain here what's a cycle according to "
+"this Work Center."
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_routing
+#: view:mrp.bom:0
+#: field:mrp.bom,routing_id:0
+#: view:mrp.production:0
+#: field:mrp.production,routing_id:0
+#: field:mrp.production.order,routing_id:0
+#: view:mrp.routing:0
+#: model:process.node,name:mrp.process_node_routing0
+msgid "Routing"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.installer,mrp_operations:0
+msgid "Manufacturing Operations"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,date_planned:0
+msgid "Scheduled date"
+msgstr ""
+
+#. module: mrp
+#: constraint:stock.move:0
+msgid "You must assign a production lot for this product"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.mrp_property_action
+msgid ""
+"The Properties in OpenERP are used to select the right bill of materials for "
+"manufacturing a product when you have different ways of building the same "
+"product. You can assign several properties to each Bill of Materials. When a "
+"sales person creates a sales order, he can relate it to several properties "
+"and OpenERP will automatically select the BoM to use according the the needs."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+#: field:stock.move,production_id:0
+msgid "Production"
+msgstr "Produktion"
+
+#. module: mrp
+#: view:board.board:0
+msgid "Procurements in Exception"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_minimumstockprocure0
+msgid "'Minimum stock rule' material"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_mrp_product_price
+msgid "Product Price"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.action_mrp_installer
+msgid "MRP Applications Configuration"
+msgstr ""
+
+#. module: mrp
+#: model:ir.model,name:mrp.model_stock_move_split
+msgid "Split in Production lots"
+msgstr ""
+
+#. module: mrp
+#: view:change.production.qty:0
+msgid "Change Quantity"
+msgstr ""
+
+#. module: mrp
+#: view:change.production.qty:0
+#: model:ir.actions.act_window,name:mrp.action_change_production_qty
+msgid "Change Product Qty"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.bom.revision:0
+#: field:mrp.bom.revision,description:0
+#: view:mrp.property:0
+#: view:mrp.property.group:0
+#: field:mrp.routing,note:0
+#: view:mrp.routing.workcenter:0
+#: field:mrp.routing.workcenter,note:0
+#: view:mrp.workcenter:0
+#: field:mrp.workcenter,note:0
+msgid "Description"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "May"
+msgstr "Maj"
+
+#. module: mrp
+#: view:board.board:0
+msgid "Manufacturing board"
+msgstr ""
+
+#. module: mrp
+#: field:mrp.production,date_planned_end:0
+msgid "Scheduled End Date"
+msgstr ""
+
+#. module: mrp
+#: model:ir.actions.act_window,help:mrp.action_report_workcenter_load_tree
+msgid ""
+"Work Center Loads gives you a projection of work center loads over a "
+"specified period. It is expressed in number of hours and machine related "
+"cycles."
+msgstr ""
+
+#. module: mrp
+#: model:process.node,note:mrp.process_node_procureproducts0
+msgid "The way to procurement depends on the product type."
+msgstr ""
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_mrp_manufacturing
+msgid "Manufacturing"
+msgstr ""
+
+#. module: mrp
+#: view:board.board:0
+msgid "Next Production Orders"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "February"
+msgstr "Februar"
+
+#. module: mrp
+#: model:ir.actions.act_window,name:mrp.mrp_property_group_action
+#: model:ir.ui.menu,name:mrp.menu_mrp_property_group_action
+msgid "Property Groups"
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.production.order,month:0
+msgid "April"
+msgstr "April"
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_procurestockableproduct0
+msgid ""
+"Depending on the chosen method to supply the stockable products, the "
+"procurement order creates a RFQ, a production order, ... "
+msgstr ""
+
+#. module: mrp
+#: help:mrp.workcenter,time_stop:0
+msgid "Time in hours for the cleaning."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,name:mrp.process_transition_purchaseprocure0
+msgid "Automatic RFQ"
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_servicemto0
+msgid ""
+"If the service has a 'Produce' supply method, this creates a task in the "
+"project management module of OpenERP."
+msgstr ""
+
+#. module: mrp
+#: model:process.transition,note:mrp.process_transition_productionprocureproducts0
+msgid ""
+"In order to supply raw material (to be purchased or produced), the "
+"production order creates as much procurement orders as components listed in "
+"the BOM, through a run of the schedulers (MRP)."
+msgstr ""
+
+#. module: mrp
+#: help:mrp.product_price,number:0
+msgid ""
+"Specify quantity of products to produce or buy. Report of Cost structure "
+"will be displayed base on this quantity."
+msgstr ""
+
+#. module: mrp
+#: selection:mrp.bom,method:0
+msgid "On Stock"
+msgstr "På lager"
+
+#. module: mrp
+#: field:mrp.bom,sequence:0
+#: report:mrp.production.order:0
+#: field:mrp.production.workcenter.line,sequence:0
+#: field:mrp.routing.workcenter,sequence:0
+msgid "Sequence"
+msgstr "Rækkefølge"
+
+#. module: mrp
+#: model:ir.ui.menu,name:mrp.menu_view_resource_calendar_leaves_search_mrp
+msgid "Resource Leaves"
+msgstr ""
+
+#. module: mrp
+#: help:mrp.bom,sequence:0
+msgid "Gives the sequence order when displaying a list of bills of material."
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production:0
+#: field:mrp.production,move_lines:0
+#: report:mrp.production.order:0
+#: field:mrp.production.order,products_to_consume:0
+msgid "Products to Consume"
+msgstr ""
+
+#. module: mrp
+#: view:mrp.production.order:0
+#: field:mrp.production.order,year:0
+msgid "Year"
+msgstr "År"
diff --git a/addons/sale/i18n/da.po b/addons/sale/i18n/da.po
new file mode 100644
index 00000000000..94b0fb5d26b
--- /dev/null
+++ b/addons/sale/i18n/da.po
@@ -0,0 +1,2059 @@
+# Danish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-09-22 19:39+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Danish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:38+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_sales_by_salesman
+msgid "Sales by Salesman in last 90 days"
+msgstr "Salg pr. sælger de sidste 90 dage"
+
+#. module: sale
+#: help:sale.installer,delivery:0
+msgid "Allows you to compute delivery costs on your quotations."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,picking_policy:0
+msgid ""
+"If you don't have enough stock available to deliver all at once, do you "
+"accept partial shipments or not?"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_shipping_id:0
+msgid "Shipping address for current sales order."
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,qtty:0
+#: report:sale.order:0
+msgid "Quantity"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,day:0
+msgid "Day"
+msgstr "Dag"
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_cancelorder0
+#: view:sale.order:0
+msgid "Cancel Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.picking_policy:0
+msgid "Configure Sales Order Logistics"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:603
+#, python-format
+msgid "The quotation '%s' has been converted to a sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Payment Before Delivery"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice.py:42
+#, python-format
+msgid "Warning !"
+msgstr "Advarsel!"
+
+#. module: sale
+#: report:sale.order:0
+msgid "VAT"
+msgstr "Moms"
+
+#. module: sale
+#: model:process.node,note:sale.process_node_saleorderprocurement0
+msgid "Drives procurement orders for every sales order line."
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.picking_policy,picking_policy:0
+msgid "All at Once"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,project_id:0
+#: view:sale.report:0
+#: field:sale.report,analytic_account_id:0
+#: field:sale.shop,project_id:0
+msgid "Analytic Account"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_line_tree2
+msgid ""
+"Here is a list of each sales order line to be invoiced. You can invoice "
+"sales orders partially, by lines of sales order. You do not need this list "
+"if you invoice from the delivery orders or if you invoice sales totally."
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_saleprocurement0
+msgid "Procurement Order"
+msgstr "Indkøbsordre"
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order Line"
+msgstr "Ordre linie"
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_form
+msgid ""
+"Sales Orders help you manage quotations and orders from your customers. "
+"OpenERP suggests that you start by creating a quotation. Once it is "
+"confirmed, the quotation will be converted into a Sales Order. OpenERP can "
+"handle several types of products so that a sales order may trigger tasks, "
+"delivery orders, manufacturing orders, purchases and so on. Based on the "
+"configuration of the sales order, a draft invoice will be generated so that "
+"you just have to confirm it when you want to bill your customer."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoice_quantity:0
+msgid ""
+"The sale order will automatically create the invoice proposition (draft "
+"invoice). Ordered and delivered quantities may not be the same. You have to "
+"choose if you want your invoice based on ordered or shipped quantities. If "
+"the product is a service, shipped quantities means hours spent on the "
+"associated tasks."
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,payment_default_id:0
+msgid "Default Payment Term"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_config_picking_policy
+msgid "Configure Picking Policy for Sales Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+#: field:sale.order.line,state:0
+#: view:sale.report:0
+msgid "State"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Disc.(%)"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_forceassignation0
+msgid "Force Assignation"
+msgstr ""
+
+#. module: sale
+#: help:sale.make.invoice,grouped:0
+msgid "Check the box to group the invoices for the same customers"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,invoice_quantity:0
+msgid "Ordered Quantities"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales by Salesman"
+msgstr "Salg pr. sælger"
+
+#. module: sale
+#: field:sale.order.line,move_ids:0
+msgid "Inventory Moves"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,name:0
+#: field:sale.order.line,order_id:0
+msgid "Order Reference"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Other Information"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Dates"
+msgstr "Datoer"
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_invoiceafterdelivery0
+msgid ""
+"The invoice is created automatically if the shipping policy is 'Invoice from "
+"pick' or 'Invoice on order after delivery'."
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_make_invoice
+msgid "Sales Make Invoice"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Recreate Packing"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,discount:0
+msgid "Discount (%)"
+msgstr "Rabat (%)"
+
+#. module: sale
+#: help:res.company,security_lead:0
+msgid ""
+"This is the days added to what you promise to customers for security purpose"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.open_board_sales_manager
+#: model:ir.ui.menu,name:sale.menu_board_sales_manager
+msgid "Sales Manager Dashboard"
+msgstr "Salgschefs oversigt"
+
+#. module: sale
+#: field:sale.order.line,product_packaging:0
+msgid "Packaging"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_saleinvoice0
+msgid "From a sales order"
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,name:0
+msgid "Shop Name"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1014
+#, python-format
+msgid "No Customer Defined !"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree2
+msgid "Sales in Exception"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Conditions"
+msgstr "Betingelser"
+
+#. module: sale
+#: help:sale.order,order_policy:0
+msgid ""
+"The Shipping Policy is used to synchronise invoice and delivery operations.\n"
+" - The 'Pay Before delivery' choice will first generate the invoice and "
+"then generate the picking order after the payment of this invoice.\n"
+" - The 'Shipping & Manual Invoice' will create the picking order directly "
+"and wait for the user to manually click on the 'Invoice' button to generate "
+"the draft invoice.\n"
+" - The 'Invoice On Order After Delivery' choice will generate the draft "
+"invoice based on sales order after all picking lists have been finished.\n"
+" - The 'Invoice From The Picking' choice is used to create an invoice "
+"during the picking process."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:939
+#, python-format
+msgid ""
+"There is no income category account defined in default Properties for "
+"Product Category or Fiscal Position is not defined !"
+msgstr ""
+
+#. module: sale
+#: view:sale.installer:0
+msgid "Configure"
+msgstr ""
+
+#. module: sale
+#: constraint:stock.move:0
+msgid "You try to assign a lot which is not from the same product"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:620
+#, python-format
+msgid "invalid mode for test_state"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "June"
+msgstr "Juni"
+
+#. module: sale
+#: code:addons/sale/sale.py:584
+#, python-format
+msgid "Could not cancel this sales order !"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_report
+msgid "Sales Orders Statistics"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,project_id:0
+msgid "The analytic account related to a sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "October"
+msgstr "Oktober"
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_quotation_for_sale
+#: view:sale.order:0
+#: view:sale.report:0
+msgid "Quotations"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,pricelist_id:0
+msgid "Pricelist for current sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.picking_policy,step:0
+msgid "Delivery Order Only"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "TVA :"
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,delay:0
+msgid ""
+"Number of days between the order confirmation the shipping of the products "
+"to the customer"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Quotation Date"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,fiscal_position:0
+msgid "Fiscal Position"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "UoM"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,number_packages:0
+msgid "Number Packages"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "In Progress"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_confirmquotation0
+msgid ""
+"The salesman confirms the quotation. The state of the sales order becomes "
+"'In progress' or 'Manual in progress'."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:971
+#, python-format
+msgid "You must first cancel stock moves attached to this sales order line."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1042
+#, python-format
+msgid "(n/a)"
+msgstr ""
+
+#. module: sale
+#: help:sale.advance.payment.inv,product_id:0
+msgid ""
+"Select a product of type service which is called 'Advance Product'. You may "
+"have to create it and set it as a default value on this field."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Tel. :"
+msgstr "Tel:"
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:64
+#, python-format
+msgid ""
+"You cannot make an advance on a sales order "
+"that is defined as 'Automatic Invoice after delivery'."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,note:0
+#: view:sale.order.line:0
+#: field:sale.order.line,notes:0
+msgid "Notes"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_invoice_id:0
+msgid "Invoice address for current sales order."
+msgstr ""
+
+#. module: sale
+#: view:sale.installer:0
+msgid "Enhance your core Sales Application with additional functionalities."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoiced_rate:0
+#: field:sale.order.line,invoiced:0
+msgid "Invoiced"
+msgstr "Faktureret"
+
+#. module: sale
+#: model:process.node,name:sale.process_node_deliveryorder0
+msgid "Delivery Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,date_confirm:0
+msgid "Confirmation Date"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,address_allotment_id:0
+msgid "Allotment Partner"
+msgstr ""
+
+#. module: sale
+#: sql_constraint:sale.order:0
+msgid "Order Reference must be unique !"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "March"
+msgstr "Marts"
+
+#. module: sale
+#: help:sale.order,amount_total:0
+msgid "The total amount."
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,price_subtotal:0
+msgid "Subtotal"
+msgstr "Subtotal"
+
+#. module: sale
+#: report:sale.order:0
+msgid "Invoice address :"
+msgstr "Faktura adresse:"
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_saleorderprocurement0
+msgid ""
+"For every sales order line, a procurement order is created to supply the "
+"sold product."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,incoterm:0
+msgid ""
+"Incoterm which stands for 'International Commercial terms' implies its a "
+"series of sales terms which are used in the commercial transaction."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_invoice_id:0
+msgid "Invoice Address"
+msgstr "Faktura adresse"
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Search Uninvoiced Lines"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.report.xml,name:sale.report_sale_order
+msgid "Quotation / Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,nbr:0
+msgid "# of Lines"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_open_invoice
+msgid "Sales Open Invoice"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order_line
+#: field:stock.move,sale_line_id:0
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.picking_policy:0
+msgid "Setup your sales workflow and default values."
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,warehouse_id:0
+msgid "Warehouse"
+msgstr "Lagersted"
+
+#. module: sale
+#: report:sale.order:0
+msgid "Order N°"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,order_line:0
+msgid "Order Lines"
+msgstr "Ordre linier"
+
+#. module: sale
+#: view:sale.order:0
+msgid "Untaxed amount"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_tree2
+#: model:ir.ui.menu,name:sale.menu_invoicing_sales_order_lines
+msgid "Lines to Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uom_qty:0
+msgid "Quantity (UoM)"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,create_date:0
+msgid "Creation Date"
+msgstr "Oprettelses dato"
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_tree3
+msgid "Uninvoiced and Delivered Lines"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Total :"
+msgstr "Total:"
+
+#. module: sale
+#: view:sale.report:0
+msgid "My Sales"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:290
+#: code:addons/sale/sale.py:966
+#: code:addons/sale/sale.py:1165
+#, python-format
+msgid "Invalid action !"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,pricelist_id:0
+#: field:sale.report,pricelist_id:0
+#: field:sale.shop,pricelist_id:0
+msgid "Pricelist"
+msgstr "Prisliste"
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,product_uom_qty:0
+msgid "# of Qty"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order Date"
+msgstr "Ordredato"
+
+#. module: sale
+#: view:sale.order.line:0
+#: field:sale.report,shipped:0
+msgid "Shipped"
+msgstr "Afsendt"
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree5
+msgid "All Quotations"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Invoice On Order After Delivery"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "September"
+msgstr "September"
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,categ_id:0
+msgid "Category of Product"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Taxes :"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Stock Moves"
+msgstr "Lagerflytning"
+
+#. module: sale
+#: view:sale.report:0
+msgid " Year "
+msgstr " År "
+
+#. module: sale
+#: field:sale.order,state:0
+#: field:sale.report,state:0
+msgid "Order State"
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Do you really want to create the invoice(s) ?"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales By Month"
+msgstr "Salg pr. måned"
+
+#. module: sale
+#: code:addons/sale/sale.py:970
+#, python-format
+msgid "Could not cancel sales order line!"
+msgstr ""
+
+#. module: sale
+#: field:res.company,security_lead:0
+msgid "Security Days"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_saleorderprocurement0
+msgid "Procurement of sold material"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Create Final Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_shipping_id:0
+msgid "Shipping Address"
+msgstr "Leveringsadresse"
+
+#. module: sale
+#: help:sale.order,shipped:0
+msgid ""
+"It indicates that the sales order has been delivered. This field is updated "
+"only after the scheduler(s) have been launched."
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: sale
+#: model:ir.module.module,description:sale.module_meta_information
+msgid ""
+"\n"
+" The base module to manage quotations and sales orders.\n"
+"\n"
+" * Workflow with validation steps:\n"
+" - Quotation -> Sales order -> Invoice\n"
+" * Invoicing methods:\n"
+" - Invoice on order (before or after shipping)\n"
+" - Invoice on delivery\n"
+" - Invoice on timesheets\n"
+" - Advance invoice\n"
+" * Partners preferences (shipping, invoicing, incoterm, ...)\n"
+" * Products stocks and prices\n"
+" * Delivery methods:\n"
+" - all at once, multi-parcel\n"
+" - delivery costs\n"
+" * Dashboard for salesman that includes:\n"
+" * Your open quotations\n"
+" * Top 10 sales of the month\n"
+" * Cases statistics\n"
+" * Graph of sales by product\n"
+" * Graph of cases of the month\n"
+" "
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_shop
+#: view:sale.shop:0
+msgid "Sales Shop"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_res_company
+msgid "Companies"
+msgstr "Virksomheder"
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "November"
+msgstr "November"
+
+#. module: sale
+#: view:sale.order:0
+msgid "History"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,picking_policy:0
+msgid "Picking Default Policy"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoice_ids:0
+msgid ""
+"This is the list of invoices that have been generated for this sales order. "
+"The same sales order may have been invoiced in several times (by line for "
+"example)."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Your Reference"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_order_id:0
+msgid ""
+"The name and address of the contact who requested the order or quotation."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:966
+#, python-format
+msgid "You cannot cancel a sales order line that has already been invoiced !"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Qty"
+msgstr "Antal"
+
+#. module: sale
+#: view:sale.order:0
+msgid "References"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_cancel0
+#: model:process.transition.action,name:sale.process_transition_action_cancel1
+#: model:process.transition.action,name:sale.process_transition_action_cancel2
+#: view:sale.advance.payment.inv:0
+#: view:sale.make.invoice:0
+#: view:sale.order.line:0
+#: view:sale.order.line.make.invoice:0
+msgid "Cancel"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_order_dates:0
+msgid "Sales Order Dates"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Exception"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_invoice0
+#: model:process.transition,name:sale.process_transition_invoiceafterdelivery0
+#: model:process.transition.action,name:sale.process_transition_action_createinvoice0
+#: view:sale.advance.payment.inv:0
+#: view:sale.order.line:0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_margin:0
+msgid "Margins in Sales Orders"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Total Tax Excluded"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Compute"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales by Partner"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_order_id:0
+msgid "Ordering Contact"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_view_sale_open_invoice
+#: view:sale.open.invoice:0
+msgid "Open Invoice"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: view:sale.order.line:0
+msgid "Price"
+msgstr "Pris"
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_sale_installer
+#: view:sale.config.picking_policy:0
+#: view:sale.installer:0
+msgid "Sales Application Configuration"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,price_total:0
+msgid "Total Price"
+msgstr "Total pris"
+
+#. module: sale
+#: selection:sale.order.line,type:0
+msgid "on order"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_invoiceafterdelivery0
+msgid "Based on the shipped or on the ordered quantities."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,picking_ids:0
+msgid "Related Picking"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,name:0
+msgid "Name"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Shipping address :"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_sales_by_partner
+msgid "Sales per Customer in last 90 days"
+msgstr "Salg pr. kunde de sidste 90 dage"
+
+#. module: sale
+#: model:process.node,note:sale.process_node_quotation0
+msgid "Draft state of sales order"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_deliver0
+msgid "Create Delivery Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,delivery:0
+msgid "Delivery Costs"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Total Tax Included"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_packing0
+msgid "Create Pick List"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales by Product Category"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,picking_policy:0
+msgid "Partial Delivery"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_confirmquotation0
+msgid "Confirm Quotation"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,origin:0
+msgid "Reference of the document that generated this sales order request."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+#: view:sale.report:0
+msgid "Group By..."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Recreate Invoice"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.outgoing_picking_list_to_invoice
+#: model:ir.ui.menu,name:sale.menu_action_picking_list_to_invoice
+msgid "Deliveries to Invoice"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Waiting Schedule"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,type:0
+msgid "Procurement Method"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.picking_policy:0
+#: view:sale.installer:0
+msgid "title"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_packinglist0
+msgid "Pick List"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order date"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_packinglist0
+msgid "Document of the move to the output or to the customer."
+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
+#: field:sale.order,order_policy:0
+msgid "Shipping Policy"
+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 "Lager flytning"
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Create Invoices"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Extra Info"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Fax :"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,amount:0
+msgid "Advance Amount"
+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
+#: model:ir.model,name:sale.model_stock_picking
+msgid "Picking List"
+msgstr "Plukkeliste"
+
+#. module: sale
+#: code:addons/sale/sale.py:387
+#: code:addons/sale/sale.py:920
+#: code:addons/sale/sale.py:938
+#, python-format
+msgid "Error !"
+msgstr "Fejl!"
+
+#. module: sale
+#: code:addons/sale/sale.py:570
+#, python-format
+msgid "Could not cancel sales order !"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "July"
+msgstr "Juli"
+
+#. module: sale
+#: field:sale.order.line,procurement_id:0
+msgid "Procurement"
+msgstr "Indkøb"
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Shipping Exception"
+msgstr ""
+
+#. module: sale
+#: field:sale.make.invoice,grouped:0
+msgid "Group the invoices"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Shipping & Manual Invoice"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1051
+#, python-format
+msgid "Picking Information !"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,month:0
+msgid "Month"
+msgstr "Måned"
+
+#. module: sale
+#: model:ir.module.module,shortdesc:sale.module_meta_information
+msgid "Sales Management"
+msgstr "Salgs administration"
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Invoice From The Picking"
+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
+#: field:sale.report,uom_name:0
+msgid "Reference UoM"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order_line_make_invoice
+msgid "Sale OrderLine Make_invoice"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.picking_policy,step:0
+msgid ""
+"By default, OpenERP is able to manage complex routing and paths of products "
+"in your warehouse and partner locations. This will configure the most common "
+"and simple methods to deliver products to the customer in one or two "
+"operations by the worker."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree
+msgid "Old Quotations"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoiced:0
+msgid "Paid"
+msgstr "Betalt"
+
+#. 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
+#: 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
+#: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order
+#: model:process.process,name:sale.process_process_salesprocess0
+#: view:sale.order:0
+#: view:sale.report:0
+msgid "Sales"
+msgstr "Salg"
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order.line,price_unit:0
+msgid "Unit Price"
+msgstr "Enhedspris"
+
+#. 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 "Udført!"
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_installer
+msgid "sale.installer"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_invoice0
+#: model:process.node,name:sale.process_node_invoiceafterdelivery0
+msgid "Invoice"
+msgstr "Faktura"
+
+#. module: sale
+#: code:addons/sale/sale.py:1014
+#, 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
+#: selection:sale.config.picking_policy,step:0
+msgid "Picking List & Delivery Order"
+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:571
+#, 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
+#: field:sale.order,incoterm:0
+msgid "Incoterm"
+msgstr "Incoterm"
+
+#. 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 "Vare"
+
+#. module: sale
+#: model:ir.ui.menu,name:sale.menu_invoiced
+msgid "Invoicing"
+msgstr "Fakturering"
+
+#. 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
+#: help:sale.order,state:0
+msgid ""
+"Gives the state of the quotation or sales order. \n"
+"The exception state is automatically set when a cancel operation occurs in "
+"the invoice validation (Invoice Exception) or in the picking list process "
+"(Shipping Exception). \n"
+"The 'Waiting Schedule' state is set when the invoice is confirmed but "
+"waiting for the scheduler to run on the date 'Ordered Date'."
+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.order,state:0
+#: 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:921
+#, 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:1116
+#, 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
+#: code:addons/sale/sale.py:388
+#, python-format
+msgid "There is no sales journal defined for this company: \"%s\" (id:%d)"
+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
+#: code:addons/sale/sale.py:1165
+#, python-format
+msgid "Cannot delete a sales order line which is %s !"
+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"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "To Invoice"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,date_confirm:0
+msgid "Date on which sales order is confirmed."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,company_id:0
+#: field:sale.order.line,company_id:0
+#: view:sale.report:0
+#: field:sale.report,company_id:0
+#: field:sale.shop,company_id:0
+msgid "Company"
+msgstr "Virksomhed"
+
+#. module: sale
+#: field:sale.make.invoice,invoice_date:0
+msgid "Invoice Date"
+msgstr "Faktura dato"
+
+#. module: sale
+#: help:sale.advance.payment.inv,amount:0
+msgid "The amount to be invoiced in advance."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Invoice Exception"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,picking_ids:0
+msgid ""
+"This is a list of picking that has been generated for this sales order."
+msgstr ""
+
+#. module: sale
+#: help:sale.installer,sale_margin:0
+msgid ""
+"Gives the margin of profitability by calculating the difference between Unit "
+"Price and Cost Price."
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Create invoices"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Net Total :"
+msgstr "Netto total:"
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.order.line,state:0
+#: selection:sale.report,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_shop_form
+#: model:ir.ui.menu,name:sale.menu_action_shop_form
+#: field:sale.order,shop_id:0
+#: view:sale.report:0
+#: field:sale.report,shop_id:0
+msgid "Shop"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid " Month "
+msgstr " Måned "
+
+#. module: sale
+#: field:sale.report,date_confirm:0
+msgid "Date Confirm"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_line_invoice.py:111
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_view_sales_by_month
+msgid "Sales by Month"
+msgstr "Salg pr. måned"
+
+#. module: sale
+#: code:addons/sale/sale.py:1045
+#, 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"
+"\n"
+"EAN: %s Quantity: %s Type of ul: %s"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order
+#: model:process.node,name:sale.process_node_order0
+#: model:process.node,name:sale.process_node_saleorder0
+#: model:res.request.link,name:sale.req_link_sale_order
+#: view:sale.order:0
+#: field:stock.picking,sale_id:0
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uos_qty:0
+msgid "Quantity (UoS)"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_packing0
+msgid ""
+"The Pick List form is created as soon as the sales order is confirmed, in "
+"the same time as the procurement order. It represents the assignment of "
+"parts to the sales order. There is 1 pick list by sales order line which "
+"evolves with the availability of parts."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_confirm0
+msgid "Confirm"
+msgstr ""
+
+#. module: sale
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_sales_product_total_price
+msgid "Sales by Product's Category in last 90 days"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order.line,invoice_lines:0
+msgid "Invoice Lines"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Sales Order Lines"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,delay:0
+msgid "Delivery Lead Time"
+msgstr ""
+
+#. module: sale
+#: view:res.company:0
+msgid "Configuration"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,picking_policy:0
+msgid "Complete Delivery"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid " Month-1 "
+msgstr ""
+
+#. module: sale
+#: help:sale.config.picking_policy,picking_policy:0
+msgid ""
+"The Shipping Policy is used to configure per order if you want to deliver as "
+"soon as possible when one product is available or you wait that all products "
+"are available.."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "August"
+msgstr "August"
+
+#. module: sale
+#: code:addons/sale/wizard/sale_line_invoice.py:111
+#, python-format
+msgid ""
+"Invoice cannot be created for this Sales Order Line due to one of the "
+"following reasons:\n"
+"1.The state of this sales order line is either \"draft\" or \"cancel\"!\n"
+"2.The Sales Order Line is Invoiced!"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,th_weight:0
+msgid "Weight"
+msgstr ""
+
+#. module: sale
+#: view:sale.open.invoice:0
+#: view:sale.order:0
+#: field:sale.order,invoice_ids:0
+msgid "Invoices"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "December"
+msgstr "December"
+
+#. module: sale
+#: field:sale.config.picking_policy,config_logo:0
+#: field:sale.installer,config_logo:0
+msgid "Image"
+msgstr "Billede"
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_saleprocurement0
+msgid ""
+"A procurement order is automatically created as soon as a sales order is "
+"confirmed or as the invoice is paid. It drives the purchasing and the "
+"production of products regarding to the rules and to the sales order's "
+"parameters. "
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Uninvoiced"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: view:sale.order:0
+#: field:sale.order,user_id:0
+#: view:sale.order.line:0
+#: field:sale.order.line,salesman_id:0
+#: view:sale.report:0
+#: field:sale.report,user_id:0
+msgid "Salesman"
+msgstr "Sælger"
+
+#. module: sale
+#: model:process.node,note:sale.process_node_saleorder0
+msgid "Drives procurement and invoicing"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,amount_untaxed:0
+msgid "Untaxed Amount"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:163
+#: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv
+#: view:sale.advance.payment.inv:0
+#: view:sale.order:0
+#, python-format
+msgid "Advance Invoice"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:591
+#, python-format
+msgid "The sales order '%s' has been cancelled."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,state:0
+msgid ""
+"* The 'Draft' state is set when the related sales order in draft state. "
+" \n"
+"* The 'Confirmed' state is set when the related sales order is confirmed. "
+" \n"
+"* The 'Exception' state is set when the related sales order is set as "
+"exception. \n"
+"* The 'Done' state is set when the sales order line has been picked. "
+" \n"
+"* The 'Cancelled' state is set when a user cancel the sales order related."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,amount_tax:0
+msgid "The tax amount."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Packings"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,progress:0
+#: field:sale.installer,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_product_tree
+msgid "Product sales"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,date_order:0
+msgid "Ordered Date"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_form
+#: model:ir.ui.menu,name:sale.menu_sale_order
+#: view:sale.order:0
+msgid "Sales Orders"
+msgstr "Salgsordrer"
+
+#. module: sale
+#: selection:sale.config.picking_policy,picking_policy:0
+msgid "Direct Delivery"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_journal:0
+msgid "Invoicing journals"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,product_id:0
+msgid "Advance Product"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,shipped_qty_1:0
+msgid "Shipped Qty"
+msgstr ""
+
+#. module: sale
+#: view:sale.open.invoice:0
+msgid "You invoice has been successfully created!"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:585
+#, python-format
+msgid "You must first cancel all invoices attached to this sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "January"
+msgstr "Januar"
+
+#. module: sale
+#: view:sale.installer:0
+msgid "Configure Your Sales Management Application"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree4
+msgid "Sales Order in Progress"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_layout:0
+msgid "Sales Order Layout Improvement"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:63
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,delay:0
+msgid "Commitment Delay"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_saleprocurement0
+msgid ""
+"One Procurement order for each sales order line and for each of the "
+"components."
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_assign0
+msgid "Assign"
+msgstr ""
+
+#. module: sale
+#: field:sale.report,date:0
+msgid "Date Order"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_order0
+msgid "Confirmed sales order to invoice."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:290
+#, python-format
+msgid "Cannot delete Sales Order(s) which are already confirmed !"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:316
+#, python-format
+msgid "The sales order '%s' has been set in draft state."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,type:0
+msgid "from stock"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,order_policy:0
+msgid "Shipping Default Policy"
+msgstr ""
+
+#. module: sale
+#: view:sale.open.invoice:0
+msgid "Close"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,shipped:0
+msgid "Delivered"
+msgstr "Leveret"
+
+#. module: sale
+#: code:addons/sale/sale.py:1115
+#, python-format
+msgid "Not enough stock !"
+msgstr ""
+
+#. module: sale
+#: constraint:stock.move:0
+msgid "You must assign a production lot for this product"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,sequence:0
+msgid "Layout Sequence"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_shop_form
+msgid ""
+"If you have more than one shop reselling your company products, you can "
+"create and manage that from here. Whenever you will record a new quotation "
+"or sales order, it has to be linked to a shop. The shop also defines the "
+"warehouse from which the products will be delivered for each particular "
+"sales."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoiced:0
+msgid "It indicates that an invoice has been paid."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order.line,name:0
+msgid "Description"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "May"
+msgstr "Maj"
+
+#. module: sale
+#: help:sale.installer,sale_order_dates:0
+msgid "Adds commitment, requested and effective dates on Sales Orders."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,partner_id:0
+#: field:sale.order.line,order_partner_id:0
+msgid "Customer"
+msgstr "Kunde"
+
+#. module: sale
+#: model:product.template,name:sale.advance_product_0_product_template
+msgid "Advance"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "February"
+msgstr "Februar"
+
+#. module: sale
+#: help:sale.installer,sale_journal:0
+msgid ""
+"Allows you to group and invoice your delivery orders according to different "
+"invoicing types: daily, weekly, etc."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "April"
+msgstr "April"
+
+#. module: sale
+#: view:sale.shop:0
+msgid "Accounting"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,step:0
+msgid "Steps To Deliver a Sales Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Search Sales Order"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_saleorderprocurement0
+msgid "Sales Order Requisition"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order,payment_term:0
+msgid "Payment Term"
+msgstr ""
+
+#. module: sale
+#: help:sale.installer,sale_layout:0
+msgid ""
+"Provides some features to improve the layout of the Sales Order reports."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_report_all
+msgid ""
+"This report performs analysis on your quotations and sales orders. Analysis "
+"check your sales revenues and sort it by different group criteria (salesman, "
+"partner, product, etc.) Use this report to perform analysis on sales not "
+"having invoiced yet. If you want to analyse your turnover, you should use "
+"the Invoice Analysis report in the Accounting application."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Quotation N°"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,picked_rate:0
+#: view:sale.report:0
+msgid "Picked"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,year:0
+msgid "Year"
+msgstr "År"
+
+#. module: sale
+#: selection:sale.config.picking_policy,order_policy:0
+msgid "Invoice Based on Deliveries"
+msgstr ""
diff --git a/addons/stock/i18n/da.po b/addons/stock/i18n/da.po
new file mode 100644
index 00000000000..21654abf267
--- /dev/null
+++ b/addons/stock/i18n/da.po
@@ -0,0 +1,3915 @@
+# Danish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-09-22 19:56+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Danish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:38+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
+
+#. module: stock
+#: field:product.product,track_outgoing:0
+msgid "Track Outgoing Lots"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_ups_upload
+msgid "Stock ups upload"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:76
+#, python-format
+msgid "Variation Account is not specified for Product Category: %s"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,chained_location_id:0
+msgid "Chained Location If Fixed"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Put in a new pack"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.split.lines,action:0
+msgid "Action"
+msgstr ""
+
+#. module: stock
+#: view:stock.production.lot:0
+msgid "Upstream Traceability"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_stock_line_date
+#: model:ir.ui.menu,name:stock.menu_report_stock_line_date
+msgid "Last Product Inventories"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Today"
+msgstr "I dag"
+
+#. module: stock
+#: field:stock.production.lot.revision,indice:0
+msgid "Revision Number"
+msgstr ""
+
+#. module: stock
+#: view:stock.move.memory.in:0
+#: view:stock.move.memory.out:0
+msgid "Product Moves"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_stock_move_report
+#: model:ir.ui.menu,name:stock.menu_action_stock_move_report
+#: view:report.stock.move:0
+msgid "Moves Analysis"
+msgstr ""
+
+#. module: stock
+#: help:stock.production.lot,ref:0
+msgid ""
+"Internal reference number in case it differs from the manufacturer's serial "
+"number"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_inventory_form
+msgid ""
+"Periodical Inventories are used to count the number of products available "
+"per location. You can use it once a year when you do the general inventory "
+"or whenever you need it, to correct the current stock level of a product."
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Picking list"
+msgstr ""
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+#: field:report.stock.inventory,product_qty:0
+#: field:report.stock.move,product_qty:0
+#: field:stock.change.product.qty,new_quantity:0
+#: field:stock.inventory.line,product_qty:0
+#: field:stock.inventory.line.split,qty:0
+#: report:stock.inventory.move:0
+#: field:stock.move,product_qty:0
+#: field:stock.move.consume,product_qty:0
+#: field:stock.move.memory.in,quantity:0
+#: field:stock.move.memory.out,quantity:0
+#: field:stock.move.scrap,product_qty:0
+#: field:stock.move.split,qty:0
+#: field:stock.move.split.lines,quantity:0
+#: field:stock.move.split.lines.exist,quantity:0
+#: report:stock.picking.list:0
+#: field:stock.report.prodlots,qty:0
+#: field:stock.report.tracklots,name:0
+#: field:stock.split.into,quantity:0
+msgid "Quantity"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_picking_tree
+msgid ""
+"This is the list of all delivery orders that have to be prepared, according "
+"to your different sales orders and your logistics rules."
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+#: field:report.stock.move,day:0
+msgid "Day"
+msgstr "Dag"
+
+#. module: stock
+#: view:stock.inventory:0
+#: field:stock.inventory.line.split,product_uom:0
+#: view:stock.move:0
+#: field:stock.move.split,product_uom:0
+#: view:stock.picking:0
+#: view:stock.production.lot:0
+msgid "UoM"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_change_product_qty.py:104
+#: model:ir.actions.act_window,name:stock.action_inventory_form
+#: model:ir.ui.menu,name:stock.menu_action_inventory_form
+#, python-format
+msgid "Physical Inventories"
+msgstr ""
+
+#. module: stock
+#: field:product.category,property_stock_journal:0
+#: view:report.stock.move:0
+#: field:stock.change.standard.price,stock_journal:0
+msgid "Stock journal"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+msgid "Incoming"
+msgstr ""
+
+#. module: stock
+#: help:product.category,property_stock_account_output_categ:0
+msgid ""
+"When doing real-time inventory valuation, counterpart Journal Items for all "
+"outgoing stock moves will be posted in this account. This is the default "
+"value for all products in this category, it can also directly be set on each "
+"product."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1170
+#: code:addons/stock/stock.py:2415
+#, python-format
+msgid "Missing partial picking data for move #%s"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.server,name:stock.action_partial_move_server
+msgid "Deliver/Receive Products"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/report/report_stock.py:78
+#: code:addons/stock/report/report_stock.py:135
+#, python-format
+msgid "You cannot delete any record!"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_splitinto.py:49
+#, python-format
+msgid ""
+"The current move line is already assigned to a pack, please remove it first "
+"if you really want to change it ' # 'for "
+"this product: \"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: selection:stock.picking,invoice_state:0
+msgid "Not Applicable"
+msgstr ""
+
+#. module: stock
+#: help:stock.tracking,serial:0
+msgid "Other reference or serial number"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,origin:0
+#: view:stock.picking:0
+#: field:stock.picking,origin:0
+msgid "Origin"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.lines.date:0
+msgid "Non Inv"
+msgstr ""
+
+#. module: stock
+#: view:stock.tracking:0
+msgid "Pack Identification"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: field:stock.move,picking_id:0
+#: field:stock.picking,name:0
+#: view:stock.production.lot:0
+msgid "Reference"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:666
+#: code:addons/stock/stock.py:1472
+#, python-format
+msgid "Products to Process"
+msgstr ""
+
+#. module: stock
+#: constraint:product.category:0
+msgid "Error ! You can not create recursive categories."
+msgstr ""
+
+#. module: stock
+#: help:stock.fill.inventory,set_stock_zero:0
+msgid ""
+"If checked, all product quantities will be set to zero to help ensure a real "
+"physical inventory is done"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_split_lines
+msgid "Split lines"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1120
+#, python-format
+msgid "You cannot cancel picking because stock move is in done state !"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2233
+#: code:addons/stock/stock.py:2274
+#: code:addons/stock/stock.py:2334
+#: code:addons/stock/wizard/stock_fill_inventory.py:53
+#, python-format
+msgid "Warning!"
+msgstr ""
+
+#. module: stock
+#: field:stock.invoice.onshipping,group:0
+msgid "Group by partner"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_res_partner
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,partner_id:0
+#: view:report.stock.move:0
+#: field:report.stock.move,partner_id:0
+#: view:stock.move:0
+#: field:stock.move,partner_id:0
+#: view:stock.picking:0
+#: field:stock.picking,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: stock
+#: help:stock.move.memory.in,currency:0
+#: help:stock.move.memory.out,currency:0
+msgid "Currency in which Unit cost is expressed"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:126
+#, python-format
+msgid "No invoicing"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_production_lot
+#: field:stock.production.lot.revision,lot_id:0
+#: field:stock.report.prodlots,prodlot_id:0
+msgid "Production lot"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_stock_uom_categ_form_action
+msgid "Units of Measure Categories"
+msgstr ""
+
+#. module: stock
+#: help:stock.incoterms,code:0
+msgid "Code for Incoterms"
+msgstr ""
+
+#. module: stock
+#: field:stock.tracking,move_ids:0
+msgid "Moves for this pack"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,location_type:0
+#: selection:stock.location,usage:0
+msgid "Internal Location"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Confirm Inventory"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,state:0
+#: view:report.stock.move:0
+#: field:report.stock.move,state:0
+#: view:stock.inventory:0
+#: field:stock.inventory,state:0
+#: field:stock.inventory.line,state:0
+#: view:stock.move:0
+#: field:stock.move,state:0
+#: view:stock.picking:0
+#: field:stock.picking,state:0
+#: report:stock.picking.list:0
+msgid "State"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,stock_real_value:0
+msgid "Real Stock Value"
+msgstr ""
+
+#. module: stock
+#: field:report.stock.move,day_diff2:0
+msgid "Lag (Days)"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_action_traceability
+msgid "Action traceability "
+msgstr ""
+
+#. module: stock
+#: field:stock.location,posy:0
+msgid "Shelves (Y)"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "UOM"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,state:0
+#: selection:report.stock.move,state:0
+#: view:stock.move:0
+#: selection:stock.move,state:0
+#: view:stock.picking:0
+#: selection:stock.picking,state:0
+#: view:stock.production.lot:0
+#: field:stock.production.lot,stock_available:0
+msgid "Available"
+msgstr "Til rådighed"
+
+#. module: stock
+#: view:stock.picking:0
+#: field:stock.picking,min_date:0
+msgid "Expected Date"
+msgstr ""
+
+#. module: stock
+#: view:board.board:0
+#: model:ir.actions.act_window,name:stock.action_outgoing_product_board
+msgid "Outgoing Product"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_warehouse_form
+msgid ""
+"Create and manage your warehouses and assign them a location from here"
+msgstr ""
+
+#. module: stock
+#: field:report.stock.move,product_qty_in:0
+msgid "In Qty"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_fill_inventory.py:106
+#, python-format
+msgid "No product in this location."
+msgstr ""
+
+#. module: stock
+#: field:stock.warehouse,lot_output_id:0
+msgid "Location Output"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.split_into
+#: model:ir.model,name:stock.model_stock_split_into
+msgid "Split into"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,price_currency_id:0
+msgid "Currency for average price"
+msgstr ""
+
+#. module: stock
+#: help:product.template,property_stock_account_input:0
+msgid ""
+"When doing real-time inventory valuation, counterpart Journal Items for all "
+"incoming stock moves will be posted in this account. If not set on the "
+"product, the one from the product category is used."
+msgstr ""
+
+#. module: stock
+#: field:report.stock.inventory,location_type:0
+#: field:stock.location,usage:0
+msgid "Location Type"
+msgstr ""
+
+#. module: stock
+#: help:report.stock.move,type:0
+#: help:stock.picking,type:0
+msgid "Shipping type specify, goods coming in or going out."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.report.xml,name:stock.report_move_labels
+msgid "Item Labels"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_report_stock_move
+msgid "Moves Statistics"
+msgstr ""
+
+#. module: stock
+#: view:stock.production.lot:0
+msgid "Product Lots Filter"
+msgstr ""
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+#: report:stock.inventory.move:0
+#: report:stock.picking.list:0
+msgid "["
+msgstr "["
+
+#. module: stock
+#: help:stock.production.lot,stock_available:0
+msgid ""
+"Current quantity of products with this Production Lot Number available in "
+"company warehouses"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,move_history_ids:0
+msgid "Move History (child moves)"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2015
+#, python-format
+msgid ""
+"There is no stock output account defined for this product or its category: "
+"\"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_picking_tree6
+#: model:ir.ui.menu,name:stock.menu_action_picking_tree6
+#: field:stock.picking,move_lines:0
+msgid "Internal Moves"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,location_dest_id:0
+msgid "Destination Location"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:754
+#, python-format
+msgid "You can not process picking without stock moves"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_product_packaging_stock_action
+#: field:stock.move,product_packaging:0
+msgid "Packaging"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Order(Origin)"
+msgstr ""
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+msgid "Grand Total:"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_out_picking_move
+msgid ""
+"You will find in this list all products you have to deliver to your "
+"customers. You can process the deliveries directly from this list using the "
+"buttons on the right of each line. You can filter the products to deliver by "
+"customer, products or sale order (using the Origin field)."
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_stock_inventory_control
+msgid "Inventory Control"
+msgstr ""
+
+#. module: stock
+#: view:stock.location:0
+#: field:stock.location,comment:0
+msgid "Additional Information"
+msgstr ""
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+msgid "Location / Product"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1303
+#, python-format
+msgid "Reception"
+msgstr ""
+
+#. module: stock
+#: field:stock.tracking,serial:0
+msgid "Additional Reference"
+msgstr ""
+
+#. module: stock
+#: view:stock.production.lot.revision:0
+msgid "Production Lot Revisions"
+msgstr ""
+
+#. module: stock
+#: help:product.product,track_outgoing:0
+msgid ""
+"Forces to specify a Production Lot for all moves containing this product and "
+"going to a Customer Location"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_stock_journal_form
+msgid ""
+"The stock journal system allows you to assign each stock operation to a "
+"specific journal according to the type of operation to perform or the "
+"worker/team that should perform the operation. Examples of stock journals "
+"may be: quality control, pick lists, packing, etc."
+msgstr ""
+
+#. module: stock
+#: field:stock.location,complete_name:0
+#: field:stock.location,name:0
+msgid "Location Name"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Posted Inventory"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Move Information"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+msgid "Outgoing"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "August"
+msgstr "August"
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_tracking_form
+#: model:ir.model,name:stock.model_stock_tracking
+#: model:ir.ui.menu,name:stock.menu_action_tracking_form
+#: view:stock.tracking:0
+msgid "Packs"
+msgstr ""
+
+#. module: stock
+#: constraint:stock.move:0
+msgid "You try to assign a lot which is not from the same product"
+msgstr ""
+
+#. module: stock
+#: view:res.partner:0
+msgid "Sales & Purchases"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "June"
+msgstr "Juni"
+
+#. module: stock
+#: field:product.template,property_stock_procurement:0
+msgid "Procurement Location"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_production_lot_form
+#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
+#: field:stock.inventory.line.split,line_exist_ids:0
+#: field:stock.inventory.line.split,line_ids:0
+#: field:stock.move.split,line_exist_ids:0
+#: field:stock.move.split,line_ids:0
+msgid "Production Lots"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Recipient"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_location_tree
+#: model:ir.ui.menu,name:stock.menu_action_location_tree
+msgid "Location Structure"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "October"
+msgstr "Oktober"
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_inventory_line
+msgid "Inventory Line"
+msgstr ""
+
+#. module: stock
+#: help:product.category,property_stock_journal:0
+msgid ""
+"When doing real-time inventory valuation, this is the Accounting Journal in "
+"which entries will be automatically posted when stock moves are processed."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_partial_picking
+msgid "Process Picking"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:358
+#, python-format
+msgid "Future Receptions"
+msgstr ""
+
+#. module: stock
+#: help:stock.inventory.line.split,use_exist:0
+#: help:stock.move.split,use_exist:0
+msgid ""
+"Check this option to select existing lots in the list below, otherwise you "
+"should enter new ones line by line."
+msgstr ""
+
+#. module: stock
+#: field:stock.move,move_dest_id:0
+msgid "Destination Move"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Process Now"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,address_id:0
+msgid "Location Address"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,prodlot_id:0
+msgid "Production lot is used to put a serial number on the production"
+msgstr ""
+
+#. module: stock
+#: field:stock.warehouse,lot_input_id:0
+msgid "Location Input"
+msgstr ""
+
+#. module: stock
+#: help:stock.picking,date:0
+msgid "Date of Order"
+msgstr ""
+
+#. module: stock
+#: selection:product.product,valuation:0
+msgid "Periodical (manual)"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.location_procurement
+msgid "Procurements"
+msgstr "Indkøb"
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_3
+msgid "IT Suppliers"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_inventory_form_draft
+msgid "Draft Physical Inventories"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,location_type:0
+#: selection:stock.location,usage:0
+msgid "Transit Location for Inter-Companies Transfers"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_view_change_product_quantity
+#: model:ir.model,name:stock.model_stock_change_product_qty
+#: view:stock.change.product.qty:0
+msgid "Change Product Quantity"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_inventory_merge
+msgid "Merge Inventory"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:374
+#, python-format
+msgid "Future P&L"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_picking_tree4
+#: model:ir.ui.menu,name:stock.menu_action_picking_tree4
+#: view:stock.picking:0
+msgid "Incoming Shipments"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Scrap"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,child_ids:0
+msgid "Contains"
+msgstr ""
+
+#. module: stock
+#: view:board.board:0
+msgid "Incoming Products Delay"
+msgstr ""
+
+#. module: stock
+#: view:stock.location:0
+msgid "Stock Locations"
+msgstr "Lagersteder"
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+#: field:stock.move,price_unit:0
+msgid "Unit Price"
+msgstr "Enhedspris"
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_split_lines_exist
+msgid "Exist Split lines"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,date_expected:0
+msgid "Scheduled Date"
+msgstr ""
+
+#. module: stock
+#: view:stock.tracking:0
+msgid "Pack Search"
+msgstr ""
+
+#. module: stock
+#: selection:stock.move,priority:0
+msgid "Urgent"
+msgstr "Haster"
+
+#. module: stock
+#: view:stock.picking:0
+#: report:stock.picking.list:0
+msgid "Journal"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1315
+#, python-format
+msgid "is scheduled %s."
+msgstr ""
+
+#. module: stock
+#: help:stock.picking,location_id:0
+msgid ""
+"Keep empty if you produce at the location where the finished products are "
+"needed.Set a location if you produce at a fixed location. This can be a "
+"partner location if you subcontract the manufacturing operations."
+msgstr ""
+
+#. module: stock
+#: view:res.partner:0
+msgid "Inventory Properties"
+msgstr ""
+
+#. module: stock
+#: field:report.stock.move,day_diff:0
+msgid "Execution Lead Time (Days)"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.act_stock_product_location_open
+msgid "Stock by Location"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,address_id:0
+msgid ""
+"Optional address where goods are to be delivered, specifically used for "
+"allotment"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+msgid "Month-1"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,active:0
+msgid ""
+"By unchecking the active field, you may hide a location without deleting it."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.report.xml,name:stock.report_picking_list
+msgid "Packing list"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,stock_virtual:0
+msgid "Virtual Stock"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,location_type:0
+#: selection:stock.location,usage:0
+msgid "View"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,parent_left:0
+msgid "Left Parent"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:132
+#, python-format
+msgid "Delivery Information"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_fill_inventory.py:48
+#, python-format
+msgid "Stock Inventory is done"
+msgstr ""
+
+#. module: stock
+#: constraint:product.product:0
+msgid "Error: Invalid ean code"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:148
+#, python-format
+msgid ""
+"There is no stock output account defined for this product: \"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: field:product.template,property_stock_production:0
+msgid "Production Location"
+msgstr ""
+
+#. module: stock
+#: help:stock.picking,address_id:0
+msgid "Address of partner"
+msgstr ""
+
+#. module: stock
+#: model:res.company,overdue_msg:stock.res_company_shop0
+#: model:res.company,overdue_msg:stock.res_company_tinyshop0
+msgid ""
+"\n"
+"Date: %(date)s\n"
+"\n"
+"Dear %(partner_name)s,\n"
+"\n"
+"Please find in attachment a reminder of all your unpaid invoices, for a "
+"total amount due of:\n"
+"\n"
+"%(followup_amount).2f %(company_currency)s\n"
+"\n"
+"Thanks,\n"
+"--\n"
+"%(user_signature)s\n"
+"%(company_name)s\n"
+" "
+msgstr ""
+
+#. module: stock
+#: help:stock.location,usage:0
+msgid ""
+"* Supplier Location: Virtual location representing the source location for "
+"products coming from your suppliers\n"
+" \n"
+"* View: Virtual location used to create a hierarchical structures for your "
+"warehouse, aggregating its child locations ; can't directly contain "
+"products\n"
+" \n"
+"* Internal Location: Physical locations inside your own warehouses,\n"
+" \n"
+"* Customer Location: Virtual location representing the destination location "
+"for products sent to your customers\n"
+" \n"
+"* Inventory: Virtual location serving as counterpart for inventory "
+"operations used to correct stock levels (Physical inventories)\n"
+" \n"
+"* Procurement: Virtual location serving as temporary counterpart for "
+"procurement operations when the source (supplier or production) is not known "
+"yet. This location should be empty when the procurement scheduler has "
+"finished running.\n"
+" \n"
+"* Production: Virtual counterpart location for production operations: this "
+"location consumes the raw material and produces finished products\n"
+" "
+msgstr ""
+
+#. module: stock
+#: field:stock.production.lot.revision,author_id:0
+msgid "Author"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1302
+#, python-format
+msgid "Delivery Order"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_memory_in
+msgid "stock.move.memory.in"
+msgstr ""
+
+#. module: stock
+#: selection:stock.location,chained_auto_packing:0
+msgid "Manual Operation"
+msgstr ""
+
+#. module: stock
+#: view:stock.location:0
+#: view:stock.move:0
+msgid "Supplier"
+msgstr "Leverandør"
+
+#. module: stock
+#: field:stock.picking,date_done:0
+msgid "Date Done"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Expected Shipping Date"
+msgstr ""
+
+#. module: stock
+#: selection:stock.move,state:0
+msgid "Not Available"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "March"
+msgstr "Marts"
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_view_stock_inventory_line_split
+#: model:ir.model,name:stock.model_stock_inventory_line_split
+#: view:stock.inventory:0
+#: view:stock.inventory.line:0
+msgid "Split inventory lines"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Physical Inventory"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,chained_company_id:0
+msgid ""
+"The company the Picking List containing the chained move will belong to "
+"(leave empty to use the default company determination rules"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,chained_picking_type:0
+msgid ""
+"Shipping Type of the Picking List that will contain the chained move (leave "
+"empty to automatically detect the type based on the source and destination "
+"locations)."
+msgstr ""
+
+#. module: stock
+#: view:stock.move.split:0
+msgid "Lot number"
+msgstr ""
+
+#. module: stock
+#: field:stock.inventory.line,product_uom:0
+#: field:stock.move.consume,product_uom:0
+#: field:stock.move.scrap,product_uom:0
+msgid "Product UOM"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_locations_partner
+msgid "Partner Locations"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: view:report.stock.move:0
+msgid "Total quantity"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.move_consume
+#: view:stock.move.consume:0
+msgid "Consume Move"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_7
+msgid "European Customers"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,chained_delay:0
+msgid "Delay between original move and chained move in days"
+msgstr ""
+
+#. module: stock
+#: view:stock.fill.inventory:0
+msgid "Import current product inventory from the following location"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,chained_auto_packing:0
+msgid ""
+"This is used only if you select a chained location type.\n"
+"The 'Automatic Move' value will create a stock move after the current one "
+"that will be validated automatically. With 'Manual Operation', the stock "
+"move has to be validated by a worker. With 'Automatic No Step Added', the "
+"location is replaced in the original move."
+msgstr ""
+
+#. module: stock
+#: view:stock.production.lot:0
+msgid "Downstream Traceability"
+msgstr ""
+
+#. module: stock
+#: help:product.template,property_stock_production:0
+msgid ""
+"For the current product, this stock location will be used, instead of the "
+"default one, as the source location for stock moves generated by production "
+"orders"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2006
+#, python-format
+msgid ""
+"Can not create Journal Entry, Output Account defined on this product and "
+"Variant account on category of this product are same."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1319
+#, python-format
+msgid "is in draft state."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_tracking_form
+msgid ""
+"This is the list of all your packs. When you select a Pack, you can get the "
+"upstream or downstream traceability of the products contained in the pack."
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_ups_final
+msgid "Stock ups final"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,chained_auto_packing:0
+msgid "Chaining Type"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:126
+#, python-format
+msgid "To be refunded/invoiced"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_shop0
+msgid "Shop 1"
+msgstr ""
+
+#. module: stock
+#: view:stock.change.product.qty:0
+#: view:stock.change.standard.price:0
+#: view:stock.fill.inventory:0
+#: view:stock.inventory.merge:0
+#: view:stock.invoice.onshipping:0
+#: view:stock.location.product:0
+#: view:stock.move:0
+#: view:stock.move.track:0
+#: view:stock.picking:0
+#: view:stock.split.into:0
+msgid "_Cancel"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Ready"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Calendar View"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Additional Info"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1619
+#, python-format
+msgid "Operation forbidden"
+msgstr ""
+
+#. module: stock
+#: field:stock.location.product,from_date:0
+msgid "From"
+msgstr "Fra"
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:77
+#, python-format
+msgid "You may only return pickings that are Confirmed, Available or Done!"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+#: field:stock.picking,invoice_state:0
+msgid "Invoice Control"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_production_lot_revision
+msgid "Production lot revisions"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Internal Picking List"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,state:0
+#: selection:report.stock.move,state:0
+#: selection:stock.move,state:0
+#: selection:stock.picking,state:0
+msgid "Waiting"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: selection:stock.move.split.lines,action:0
+#: view:stock.picking:0
+msgid "Split"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Search Stock Picking"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:93
+#, python-format
+msgid "Company is not specified in Location"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+#: field:stock.partial.move,type:0
+msgid "Type"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_5
+msgid "Generic IT Suppliers"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Picking List:"
+msgstr ""
+
+#. module: stock
+#: field:stock.inventory,date:0
+#: field:stock.move,create_date:0
+#: field:stock.production.lot,date:0
+#: field:stock.tracking,date:0
+msgid "Creation Date"
+msgstr ""
+
+#. module: stock
+#: field:report.stock.lines.date,id:0
+msgid "Inventory Line Id"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,address_id:0
+msgid "Address of customer or supplier."
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+#: field:report.stock.move,picking_id:0
+msgid "Packing"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,location_type:0
+#: field:res.partner,property_stock_customer:0
+#: selection:stock.location,usage:0
+msgid "Customer Location"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:85
+#, python-format
+msgid "Invalid action !"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:139
+#, python-format
+msgid "Receive Information"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.report.xml,name:stock.report_location_overview
+#: report:lot.stock.overview:0
+msgid "Location Inventory Overview"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_replacement
+msgid "Stock Replacement"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "General Informations"
+msgstr ""
+
+#. module: stock
+#: selection:stock.location,chained_location_type:0
+msgid "None"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action3
+#: view:stock.tracking:0
+msgid "Downstream traceability"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_invoice_onshipping.py:101
+#, python-format
+msgid "No Invoices were created"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_company
+msgid "OpenERP S.A."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:140
+#, python-format
+msgid "Receive"
+msgstr ""
+
+#. module: stock
+#: help:stock.incoterms,active:0
+msgid ""
+"By unchecking the active field, you may hide an INCOTERM without deleting it."
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+#: field:stock.picking,date:0
+msgid "Order Date"
+msgstr "Ordredato"
+
+#. module: stock
+#: field:stock.location,location_id:0
+msgid "Parent Location"
+msgstr ""
+
+#. module: stock
+#: help:stock.picking,state:0
+msgid ""
+"* Draft: not confirmed yet and will not be scheduled until confirmed\n"
+"* Confirmed: still waiting for the availability of products\n"
+"* Available: products reserved, simply waiting for confirmation.\n"
+"* Waiting: waiting for another move to proceed before it becomes "
+"automatically available (e.g. in Make-To-Order flows)\n"
+"* Done: has been processed, can't be modified or cancelled anymore\n"
+"* Cancelled: has been cancelled, can't be confirmed anymore"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,company_id:0
+msgid "Let this field empty if this location is shared between all companies"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2233
+#, python-format
+msgid "Please provide a positive quantity to scrap!"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,chained_delay:0
+msgid "Chaining Lead Time"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:85
+#, python-format
+msgid "Cannot deliver products which are already delivered !"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_invoice_onshipping
+msgid "Stock Invoice Onshipping"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,state:0
+msgid ""
+"When the stock move is created it is in the 'Draft' state.\n"
+" After that, it is set to 'Not Available' state if the scheduler did not "
+"find the products.\n"
+" When products are reserved it is set to 'Available'.\n"
+" When the picking is done the state is 'Done'. \n"
+"The state is 'Waiting' if the move is waiting for another one."
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,location_type:0
+#: field:res.partner,property_stock_supplier:0
+#: selection:stock.location,usage:0
+msgid "Supplier Location"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2254
+#, python-format
+msgid "were scrapped"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Partial"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "September"
+msgstr "September"
+
+#. module: stock
+#: help:stock.picking,backorder_id:0
+msgid ""
+"If this picking was split this field links to the picking that contains the "
+"other part that has been processed already."
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_report_stock_inventory
+msgid "Stock Statistics"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.memory.in,currency:0
+#: field:stock.move.memory.out,currency:0
+msgid "Currency"
+msgstr "Valuta"
+
+#. module: stock
+#: field:product.product,track_production:0
+msgid "Track Manufacturing Lots"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_inventory_merge.py:44
+#, python-format
+msgid ""
+"Please select multiple physical inventories to merge in the list view."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.act_product_stock_move_open
+#: model:ir.actions.act_window,name:stock.action_move_form2
+#: model:ir.ui.menu,name:stock.menu_action_move_form2
+#: view:stock.inventory:0
+#: view:stock.move:0
+#: view:stock.picking:0
+#: view:stock.production.lot:0
+#: view:stock.tracking:0
+msgid "Stock Moves"
+msgstr "Lagerflytning"
+
+#. module: stock
+#: selection:report.stock.move,type:0
+#: selection:stock.location,chained_picking_type:0
+#: selection:stock.picking,type:0
+msgid "Sending Goods"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Cancel Availability"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,date_expected:0
+msgid "Scheduled date for the processing of this move"
+msgstr ""
+
+#. module: stock
+#: field:stock.inventory,move_ids:0
+msgid "Created Moves"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_14
+msgid "Shelf 2"
+msgstr ""
+
+#. module: stock
+#: field:stock.report.tracklots,tracking_id:0
+msgid "Tracking lot"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Back Orders"
+msgstr ""
+
+#. module: stock
+#: view:product.product:0
+#: view:product.template:0
+msgid "Counter-Part Locations Properties"
+msgstr ""
+
+#. module: stock
+#: view:stock.location:0
+msgid "Localization"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_report_tracklots
+msgid "Stock report by tracking lots"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:370
+#, python-format
+msgid "Delivered Qty"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.track_line
+#: view:stock.inventory.line.split:0
+#: view:stock.move.split:0
+msgid "Split in lots"
+msgstr ""
+
+#. module: stock
+#: view:stock.move.split:0
+msgid "Production Lot Numbers"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,date:0
+#: field:report.stock.move,date:0
+#: view:stock.inventory:0
+#: report:stock.inventory.move:0
+#: view:stock.move:0
+#: field:stock.move,date:0
+#: field:stock.partial.move,date:0
+#: field:stock.partial.picking,date:0
+#: view:stock.picking:0
+msgid "Date"
+msgstr "Dato"
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: view:report.stock.move:0
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: stock
+#: field:stock.warehouse,lot_stock_id:0
+msgid "Location Stock"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_inventory_merge.py:64
+#, python-format
+msgid "Merging is only allowed on draft inventories."
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_dashboard_stock
+msgid "Dashboard"
+msgstr "Oversigt"
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_track
+msgid "Track moves"
+msgstr ""
+
+#. module: stock
+#: field:stock.incoterms,code:0
+msgid "Code"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory.line.split:0
+msgid "Lots Number"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.open_board_warehouse
+#: model:ir.ui.menu,name:stock.menu_board_warehouse
+msgid "Warehouse Dashboard"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:512
+#, python-format
+msgid "You can not remove a lot line !"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_scrap
+#: view:stock.move:0
+#: view:stock.move.scrap:0
+#: view:stock.picking:0
+msgid "Scrap Products"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1128
+#, python-format
+msgid "You cannot remove the picking which is in %s state !"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory.line.split:0
+#: view:stock.move.consume:0
+#: view:stock.move.scrap:0
+#: view:stock.move.split:0
+#: view:stock.picking:0
+msgid "Cancel"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.act_stock_return_picking
+#: model:ir.model,name:stock.model_stock_return_picking
+msgid "Return Picking"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Split in production lots"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_location
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,location_id:0
+#: field:stock.change.product.qty,location_id:0
+#: field:stock.fill.inventory,location_id:0
+#: field:stock.inventory.line,location_id:0
+#: report:stock.inventory.move:0
+#: view:stock.location:0
+#: view:stock.move:0
+#: field:stock.move.consume,location_id:0
+#: field:stock.move.scrap,location_id:0
+#: field:stock.picking,location_id:0
+#: report:stock.picking.list:0
+#: field:stock.report.prodlots,location_id:0
+#: field:stock.report.tracklots,location_id:0
+msgid "Location"
+msgstr ""
+
+#. module: stock
+#: view:product.template:0
+msgid "Information"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Shipping Address :"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:115
+#, python-format
+msgid "Provide the quantities of the returned products."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2009
+#, python-format
+msgid ""
+"Can not create Journal Entry, Input Account defined on this product and "
+"Variant account on category of this product are same."
+msgstr ""
+
+#. module: stock
+#: view:stock.change.standard.price:0
+msgid "Cost Price"
+msgstr "Kost pris"
+
+#. module: stock
+#: view:product.product:0
+#: field:product.product,valuation:0
+msgid "Inventory Valuation"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Process Later"
+msgstr ""
+
+#. module: stock
+#: help:res.partner,property_stock_supplier:0
+msgid ""
+"This stock location will be used, instead of the default one, as the source "
+"location for goods you receive from the current partner"
+msgstr ""
+
+#. module: stock
+#: field:stock.warehouse,partner_address_id:0
+msgid "Owner Address"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,price_unit:0
+msgid ""
+"Technical field used to record the product cost set by the user during a "
+"picking confirmation (when average price costing method is used)"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_stock_move_report
+msgid ""
+"Moves Analysis allows you to easily check and analyse your company stock "
+"moves. Use this report when you want to analyse the different routes taken "
+"by your products and inventory management performance."
+msgstr ""
+
+#. module: stock
+#: field:report.stock.move,day_diff1:0
+msgid "Planned Lead Time (Days)"
+msgstr ""
+
+#. module: stock
+#: field:stock.change.standard.price,new_price:0
+msgid "Price"
+msgstr "Pris"
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Search Inventory"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.track,quantity:0
+msgid "Quantity per lot"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2012
+#, python-format
+msgid ""
+"There is no stock input account defined for this product or its category: "
+"\"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:360
+#, python-format
+msgid "Received Qty"
+msgstr ""
+
+#. module: stock
+#: field:stock.production.lot,ref:0
+msgid "Internal Reference"
+msgstr ""
+
+#. module: stock
+#: help:stock.production.lot,prefix:0
+msgid ""
+"Optional prefix to prepend when displaying this serial number: PREFIX/SERIAL "
+"[INT_REF]"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_view_stock_fill_inventory
+#: model:ir.model,name:stock.model_stock_fill_inventory
+#: view:stock.fill.inventory:0
+msgid "Import Inventory"
+msgstr ""
+
+#. module: stock
+#: field:stock.incoterms,name:0
+#: field:stock.move,name:0
+#: field:stock.warehouse,name:0
+msgid "Name"
+msgstr ""
+
+#. module: stock
+#: view:product.product:0
+msgid "Stocks"
+msgstr "Lager"
+
+#. module: stock
+#: model:ir.module.module,description:stock.module_meta_information
+msgid ""
+"OpenERP Inventory Management module can manage multi-warehouses, multi and "
+"structured stock locations.\n"
+"Thanks to the double entry management, the inventory controlling is powerful "
+"and flexible:\n"
+"* Moves history and planning,\n"
+"* Different inventory methods (FIFO, LIFO, ...)\n"
+"* Stock valuation (standard or average price, ...)\n"
+"* Robustness faced with Inventory differences\n"
+"* Automatic reordering rules (stock level, JIT, ...)\n"
+"* Bar code supported\n"
+"* Rapid detection of mistakes through double entry system\n"
+"* Traceability (upstream/downstream, production lots, serial number, ...)\n"
+"* Dashboard for warehouse that includes:\n"
+" * Products to receive in delay (date < = today)\n"
+" * Procurement in exception\n"
+" * Graph : Number of Receive products vs planned (bar graph on week par "
+"day)\n"
+" * Graph : Number of Delivery products vs planned (bar graph on week par "
+"day)\n"
+" "
+msgstr ""
+
+#. module: stock
+#: help:product.template,property_stock_inventory:0
+msgid ""
+"For the current product, this stock location will be used, instead of the "
+"default one, as the source location for stock moves generated when you do an "
+"inventory"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.lines.date:0
+msgid "Stockable"
+msgstr ""
+
+#. module: stock
+#: selection:product.product,valuation:0
+msgid "Real Time (automated)"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,tracking_id:0
+msgid "Logistical shipping unit: pallet, box, pack ..."
+msgstr ""
+
+#. module: stock
+#: view:stock.change.product.qty:0
+#: view:stock.change.standard.price:0
+msgid "_Apply"
+msgstr ""
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+#: report:stock.inventory.move:0
+#: report:stock.picking.list:0
+msgid "]"
+msgstr "]"
+
+#. module: stock
+#: field:product.template,property_stock_inventory:0
+msgid "Inventory Location"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: view:report.stock.move:0
+msgid "Total value"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,chained_journal_id:0
+msgid ""
+"Inventory Journal in which the chained move will be written, if the Chaining "
+"Type is not Transparent (no journal is used if left empty)"
+msgstr ""
+
+#. module: stock
+#: view:board.board:0
+#: model:ir.actions.act_window,name:stock.action_incoming_product_board
+msgid "Incoming Product"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Creation"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.memory.in,cost:0
+#: field:stock.move.memory.out,cost:0
+msgid "Cost"
+msgstr "Pris"
+
+#. module: stock
+#: field:product.category,property_stock_account_input_categ:0
+#: field:product.template,property_stock_account_input:0
+#: field:stock.change.standard.price,stock_account_input:0
+#: field:stock.location,valuation_in_account_id:0
+msgid "Stock Input Account"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_stock_warehouse_mgmt
+#: model:ir.ui.menu,name:stock.menu_warehouse_config
+msgid "Warehouse Management"
+msgstr ""
+
+#. module: stock
+#: selection:stock.picking,move_type:0
+msgid "Partial Delivery"
+msgstr ""
+
+#. module: stock
+#: selection:stock.location,chained_auto_packing:0
+msgid "Automatic No Step Added"
+msgstr ""
+
+#. module: stock
+#: view:stock.location.product:0
+msgid "Stock Location Analysis"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,date:0
+msgid ""
+"Move date: scheduled date until move is done, then date of actual move "
+"processing"
+msgstr ""
+
+#. module: stock
+#: field:report.stock.lines.date,date:0
+msgid "Latest Inventory Date"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: view:report.stock.move:0
+#: view:stock.inventory:0
+#: view:stock.move:0
+#: view:stock.picking:0
+#: view:stock.production.lot:0
+msgid "Group By..."
+msgstr ""
+
+#. module: stock
+#: view:stock.location:0
+msgid "Chained Locations"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.location_inventory
+msgid "Inventory loss"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1311
+#, python-format
+msgid "Document"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Input Picking List"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,product_uom:0
+#: field:stock.move.memory.in,product_uom:0
+#: field:stock.move.memory.out,product_uom:0
+msgid "Unit of Measure"
+msgstr "Måleenhed"
+
+#. module: stock
+#: code:addons/stock/product.py:176
+#, python-format
+msgid "Products: "
+msgstr ""
+
+#. module: stock
+#: help:product.product,track_production:0
+msgid ""
+"Forces to specify a Production Lot for all moves containing this product and "
+"generated by a Manufacturing Order"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.track_line_old
+#: view:stock.move.track:0
+msgid "Tracking a move"
+msgstr ""
+
+#. module: stock
+#: view:product.product:0
+msgid "Update"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_stock_journal_form
+#: model:ir.ui.menu,name:stock.menu_action_stock_journal_form
+msgid "Stock Journals"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,type:0
+msgid "Others"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:90
+#, python-format
+msgid "Could not find any difference between standard price and new price!"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_partial_picking
+msgid "Partial Picking"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_scrapped
+#: field:stock.move,scrapped:0
+msgid "Scrapped"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Products "
+msgstr ""
+
+#. module: stock
+#: field:product.product,track_incoming:0
+msgid "Track Incoming Lots"
+msgstr ""
+
+#. module: stock
+#: view:board.board:0
+msgid "Warehouse board"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:380
+#, python-format
+msgid "Future Qty"
+msgstr ""
+
+#. module: stock
+#: field:product.category,property_stock_variation:0
+msgid "Stock Variation Account"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,note:0
+#: view:stock.picking:0
+#: field:stock.picking,note:0
+msgid "Notes"
+msgstr ""
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+msgid "Value"
+msgstr "Værdi"
+
+#. module: stock
+#: field:report.stock.move,type:0
+#: field:stock.location,chained_picking_type:0
+#: field:stock.picking,type:0
+msgid "Shipping Type"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2210
+#, python-format
+msgid "You can only delete draft moves."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_picking.py:97
+#: model:ir.actions.act_window,name:stock.act_product_location_open
+#: model:ir.ui.menu,name:stock.menu_stock_products_menu
+#: view:stock.inventory:0
+#: view:stock.picking:0
+#, python-format
+msgid "Products"
+msgstr ""
+
+#. module: stock
+#: view:stock.change.standard.price:0
+msgid "Change Price"
+msgstr ""
+
+#. module: stock
+#: field:stock.picking,move_type:0
+msgid "Delivery Method"
+msgstr ""
+
+#. module: stock
+#: help:report.stock.move,location_dest_id:0
+#: help:stock.move,location_dest_id:0
+#: help:stock.picking,location_dest_id:0
+msgid "Location where the system will stock the finished products."
+msgstr ""
+
+#. module: stock
+#: help:product.category,property_stock_variation:0
+msgid ""
+"When real-time inventory valuation is enabled on a product, this account "
+"will hold the current value of the products."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_reception_picking_move
+msgid ""
+"Here you can receive individual products, no matter what purchase order or "
+"picking order they come from. You will find the list of all products you are "
+"waiting for. Once you receive an order, you can filter based on the name of "
+"the supplier or the purchase order reference. Then you can confirm all "
+"products received using the buttons on the right of each line."
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move
+msgid "Stock Move"
+msgstr "Lager flytning"
+
+#. module: stock
+#: view:report.stock.move:0
+msgid "Delay(Days)"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.memory.in,move_id:0
+#: field:stock.move.memory.out,move_id:0
+msgid "Move"
+msgstr "Flyt"
+
+#. module: stock
+#: help:stock.picking,min_date:0
+msgid "Expected date for the picking to be processed"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:376
+#, python-format
+msgid "P&L Qty"
+msgstr ""
+
+#. module: stock
+#: view:stock.production.lot:0
+#: field:stock.production.lot,revisions:0
+msgid "Revisions"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "This operation will cancel the shipment. Do you want to continue?"
+msgstr ""
+
+#. module: stock
+#: help:product.product,valuation:0
+msgid ""
+"If real-time valuation is enabled for a product, the system will "
+"automatically write journal entries corresponding to stock moves.The "
+"inventory variation account set on the product category will represent the "
+"current inventory value, and the stock input and stock output account will "
+"hold the counterpart moves for incoming and outgoing products."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_stock_inventory_report
+msgid ""
+"Inventory Analysis allows you to easily check and analyse your company stock "
+"levels. Sort and group by selection criteria in order to better analyse and "
+"manage your company activities."
+msgstr ""
+
+#. module: stock
+#: help:report.stock.move,location_id:0
+#: help:stock.move,location_id:0
+msgid ""
+"Sets a location if you produce at a fixed location. This can be a partner "
+"location if you subcontract the manufacturing operations."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_location_form
+msgid ""
+"Define your locations to reflect your warehouse structure and organization. "
+"OpenERP is able to manage physical locations (warehouses, shelves, bin, "
+"etc), partner locations (customers, suppliers) and virtual locations which "
+"are the counterpart of the stock operations like the manufacturing orders "
+"consumptions, inventories, etc. Every stock operation in OpenERP moves the "
+"products from one location to another one. For instance, if you receive "
+"products from a supplier, OpenERP will move products from the Supplier "
+"location to the Stock location. Each report can be performed on physical, "
+"partner or virtual locations."
+msgstr ""
+
+#. module: stock
+#: view:stock.invoice.onshipping:0
+msgid "Create"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Dates"
+msgstr "Datoer"
+
+#. module: stock
+#: field:stock.move,priority:0
+msgid "Priority"
+msgstr "Prioritet"
+
+#. module: stock
+#: view:stock.move:0
+msgid "Source"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2589
+#: model:ir.model,name:stock.model_stock_inventory
+#: selection:report.stock.inventory,location_type:0
+#: field:stock.inventory.line,inventory_id:0
+#: report:stock.inventory.move:0
+#: selection:stock.location,usage:0
+#, python-format
+msgid "Inventory"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_picking
+msgid "Picking List"
+msgstr ""
+
+#. module: stock
+#: sql_constraint:stock.production.lot:0
+msgid ""
+"The combination of serial number and internal reference must be unique !"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_ups
+msgid "Stock ups"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Cancel Inventory"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.split.lines,name:0
+#: field:stock.move.split.lines.exist,name:0
+msgid "Tracking serial"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/report/report_stock.py:78
+#: code:addons/stock/report/report_stock.py:135
+#: code:addons/stock/stock.py:754
+#, python-format
+msgid "Error !"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_replacement_result
+msgid "Stock Replacement result"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_stock_unit_measure_stock
+#: model:ir.ui.menu,name:stock.menu_stock_uom_form_action
+msgid "Units of Measure"
+msgstr "Måleenheder"
+
+#. module: stock
+#: selection:stock.location,chained_location_type:0
+msgid "Fixed Location"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "July"
+msgstr "Juli"
+
+#. module: stock
+#: view:report.stock.lines.date:0
+msgid "Consumable"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_stock_line_date
+msgid ""
+"Display the last inventories done on your products and easily sort them with "
+"specific filtering criteria. If you do frequent and partial inventories, you "
+"need this report in order to ensure that the stock of each product is "
+"controlled at least once a year."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.report.xml,name:stock.report_product_history
+msgid "Stock Level Forecast"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_journal
+#: field:report.stock.move,stock_journal:0
+#: view:stock.journal:0
+#: field:stock.journal,name:0
+#: field:stock.picking,stock_journal_id:0
+msgid "Stock Journal"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,location_type:0
+#: selection:stock.location,usage:0
+msgid "Procurement"
+msgstr "Indkøb"
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_4
+msgid "Maxtor Suppliers"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_change_product_qty.py:80
+#: code:addons/stock/wizard/stock_change_standard_price.py:106
+#, python-format
+msgid "Active ID is not set in Context"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Force Availability"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.move_scrap
+#: view:stock.move.scrap:0
+msgid "Scrap Move"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:138
+#: model:ir.actions.act_window,name:stock.action_reception_picking_move
+#: model:ir.ui.menu,name:stock.menu_action_pdct_in
+#: view:stock.move:0
+#, python-format
+msgid "Receive Products"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:131
+#: model:ir.actions.act_window,name:stock.action_out_picking_move
+#: model:ir.ui.menu,name:stock.menu_action_pdct_out
+#, python-format
+msgid "Deliver Products"
+msgstr ""
+
+#. module: stock
+#: view:stock.location.product:0
+msgid "View Stock of Products"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Internal Picking list"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+#: field:report.stock.move,month:0
+msgid "Month"
+msgstr "Måned"
+
+#. module: stock
+#: help:stock.picking,date_done:0
+msgid "Date of Completion"
+msgstr ""
+
+#. module: stock
+#: help:stock.production.lot,name:0
+msgid "Unique production lot, will be displayed as: PREFIX/SERIAL [INT_REF]"
+msgstr ""
+
+#. module: stock
+#: help:stock.tracking,active:0
+msgid ""
+"By unchecking the active field, you may hide a pack without deleting it."
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory.merge:0
+msgid "Yes"
+msgstr "Ja"
+
+#. module: stock
+#: field:stock.inventory,inventory_line_id:0
+msgid "Inventories"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+msgid "Todo"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,company_id:0
+#: view:report.stock.move:0
+#: field:report.stock.move,company_id:0
+#: field:stock.inventory,company_id:0
+#: field:stock.inventory.line,company_id:0
+#: field:stock.location,company_id:0
+#: field:stock.move,company_id:0
+#: field:stock.picking,company_id:0
+#: field:stock.production.lot,company_id:0
+#: field:stock.production.lot.revision,company_id:0
+#: field:stock.warehouse,company_id:0
+msgid "Company"
+msgstr "Virksomhed"
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Unit Of Measure"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:122
+#, python-format
+msgid ""
+"There is no stock input account defined for this product: \"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2339
+#, python-format
+msgid "Can not consume a move with negative or zero quantity !"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,stock_real:0
+msgid "Real Stock"
+msgstr ""
+
+#. module: stock
+#: view:stock.fill.inventory:0
+msgid "Fill Inventory"
+msgstr ""
+
+#. module: stock
+#: constraint:product.template:0
+msgid ""
+"Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: stock
+#: help:product.category,property_stock_account_input_categ:0
+msgid ""
+"When doing real-time inventory valuation, counterpart Journal Items for all "
+"incoming stock moves will be posted in this account. This is the default "
+"value for all products in this category, it can also directly be set on each "
+"product."
+msgstr ""
+
+#. module: stock
+#: field:stock.production.lot.revision,date:0
+msgid "Revision Date"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,prodlot_id:0
+#: view:stock.move:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.move.split.lines.exist,lot_id:0
+#: report:stock.picking.list:0
+msgid "Lot"
+msgstr ""
+
+#. module: stock
+#: view:stock.move.split:0
+msgid "Production Lot Number"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,product_uos_qty:0
+msgid "Quantity (UOS)"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1664
+#, python-format
+msgid ""
+"You are moving %.2f %s products but only %.2f %s available in this lot."
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Set Available"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Contact Address :"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,backorder_id:0
+msgid "Back Order"
+msgstr ""
+
+#. module: stock
+#: field:stock.incoterms,active:0
+#: field:stock.location,active:0
+#: field:stock.tracking,active:0
+msgid "Active"
+msgstr "Aktiv"
+
+#. module: stock
+#: model:ir.module.module,shortdesc:stock.module_meta_information
+msgid "Inventory Management"
+msgstr ""
+
+#. module: stock
+#: view:product.template:0
+msgid "Properties"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:974
+#, python-format
+msgid "Error, no partner !"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_incoterms_tree
+#: model:ir.model,name:stock.model_stock_incoterms
+#: model:ir.ui.menu,name:stock.menu_action_incoterm_open
+#: view:stock.incoterms:0
+msgid "Incoterms"
+msgstr "Incoterms"
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+#: report:stock.inventory.move:0
+msgid "Total:"
+msgstr "Total:"
+
+#. module: stock
+#: help:stock.incoterms,name:0
+msgid ""
+"Incoterms are series of sales terms.They are used to divide transaction "
+"costs and responsibilities between buyer and seller and reflect state-of-the-"
+"art transportation practices."
+msgstr ""
+
+#. module: stock
+#: help:stock.fill.inventory,recursive:0
+msgid ""
+"If checked, products contained in child locations of selected location will "
+"be included as well."
+msgstr ""
+
+#. module: stock
+#: field:stock.move.track,tracking_prefix:0
+msgid "Tracking prefix"
+msgstr ""
+
+#. module: stock
+#: field:stock.inventory,name:0
+msgid "Inventory Reference"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1304
+#, python-format
+msgid "Internal picking"
+msgstr ""
+
+#. module: stock
+#: view:stock.location.product:0
+msgid "Open Product"
+msgstr ""
+
+#. module: stock
+#: field:stock.location.product,to_date:0
+msgid "To"
+msgstr "Til"
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Process"
+msgstr ""
+
+#. module: stock
+#: field:stock.production.lot.revision,name:0
+msgid "Revision Name"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_warehouse
+#: model:ir.ui.menu,name:stock.menu_stock_root
+#: view:stock.warehouse:0
+msgid "Warehouse"
+msgstr "Lagersted"
+
+#. module: stock
+#: view:stock.location.product:0
+msgid ""
+"(Keep empty to open the current situation. Adjust HH:MM:SS to 00:00:00 to "
+"filter all resources of the day for the 'From' date and 23:59:59 for the "
+"'To' date)"
+msgstr ""
+
+#. module: stock
+#: view:product.category:0
+msgid "Accounting Stock Properties"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_picking_tree_out
+msgid "Customers Packings"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,state:0
+#: view:report.stock.move:0
+#: selection:report.stock.move,state:0
+#: selection:stock.inventory,state:0
+#: view:stock.move:0
+#: selection:stock.move,state:0
+#: view:stock.picking:0
+#: selection:stock.picking,state:0
+msgid "Done"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_view_change_standard_price
+#: model:ir.model,name:stock.model_stock_change_standard_price
+#: view:stock.change.standard.price:0
+msgid "Change Standard Price"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_locations_virtual
+msgid "Virtual Locations"
+msgstr ""
+
+#. module: stock
+#: selection:stock.picking,invoice_state:0
+msgid "To Be Invoiced"
+msgstr ""
+
+#. module: stock
+#: field:stock.inventory,date_done:0
+msgid "Date done"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:975
+#, python-format
+msgid ""
+"Please put a partner on the picking list if you want to generate invoice."
+msgstr ""
+
+#. module: stock
+#: selection:stock.move,priority:0
+msgid "Not urgent"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "To Do"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_warehouse_form
+#: model:ir.ui.menu,name:stock.menu_action_warehouse_form
+msgid "Warehouses"
+msgstr "Lagersteder"
+
+#. module: stock
+#: field:stock.journal,user_id:0
+msgid "Responsible"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,returned_price:0
+msgid "Returned product price"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_stock_inventory_report
+#: model:ir.ui.menu,name:stock.menu_action_stock_inventory_report
+#: view:report.stock.inventory:0
+msgid "Inventory Analysis"
+msgstr ""
+
+#. module: stock
+#: field:stock.invoice.onshipping,journal_id:0
+msgid "Destination Journal"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.act_stock_tracking_lot_2_stock_report_tracklots
+#: model:stock.location,name:stock.stock_location_stock
+msgid "Stock"
+msgstr "Lager"
+
+#. module: stock
+#: model:ir.model,name:stock.model_product_product
+#: model:ir.ui.menu,name:stock.menu_product_in_config_stock
+#: model:ir.ui.menu,name:stock.menu_stock_product
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,product_id:0
+#: field:report.stock.lines.date,product_id:0
+#: view:report.stock.move:0
+#: field:report.stock.move,product_id:0
+#: field:stock.change.product.qty,product_id:0
+#: field:stock.inventory.line,product_id:0
+#: field:stock.inventory.line.split,product_id:0
+#: report:stock.inventory.move:0
+#: view:stock.move:0
+#: field:stock.move,product_id:0
+#: field:stock.move.consume,product_id:0
+#: field:stock.move.memory.in,product_id:0
+#: field:stock.move.memory.out,product_id:0
+#: field:stock.move.scrap,product_id:0
+#: field:stock.move.split,product_id:0
+#: view:stock.production.lot:0
+#: field:stock.production.lot,product_id:0
+#: field:stock.report.prodlots,product_id:0
+#: field:stock.report.tracklots,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:126
+#, python-format
+msgid "Invoicing"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2274
+#: code:addons/stock/stock.py:2334
+#, python-format
+msgid "Please provide Proper Quantity !"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,product_uos:0
+msgid "Product UOS"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,posz:0
+msgid "Height (Z)"
+msgstr ""
+
+#. module: stock
+#: field:stock.ups,weight:0
+msgid "Lot weight"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_consume
+#: view:stock.move.consume:0
+msgid "Consume Products"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1663
+#, python-format
+msgid "Insufficient Stock in Lot !"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,parent_right:0
+msgid "Right Parent"
+msgstr ""
+
+#. module: stock
+#: field:stock.picking,address_id:0
+msgid "Address"
+msgstr ""
+
+#. module: stock
+#: report:lot.stock.overview:0
+#: report:lot.stock.overview_all:0
+msgid "Variants"
+msgstr "Varianter"
+
+#. module: stock
+#: field:stock.location,posx:0
+msgid "Corridor (X)"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_suppliers
+msgid "Suppliers"
+msgstr "Leverandører"
+
+#. module: stock
+#: field:report.stock.inventory,value:0
+#: field:report.stock.move,value:0
+msgid "Total Value"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_product_by_category_stock_form
+msgid "Products by Category"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_product_category_config_stock
+msgid "Products Categories"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.memory.in,wizard_id:0
+#: field:stock.move.memory.out,wizard_id:0
+msgid "Wizard"
+msgstr "Guide"
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_view_stock_location_product
+#: model:ir.model,name:stock.model_stock_location_product
+msgid "Products by Location"
+msgstr ""
+
+#. module: stock
+#: field:stock.fill.inventory,recursive:0
+msgid "Include children"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_components
+msgid "Shelf 1"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_picking_tree6
+msgid ""
+"Internal Moves display all inventory operations you have to perform in your "
+"warehouse. All operations can be categorized into stock journals, so that "
+"each worker has his own list of operations to perform in his own journal. "
+"Most operations are prepared automatically by OpenERP according to your "
+"preconfigured logistics rules, but you can also record manual stock "
+"operations."
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Order"
+msgstr ""
+
+#. module: stock
+#: field:stock.tracking,name:0
+msgid "Pack Reference"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+#: field:report.stock.move,location_id:0
+#: field:stock.move,location_id:0
+msgid "Source Location"
+msgstr ""
+
+#. module: stock
+#: view:product.template:0
+msgid "Accounting Entries"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Total"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_intermediatelocation0
+msgid "Internal Shippings"
+msgstr ""
+
+#. module: stock
+#: field:stock.change.standard.price,enable_stock_in_out_acc:0
+msgid "Enable Related Account"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,stock_virtual_value:0
+msgid "Virtual Stock Value"
+msgstr ""
+
+#. module: stock
+#: view:product.product:0
+#: view:stock.inventory.line.split:0
+#: view:stock.move.split:0
+msgid "Lots"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "New pack"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Destination"
+msgstr ""
+
+#. module: stock
+#: selection:stock.picking,move_type:0
+msgid "All at once"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1620
+#, python-format
+msgid ""
+"Quantities, UoMs, Products and Locations cannot be modified on stock moves "
+"that have already been processed (except by the Administrator)"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:386
+#, python-format
+msgid "Future Productions"
+msgstr "Fremtidige produktioner"
+
+#. module: stock
+#: view:stock.picking:0
+msgid "To Invoice"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:115
+#, python-format
+msgid "Return lines"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_report_stock_lines_date
+#: view:report.stock.lines.date:0
+msgid "Dates of Inventories"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+msgid "Total incoming quantity"
+msgstr ""
+
+#. module: stock
+#: field:report.stock.move,product_qty_out:0
+msgid "Out Qty"
+msgstr ""
+
+#. module: stock
+#: field:stock.production.lot,move_ids:0
+msgid "Moves for this production lot"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_memory_out
+msgid "stock.move.memory.out"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_fill_inventory.py:115
+#, python-format
+msgid "Message !"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Put in current pack"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Lot Inventory"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Reason"
+msgstr "Årsag"
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Delivery Order:"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_production_lot_form
+msgid ""
+"This is the list of all the production lots (serial numbers) you recorded. "
+"When you select a lot, you can get the upstream or downstream traceability "
+"of the products contained in lot. By default, the list is filtred on the "
+"serial numbers that are available in your warehouse but you can uncheck the "
+"'Available' button to get all the lots you produced, received or delivered "
+"to customers."
+msgstr ""
+
+#. module: stock
+#: field:stock.location,icon:0
+msgid "Icon"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2209
+#: code:addons/stock/stock.py:2617
+#, python-format
+msgid "UserError"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory.line.split:0
+#: view:stock.move.consume:0
+#: view:stock.move.scrap:0
+#: view:stock.move.split:0
+#: view:stock.move.track:0
+#: view:stock.split.into:0
+msgid "Ok"
+msgstr "OK"
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_8
+msgid "Non European Customers"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:76
+#: code:addons/stock/product.py:90
+#: code:addons/stock/product.py:93
+#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:121
+#: code:addons/stock/product.py:147
+#: code:addons/stock/stock.py:2006
+#: code:addons/stock/stock.py:2009
+#: code:addons/stock/stock.py:2012
+#: code:addons/stock/stock.py:2015
+#: code:addons/stock/stock.py:2018
+#: code:addons/stock/stock.py:2021
+#: code:addons/stock/stock.py:2339
+#: code:addons/stock/wizard/stock_fill_inventory.py:47
+#: code:addons/stock/wizard/stock_splitinto.py:49
+#: code:addons/stock/wizard/stock_splitinto.py:53
+#, python-format
+msgid "Error!"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2021
+#, python-format
+msgid ""
+"There is no inventory variation account defined on the product category: "
+"\"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory.merge:0
+msgid "Do you want to merge theses inventories ?"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,state:0
+#: selection:report.stock.move,state:0
+#: selection:stock.inventory,state:0
+#: selection:stock.move,state:0
+#: selection:stock.picking,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Picking"
+msgstr ""
+
+#. module: stock
+#: help:stock.picking,move_type:0
+msgid "It specifies goods to be delivered all at once or by direct delivery"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_invoice_onshipping.py:85
+#, python-format
+msgid "This picking list does not require invoicing."
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,type:0
+#: selection:stock.location,chained_picking_type:0
+#: selection:stock.picking,type:0
+msgid "Getting Goods"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,chained_location_type:0
+msgid ""
+"Determines whether this location is chained to another location, i.e. any "
+"incoming product in this location \n"
+"should next go to the chained location. The chained location is determined "
+"according to the type :\n"
+"* None: No chaining at all\n"
+"* Customer: The chained location will be taken from the Customer Location "
+"field on the Partner form of the Partner that is specified in the Picking "
+"list of the incoming products.\n"
+"* Fixed Location: The chained location is taken from the next field: Chained "
+"Location if Fixed."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_inventory_merge.py:43
+#: code:addons/stock/wizard/stock_inventory_merge.py:63
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1318
+#: code:addons/stock/stock.py:2589
+#, python-format
+msgid "is done."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_picking_tree
+#: model:ir.ui.menu,name:stock.menu_action_picking_tree
+#: view:stock.picking:0
+msgid "Delivery Orders"
+msgstr ""
+
+#. module: stock
+#: help:res.partner,property_stock_customer:0
+msgid ""
+"This stock location will be used, instead of the default one, as the "
+"destination location for goods you send to this partner"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,state:0
+#: selection:report.stock.move,state:0
+#: selection:stock.inventory,state:0
+#: view:stock.picking:0
+#: selection:stock.picking,state:0
+msgid "Confirmed"
+msgstr "Bekræftet"
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Confirm"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,icon:0
+msgid "Icon show in hierarchical tree view"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_view_stock_merge_inventories
+#: view:stock.inventory.merge:0
+msgid "Merge inventories"
+msgstr ""
+
+#. module: stock
+#: help:stock.change.product.qty,new_quantity:0
+msgid "This quantity is expressed in the Default UoM of the product."
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Reception:"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,scrap_location:0
+msgid ""
+"Check this box to allow using this location to put scrapped/damaged goods."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.act_relate_picking
+msgid "Related Picking"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+msgid "Total outgoing quantity"
+msgstr ""
+
+#. module: stock
+#: field:stock.picking,backorder_id:0
+msgid "Back Order of"
+msgstr ""
+
+#. module: stock
+#: help:stock.move.memory.in,cost:0
+#: help:stock.move.memory.out,cost:0
+msgid "Unit Cost for this product line"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_product_category
+#: view:report.stock.inventory:0
+#: field:report.stock.inventory,product_categ_id:0
+#: view:report.stock.move:0
+#: field:report.stock.move,categ_id:0
+msgid "Product Category"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_change_product_qty.py:88
+#, python-format
+msgid "INV: %s"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.next_id_61
+msgid "Reporting"
+msgstr "Rapportering"
+
+#. module: stock
+#: code:addons/stock/stock.py:1313
+#, python-format
+msgid " for the "
+msgstr ""
+
+#. module: stock
+#: view:stock.split.into:0
+msgid "Quantity to leave in the current pack"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_stock_invoice_onshipping
+#: view:stock.invoice.onshipping:0
+msgid "Create invoice"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_stock_configuration
+msgid "Configuration"
+msgstr ""
+
+#. module: stock
+#: field:stock.inventory.line.split,use_exist:0
+#: field:stock.move.split,use_exist:0
+msgid "Existing Lots"
+msgstr ""
+
+#. module: stock
+#: field:product.product,location_id:0
+#: view:stock.location:0
+msgid "Stock Location"
+msgstr ""
+
+#. module: stock
+#: help:stock.change.standard.price,new_price:0
+msgid ""
+"If cost price is increased, stock variation account will be debited and "
+"stock output account will be credited with the value = (difference of amount "
+"* quantity available).\n"
+"If cost price is decreased, stock variation account will be creadited and "
+"stock input account will be debited."
+msgstr ""
+
+#. module: stock
+#: field:stock.location,chained_journal_id:0
+msgid "Chaining Journal"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:732
+#, python-format
+msgid "Not enough stock, unable to reserve the products."
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_customers
+msgid "Customers"
+msgstr "Kunder"
+
+#. module: stock
+#: code:addons/stock/stock.py:1317
+#, python-format
+msgid "is cancelled."
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory.line:0
+msgid "Stock Inventory Lines"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_picking.py:97
+#, python-format
+msgid "Process Document"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:368
+#, python-format
+msgid "Future Deliveries"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Additional info"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: field:stock.move,tracking_id:0
+msgid "Pack"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: view:stock.picking:0
+msgid "Date Expected"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_picking_tree4
+msgid ""
+"The Incoming Shipments is the list of all orders you will receive from your "
+"supplier. An incoming shipment contains a list of products to be received "
+"according to the original purchase order. You can validate the shipment "
+"totally or partially."
+msgstr ""
+
+#. module: stock
+#: field:stock.move,auto_validate:0
+msgid "Auto Validate"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+msgid "Weight"
+msgstr "Vægt"
+
+#. module: stock
+#: model:ir.model,name:stock.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "December"
+msgstr "December"
+
+#. module: stock
+#: selection:stock.location,chained_auto_packing:0
+msgid "Automatic Move"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_move_form2
+msgid ""
+"This menu gives you the full traceability of inventory operations on a "
+"specific product. You can filter on the product to see all the past or "
+"future movements for the product."
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Return Products"
+msgstr ""
+
+#. module: stock
+#: view:stock.inventory:0
+msgid "Validate Inventory"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,price_currency_id:0
+msgid ""
+"Technical field used to record the currency chosen by the user during a "
+"picking confirmation (when average price costing method is used)"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_stock_products_moves
+msgid "Products Moves"
+msgstr ""
+
+#. module: stock
+#: selection:stock.picking,invoice_state:0
+msgid "Invoiced"
+msgstr "Faktureret"
+
+#. module: stock
+#: field:stock.move,address_id:0
+msgid "Destination Address"
+msgstr ""
+
+#. module: stock
+#: field:stock.picking,max_date:0
+msgid "Max. Expected Date"
+msgstr ""
+
+#. module: stock
+#: field:stock.picking,auto_picking:0
+msgid "Auto-Picking"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_shop1
+msgid "Shop 2"
+msgstr ""
+
+#. module: stock
+#: constraint:res.partner:0
+msgid "Error ! You can not create recursive associated members."
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: view:report.stock.move:0
+#: selection:report.stock.move,type:0
+#: view:stock.location:0
+#: selection:stock.location,chained_picking_type:0
+#: selection:stock.picking,type:0
+msgid "Internal"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,state:0
+#: selection:report.stock.move,state:0
+#: selection:stock.inventory,state:0
+#: selection:stock.move,state:0
+#: selection:stock.picking,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.report.xml,name:stock.report_stock_inventory_move
+#: report:stock.inventory.move:0
+msgid "Stock Inventory"
+msgstr ""
+
+#. module: stock
+#: help:report.stock.inventory,state:0
+msgid ""
+"When the stock move is created it is in the 'Draft' state.\n"
+" After that it is set to 'Confirmed' state.\n"
+" If stock is available state is set to 'Avaiable'.\n"
+" When the picking it done the state is 'Done'. \n"
+"The state is 'Waiting' if the move is waiting for another one."
+msgstr ""
+
+#. module: stock
+#: view:board.board:0
+msgid "Outgoing Products Delay"
+msgstr ""
+
+#. module: stock
+#: field:stock.move.split.lines,use_exist:0
+msgid "Existing Lot"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:194
+#, python-format
+msgid "Please specify at least one non-zero quantity!"
+msgstr ""
+
+#. module: stock
+#: help:product.template,property_stock_procurement:0
+msgid ""
+"For the current product, this stock location will be used, instead of the "
+"default one, as the source location for stock moves generated by procurements"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:1316
+#, python-format
+msgid "is ready to process."
+msgstr ""
+
+#. module: stock
+#: help:stock.picking,origin:0
+msgid "Reference of the document that produced this picking."
+msgstr ""
+
+#. module: stock
+#: field:stock.fill.inventory,set_stock_zero:0
+msgid "Set to zero"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_invoice_onshipping.py:87
+#, python-format
+msgid "None of these picking lists require invoicing."
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "November"
+msgstr "November"
+
+#. module: stock
+#: code:addons/stock/product.py:101
+#: code:addons/stock/stock.py:2018
+#, python-format
+msgid "There is no journal defined on the product category: \"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:382
+#, python-format
+msgid "Unplanned Qty"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,chained_company_id:0
+msgid "Chained Company"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "Check Availability"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "January"
+msgstr "Januar"
+
+#. module: stock
+#: help:product.product,track_incoming:0
+msgid ""
+"Forces to specify a Production Lot for all moves containing this product and "
+"coming from a Supplier Location"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.act_product_stock_move_futur_open
+msgid "Future Stock Moves"
+msgstr ""
+
+#. module: stock
+#: field:stock.move,move_history_ids2:0
+msgid "Move History (parent moves)"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:364
+#, python-format
+msgid "Future Stock"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:512
+#: code:addons/stock/stock.py:1120
+#: code:addons/stock/stock.py:1128
+#: code:addons/stock/wizard/stock_invoice_onshipping.py:101
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: stock
+#: field:stock.ups.final,xmlfile:0
+msgid "XML File"
+msgstr ""
+
+#. module: stock
+#: view:stock.change.product.qty:0
+msgid "Select Quantity"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,help:stock.action_location_tree
+msgid ""
+"This is the structure of your company's warehouses and locations. You can "
+"click on a location to get the list of the products and their stock level in "
+"this particular location and all its children."
+msgstr ""
+
+#. module: stock
+#: model:res.request.link,name:stock.req_link_tracking
+#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.inventory.line,prod_lot_id:0
+#: report:stock.inventory.move:0
+#: field:stock.move,prodlot_id:0
+#: field:stock.move.memory.in,prodlot_id:0
+#: field:stock.move.memory.out,prodlot_id:0
+#: field:stock.move.split.lines.exist,prodlot_id:0
+#: view:stock.production.lot:0
+#: field:stock.production.lot,name:0
+msgid "Production Lot"
+msgstr ""
+
+#. module: stock
+#: model:ir.ui.menu,name:stock.menu_traceability
+#: view:stock.move:0
+#: view:stock.picking:0
+#: view:stock.production.lot:0
+#: view:stock.tracking:0
+msgid "Traceability"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "To invoice"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action_location_form
+#: model:ir.ui.menu,name:stock.menu_action_location_form
+#: view:stock.picking:0
+msgid "Locations"
+msgstr ""
+
+#. module: stock
+#: view:stock.picking:0
+msgid "General Information"
+msgstr ""
+
+#. module: stock
+#: field:stock.production.lot,prefix:0
+msgid "Prefix"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_splitinto.py:53
+#, python-format
+msgid ""
+"Total quantity after split exceeds the quantity to split for this product: "
+"\"%s\" (id: %d)"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+#: field:stock.partial.move,product_moves_in:0
+#: field:stock.partial.move,product_moves_out:0
+#: field:stock.partial.picking,product_moves_in:0
+#: field:stock.partial.picking,product_moves_out:0
+msgid "Moves"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+#: field:report.stock.move,location_dest_id:0
+#: field:stock.picking,location_dest_id:0
+msgid "Dest. Location"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,product_packaging:0
+msgid ""
+"It specifies attributes of packaging like type, quantity of packaging,etc."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2386
+#, python-format
+msgid "Product '%s' is consumed with '%s' quantity."
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:2595
+#, python-format
+msgid "Inventory '%s' is done."
+msgstr ""
+
+#. module: stock
+#: constraint:stock.move:0
+msgid "You must assign a production lot for this product"
+msgstr ""
+
+#. module: stock
+#: view:stock.move:0
+msgid "Expected"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.inventory,location_type:0
+#: model:stock.location,name:stock.location_production
+#: selection:stock.location,usage:0
+msgid "Production"
+msgstr "Produktion"
+
+#. module: stock
+#: view:stock.split.into:0
+msgid "Split Move"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/wizard/stock_return_picking.py:92
+#, python-format
+msgid ""
+"There are no products to return (only lines in Done state and not fully "
+"returned yet can be returned)!"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_move_split
+msgid "Split in Production lots"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.inventory:0
+msgid "Real"
+msgstr ""
+
+#. module: stock
+#: report:stock.picking.list:0
+#: view:stock.production.lot.revision:0
+#: field:stock.production.lot.revision,description:0
+msgid "Description"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "May"
+msgstr "Maj"
+
+#. module: stock
+#: code:addons/stock/wizard/stock_partial_move.py:133
+#, python-format
+msgid "Deliver"
+msgstr ""
+
+#. module: stock
+#: help:product.template,property_stock_account_output:0
+msgid ""
+"When doing real-time inventory valuation, counterpart Journal Items for all "
+"outgoing stock moves will be posted in this account. If not set on the "
+"product, the one from the product category is used."
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.act_window,name:stock.action5
+#: view:stock.tracking:0
+msgid "Upstream traceability"
+msgstr ""
+
+#. module: stock
+#: model:ir.actions.report.xml,name:stock.report_location_overview_all
+#: report:lot.stock.overview_all:0
+msgid "Location Content"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/product.py:388
+#, python-format
+msgid "Produced Qty"
+msgstr ""
+
+#. module: stock
+#: field:product.category,property_stock_account_output_categ:0
+#: field:product.template,property_stock_account_output:0
+#: field:stock.change.standard.price,stock_account_output:0
+#: field:stock.location,valuation_out_account_id:0
+msgid "Stock Output Account"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,chained_location_type:0
+msgid "Chained Location Type"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_report_prodlots
+msgid "Stock report by production lots"
+msgstr ""
+
+#. module: stock
+#: view:stock.location:0
+#: selection:stock.location,chained_location_type:0
+#: view:stock.move:0
+msgid "Customer"
+msgstr "Kunde"
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "February"
+msgstr "Februar"
+
+#. module: stock
+#: view:stock.production.lot:0
+msgid "Production Lot Identification"
+msgstr ""
+
+#. module: stock
+#: field:stock.location,scrap_location:0
+#: view:stock.move.scrap:0
+msgid "Scrap Location"
+msgstr ""
+
+#. module: stock
+#: selection:report.stock.move,month:0
+msgid "April"
+msgstr "April"
+
+#. module: stock
+#: view:report.stock.inventory:0
+#: view:stock.move:0
+msgid "Future"
+msgstr ""
+
+#. module: stock
+#: field:stock.invoice.onshipping,invoice_date:0
+msgid "Invoiced date"
+msgstr ""
+
+#. module: stock
+#: code:addons/stock/stock.py:732
+#: code:addons/stock/wizard/stock_fill_inventory.py:106
+#: code:addons/stock/wizard/stock_invoice_onshipping.py:85
+#: code:addons/stock/wizard/stock_invoice_onshipping.py:87
+#: code:addons/stock/wizard/stock_return_picking.py:77
+#: code:addons/stock/wizard/stock_return_picking.py:92
+#: code:addons/stock/wizard/stock_return_picking.py:194
+#, python-format
+msgid "Warning !"
+msgstr ""
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_output
+msgid "Output"
+msgstr ""
+
+#. module: stock
+#: selection:stock.move.split.lines,action:0
+msgid "Keep in one lot"
+msgstr ""
+
+#. module: stock
+#: view:product.product:0
+msgid "Cost Price:"
+msgstr ""
+
+#. module: stock
+#: help:stock.move,move_dest_id:0
+msgid "Optional: next stock move when chaining them"
+msgstr ""
+
+#. module: stock
+#: view:report.stock.move:0
+#: field:report.stock.move,year:0
+msgid "Year"
+msgstr "År"
+
+#. module: stock
+#: model:stock.location,name:stock.stock_location_locations
+msgid "Physical Locations"
+msgstr ""
+
+#. module: stock
+#: model:ir.model,name:stock.model_stock_partial_move
+msgid "Partial Move"
+msgstr ""
+
+#. module: stock
+#: help:stock.location,posx:0
+#: help:stock.location,posy:0
+#: help:stock.location,posz:0
+msgid "Optional localization details, for information purpose only"
+msgstr ""
diff --git a/addons/thunderbird/i18n/da.po b/addons/thunderbird/i18n/da.po
new file mode 100644
index 00000000000..594e02b8f74
--- /dev/null
+++ b/addons/thunderbird/i18n/da.po
@@ -0,0 +1,151 @@
+# Danish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-09-22 20:28+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Danish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-09-23 04:39+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
+
+#. module: thunderbird
+#: field:thunderbird.installer,plugin_file:0
+#: field:thunderbird.installer,thunderbird:0
+msgid "Thunderbird Plug-in"
+msgstr ""
+
+#. module: thunderbird
+#: help:thunderbird.installer,plugin_file:0
+msgid ""
+"Thunderbird plug-in file. Save as this file and install this plug-in in "
+"thunderbird."
+msgstr ""
+
+#. module: thunderbird
+#: help:thunderbird.installer,thunderbird:0
+msgid ""
+"Allows you to select an object that you would like to add to your email and "
+"its attachments."
+msgstr ""
+
+#. module: thunderbird
+#: help:thunderbird.installer,pdf_file:0
+msgid "The documentation file :- how to install Thunderbird Plug-in."
+msgstr ""
+
+#. module: thunderbird
+#: model:ir.model,name:thunderbird.model_email_server_tools
+msgid "Email Server Tools"
+msgstr ""
+
+#. module: thunderbird
+#: view:thunderbird.installer:0
+msgid "_Close"
+msgstr ""
+
+#. module: thunderbird
+#: field:thunderbird.installer,pdf_file:0
+msgid "Installation Manual"
+msgstr "Installations manual"
+
+#. module: thunderbird
+#: field:thunderbird.installer,description:0
+msgid "Description"
+msgstr "Beskrivelse:"
+
+#. module: thunderbird
+#: view:thunderbird.installer:0
+msgid "title"
+msgstr ""
+
+#. module: thunderbird
+#: model:ir.ui.menu,name:thunderbird.menu_base_config_plugins_thunderbird
+#: view:thunderbird.installer:0
+msgid "Thunderbird Plug-In"
+msgstr ""
+
+#. module: thunderbird
+#: view:thunderbird.installer:0
+msgid ""
+"This plug-in allows you to link your e-mail to OpenERP's documents. You can "
+"attach it to any existing one in OpenERP or create a new one."
+msgstr ""
+
+#. module: thunderbird
+#: model:ir.module.module,shortdesc:thunderbird.module_meta_information
+msgid "Thunderbird Interface"
+msgstr ""
+
+#. module: thunderbird
+#: model:ir.model,name:thunderbird.model_thunderbird_installer
+msgid "thunderbird.installer"
+msgstr ""
+
+#. module: thunderbird
+#: field:thunderbird.installer,name:0
+#: field:thunderbird.installer,pdf_name:0
+msgid "File name"
+msgstr "Fil Navn"
+
+#. module: thunderbird
+#: view:thunderbird.installer:0
+msgid "Installation and Configuration Steps"
+msgstr ""
+
+#. module: thunderbird
+#: field:thunderbird.installer,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: thunderbird
+#: model:ir.actions.act_window,name:thunderbird.action_thunderbird_installer
+#: model:ir.actions.act_window,name:thunderbird.action_thunderbird_wizard
+#: view:thunderbird.installer:0
+msgid "Thunderbird Plug-In Configuration"
+msgstr ""
+
+#. module: thunderbird
+#: model:ir.model,name:thunderbird.model_thunderbird_partner
+msgid "Thunderbid Plugin Tools"
+msgstr ""
+
+#. module: thunderbird
+#: view:thunderbird.installer:0
+msgid "Configure"
+msgstr "Konfigurer"
+
+#. module: thunderbird
+#: view:thunderbird.installer:0
+msgid "Skip"
+msgstr "Spring over"
+
+#. module: thunderbird
+#: field:thunderbird.installer,config_logo:0
+msgid "Image"
+msgstr "Billede"
+
+#. module: thunderbird
+#: model:ir.module.module,description:thunderbird.module_meta_information
+msgid ""
+"\n"
+" This module is required for the thuderbird plug-in to work\n"
+" properly.\n"
+" The Plugin allows you archive email and its attachments to the "
+"selected \n"
+" OpenERP objects. You can select a partner, a task, a project, an "
+"analytical\n"
+" account,or any other object and attach selected mail as eml file in \n"
+" attachment of selected record. You can create Documents for crm Lead,\n"
+" HR Applicant and project issue from selected mails.\n"
+"\n"
+" "
+msgstr ""