[[ data['model']=='account.account' and 'Company'or removeParentNode('para') ]]
- [[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]
+
[[ data['model']=='account.account' and 'Company'or removeParentNode('para') ]]
+ [[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]
[[ repeatIn(lines(data['form']), 'a') ]][[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['code'] or removeParentNode('tr') ]]
-
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ '..'*(a['level']-1) ]][[ a['name'] ]]
-
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['debit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[formatLang(a['debit']) ]]
-
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font')]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['credit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['credit']) ]]
-
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance']) ]]
+
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ '..'*(a['level']-1) ]][[ a['name'] ]]
+
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['debit']) ]] [[ company.currency_id.symbol ]][[ a['type']<>'view' and removeParentNode('font') ]] [[formatLang(a['debit']) ]] [[ company.currency_id.symbol ]]
+
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font')]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['credit']) ]] [[ company.currency_id.symbol ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['credit']) ]] [[ company.currency_id.symbol ]]
+
[[ (a['level']>2 and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance']) ]] [[ company.currency_id.symbol ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance']) ]] [[ company.currency_id.symbol ]]
Filter By [[ get_filter(data)!='No Filter' and '' or removeParentNode('font') ]]
-
Display Account
+
Display Account
Printing Date
@@ -194,25 +194,25 @@
[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
Start Date
-
End Date
-
+
End Date
+
-
[[ get_start_date(data)]]
-
[[get_end_date(data) ]]
+
[[ formatLang(get_start_date(data),date=True) ]]
+
[[ formatLang(get_end_date(data),date=True) ]]
[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
Start Period
-
End Period
-
+
End Period
+
[[ get_start_period(data) or removeParentNode('para') ]]
[[ get_end_period(data) or removeParentNode('para') ]]
-
+
-
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
+
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
- [[ repeatIn(get_lines_another('liability'), 'a') ]][[ a['code'] ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
+ [[ repeatIn(get_lines_another('liability'), 'a') ]][[ a['code'] ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
[[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
- [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]]
+ [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]] [[ company.currency_id.symbol ]]
- [[ formatLang(abs(sum_dr())) or 0.0 ]]
+ [[ formatLang(abs(sum_dr())) or 0.0 ]] [[ company.currency_id.symbol ]]
@@ -283,7 +283,7 @@
[[ a['code'] ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
- [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]]
+ [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]] [[ company.currency_id.symbol ]]
Filter By [[ get_filter(data)!='No Filter' and get_filter(data) ]]
-
Display Account
+
Display Account
Printing Date
@@ -214,28 +214,28 @@
[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
Start Date
-
End Date
-
+
End Date
+
-
[[ get_start_date(data)]]
-
[[get_end_date(data) ]]
+
[[ formatLang(get_start_date(data),date=True) ]]
+
[[ formatLang(get_end_date(data),date=True) ]]
[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
Start Period
-
End Period
-
+
End Period
+
[[ get_start_period(data) or removeParentNode('para') ]]
[[ get_end_period(data) or removeParentNode('para') ]]
-
+
-
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
+
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
- Total Amount([[ get_currency(data) ]])
+ Total Amount([[ get_currency(data) ]])
@@ -272,7 +272,7 @@
[[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
- [[ a['balance'] and formatLang(abs(a['balance'])) or '' ]]
+ [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]] [[ company.currency_id.symbol ]]
[[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['code1'] ]]
@@ -281,24 +281,24 @@
[[ '. '*(a['level1']-1) ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name1'] ]]
- [[ a['balance1'] and formatLang(abs(a['balance1'])) or 0.0 ]]
+ [[ a['balance1'] and formatLang(abs(a['balance1'])) or 0.0 ]] [[ company.currency_id.symbol ]]
[[ data['model']=='account.journal.period' and 'Company' or removeParentNode('para') ]]
- [[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]
+
[[ data['model']=='account.journal.period' and 'Company' or removeParentNode('para') ]]
+ [[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]
Fiscal Year
-
Journal
+
Journal
Filter By [[get_filter(data)!='No Filter' and get_filter(data) ]]
Printing Date
@@ -259,37 +259,37 @@
[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
Start Date
-
End Date
-
+
End Date
+
-
[[ get_start_date(data) ]]
-
[[ get_end_date(data) ]]
+
[[ formatLang(get_start_date(data),date=True) ]]
+
[[ formatLang(get_end_date(data),date=True) ]]
[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
Start Period
-
End Period
-
+
End Period
+
[[ get_start_period(data) or removeParentNode('para') ]]
[[ get_end_period(data) or removeParentNode('para') ]]
[[ data['model']=='account.account' and 'Company' or removeParentNode('para') ]]
- [[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]
+
[[ data['model']=='account.account' and 'Company' or removeParentNode('para') ]]
+ [[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]
Fiscal Year
Journals
-
Display Account
+
Display Account
Filter By [[ get_filter(data)!='No Filter' and get_filter(data) ]]
Entries Sorted By
Printing Date
@@ -216,28 +213,28 @@
[[ get_fiscalyear(data) or '' ]]
[[', '.join([ lt or '' for lt in get_journal(data) ]) ]]
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
-
+
[[ get_filter(data)=='No Filter' and get_filter(data) or removeParentNode('para') ]] [[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
Start Date
-
End Date
-
+
End Date
+
-
[[ get_start_date(data) ]]
-
[[get_end_date(data) ]]
+
[[ formatLang(get_start_date(data),date=True) ]]
+
[[ formatLang(get_end_date(data),date=True) ]]
[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
Start Period
-
End Period
-
+
End Period
+
[[ get_start_period(data) or removeParentNode('para') ]]
[[ get_end_period(data) or removeParentNode('para') ]]
- [[ get_data(data) or removeParentNode('para')]]
+ [[ get_data(data) or removeParentNode('para')]]
Chart of Account
Fiscal Year
Filter By [[ get_filter(data)!='No Filter' and get_filter(data) ]]
-
Display Account
+
Display Account
Printing Date
@@ -220,25 +212,25 @@
[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
Start Date
-
End Date
-
+
End Date
+
-
[[ get_start_date(data)]]
-
[[get_end_date(data) ]]
+
[[ formatLang(get_start_date(data),date=True) ]]
+
[[ formatLang(get_end_date(data),date=True) ]]
[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
Start Period
-
End Period
-
+
End Period
+
[[ get_start_period(data) or removeParentNode('para') ]]
[[ get_end_period(data) or removeParentNode('para') ]]
-
+
-
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
+
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
- [[ repeatIn(get_lines(),'a' ) ]] [[ a['code'] ]][[ a['level']<3 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
+ [[ repeatIn(get_lines(),'a' ) ]] [[ a['code'] ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
- [[ '. '*(a['level']-1) ]][[ a['level']<3 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
+ [[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
- [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]]
+ [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]] [[ company.currency_id.symbol ]]
- [[ a['code1'] ]][[ a['level1']<3 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
+ [[ a['code1'] ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
- [[ '. '*(a['level1']-1) ]][[ a['level1']<3 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name1'] ]]
+ [[ '. '*(a['level1']-1) ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name1'] ]]
- [[ a['balance1'] and formatLang(abs(a['balance1'])) or '' ]]
+ [[ a['balance1'] and formatLang(abs(a['balance1'])) or 0.0 ]] [[ company.currency_id.symbol ]]
@@ -308,7 +300,7 @@
[[ final_result()['type'] == 'Net Profit C.F.B.L.' and final_result()['type'] or '' ]]
- [[ final_result()['balance'] and final_result()['type'] == 'Net Profit C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]]
+ [[ final_result()['balance'] and final_result()['type'] == 'Net Profit C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]] [[ company.currency_id.symbol ]]
@@ -317,7 +309,7 @@
[[ final_result()['type'] == 'Net Loss C.F.B.L.' and final_result()['type'] or '' ]]
- [[ final_result()['balance'] and final_result()['type'] == 'Net Loss C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]]
+ [[ final_result()['balance'] and final_result()['type'] == 'Net Loss C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]] [[ company.currency_id.symbol ]]
Filter By [[ get_filter(data)!='No Filter' and get_filter(data) ]]
-
Display Account
+
Display Account
Printing Date
@@ -222,25 +215,25 @@
[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
Start Date
-
End Date
-
+
End Date
+
-
[[ get_start_date(data)]]
-
[[get_end_date(data) ]]
+
[[ formatLang(get_start_date(data),date=True) ]]
+
[[ formatLang(get_end_date(data),date=True) ]]
[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
Start Period
-
End Period
-
+
End Period
+
[[ get_start_period(data) or removeParentNode('para') ]]
[[ get_end_period(data) or removeParentNode('para') ]]
-
+
-
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
+
[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]
Concessions, brevets, licences,..., droits et valeurs similaires
[[bavar4]]
[[-bavar4b]]
[[bavar4+bavar4b]]
Fonds commercial
[[bavar5]]
[[-bavar5b]]
[[bavar5+bavar5b]]
Autres
[[bavar6]]
[[-bavar6b]]
[[bavar6+bavar6b]]
Immobilisations incorporelles en cours
[[bavar7]]
[[-bavar7b]]
[[bavar7+bavar7b]]
Avances et acomptes
[[bavar8]]
[[bavar8]]
IMMOBILISATIONS CORPORELLES
Terrains
[[bavar9]]
[[-bavar9b]]
[[bavar9+bavar9b]]
Constructions
[[bavar10]]
[[-bavar10b]]
[[bavar10+bavar10b]]
Installations techniques,matériel et outillage
[[bavar11]]
[[-bavar11b]]
[[bavar11+bavar11b]]
Autres
[[bavar12]]
[[-bavar12b]]
[[bavar12+bavar12b]]
Immobilisations corporelles en cours
[[bavar13]]
[[-bavar13b]]
[[bavar13+bavar13b]]
Avances et acomptes
[[bavar14]]
[[bavar14]]
IMMOBILISATIONS FINANCIÉRES
Participations
[[bavar15]]
[[-bavar15b]]
[[bavar15+bavar15b]]
Créances rattachées à des participations
[[bavar16]]
[[-bavar16b]]
[[bavar16+bavar16b]]
Titres immobilisés de l'activité de portefeuille
[[bavar17]]
[[-bavar17b]]
[[bavar17+bavar17b]]
Autres titres immobilisés
[[bavar18]]
[[-bavar18b]]
[[bavar18+bavar18b]]
Prêts
[[bavar19]]
[[-bavar19b]]
[[bavar19+bavar19b]]
Autres
[[bavar20]]
[[-bavar20b]]
[[bavar20+bavar20b]]
TOTAL I
[[at1a]]
[[-at1b]]
[[at1]]
ACTIF CIRCULANT
STOCK EN COURS
Matières premières et autres approvisionnements
[[bavar21]]
[[-bavar21b]]
[[bavar21+bavar21b]]
En-cours de production [biens et services]
[[bavar22]]
[[-bavar22b]]
[[bavar22+bavar22b]]
Produits intermédiaires et finis
[[bavar23]]
[[-bavar23b]]
[[bavar23+bavar23b]]
Marchandises
[[bavar24]]
[[-bavar24b]]
[[bavar24+bavar24b]]
Avances et acomptes versés sur commandes
[[bavar25]]
[[bavar25]]
CRÉANCES
Créances clients et comptes rattachés
[[bavar26]]
[[-bavar26b]]
[[bavar26+bavar26b]]
Autres
[[bavar27]]
[[-bavar27b]]
[[bavar27+bavar27b]]
Capital souscrit - appelé , non versé
[[bavar28]]
[[bavar28]]
VALEURS MOBILIÈRES DE PLACEMENT
Actions propres
[[bavar29]]
[[-bavar29b]]
[[bavar29+bavar29b]]
Autres titres
[[bavar30]]
[[-bavar30b]]
[[bavar30+bavar30b]]
Instruments de trésorerie
[[bavar31]]
[[bavar31]]
Disponibilités
[[bavar32]]
[[bavar32]]
Charges constatés d'avance
[[bavar33]]
[[bavar33]]
TOTAL II
[[at2a]]
[[-at2b]]
[[at2]]
Charges à répartir sur plusieurs exercices ( III )
[[bavar34]]
[[bavar34]]
Primes de remboursement des emprunts ( IV )
[[bavar35]]
[[bavar35]]
Écarts de conversion actif ( V )
[[bavar36]]
[[bavar36]]
TOTAL ACTIF ( I + II + III + IV + V )
[[at1a+at2a]]
[[-at1b-at2b]]
[[actif]]
PASSIF
CAPITAUX PROPRES
Capital [dont versé...]
[[bpvar1]]
Primes d'émission, de fusion, d'apport
[[bpvar2]]
Écarts de réévaluation
[[bpvar3]]
Écart d'équivalence
[[bpvar4]]
RÉSERVES
Réserve légale
[[bpvar5]]
Réserves statutaires ou contractuelles
[[bpvar6]]
Réserves réglementées
[[bpvar7]]
Autres réserves
[[bpvar8]]
Report à nouveau
[[bpvar9]]
RÉSULTAT DE L'EXERCICE [bénéfice ou perte]
[[bpvar10]]
Subventions d'investissement
[[bpvar11]]
Provisions réglementées
[[bpvar12]]
TOTAL I
[[pt1]]
PROVISIONS
Provisions pour risques
[[bpvar13]]
Provisions pour charges
[[bpvar14]]
TOTAL II
[[pt2]]
DETTES
Emprunts obligataires convertibles
[[bpvar15]]
Autres emprunts obligataires
[[bpvar16]]
Emprunts et dettes auprès des établissements de crédit
[[bpvar17]]
Emprunts et dettes financières diverses
[[bpvar18]]
Avances et acomptes reçus sur commandes en cours
[[bpvar19]]
Dettes fournisseurs et comptes rattachés
[[bpvar20]]
Dettes fiscales et sociales
[[bpvar21]]
Dettes sur immobilisations et comptes rattachés
[[bpvar22]]
Autres dettes
[[bpvar23]]
Instruments de trésorerie
[[bpvar24]]
Produits constatés d'avance
[[bpvar25]]
TOTAL III
[[pt3]]
Écarts de conversion passif ( IV )
[[bpvar26]]
TOTAL GÉNÉRAL (I + II + III + IV)
[[passif]]
ACTIF - PASSIF
[[round(actif-passif,2)]]
[[ abs(bpcheck)<0.0001 and removeParentNode('para') ]] Attention, pour que votre bilan soit correct, vous devez solder les comptes 120 ou 129 (Résultat de l'exercice précédant) dans un compte de report à nouveau (compte 110 ou 119) ou dans le compte 108. Renseignez vous sur votre structure juridique et son fonctionnement comptable.
+[[ _load('bilan',data['form'])]][[ _set_variable('at1a',bavar1+bavar2+bavar3+bavar4+bavar5+bavar6+bavar7+bavar8+bavar9+bavar10+bavar11+bavar12+bavar13+bavar14+bavar15+bavar16+bavar17+bavar18+bavar19+bavar20)]][[ _set_variable('at1b', bavar2b+bavar3b+bavar4b+bavar5b+bavar6b+bavar7b+bavar9b+bavar10b+bavar11b+bavar12b+bavar13b+bavar15b+ bavar16b+bavar17b+bavar18b+bavar19b+bavar20b)]][[ _set_variable('at1', at1a+at1b)]][[ _set_variable('at2a', bavar21+bavar22+bavar23+bavar24+bavar25+bavar26+bavar27+bavar28+bavar29+bavar30+bavar31+bavar32+bavar33)]][[ _set_variable('at2b', bavar21b+bavar22b+bavar23b+bavar24b+bavar26b+bavar27b+bavar29b+bavar30b)]][[ _set_variable('at2', at2a+at2b)]][[ _set_variable('actif', at1+at2+bavar34+bavar35+bavar36)]][[ _set_variable('pt1', bpvar1+bpvar2+bpvar3+bpvar4+bpvar5+bpvar6+bpvar7+bpvar8+bpvar9+bpvar10+bpvar11+bpvar12)]][[ _set_variable('pt2', bpvar13+bpvar14)]][[ _set_variable('pt3', bpvar15+bpvar16+bpvar17+bpvar18+bpvar19+bpvar20+bpvar21+bpvar22+bpvar23+bpvar24+bpvar25)]][[ _set_variable('passif', pt1+pt2+pt3+bpvar26)]]
Concessions, brevets, licences,..., droits et valeurs similaires
[[bavar4]]
[[-bavar4b]]
[[bavar4+bavar4b]]
Fonds commercial
[[bavar5]]
[[-bavar5b]]
[[bavar5+bavar5b]]
Autres
[[bavar6]]
[[-bavar6b]]
[[bavar6+bavar6b]]
Immobilisations incorporelles en cours
[[bavar7]]
[[-bavar7b]]
[[bavar7+bavar7b]]
Avances et acomptes
[[bavar8]]
[[bavar8]]
IMMOBILISATIONS CORPORELLES
Terrains
[[bavar9]]
[[-bavar9b]]
[[bavar9+bavar9b]]
Constructions
[[bavar10]]
[[-bavar10b]]
[[bavar10+bavar10b]]
Installations techniques,matériel et outillage
[[bavar11]]
[[-bavar11b]]
[[bavar11+bavar11b]]
Autres
[[bavar12]]
[[-bavar12b]]
[[bavar12+bavar12b]]
Immobilisations corporelles en cours
[[bavar13]]
[[-bavar13b]]
[[bavar13+bavar13b]]
Avances et acomptes
[[bavar14]]
[[bavar14]]
IMMOBILISATIONS FINANCIÉRES
Participations
[[bavar15]]
[[-bavar15b]]
[[bavar15+bavar15b]]
Créances rattachées à des participations
[[bavar16]]
[[-bavar16b]]
[[bavar16+bavar16b]]
Titres immobilisés de l'activité de portefeuille
[[bavar17]]
[[-bavar17b]]
[[bavar17+bavar17b]]
Autres titres immobilisés
[[bavar18]]
[[-bavar18b]]
[[bavar18+bavar18b]]
Prêts
[[bavar19]]
[[-bavar19b]]
[[bavar19+bavar19b]]
Autres
[[bavar20]]
[[-bavar20b]]
[[bavar20+bavar20b]]
TOTAL I
[[at1a]]
[[-at1b]]
[[at1]]
ACTIF CIRCULANT
STOCK EN COURS
Matières premières et autres approvisionnements
[[bavar21]]
[[-bavar21b]]
[[bavar21+bavar21b]]
En-cours de production [biens et services]
[[bavar22]]
[[-bavar22b]]
[[bavar22+bavar22b]]
Produits intermédiaires et finis
[[bavar23]]
[[-bavar23b]]
[[bavar23+bavar23b]]
Marchandises
[[bavar24]]
[[-bavar24b]]
[[bavar24+bavar24b]]
Avances et acomptes versés sur commandes
[[bavar25]]
[[bavar25]]
CRÉANCES
Créances clients et comptes rattachés
[[bavar26]]
[[-bavar26b]]
[[bavar26+bavar26b]]
Autres
[[bavar27]]
[[-bavar27b]]
[[bavar27+bavar27b]]
Capital souscrit - appelé , non versé
[[bavar28]]
[[bavar28]]
VALEURS MOBILIÈRES DE PLACEMENT
Actions propres
[[bavar29]]
[[-bavar29b]]
[[bavar29+bavar29b]]
Autres titres
[[bavar30]]
[[-bavar30b]]
[[bavar30+bavar30b]]
Instruments de trésorerie
[[bavar31]]
[[bavar31]]
Disponibilités
[[bavar32]]
[[bavar32]]
Charges constatés d'avance
[[bavar33]]
[[bavar33]]
TOTAL II
[[at2a]]
[[-at2b]]
[[at2]]
Charges à répartir sur plusieurs exercices ( III )
[[bavar34]]
[[bavar34]]
Primes de remboursement des emprunts ( IV )
[[bavar35]]
[[bavar35]]
Écarts de conversion actif ( V )
[[bavar36]]
[[bavar36]]
TOTAL ACTIF ( I + II + III + IV + V )
[[at1a+at2a]]
[[-at1b-at2b]]
[[actif]]
PASSIF
CAPITAUX PROPRES
Capital [dont versé...]
[[bpvar1]]
Primes d'émission, de fusion, d'apport
[[bpvar2]]
Écarts de réévaluation
[[bpvar3]]
Écart d'équivalence
[[bpvar4]]
RÉSERVES
Réserve légale
[[bpvar5]]
Réserves statutaires ou contractuelles
[[bpvar6]]
Réserves réglementées
[[bpvar7]]
Autres réserves
[[bpvar8]]
Report à nouveau
[[bpvar9]]
RÉSULTAT DE L'EXERCICE [bénéfice ou perte]
[[bpvar10]]
Subventions d'investissement
[[bpvar11]]
Provisions réglementées
[[bpvar12]]
TOTAL I
[[pt1]]
PROVISIONS
Provisions pour risques
[[bpvar13]]
Provisions pour charges
[[bpvar14]]
TOTAL II
[[pt2]]
DETTES
Emprunts obligataires convertibles
[[bpvar15]]
Autres emprunts obligataires
[[bpvar16]]
Emprunts et dettes auprès des établissements de crédit
[[bpvar17]]
Emprunts et dettes financières diverses
[[bpvar18]]
Avances et acomptes reçus sur commandes en cours
[[bpvar19]]
Dettes fournisseurs et comptes rattachés
[[bpvar20]]
Dettes fiscales et sociales
[[bpvar21]]
Dettes sur immobilisations et comptes rattachés
[[bpvar22]]
Autres dettes
[[bpvar23]]
Instruments de trésorerie
[[bpvar24]]
Produits constatés d'avance
[[bpvar25]]
TOTAL III
[[pt3]]
Écarts de conversion passif ( IV )
[[bpvar26]]
TOTAL GÉNÉRAL (I + II + III + IV)
[[passif]]
ACTIF - PASSIF
[[round(actif-passif,2)]]
[[ abs(bpcheck)<0.0001 and removeParentNode('para') ]] Attention, pour que votre bilan soit correct, vous devez solder les comptes 120 ou 129 (Résultat de l'exercice précédant) dans un compte de report à nouveau (compte 110 ou 119) ou dans le compte 108. Renseignez vous sur votre structure juridique et son fonctionnement comptable.
diff --git a/addons/l10n_fr/report/compute_resultant_report.rml b/addons/l10n_fr/report/compute_resultant_report.rml
index 9d3693f0b52..de59b0201ee 100644
--- a/addons/l10n_fr/report/compute_resultant_report.rml
+++ b/addons/l10n_fr/report/compute_resultant_report.rml
@@ -1,3 +1,3 @@
-[[ _load('cdr',data['form'])]][[ _set_variable('ct1', cdrc1+cdrc2+cdrc3+cdrc4+cdrc5+cdrc6+cdrc7+cdrc8+cdrc9+cdrc10+cdrc11+cdrc12+cdrc13+cdrc14+cdrc15)]][[ _set_variable('ct3', cdrc17+cdrc18+cdrc19+cdrc20)]][[ _set_variable('ct4', cdrc21+cdrc22+cdrc23)]][[ _set_variable('charges', ct1+cdrc16+ct3+ct4+cdrc24+cdrc25)]][[ _set_variable('pta', cdrp1+cdrp2)]][[ _set_variable('ptb', cdrp3+cdrp4+cdrp5+cdrp6+cdrp7)]][[ _set_variable('pt1', pta+ptb)]][[ _set_variable('pt3', cdrp9+cdrp10+cdrp11+cdrp12+cdrp13+cdrp14)]][[ _set_variable('pt4', cdrp15+cdrp16+cdrp17)]][[ _set_variable('produits', pt1+cdrp8+pt3+pt4)]]
[[ company.name ]]période du [[ time.strftime('%d-%m-%Y',time.strptime(date_start,'%Y-%m-%d'))]] au [[ time.strftime('%d-%m-%Y',time.strptime(date_stop,'%Y-%m-%d'))]]
Compte de résultat
Imprimé le : [[ time.strftime('%d-%m-%Y') ]]
Tenue de Compte : [[ company.currency_id.name ]]
CHARGES ( hors taxes )
CHARGES D'EXPLOITATION
Achat de marchandises
[[cdrc1]]
Variation des stocks
[[cdrc2]]
Achats de matières premières et autres approvisionnements
[[cdrc3]]
Variation des stocks
[[cdrc4]]
Autres achats et charges externes
[[cdrc5]]
Redevances de crédit-bail mobilier
[[cdrc6]]
Redevances de crédit-bail immobilier
[[cdrc7]]
Impôts, taxes et versements assimilés
[[cdrc8]]
Salaires et traitements
[[cdrc9]]
Charges sociales
[[cdrc10]]
Dotation aux amortissements et aux dépréciations
Sur immobilisations : dotations aux amortissements
[[cdrc11]]
Sur immobilisations : dotations aux dépréciations
[[cdrc12]]
Sur actif circulant : dotations aux dépréciations
[[cdrc13]]
Dotations aux provisions
[[cdrc14]]
Autres charges
[[cdrc15]]
TOTAL I
[[ct1]]
Quotes-parts de résultat sur opérations faites en commun ( II )
[[cdrc16]]
CHARGES FINANCIÈRES
Dotations aux amortissements, aux dépréciations et aux provisions
[[cdrc17]]
Intérêts et charges assimilées
[[cdrc18]]
Différences négatives de change
[[cdrc19]]
Charges nettes sur cessions de valeurs mobilières de placement
[[cdrc20]]
TOTAL III
[[ct3]]
CHARGES EXCEPTIONNELLES
Sur opérations de gestion
[[cdrc21]]
Sur opérations en capital
[[cdrc22]]
Dotations aux amortissements, aux dépréciations et aux provisions
[[cdrc23]]
TOTAL IV
[[ct4]]
Participation des salariés aux résultats ( V )
[[cdrc24]]
Impôts sur les bénéfices ( VI )
[[cdrc25]]
TOTAL CHARGES ( I + II + III + IV+ V+ VI )
[[charges]]
PRODUITS (hors taxes)
PRODUITS D'EXPLOITATION
Vente de marchandises
[[cdrp1]]
Production vendue [biens et services]
[[cdrp2]]
Sous-total A - Montant net du chiffre d'affaires
[[pta]]
Production stockée
[[cdrp3]]
Production immobilisée
[[cdrp4]]
Subventions d'exploitation
[[cdrp5]]
Reprises sur provisions, dépréciations (et amortissements) et transferts de charges
[[cdrp6]]
Autres produits
[[cdrp7]]
Sous-total B
[[ptb]]
TOTAL I ( A + B )
[[pt1]]
Quotes-parts de résultat sur opérations faites en commun (II)
[[cdrp8]]
PRODUITS FINANCIERS
De participation
[[cdrp9]]
D'autres valeurs mobilières et créances de l'actif immobilisé
[[cdrp10]]
Autres intérêts et produits assimilés
[[cdrp11]]
Reprises sur provisions, dépréciations et transferts de charges
[[cdrp12]]
Différences positives de change
[[cdrp13]]
Produits nets sur cessions de valeurs mobilières de placement
[[cdrp14]]
TOTAL III
[[pt3]]
PRODUITS EXCEPTIONNELS
Sur opérations de gestion
[[cdrp15]]
Sur opérations en capital
[[cdrp16]]
Reprises sur provisions, dépréciations et transferts de charges
[[ company.name ]]période du [[ time.strftime('%d-%m-%Y',time.strptime(date_start,'%Y-%m-%d'))]] au [[ time.strftime('%d-%m-%Y',time.strptime(date_stop,'%Y-%m-%d'))]]
Compte de résultat
Imprimé le : [[ time.strftime('%d-%m-%Y') ]]
Tenue de Compte : [[ company.currency_id.name ]]
CHARGES ( hors taxes )
CHARGES D'EXPLOITATION
Achat de marchandises
[[cdrc1]]
Variation des stocks
[[cdrc2]]
Achats de matières premières et autres approvisionnements
[[cdrc3]]
Variation des stocks
[[cdrc4]]
Autres achats et charges externes
[[cdrc5]]
Redevances de crédit-bail mobilier
[[cdrc6]]
Redevances de crédit-bail immobilier
[[cdrc7]]
Impôts, taxes et versements assimilés
[[cdrc8]]
Salaires et traitements
[[cdrc9]]
Charges sociales
[[cdrc10]]
Dotation aux amortissements et aux dépréciations
Sur immobilisations : dotations aux amortissements
[[cdrc11]]
Sur immobilisations : dotations aux dépréciations
[[cdrc12]]
Sur actif circulant : dotations aux dépréciations
[[cdrc13]]
Dotations aux provisions
[[cdrc14]]
Autres charges
[[cdrc15]]
TOTAL I
[[ct1]]
Quotes-parts de résultat sur opérations faites en commun ( II )
[[cdrc16]]
CHARGES FINANCIÈRES
Dotations aux amortissements, aux dépréciations et aux provisions
[[cdrc17]]
Intérêts et charges assimilées
[[cdrc18]]
Différences négatives de change
[[cdrc19]]
Charges nettes sur cessions de valeurs mobilières de placement
[[cdrc20]]
TOTAL III
[[ct3]]
CHARGES EXCEPTIONNELLES
Sur opérations de gestion
[[cdrc21]]
Sur opérations en capital
[[cdrc22]]
Dotations aux amortissements, aux dépréciations et aux provisions
[[cdrc23]]
TOTAL IV
[[ct4]]
Participation des salariés aux résultats ( V )
[[cdrc24]]
Impôts sur les bénéfices ( VI )
[[cdrc25]]
TOTAL CHARGES ( I + II + III + IV+ V+ VI )
[[charges]]
PRODUITS (hors taxes)
PRODUITS D'EXPLOITATION
Vente de marchandises
[[cdrp1]]
Production vendue [biens et services]
[[cdrp2]]
Sous-total A - Montant net du chiffre d'affaires
[[pta]]
Production stockée
[[cdrp3]]
Production immobilisée
[[cdrp4]]
Subventions d'exploitation
[[cdrp5]]
Reprises sur provisions, dépréciations (et amortissements) et transferts de charges
[[cdrp6]]
Autres produits
[[cdrp7]]
Sous-total B
[[ptb]]
TOTAL I ( A + B )
[[pt1]]
Quotes-parts de résultat sur opérations faites en commun (II)
[[cdrp8]]
PRODUITS FINANCIERS
De participation
[[cdrp9]]
D'autres valeurs mobilières et créances de l'actif immobilisé
[[cdrp10]]
Autres intérêts et produits assimilés
[[cdrp11]]
Reprises sur provisions, dépréciations et transferts de charges
[[cdrp12]]
Différences positives de change
[[cdrp13]]
Produits nets sur cessions de valeurs mobilières de placement
[[cdrp14]]
TOTAL III
[[pt3]]
PRODUITS EXCEPTIONNELS
Sur opérations de gestion
[[cdrp15]]
Sur opérations en capital
[[cdrp16]]
Reprises sur provisions, dépréciations et transferts de charges
[[cdrp17]]
TOTAL IV
[[pt4]]
TOTAL DES PRODUITS ( I + II + III + IV )
[[produits]]
PRODUITS - CHARGES
[[produits-charges]]
diff --git a/addons/l10n_lu/i18n/tr.po b/addons/l10n_lu/i18n/tr.po
index 6974746ecd2..094bb46b4df 100644
--- a/addons/l10n_lu/i18n/tr.po
+++ b/addons/l10n_lu/i18n/tr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 08:48+0000\n"
+"PO-Revision-Date: 2010-09-08 08:58+0000\n"
"Last-Translator: Fabien (Open ERP) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:48+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:47+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: l10n_lu
diff --git a/addons/lunch/lunch_view.xml b/addons/lunch/lunch_view.xml
index 3c33dcd247e..6b0e4c4b8c7 100644
--- a/addons/lunch/lunch_view.xml
+++ b/addons/lunch/lunch_view.xml
@@ -371,7 +371,7 @@
name="month"
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')),('date','>=',time.strftime('%%Y-%%m-01'))]"
help="Box amount in current month"/>
-
-
+
diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py
index 1a1b48e75ee..3a40aac2649 100644
--- a/addons/mail_gateway/mail_gateway.py
+++ b/addons/mail_gateway/mail_gateway.py
@@ -122,10 +122,14 @@ class mailgate_thread(osv.osv):
obj = self.pool.get('mailgate.message')
for case in cases:
+ partner_id = hasattr(case, 'partner_id') and (case.partner_id and case.partner_id.id or False) or False
+ if not partner_id and case._name == 'res.partner':
+ partner_id = case.id
data = {
'name': keyword,
'user_id': uid,
'model' : case._name,
+ 'partner_id': partner_id,
'res_id': case.id,
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
'message_id': message_id,
@@ -153,7 +157,7 @@ class mailgate_thread(osv.osv):
case.user_id.address_id.email),
'email_cc': email_cc,
'email_bcc': email_bcc,
- 'partner_id': hasattr(case, 'partner_id') and (case.partner_id and case.partner_id.id or False) or False,
+ 'partner_id': partner_id,
'references': references,
'message_id': message_id,
'attachment_ids': [(6, 0, attachments)]
@@ -172,6 +176,14 @@ class mailgate_message(osv.osv):
'''
Mailgateway Message
'''
+ def truncate_data(self, cr, uid, data, context=None):
+ data_list = data and data.split('\n') or []
+ if len(data_list) > 3:
+ res = '\n\t'.join(data_list[:3]) + '...'
+ else:
+ res = '\n\t'.join(data_list)
+ return res
+
def _get_display_text(self, cr, uid, ids, name, arg, context=None):
if context is None:
context = {}
@@ -182,11 +194,14 @@ class mailgate_message(osv.osv):
if message.history:
msg_txt += (message.email_from or '/') + _(' wrote on ') + format_date_tz(message.date, tz) + ':\n\t'
if message.description:
- msg_txt += '\n\t'.join(message.description.split('\n')[:3]) + '...'
+ msg_txt += self.truncate_data(cr, uid, message.description, context=context)
else:
- msg_txt = (message.user_id.name or '/') + _(' on ') + format_date_tz(message.date, tz) + ':\n\t'
+ msg_txt = (message.user_id.name or '/') + _(' on ') + format_date_tz(message.date, tz) + ':\n\t'
if message.name == _('Opportunity'):
msg_txt += _("Converted to Opportunity")
+ elif message.name == _('Note'):
+ msg_txt = (message.user_id.name or '/') + _(' added note on ') + format_date_tz(message.date, tz) + ':\n\t'
+ msg_txt += self.truncate_data(cr, uid, message.description, context=context)
else:
msg_txt += _("Changed Status to: ") + message.name
result[message.id] = msg_txt
@@ -255,11 +270,16 @@ class mailgate_tool(osv.osv_memory):
msg_pool = self.pool.get('mailgate.message')
for res_id in res_ids:
+ case = self.pool.get(model).browse(cr, uid, res_id, context=context)
+ partner_id = hasattr(case, 'partner_id') and (case.partner_id and case.partner_id.id or False) or False
+ if not partner_id and model == 'res.partner':
+ partner_id = res_id
msg_data = {
'name': msg.get('subject', 'No subject'),
'date': msg.get('date'),
'description': msg.get('body', msg.get('from')),
'history': True,
+ 'partner_id': partner_id,
'res_model': model,
'email_cc': msg.get('cc'),
'email_from': msg.get('from'),
diff --git a/addons/mail_gateway/mail_gateway_view.xml b/addons/mail_gateway/mail_gateway_view.xml
index f30416ed8fe..203d9a942bf 100644
--- a/addons/mail_gateway/mail_gateway_view.xml
+++ b/addons/mail_gateway/mail_gateway_view.xml
@@ -76,9 +76,6 @@
form
-
-
-
@@ -117,7 +114,6 @@
tree
-
diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py
index c147580e014..4fd4fda5253 100644
--- a/addons/marketing_campaign/marketing_campaign.py
+++ b/addons/marketing_campaign/marketing_campaign.py
@@ -135,12 +135,12 @@ Normal - the campaign runs normally and automatically sends all emails and repor
if activity.type != 'email':
continue
if not activity.email_template_id.from_account:
- raise osv.except_osv(_("Error"), _("The campaign cannot be started: an email account is missing in the email activity '%s'")%activity.name)
+ raise osv.except_osv(_("Error"), _("The campaign cannot be started: the email account is missing in email activity '%s'")%activity.name)
if activity.email_template_id.from_account.state != 'approved':
- raise osv.except_osv(_("Error"), _("The campaign cannot be started: the email account is not approved in the email activity '%s'")%activity.name)
+ raise osv.except_osv(_("Error"), _("The campaign cannot be started: the email account is not approved in email activity '%s'")%activity.name)
if not has_start and not has_signal_without_from:
- raise osv.except_osv(_("Error"), _("The campaign hasn't any starting activity nor any activity with a signal and no previous activity."))
+ raise osv.except_osv(_("Error"), _("The campaign cannot be started: it doesn't have any starting activity (or any activity with a signal and no previous activity)"))
return self.write(cr, uid, ids, {'state': 'running'})
@@ -213,27 +213,31 @@ class marketing_campaign_segment(osv.osv):
_name = "marketing.campaign.segment"
_description = "Campaign Segment"
+ def _get_next_sync(self, cr, uid, ids, fn, args, context=None):
+ # next auto sync date is same for all segments
+ sync_job = self.pool.get('ir.model.data').get_object(cr, uid, 'marketing_campaign', 'ir_cron_marketing_campaign_every_day', context=context)
+ next_sync = sync_job and sync_job.nextcall or False
+ return dict.fromkeys(ids, next_sync)
+
_columns = {
'name': fields.char('Name', size=64,required=True),
- 'campaign_id': fields.many2one('marketing.campaign', 'Campaign',
- required=True, select=1, ondelete="cascade"),
- 'object_id': fields.related('campaign_id','object_id',
- type='many2one', relation='ir.model',
- string='Object'),
- 'ir_filter_id': fields.many2one('ir.filters', 'Filter', help="Filter to select the matching resource records that belong to this segment. New filters can be created and saved using the advanced search on the list view of the Resource"),
+ 'campaign_id': fields.many2one('marketing.campaign', 'Campaign', required=True, select=1, ondelete="cascade"),
+ 'object_id': fields.related('campaign_id','object_id', type='many2one', relation='ir.model', string='Resource'),
+ 'ir_filter_id': fields.many2one('ir.filters', 'Filter', help="Filter to select the matching resource records that belong to this segment. New filters can be created and saved using the advanced search on the list view of the Resource. If no filter is set, all records are selected without filtering. The synchronization mode may also add a criterion to the filter."),
'sync_last_date': fields.datetime('Last Synchronization', help="Date on which this segment was synchronized last time (automatically or manually)"),
- 'sync_mode': fields.selection([('create_date', 'If record created after last sync'),
- ('write_date', 'If record modified after last sync (no duplicates)'),
+ 'sync_mode': fields.selection([('create_date', 'Only records created after last sync'),
+ ('write_date', 'Only records modified after last sync (no duplicates)'),
('all', 'All records (no duplicates)')],
- 'Workitem creation mode',
- help="Determines how new campaign workitems are created for resource records matching this segment. This is used when segments are synchronized manually, or automatically via the scheduled job."),
+ 'Synchronization mode',
+ help="Determines an additional criterion to add to the filter when selecting new records to inject in the campaign."),
'state': fields.selection([('draft', 'Draft'),
('running', 'Running'),
('done', 'Done'),
('cancelled', 'Cancelled')],
'State',),
- 'date_run': fields.datetime('Launching Date', help="Initial start date of this segment."),
+ 'date_run': fields.datetime('Launch Date', help="Initial start date of this segment."),
'date_done': fields.datetime('End Date', help="Date this segment was last closed or cancelled."),
+ 'date_next_sync': fields.function(_get_next_sync, method=True, string='Next Synchronization', type='datetime', help="Next time the synchronization job is scheduled to run automatically"),
}
_defaults = {
@@ -264,7 +268,6 @@ class marketing_campaign_segment(osv.osv):
if model_name:
mod_name = model_name[0]['model']
res['domain'] = {'ir_filter_id': [('model_id', '=', mod_name)]}
- res['context'] = {'default_model_id': model_name[0]['model']}
else:
res['value'] = {'ir_filter_id': False}
return res
@@ -526,7 +529,18 @@ class marketing_campaign_transition(osv.osv):
'interval_type': 'days',
'trigger': 'time',
}
+ def _check_campaign(self, cr, uid, ids, context=None):
+ if not context:
+ context = {}
+ for obj in self.browse(cr, uid, ids, context=context):
+ if obj.activity_from_id.campaign_id != obj.activity_to_id.campaign_id:
+ return False
+ return True
+ _constraints = [
+ (_check_campaign, _('The To/From Activity of transition must be of the same Campaign '), ['activity_from_id,activity_to_id']),
+ ]
+
_sql_constraints = [
('interval_positive', 'CHECK(interval_nbr >= 0)', 'The interval must be positive or zero')
]
@@ -581,9 +595,9 @@ class marketing_campaign_workitem(osv.osv):
'activity_id': fields.many2one('marketing.campaign.activity','Activity',
required=True, readonly=True),
'campaign_id': fields.related('activity_id', 'campaign_id',
- type='many2one', relation='marketing.campaign', string='Campaign', readonly=True),
+ type='many2one', relation='marketing.campaign', string='Campaign', readonly=True, store=True),
'object_id': fields.related('activity_id', 'campaign_id', 'object_id',
- type='many2one', relation='ir.model', string='Resource', select=1, readonly=True),
+ type='many2one', relation='ir.model', string='Resource', select=1, readonly=True, store=True),
'res_id': fields.integer('Resource ID', select=1, readonly=True),
'res_name': fields.function(_res_name_get, method=True, string='Resource Name', fnct_search=_resource_search, type="char", size=64),
'date': fields.datetime('Execution Date', help='If date is not set, this workitem has to be run manually', readonly=True),
diff --git a/addons/marketing_campaign/marketing_campaign_data.xml b/addons/marketing_campaign/marketing_campaign_data.xml
index 42ed4d12118..4f337b1d60e 100644
--- a/addons/marketing_campaign/marketing_campaign_data.xml
+++ b/addons/marketing_campaign/marketing_campaign_data.xml
@@ -5,7 +5,7 @@
- Check Marketing Campaign Activities
+ Marketing Campaign: Campaign workitems processing1hours-1
@@ -14,9 +14,9 @@
-
+
- Check Segment
+ Marketing Campaign: Segment Sync1days-1
@@ -25,6 +25,6 @@
-
+
diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml
index 1044755798a..7d1c8d3d2bf 100644
--- a/addons/marketing_campaign/marketing_campaign_view.xml
+++ b/addons/marketing_campaign/marketing_campaign_view.xml
@@ -32,14 +32,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/point_of_sale/report/pos_details_summary.py b/addons/point_of_sale/report/pos_details_summary.py
index 04e460ec6e5..2d1fd0b98c7 100644
--- a/addons/point_of_sale/report/pos_details_summary.py
+++ b/addons/point_of_sale/report/pos_details_summary.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -128,7 +128,7 @@ report_sxw.report_sxw('report.pos.details_summary',
'pos.order',
'addons/point_of_sale/report/pos_details_summary.rml',
parser=pos_details_summary,
- header=None)
+ header='internal')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/point_of_sale/report/pos_details_summary.rml b/addons/point_of_sale/report/pos_details_summary.rml
index 254f397b6b6..3981f389166 100644
--- a/addons/point_of_sale/report/pos_details_summary.rml
+++ b/addons/point_of_sale/report/pos_details_summary.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_lines.py b/addons/point_of_sale/report/pos_lines.py
index 3076e1b6741..ad855087cad 100644
--- a/addons/point_of_sale/report/pos_lines.py
+++ b/addons/point_of_sale/report/pos_lines.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -52,7 +52,7 @@ class pos_lines(report_sxw.rml_parse):
return res
-report_sxw.report_sxw('report.pos.lines', 'pos.order', 'addons/point_of_sale/report/pos_lines.rml', parser=pos_lines)
+report_sxw.report_sxw('report.pos.lines', 'pos.order', 'addons/point_of_sale/report/pos_lines.rml', parser=pos_lines,header='internal')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/point_of_sale/report/pos_lines.rml b/addons/point_of_sale/report/pos_lines.rml
index 5ff85f5afd1..0cc1c43520a 100644
--- a/addons/point_of_sale/report/pos_lines.rml
+++ b/addons/point_of_sale/report/pos_lines.rml
@@ -1,6 +1,6 @@
-
+
@@ -73,14 +73,14 @@
-
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -90,8 +90,8 @@
-
-
+
+
@@ -106,14 +106,18 @@
+
- [[repeatIn(objects,'o')]][[ setLang(o.partner_id.lang) ]]
+ Sales lines
+
+
+
@@ -283,4 +287,4 @@
-
+
\ No newline at end of file
diff --git a/addons/point_of_sale/report/pos_payment_report.py b/addons/point_of_sale/report/pos_payment_report.py
index d2f05f85a06..3d82025da89 100644
--- a/addons/point_of_sale/report/pos_payment_report.py
+++ b/addons/point_of_sale/report/pos_payment_report.py
@@ -61,7 +61,7 @@ class pos_payment_report(report_sxw.rml_parse):
return self.total
-report_sxw.report_sxw('report.pos.payment.report', 'pos.order', 'addons/point_of_sale/report/pos_payment_report.rml', parser=pos_payment_report)
+report_sxw.report_sxw('report.pos.payment.report', 'pos.order', 'addons/point_of_sale/report/pos_payment_report.rml', parser=pos_payment_report,header='internal')
diff --git a/addons/point_of_sale/report/pos_payment_report.rml b/addons/point_of_sale/report/pos_payment_report.rml
index ebe30bdf3bc..c1980e9e209 100644
--- a/addons/point_of_sale/report/pos_payment_report.rml
+++ b/addons/point_of_sale/report/pos_payment_report.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_payment_report_date.py b/addons/point_of_sale/report/pos_payment_report_date.py
index af64e45cff4..38f87d533f2 100644
--- a/addons/point_of_sale/report/pos_payment_report_date.py
+++ b/addons/point_of_sale/report/pos_payment_report_date.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
import time
@@ -59,7 +59,7 @@ class pos_payment_report_date(report_sxw.rml_parse):
return res
-report_sxw.report_sxw('report.pos.payment.report.date', 'pos.order', 'addons/point_of_sale/report/pos_payment_report_date.rml', parser=pos_payment_report_date)
+report_sxw.report_sxw('report.pos.payment.report.date', 'pos.order', 'addons/point_of_sale/report/pos_payment_report_date.rml', parser=pos_payment_report_date,header='internal')
diff --git a/addons/point_of_sale/report/pos_payment_report_date.rml b/addons/point_of_sale/report/pos_payment_report_date.rml
index f83d985b6b4..1f220e253ca 100644
--- a/addons/point_of_sale/report/pos_payment_report_date.rml
+++ b/addons/point_of_sale/report/pos_payment_report_date.rml
@@ -1,8 +1,8 @@
-
+
-
+
@@ -10,35 +10,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -46,9 +40,8 @@
-
-
+
@@ -56,31 +49,24 @@
-
-
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+
@@ -90,8 +76,8 @@
-
-
+
+
@@ -105,17 +91,18 @@
-
+
-
-
+ [[ repeatIn(objects,'order') ]]
+
-
+ Payment
+
-
+
[[ formatLang(pos_payment_date_total(data['form'])) or removeParentNode('blockTable')]]
-
+
+
+
+
-
+
\ No newline at end of file
diff --git a/addons/point_of_sale/report/pos_payment_report_user.py b/addons/point_of_sale/report/pos_payment_report_user.py
index e84b3b792cc..48ea148d8d1 100644
--- a/addons/point_of_sale/report/pos_payment_report_user.py
+++ b/addons/point_of_sale/report/pos_payment_report_user.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
import time
@@ -58,7 +58,7 @@ class pos_payment_report_user(report_sxw.rml_parse):
return res
-report_sxw.report_sxw('report.pos.payment.report.user', 'pos.order', 'addons/point_of_sale/report/pos_payment_report_user.rml', parser=pos_payment_report_user)
+report_sxw.report_sxw('report.pos.payment.report.user', 'pos.order', 'addons/point_of_sale/report/pos_payment_report_user.rml', parser=pos_payment_report_user,header='internal')
diff --git a/addons/point_of_sale/report/pos_payment_report_user.rml b/addons/point_of_sale/report/pos_payment_report_user.rml
index f3a9311e186..fc874e52dac 100644
--- a/addons/point_of_sale/report/pos_payment_report_user.rml
+++ b/addons/point_of_sale/report/pos_payment_report_user.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_receipt.rml b/addons/point_of_sale/report/pos_receipt.rml
index 313ba8cdb61..e722687f094 100644
--- a/addons/point_of_sale/report/pos_receipt.rml
+++ b/addons/point_of_sale/report/pos_receipt.rml
@@ -1,6 +1,6 @@
-
+
@@ -136,7 +136,7 @@
[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]
-
+
[[o.state=='cancel' and o.statement_ids and '-' or '']][[ '%.2f' % net(line.id) ]] [[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ '%.2f' % line.discount ]]%)
diff --git a/addons/point_of_sale/report/pos_receipt_bis.rml b/addons/point_of_sale/report/pos_receipt_bis.rml
index 1080a69ea65..ab8af5ca999 100644
--- a/addons/point_of_sale/report/pos_receipt_bis.rml
+++ b/addons/point_of_sale/report/pos_receipt_bis.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_receipt_with_remboursment.rml b/addons/point_of_sale/report/pos_receipt_with_remboursment.rml
index 01fa0e4ac1e..32dea8dcd48 100644
--- a/addons/point_of_sale/report/pos_receipt_with_remboursment.rml
+++ b/addons/point_of_sale/report/pos_receipt_with_remboursment.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_receipt_without_remboursment.rml b/addons/point_of_sale/report/pos_receipt_without_remboursment.rml
index 0eb0dba773a..4e3b8ec64e1 100644
--- a/addons/point_of_sale/report/pos_receipt_without_remboursment.rml
+++ b/addons/point_of_sale/report/pos_receipt_without_remboursment.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_sales_user.py b/addons/point_of_sale/report/pos_sales_user.py
index b110e4e2d00..4032f035bdf 100644
--- a/addons/point_of_sale/report/pos_sales_user.py
+++ b/addons/point_of_sale/report/pos_sales_user.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
import time
@@ -46,7 +46,7 @@ class pos_sales_user(report_sxw.rml_parse):
data = self.cr.dictfetchall()
return data
-report_sxw.report_sxw('report.pos.sales.user', 'pos.order', 'addons/point_of_sale/report/pos_sales_user.rml', parser=pos_sales_user)
+report_sxw.report_sxw('report.pos.sales.user', 'pos.order', 'addons/point_of_sale/report/pos_sales_user.rml', parser=pos_sales_user,header='internal')
diff --git a/addons/point_of_sale/report/pos_sales_user.rml b/addons/point_of_sale/report/pos_sales_user.rml
index b6a3dae9685..cb817035a46 100644
--- a/addons/point_of_sale/report/pos_sales_user.rml
+++ b/addons/point_of_sale/report/pos_sales_user.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_sales_user_today.py b/addons/point_of_sale/report/pos_sales_user_today.py
index 4362cc8928c..7c9b9b5a563 100644
--- a/addons/point_of_sale/report/pos_sales_user_today.py
+++ b/addons/point_of_sale/report/pos_sales_user_today.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
import time
@@ -45,7 +45,7 @@ class pos_sales_user_today(report_sxw.rml_parse):
data = self.cr.dictfetchall()
return data
-report_sxw.report_sxw('report.pos.sales.user.today', 'pos.order', 'addons/point_of_sale/report/pos_sales_user_today.rml', parser=pos_sales_user_today)
+report_sxw.report_sxw('report.pos.sales.user.today', 'pos.order', 'addons/point_of_sale/report/pos_sales_user_today.rml', parser=pos_sales_user_today,header='internal')
diff --git a/addons/point_of_sale/report/pos_sales_user_today.rml b/addons/point_of_sale/report/pos_sales_user_today.rml
index 7db76e33ff4..39f6ddacb4c 100644
--- a/addons/point_of_sale/report/pos_sales_user_today.rml
+++ b/addons/point_of_sale/report/pos_sales_user_today.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_sales_user_today_current_user.py b/addons/point_of_sale/report/pos_sales_user_today_current_user.py
index bd728441be2..7f4a8f827f5 100644
--- a/addons/point_of_sale/report/pos_sales_user_today_current_user.py
+++ b/addons/point_of_sale/report/pos_sales_user_today_current_user.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
import time
@@ -63,7 +63,7 @@ class pos_sales_user_today_current_user(report_sxw.rml_parse):
def _get_data_current_user_qty(self, user):
return self.qty
-report_sxw.report_sxw('report.pos.sales.user.today.current.user', 'pos.order', 'addons/point_of_sale/report/pos_sales_user_today_current_user.rml', parser=pos_sales_user_today_current_user)
+report_sxw.report_sxw('report.pos.sales.user.today.current.user', 'pos.order', 'addons/point_of_sale/report/pos_sales_user_today_current_user.rml', parser=pos_sales_user_today_current_user,header='internal')
diff --git a/addons/point_of_sale/report/pos_sales_user_today_current_user.rml b/addons/point_of_sale/report/pos_sales_user_today_current_user.rml
index 469fc5cdd33..475d045252b 100644
--- a/addons/point_of_sale/report/pos_sales_user_today_current_user.rml
+++ b/addons/point_of_sale/report/pos_sales_user_today_current_user.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/point_of_sale/report/pos_users_product.py b/addons/point_of_sale/report/pos_users_product.py
index a61f753ce7d..3a284f1957f 100644
--- a/addons/point_of_sale/report/pos_users_product.py
+++ b/addons/point_of_sale/report/pos_users_product.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
import time
@@ -61,4 +61,4 @@ class pos_user_product(report_sxw.rml_parse):
def _get_total(self):
return self.total
-report_sxw.report_sxw('report.pos.user.product', 'account.bank.statement', 'addons/statement/report/pos_users_product.rml', parser=pos_user_product)
+report_sxw.report_sxw('report.pos.user.product', 'account.bank.statement', 'addons/statement/report/pos_users_product.rml', parser=pos_user_product,header='internal')
diff --git a/addons/point_of_sale/report/pos_users_product.rml b/addons/point_of_sale/report/pos_users_product.rml
index cbb309ceef2..ef911861d85 100644
--- a/addons/point_of_sale/report/pos_users_product.rml
+++ b/addons/point_of_sale/report/pos_users_product.rml
@@ -1,6 +1,6 @@
-
+
diff --git a/addons/process/i18n/tr.po b/addons/process/i18n/tr.po
index a1c5c7c88e4..f8f839755e8 100644
--- a/addons/process/i18n/tr.po
+++ b/addons/process/i18n/tr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 09:01+0000\n"
+"PO-Revision-Date: 2010-09-08 09:03+0000\n"
"Last-Translator: Fabien (Open ERP) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:46+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: process
diff --git a/addons/procurement/company_view.xml b/addons/procurement/company_view.xml
index 543e36fe02f..e046fd4faee 100644
--- a/addons/procurement/company_view.xml
+++ b/addons/procurement/company_view.xml
@@ -6,6 +6,7 @@
res.company.mrp.configres.companyform
+ 17
diff --git a/addons/procurement/i18n/mn.po b/addons/procurement/i18n/mn.po
new file mode 100644
index 00000000000..dad3b6d81a7
--- /dev/null
+++ b/addons/procurement/i18n/mn.po
@@ -0,0 +1,850 @@
+# Mongolian translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2010-08-20 08:51+0000\n"
+"PO-Revision-Date: 2010-09-09 04:31+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Mongolian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:47+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_make_procurement
+msgid "Make Procurements"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order.compute.all,automatic:0
+msgid ""
+"Triggers an automatic procurement for all products that have a virtual stock "
+"under 0. You should probably not use this option, we suggest using a MTO "
+"configuration on products."
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Group By..."
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Planification"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "No supplier defined for this product !"
+msgstr ""
+
+#. module: procurement
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,uom_id:0
+msgid "Unit of Measure"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,procure_method:0
+msgid "Procurement Method"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "No address defined for the supplier"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.action_procurement_compute
+msgid "Compute Stock Minimum Rules Only"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,company_id:0
+#: field:stock.warehouse.orderpoint,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,product_uos_qty:0
+msgid "UoS Quantity"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+#: field:procurement.order,name:0
+msgid "Reason"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute:0
+msgid "Compute Procurements"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,message:0
+msgid "Latest error"
+msgstr ""
+
+#. module: procurement
+#: help:mrp.property,composition:0
+msgid "Not used in computations, for information purpose only."
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,procurement_id:0
+msgid "Latest procurement"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Notes"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,message:0
+msgid "Exception occurred while computing procurement orders."
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,state:0
+msgid ""
+"When a procurement is created the state is set to 'Draft'.\n"
+" If the procurement is confirmed, the state is set to 'Confirmed'. "
+" \n"
+"After confirming the state is set to 'Running'.\n"
+" If any exception arises in the order then the state is set to 'Exception'.\n"
+" Once the exception is removed the state becomes 'Ready'.\n"
+" It is in 'Waiting'. state when the procurement is waiting for another one "
+"to finish."
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Minimum Stock Rules Search"
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,product_min_qty:0
+msgid ""
+"When the virtual stock goes belong the Min Quantity, OpenERP generates a "
+"procurement to bring the virtual stock to the Max Quantity."
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute.all:0
+msgid "Scheduler Parameters"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.procurement_action11
+msgid "Temporary Procurement Exceptions"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "has an exception."
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Ready"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order.compute.all,automatic:0
+msgid "Automatic orderpoint"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Retry"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute:0
+#: view:procurement.orderpoint.compute:0
+msgid "Parameters"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Confirm"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,origin:0
+msgid ""
+"Reference of the document that created this Procurement.\n"
+"This is automatically completed by OpenERP."
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_stock_warehouse_orderpoint
+msgid "Minimum Inventory Rule"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.procurement_action4
+msgid "Procurement Exceptions to Fix"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,priority:0
+msgid "Priority"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+#: field:procurement.order,state:0
+msgid "State"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,location_id:0
+#: view:stock.warehouse.orderpoint:0
+#: field:stock.warehouse.orderpoint,location_id:0
+msgid "Location"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,warehouse_id:0
+#: view:stock.warehouse.orderpoint:0
+#: field:stock.warehouse.orderpoint,warehouse_id:0
+msgid "Warehouse"
+msgstr ""
+
+#. module: procurement
+#: selection:stock.warehouse.orderpoint,logic:0
+msgid "Best price (not yet active!)"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Product & Location"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_order_compute
+msgid "Compute Procurement"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.procurement_action3
+#: model:ir.module.module,shortdesc:procurement.module_meta_information
+msgid "Procurements"
+msgstr ""
+
+#. module: procurement
+#: field:res.company,schedule_range:0
+msgid "Scheduler Range Days"
+msgstr ""
+
+#. module: procurement
+#: view:make.procurement:0
+msgid "Ask New Products"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,date_planned:0
+msgid "Planned Date"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Group By"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,qty:0
+#: field:procurement.order,product_qty:0
+msgid "Quantity"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "Not enough stock and no minimum orderpoint rule defined."
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "Invalid action !"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "References"
+msgstr ""
+
+#. module: procurement
+#: view:res.company:0
+msgid "Configuration"
+msgstr ""
+
+#. module: procurement
+#: constraint:ir.cron:0
+msgid "Invalid arguments"
+msgstr ""
+
+#. module: procurement
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,procure_method:0
+msgid ""
+"If you encode manually a Procurement, you probably want to use a make to "
+"order method."
+msgstr ""
+
+#. module: procurement
+#: view:res.company:0
+msgid "MRP & Logistic Scheduler"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute.all:0
+msgid ""
+"Wizard run all the procurements, and generate task, production order or "
+"purchase order based on the product type"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,product_max_qty:0
+msgid "Max Quantity"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Procurement Reason"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_order
+#: model:process.process,name:procurement.process_process_procurementprocess0
+#: view:procurement.order:0
+msgid "Procurement"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.procurement_action
+msgid "Procurement Orders"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "To Fix"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Exceptions"
+msgstr ""
+
+#. module: procurement
+#: model:process.node,note:procurement.process_node_serviceonorder0
+msgid "Assignment from Production or Purchase Order."
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_mrp_property
+msgid "Property"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.act_make_procurement
+#: view:make.procurement:0
+msgid "Procurement Request"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.orderpoint.compute:0
+msgid "Compute Stock"
+msgstr ""
+
+#. module: procurement
+#: model:process.process,name:procurement.process_process_serviceproductprocess0
+msgid "Service"
+msgstr ""
+
+#. module: procurement
+#: model:ir.module.module,description:procurement.module_meta_information
+msgid ""
+"\n"
+" This is the module for computing Procurements.\n"
+" "
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,product_min_qty:0
+msgid "Min Quantity"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Urgent"
+msgstr ""
+
+#. module: procurement
+#: selection:mrp.property,composition:0
+msgid "plus"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid ""
+"Please check the Quantity in Procurement Order(s), it should not be less "
+"than 1!"
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,product_max_qty:0
+msgid ""
+"When the virtual stock goes belong the Max Quantity, OpenERP generates a "
+"procurement to bring the virtual stock to the Max Quantity."
+msgstr ""
+
+#. module: procurement
+#: help:procurement.orderpoint.compute,automatic:0
+msgid "If the stock of a product is under 0, it will act like an orderpoint"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Procurement Lines"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+#: field:procurement.order,note:0
+msgid "Note"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: procurement
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Status"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "Procurement "
+msgstr ""
+
+#. module: procurement
+#: help:res.company,schedule_range:0
+msgid ""
+"This is the time frame analysed by the scheduler when computing "
+"procurements. All procurements that are not between today and today+range "
+"are skipped for futur computation."
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Normal"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute:0
+msgid "This wizard will schedule procurements."
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,active:0
+msgid ""
+"If the active field is set to true, it will allow you to hide the orderpoint "
+"without removing it."
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "is running."
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "Not enough stock "
+msgstr ""
+
+#. module: procurement
+#: model:process.node,name:procurement.process_node_procureproducts0
+msgid "Procure Products"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,date_planned:0
+msgid "Scheduled date"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Exception"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_orderpoint_compute
+msgid "Automatic Order Point"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,qty_multiple:0
+msgid "Qty Multiple"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Extra Information"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,name:0
+msgid "Procurement name."
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,active:0
+msgid "Active"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "Qty Multiple must be greater than zero."
+msgstr ""
+
+#. module: procurement
+#: selection:stock.warehouse.orderpoint,logic:0
+msgid "Order to Max"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,date_close:0
+msgid "Date Closed"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Late"
+msgstr ""
+
+#. module: procurement
+#: field:mrp.property,composition:0
+msgid "Properties composition"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "Data Insufficient !"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_mrp_property_group
+#: field:mrp.property,group_id:0
+#: field:mrp.property.group,name:0
+msgid "Property Group"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Misc"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Locations"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,procure_method:0
+msgid "from stock"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "General Information"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Run Procurement"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Done"
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,qty_multiple:0
+msgid "The procurement quantity will by rounded up to this multiple."
+msgstr ""
+
+#. module: procurement
+#: view:make.procurement:0
+#: view:procurement.order:0
+#: selection:procurement.order,state:0
+#: view:procurement.order.compute:0
+#: view:procurement.order.compute.all:0
+#: view:procurement.orderpoint.compute:0
+msgid "Cancel"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,logic:0
+msgid "Reordering Mode"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,origin:0
+msgid "Source Document"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Not urgent"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_order_compute_all
+msgid "Compute all schedulers"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Current"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "Project_mrp module not installed !"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Details"
+msgstr ""
+
+#. module: procurement
+#: view:board.board:0
+#: model:ir.actions.act_window,name:procurement.procurement_action5
+msgid "Procurement Exceptions"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.act_procurement_2_stock_warehouse_orderpoint
+#: model:ir.actions.act_window,name:procurement.act_product_product_2_stock_warehouse_orderpoint
+#: model:ir.actions.act_window,name:procurement.act_stock_warehouse_2_stock_warehouse_orderpoint
+#: model:ir.actions.act_window,name:procurement.action_orderpoint_form
+#: view:stock.warehouse.orderpoint:0
+msgid "Minimum Stock Rules"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,close_move:0
+msgid "Close Move at end"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Scheduled Date"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,product_id:0
+#: view:procurement.order:0
+#: field:procurement.order,product_id:0
+#: field:stock.warehouse.orderpoint,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: procurement
+#: field:mrp.property,description:0
+#: field:mrp.property.group,description:0
+msgid "Description"
+msgstr ""
+
+#. module: procurement
+#: selection:mrp.property,composition:0
+msgid "min"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Quantity Rules"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Running"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,product_uom:0
+msgid "Product UOM"
+msgstr ""
+
+#. module: procurement
+#: model:process.node,name:procurement.process_node_serviceonorder0
+msgid "Make to Order"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "UOM"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Waiting"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,procure_method:0
+msgid "on order"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,move_id:0
+msgid "Reservation"
+msgstr ""
+
+#. module: procurement
+#: model:process.node,note:procurement.process_node_procureproducts0
+msgid "The way to procurement depends on the product type."
+msgstr ""
+
+#. module: procurement
+#: view:make.procurement:0
+msgid ""
+"This wizard will plan the procurement for this product. This procurement may "
+"generate task, production orders or purchase orders."
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "is done."
+msgstr ""
+
+#. module: procurement
+#: field:mrp.property,name:0
+#: field:stock.warehouse.orderpoint,name:0
+msgid "Name"
+msgstr ""
+
+#. module: procurement
+#: selection:mrp.property,composition:0
+msgid "max"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,product_uos:0
+msgid "Product UoS"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid "from stock: products assigned."
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.action_compute_schedulers
+#: view:procurement.order.compute.all:0
+msgid "Compute Schedulers"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.orderpoint.compute:0
+msgid ""
+"Wizard checks all the stock minimum rules and generate procurement order."
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,product_uom:0
+msgid "Product UoM"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Search Procurement"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Very Urgent"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.orderpoint.compute,automatic:0
+msgid "Automatic Orderpoint"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Procurement Details"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:0
+#, python-format
+msgid ""
+"Cannot delete Procurement Order(s) which are in %s State!' % s['state']))\n"
+" return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)\n"
+"\n"
+" def onchange_product_id(self, cr, uid, ids, product_id, context={}):\n"
+" \"\"\" Finds UoM and UoS of changed product.\n"
+" @param product_id: Changed id of product.\n"
+" @return: Dictionary of values.\n"
+" \"\"\"\n"
+" if product_id:\n"
+" w = self.pool.get('product.product"
+msgstr ""
+
+#. module: procurement
+#: constraint:ir.rule:0
+msgid "Rules are not supported for osv_memory objects !"
+msgstr ""
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 2b3eeb9b64c..5c6caf1e9db 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -60,6 +60,21 @@ class mrp_property(osv.osv):
'composition': lambda *a: 'min',
}
mrp_property()
+
+class StockMove(osv.osv):
+ _inherit = 'stock.move'
+
+ _columns= {
+ 'procurements': fields.one2many('procurement.order', 'move_id', 'Procurements'),
+ }
+
+ def copy(self, cr, uid, id, default=None, context=None):
+ default = default or {}
+ default['procurements'] = []
+ return super(StockMove, self).copy(cr, uid, id, default, context)
+
+StockMove()
+
class procurement_order(osv.osv):
"""
Procurement Orders
@@ -120,7 +135,9 @@ class procurement_order(osv.osv):
if s['state'] in ['draft','cancel']:
unlink_ids.append(s['id'])
else:
- raise osv.except_osv(_('Invalid action !'), _('Cannot delete Procurement Order(s) which are in %s State!' % s['state']))
+ raise osv.except_osv(_('Invalid action !'),
+ _('Cannot delete Procurement Order(s) which are in %s State!') % \
+ s['state'])
return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
def onchange_product_id(self, cr, uid, ids, product_id, context={}):
@@ -282,7 +299,8 @@ class procurement_order(osv.osv):
if procurement.product_id.product_tmpl_id.supply_method <> 'buy':
return False
if not procurement.product_id.seller_ids:
- cr.execute('update procurement_order set message=%s where id=%s', (_('No supplier defined for this product !'), procurement.id))
+ cr.execute('update procurement_order set message=%s where id=%s',
+ (_('No supplier defined for this product !'), procurement.id))
return False
partner = procurement.product_id.seller_id #Taken Main Supplier of Product of Procurement.
@@ -291,7 +309,8 @@ class procurement_order(osv.osv):
return False
address_id = partner_obj.address_get(cr, uid, [partner.id], ['delivery'])['delivery']
if not address_id:
- cr.execute('update procurement_order set message=%s where id=%s', (_('No address defined for the supplier'), procurement.id))
+ cr.execute('update procurement_order set message=%s where id=%s',
+ (_('No address defined for the supplier'), procurement.id))
return False
return True
@@ -311,7 +330,8 @@ class procurement_order(osv.osv):
move_obj = self.pool.get('stock.move')
for procurement in self.browse(cr, uid, ids):
if procurement.product_qty <= 0.00:
- raise osv.except_osv(_('Data Insufficient !'), _('Please check the Quantity in Procurement Order(s), it should not be less than 1!'))
+ raise osv.except_osv(_('Data Insufficient !'),
+ _('Please check the Quantity in Procurement Order(s), it should not be less than 1!'))
if procurement.product_id.type in ('product', 'consu'):
if not procurement.move_id:
source = procurement.location_id.id
@@ -330,7 +350,7 @@ class procurement_order(osv.osv):
})
move_obj.action_confirm(cr, uid, [id], context=context)
self.write(cr, uid, [procurement.id], {'move_id': id, 'close_move': 1})
- message = _('Procurement ') + " '" + procurement.name + "' "+ _("is running.")
+ message = _("Procurement '%s' is running.") % procurement.name
self.log(cr, uid, procurement.id, message)
self.write(cr, uid, ids, {'state': 'confirmed', 'message': ''})
return True
@@ -339,7 +359,8 @@ class procurement_order(osv.osv):
""" Changes procurement state to Running and writes message.
@return: True
"""
- self.write(cr, uid, ids, {'state': 'running', 'message': _('from stock: products assigned.')})
+ self.write(cr, uid, ids, {'state': 'running',
+ 'message': _('from stock: products assigned.')})
return True
def _check_make_to_stock_service(self, cr, uid, procurement, context={}):
@@ -361,11 +382,16 @@ class procurement_order(osv.osv):
ok = ok and self.pool.get('stock.move').action_assign(cr, uid, [id])
cr.execute('select count(id) from stock_warehouse_orderpoint where product_id=%s', (procurement.product_id.id,))
if not cr.fetchone()[0]:
- cr.execute('update procurement_order set message=%s where id=%s', (_('Not enough stock and no minimum orderpoint rule defined.'), procurement.id))
- message = _('Procurement ') + " '" + procurement.name + "' "+ _("has an exception.") + _('Not enough stock and no minimum orderpoint rule defined.')
+ cr.execute('update procurement_order set message=%s where id=%s',
+ (_('Not enough stock and no minimum orderpoint rule defined.'),
+ procurement.id))
+ message = _("Procurement '%s' has an exception." \
+ "Not enough stock and no minimum orderpoint rule defined.") % \
+ procurement.name
self.log(cr, uid, procurement.id, message)
if procurement.state=='exception' and procurement.message=='':
- cr.execute('update procurement_order set message=%s where id=%s', (_('Not enough stock '), procurement.id))
+ cr.execute('update procurement_order set message=%s where id=%s',
+ (_('Not enough stock '), procurement.id) )
return ok
@@ -444,7 +470,7 @@ class procurement_order(osv.osv):
if procurement.move_id:
if procurement.close_move and (procurement.move_id.state <> 'done'):
move_obj.action_done(cr, uid, [procurement.move_id.id])
- message = _('Procurement ') + " '" + procurement.name + "' "+ _("is done.")
+ message = _("Procurement '%s' is done.") % procurement.name
self.log(cr, uid, procurement.id, message)
res = self.write(cr, uid, ids, {'state': 'done', 'date_close': time.strftime('%Y-%m-%d')})
wf_service = netsvc.LocalService("workflow")
@@ -464,6 +490,21 @@ class procurement_order(osv.osv):
procurement_order()
+class StockPicking(osv.osv):
+ _inherit = 'stock.picking'
+
+ def test_finnished(self, cursor, user, ids):
+ wf_service = netsvc.LocalService("workflow")
+ res = super(StockPicking, self).test_finnished(cursor, user, ids)
+ for picking in self.browse(cursor, user, ids):
+ for move in picking.move_lines:
+ if move.state == 'done' and move.procurements:
+ for procurement in move.procurements:
+ wf_service.trg_validate(user, 'procurement.order',
+ procurement.id, 'button_check', cursor)
+ return res
+
+StockPicking()
class stock_warehouse_orderpoint(osv.osv):
"""
@@ -500,7 +541,8 @@ class stock_warehouse_orderpoint(osv.osv):
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.warehouse.orderpoint', context=c)
}
_sql_constraints = [
- ('qty_multiple_check', 'CHECK( qty_multiple > 0 )', _('Qty Multiple must be greater than zero.')),
+ ('qty_multiple_check', 'CHECK( qty_multiple > 0 )',
+ _('Qty Multiple must be greater than zero.')),
]
def onchange_warehouse_id(self, cr, uid, ids, warehouse_id, context={}):
diff --git a/addons/product/i18n/hr.po b/addons/product/i18n/hr.po
index e6086b9c7fe..2328a50bbde 100644
--- a/addons/product/i18n/hr.po
+++ b/addons/product/i18n/hr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-09-08 12:42+0000\n"
+"PO-Revision-Date: 2010-09-08 09:04+0000\n"
"Last-Translator: Goran Kliska \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-08-12 03:56+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
@@ -48,12 +48,12 @@ msgstr ""
#. module: product
#: help:product.supplierinfo,name:0
msgid "Supplier of this product"
-msgstr ""
+msgstr "Dobavljač ovog proizvoda"
#. module: product
#: model:product.template,name:product.product_product_ram512_product_template
msgid "DDR 512MB PC400"
-msgstr ""
+msgstr "DDR 512MB PC400"
#. module: product
#: model:product.template,name:product.product_product_0_product_template
@@ -66,11 +66,13 @@ msgid ""
"The minimal quantity to purchase for this supplier, expressed in the default "
"unit of measure."
msgstr ""
+"Minimalna količina narudžbe od ovog dobavljača, izražena u predefiniranoj "
+"jedinici mjere."
#. module: product
#: field:product.template,weight_net:0
msgid "Net weight"
-msgstr ""
+msgstr "Neto težina"
#. module: product
#: help:product.product,incoming_qty:0
@@ -90,7 +92,7 @@ msgstr ""
#. module: product
#: field:product.packaging,width:0
msgid "Width"
-msgstr ""
+msgstr "Širina"
#. module: product
#: help:product.pricelist.item,product_tmpl_id:0
@@ -102,12 +104,12 @@ msgstr ""
#. module: product
#: field:product.template,procure_method:0
msgid "Procure Method"
-msgstr ""
+msgstr "Metoda nabave"
#. module: product
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Pogrešno ime modela u definiciji akcije."
#. module: product
#: model:process.process,name:product.process_process_productprocess0
@@ -127,12 +129,12 @@ msgstr ""
#. module: product
#: help:product.packaging,height:0
msgid "The height of the package"
-msgstr ""
+msgstr "Visina paketa"
#. module: product
#: view:product.pricelist:0
msgid "Products Price List"
-msgstr ""
+msgstr "Cjenik proizvoda"
#. module: product
#: model:product.category,name:product.cat1
@@ -147,17 +149,17 @@ msgstr ""
#. module: product
#: field:product.price.type,name:0
msgid "Price Name"
-msgstr ""
+msgstr "Naziv cijene"
#. module: product
#: field:product.product,price:0
msgid "Customer Price"
-msgstr ""
+msgstr "Cijena za kupca"
#. module: product
#: field:product.template,company_id:0
msgid "Company"
-msgstr ""
+msgstr "Tvrtka"
#. module: product
#: field:product.template,rental:0
@@ -167,45 +169,45 @@ msgstr ""
#. module: product
#: field:product.product,lst_price:0
msgid "List Price"
-msgstr ""
+msgstr "Kataloška cijena"
#. module: product
#: model:ir.actions.act_window,name:product.product_price_type_action
#: model:ir.ui.menu,name:product.menu_product_price_type_action
msgid "Prices Types"
-msgstr ""
+msgstr "Vrste cijena"
#. module: product
#: selection:product.template,type:0
msgid "Stockable Product"
-msgstr ""
+msgstr "Uskladištivi proizvod"
#. module: product
#: model:product.category,name:product.product_category_services
msgid "Services"
-msgstr ""
+msgstr "Usluge"
#. module: product
#: help:product.template,list_price:0
msgid ""
"Base price for computing the customer price. Sometimes called the catalog "
"price."
-msgstr ""
+msgstr "Osnovica za izračun cijene za kupca. (Kataloška cijena)"
#. module: product
#: field:pricelist.partnerinfo,min_quantity:0
msgid "Quantity"
-msgstr ""
+msgstr "Količina"
#. module: product
#: model:product.template,name:product.product_product_cpu3_product_template
msgid "Processor AMD Athlon XP 2200+"
-msgstr ""
+msgstr "Processor AMD Athlon XP 2200+"
#. module: product
#: help:product.price.type,name:0
msgid "Name of this kind of price."
-msgstr ""
+msgstr "Naziv ove vrste cijene."
#. module: product
#: help:product.pricelist.version,date_start:0
@@ -215,7 +217,7 @@ msgstr ""
#. module: product
#: field:product.product,incoming_qty:0
msgid "Incoming"
-msgstr ""
+msgstr "Ulazna"
#. module: product
#: selection:product.template,procure_method:0
@@ -226,12 +228,12 @@ msgstr ""
#: view:product.product:0
#: view:product.template:0
msgid "Weigths"
-msgstr ""
+msgstr "Težine"
#. module: product
#: model:product.template,name:product.product_product_fan2_product_template
msgid "Silent fan"
-msgstr ""
+msgstr "Tihi ventilator"
#. module: product
#: help:product.template,supply_method:0
@@ -243,18 +245,18 @@ msgstr ""
#. module: product
#: model:process.transition,note:product.process_transition_supplierofproduct0
msgid "You can see the list of suppliers for that product."
-msgstr ""
+msgstr "Možete vidjeti popis dobavljača za taj proizvod."
#. module: product
#: help:product.packaging,rows:0
msgid "The number of layer on a palet or box"
-msgstr ""
+msgstr "Broj slojeva na paleti ili kutiji"
#. module: product
#: model:product.pricelist.type,name:product.pricelist_type_sale
#: field:res.partner,property_product_pricelist:0
msgid "Sale Pricelist"
-msgstr ""
+msgstr "Prodajni cjenik"
#. module: product
#: field:product.pricelist.item,base_pricelist_id:0
@@ -268,7 +270,7 @@ msgstr ""
#: model:ir.ui.menu,name:product.menu_products
#: view:product.product:0
msgid "Products"
-msgstr ""
+msgstr "Proizvodi"
#. module: product
#: help:product.pricelist.item,price_round:0
@@ -281,23 +283,23 @@ msgstr ""
#. module: product
#: view:product.pricelist.item:0
msgid "New Price ="
-msgstr ""
+msgstr "Nova cijena ="
#. module: product
#: field:product.product,virtual_available:0
msgid "Virtual Stock"
-msgstr ""
+msgstr "Efektivna zaliha"
#. module: product
#: selection:product.template,mes_type:0
msgid "Fixed"
-msgstr ""
+msgstr "Fiksno"
#. module: product
#: model:ir.actions.act_window,name:product.product_uom_categ_form_action
#: model:ir.ui.menu,name:product.menu_product_uom_categ_form_action
msgid "Units of Measure Categories"
-msgstr ""
+msgstr "Kategorije jedinica mjere"
#. module: product
#: help:product.pricelist.item,product_id:0
@@ -305,80 +307,82 @@ msgid ""
"Set a product if this rule only apply to one product. Keep empty for all "
"products"
msgstr ""
+"Odredite proizvod ako se ovo pravilo odnosi samo na jedan proizvod. Ostavite "
+"prazno ako vrijedi za sve proizvode."
#. module: product
#: model:ir.model,name:product.model_product_pricelist_type
#: field:product.pricelist,type:0
#: view:product.pricelist.type:0
msgid "Pricelist Type"
-msgstr ""
+msgstr "Vrsta cjenika"
#. module: product
#: view:product.product:0
#: view:product.template:0
msgid "Base Prices"
-msgstr ""
+msgstr "Osnovne cijene"
#. module: product
#: model:ir.ui.menu,name:product.menu_price
msgid "Prices Computations"
-msgstr ""
+msgstr "Izračuni cijena"
#. module: product
#: field:product.pricelist.item,name:0
msgid "Rule Name"
-msgstr ""
+msgstr "Naziv pravila"
#. module: product
#: model:ir.ui.menu,name:product.menu_config_product
msgid "Configuration"
-msgstr ""
+msgstr "Konfiguracija"
#. module: product
#: field:product.packaging,rows:0
msgid "Number of Layer"
-msgstr ""
+msgstr "Broj slojeva"
#. module: product
#: constraint:product.category:0
msgid "Error ! You can not create recursive categories."
-msgstr ""
+msgstr "Greška ! Ne možete stvoriti rekurzivne kategorije."
#. module: product
#: field:product.template,uom_id:0
msgid "Default UoM"
-msgstr ""
+msgstr "Standardna JM"
#. module: product
#: field:product.template,produce_delay:0
msgid "Manufacturing Lead Time"
-msgstr ""
+msgstr "Pripremno vrijeme proizvodnje"
#. module: product
#: field:product.supplierinfo,pricelist_ids:0
msgid "Supplier Pricelist"
-msgstr ""
+msgstr "Dobavljačev cjenik"
#. module: product
#: view:product.packaging:0
#: view:product.product:0
msgid "Pallet Dimension"
-msgstr ""
+msgstr "Dimenzije palete"
#. module: product
#: field:product.pricelist.item,base:0
msgid "Based on"
-msgstr ""
+msgstr "Zasnovan na"
#. module: product
#: model:product.template,name:product.product_product_24_product_template
msgid "Keyboard"
-msgstr ""
+msgstr "Tipkovnica"
#. module: product
#: field:product.supplierinfo,name:0
msgid "Partner"
-msgstr ""
+msgstr "Partner"
#. module: product
#: field:product.template,sale_delay:0
@@ -388,7 +392,7 @@ msgstr ""
#. module: product
#: model:product.template,name:product.product_product_25_product_template
msgid "Mouse"
-msgstr ""
+msgstr "Miš"
#. module: product
#: help:product.template,cost_method:0
@@ -397,26 +401,29 @@ msgid ""
"at the end of the year), Average Price: the cost price is recomputed at each "
"reception of products."
msgstr ""
+"Standardna (planska) cijena: cijena je fiksno zadana i izračunava se "
+"periodički (obično na kraju godine), Prosječna cijena: cijena se izračunava "
+"kod svake nabave proizvoda."
#. module: product
#: field:product.pricelist,name:0
msgid "Pricelist Name"
-msgstr ""
+msgstr "Naziv cjenika"
#. module: product
#: field:product.template,seller_ids:0
msgid "Partners"
-msgstr ""
+msgstr "Partneri"
#. module: product
#: selection:product.template,cost_method:0
msgid "Average Price"
-msgstr ""
+msgstr "Prosječna cijena"
#. module: product
#: model:process.node,note:product.process_node_product0
msgid "Create new Product"
-msgstr ""
+msgstr "Kreiraj novi proizvod"
#. module: product
#: help:product.pricelist.item,name:0
@@ -426,7 +433,7 @@ msgstr ""
#. module: product
#: view:product.pricelist.item:0
msgid "Min. Margin"
-msgstr ""
+msgstr "Min. marža"
#. module: product
#: view:product.pricelist.item:0
@@ -436,43 +443,43 @@ msgstr ""
#. module: product
#: model:product.template,name:product.product_product_cpu1_product_template
msgid "Processor AMD Athlon XP 1800+"
-msgstr ""
+msgstr "Processor AMD Athlon XP 1800+"
#. module: product
#: selection:product.template,state:0
msgid "In Production"
-msgstr ""
+msgstr "U proizvodnji"
#. module: product
#: field:product.category,child_id:0
msgid "Child Categories"
-msgstr ""
+msgstr "Podkategorije"
#. module: product
#: model:product.category,name:product.product_category_accessories
msgid "Accessories"
-msgstr ""
+msgstr "Oprema"
#. module: product
#: field:product.supplierinfo,sequence:0
msgid "Priority"
-msgstr ""
+msgstr "Prioritet"
#. module: product
#: model:product.template,name:product.product_product_20_product_template
msgid "HDD on demand"
-msgstr ""
+msgstr "HDD na zahtjev"
#. module: product
#: field:product.uom,factor_inv:0
#: field:product.uom,factor_inv_data:0
msgid "Factor"
-msgstr ""
+msgstr "Faktor"
#. module: product
#: wizard_button:product.price_list,init,price:0
msgid "Print"
-msgstr ""
+msgstr "Ispiši"
#. module: product
#: model:process.node,name:product.process_node_supplier0
@@ -482,18 +489,18 @@ msgstr ""
#. module: product
#: field:product.ul,type:0
msgid "Type"
-msgstr ""
+msgstr "Vrsta"
#. module: product
#: wizard_field:product.price_list,init,price_list:0
msgid "PriceList"
-msgstr ""
+msgstr "Cjenik"
#. module: product
#: view:product.product:0
#: view:product.template:0
msgid "UOM"
-msgstr ""
+msgstr "Jed.mj."
#. module: product
#: model:product.uom,name:product.product_uom_unit
@@ -505,18 +512,18 @@ msgstr ""
#: model:ir.ui.menu,name:product.menu_product_pricelist_action2
#: model:ir.ui.menu,name:product.menu_product_pricelist_main
msgid "Pricelists"
-msgstr ""
+msgstr "Cjenici"
#. module: product
#: field:product.supplierinfo,product_name:0
msgid "Partner Product Name"
-msgstr ""
+msgstr "Partnerov naziv proizvoda"
#. module: product
#: view:product.product:0
#: view:product.template:0
msgid "Miscelleanous"
-msgstr ""
+msgstr "Razno"
#. module: product
#: help:product.pricelist.item,base:0
@@ -529,22 +536,22 @@ msgstr ""
#: model:ir.ui.menu,name:product.next_id_16
#: view:product.uom:0
msgid "Units of Measure"
-msgstr ""
+msgstr "Jedinice mjere"
#. module: product
#: field:product.product,partner_ref:0
msgid "Customer ref"
-msgstr ""
+msgstr "Kupčeva šivra"
#. module: product
#: field:product.supplierinfo,qty:0
msgid "Minimal Quantity"
-msgstr ""
+msgstr "Min. količina"
#. module: product
#: model:product.category,name:product.product_category_pc
msgid "PC"
-msgstr ""
+msgstr "PC"
#. module: product
#: help:product.template,seller_delay:0
@@ -557,22 +564,22 @@ msgstr ""
#. module: product
#: field:product.template,seller_delay:0
msgid "Supplier Lead Time"
-msgstr ""
+msgstr "Vodeće vrijeme dobavljača"
#. module: product
#: model:product.pricelist.version,name:product.ver0
msgid "Default Public Pricelist Version"
-msgstr ""
+msgstr "Zadana verzija javnog cjenika"
#. module: product
#: field:product.pricelist.type,key:0
msgid "Key"
-msgstr ""
+msgstr "Ključ"
#. module: product
#: field:product.pricelist.item,price_version_id:0
msgid "Price List Version"
-msgstr ""
+msgstr "Verzija cjenika"
#. module: product
#: view:product.pricelist.item:0
@@ -585,17 +592,18 @@ msgid ""
"This pricelist will be used, instead of the default one, "
"for sales to the current partner"
msgstr ""
+"Ovaj cjenik će se koristiti, umjesto zadanog, za prodaju tekućem partneru"
#. module: product
#: model:ir.model,name:product.model_product_pricelist
#: view:product.supplierinfo:0
msgid "Pricelist"
-msgstr ""
+msgstr "Cjenik"
#. module: product
#: selection:product.template,type:0
msgid "Consumable"
-msgstr ""
+msgstr "Potrošni materijal"
#. module: product
#: help:product.price.type,currency_id:0
@@ -605,17 +613,17 @@ msgstr ""
#. module: product
#: help:product.template,weight:0
msgid "The gross weight in Kg."
-msgstr ""
+msgstr "Bruto težina u Kg."
#. module: product
#: selection:product.ul,type:0
msgid "Box"
-msgstr ""
+msgstr "Kutija"
#. module: product
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
-msgstr ""
+msgstr "Neispravan XML za arhitekturu prikaza!"
#. module: product
#: help:product.template,sale_ok:0
@@ -632,12 +640,12 @@ msgstr ""
#. module: product
#: field:product.category,parent_id:0
msgid "Parent Category"
-msgstr ""
+msgstr "Nadređena kategorija"
#. module: product
#: selection:product.template,state:0
msgid "In Development"
-msgstr ""
+msgstr "U razvoju"
#. module: product
#: help:product.pricelist.type,key:0
@@ -656,7 +664,7 @@ msgstr ""
#. module: product
#: field:product.packaging,weight:0
msgid "Total Package Weight"
-msgstr ""
+msgstr "Ukupna težina paketa"
#. module: product
#: help:product.template,procure_method:0
@@ -670,18 +678,18 @@ msgstr ""
#: view:product.product:0
#: view:product.template:0
msgid "Procurement"
-msgstr ""
+msgstr "Nabava"
#. module: product
#: model:ir.actions.act_window,name:product.product_category_action
#: model:ir.ui.menu,name:product.menu_product_category_action
msgid "Products by Category"
-msgstr ""
+msgstr "Proizvodi po kategorijama"
#. module: product
#: model:product.template,name:product.product_product_hdd1_product_template
msgid "HDD Seagate 7200.8 80GB"
-msgstr ""
+msgstr "HDD Seagate 7200.8 80GB"
#. module: product
#: help:product.pricelist.version,active:0
@@ -694,49 +702,49 @@ msgstr ""
#. module: product
#: model:product.template,name:product.product_product_hdd3_product_template
msgid "HDD Seagate 7200.8 160GB"
-msgstr ""
+msgstr "HDD Seagate 7200.8 160GB"
#. module: product
#: view:product.product:0
msgid "Product Variant"
-msgstr ""
+msgstr "Varijanta proizvoda"
#. module: product
#: field:product.packaging,ul:0
msgid "Type of Package"
-msgstr ""
+msgstr "Tip pakiranja"
#. module: product
#: field:product.template,loc_rack:0
msgid "Rack"
-msgstr ""
+msgstr "Polica"
#. module: product
#: field:product.uom,category_id:0
msgid "UoM Category"
-msgstr ""
+msgstr "Kategorija jedinice mjere"
#. module: product
#: selection:product.ul,type:0
msgid "Pack"
-msgstr ""
+msgstr "Paket"
#. module: product
#: field:product.product,ean13:0
msgid "EAN13"
-msgstr ""
+msgstr "EAN13"
#. module: product
#: view:product.product:0
#: view:product.template:0
#: field:product.template,description_sale:0
msgid "Sale Description"
-msgstr ""
+msgstr "Prodajni opis"
#. module: product
#: field:product.template,uos_id:0
msgid "Unit of Sale"
-msgstr ""
+msgstr "Jedinica prodaje"
#. module: product
#: field:product.template,mes_type:0
@@ -746,7 +754,7 @@ msgstr ""
#. module: product
#: model:product.uom.categ,name:product.product_uom_categ_kgm
msgid "Weight"
-msgstr ""
+msgstr "Masa"
#. module: product
#: model:product.template,name:product.product_product_22_product_template
@@ -763,7 +771,7 @@ msgstr ""
#. module: product
#: field:product.template,supply_method:0
msgid "Supply method"
-msgstr ""
+msgstr "Metoda nabave"
#. module: product
#: model:product.category,name:product.product_category_11
@@ -773,19 +781,19 @@ msgstr ""
#. module: product
#: view:product.uom.categ:0
msgid "Units of Measure categories"
-msgstr ""
+msgstr "Kategorije jedinaica mjere"
#. module: product
#: field:product.category,sequence:0
#: field:product.packaging,sequence:0
#: field:product.pricelist.item,sequence:0
msgid "Sequence"
-msgstr ""
+msgstr "Sekvenca"
#. module: product
#: view:product.supplierinfo:0
msgid "Supplier Information"
-msgstr ""
+msgstr "Dobavljačeve informacije"
#. module: product
#: model:ir.actions.act_window,name:product.product_ul_form_action
@@ -795,13 +803,13 @@ msgstr ""
#: view:product.product:0
#: view:product.ul:0
msgid "Packaging"
-msgstr ""
+msgstr "Pakiranje"
#. module: product
#: field:product.price.type,currency_id:0
#: field:product.pricelist,currency_id:0
msgid "Currency"
-msgstr ""
+msgstr "Valuta"
#. module: product
#: model:product.template,name:product.product_product_cpu_gen_product_template
@@ -817,17 +825,17 @@ msgstr ""
#. module: product
#: model:process.transition,name:product.process_transition_supplierofproduct0
msgid "Suppliers of Product"
-msgstr ""
+msgstr "Dobavljači proizvoda"
#. module: product
#: field:product.pricelist.version,date_start:0
msgid "Start Date"
-msgstr ""
+msgstr "Početni datum"
#. module: product
#: view:res.partner:0
msgid "Sales Properties"
-msgstr ""
+msgstr "Svojstva prodaje"
#. module: product
#: help:product.product,qty_available:0
@@ -839,66 +847,69 @@ msgstr ""
#. module: product
#: model:product.template,name:product.product_product_pc1_product_template
msgid "Basic PC"
-msgstr ""
+msgstr "Računalo"
#. module: product
#: field:product.template,loc_row:0
msgid "Row"
-msgstr ""
+msgstr "Redak"
#. module: product
#: field:product.template,categ_id:0
msgid "Category"
-msgstr ""
+msgstr "Kategorija"
#. module: product
#: help:product.pricelist.item,min_quantity:0
msgid ""
"The rule only applies if the partner buys/sells more than this quantity."
msgstr ""
+"Pravilo se primjenjuje ssamo ako partner kupuje/prodaje više od ove količine."
#. module: product
#: model:product.template,name:product.product_product_ram_product_template
msgid "DDR 256MB PC400"
-msgstr ""
+msgstr "DDR 256MB PC400"
#. module: product
#: field:product.product,qty_available:0
msgid "Real Stock"
-msgstr ""
+msgstr "Dostupna zaliha"
#. module: product
#: view:product.category:0
msgid "Product Categories"
-msgstr ""
+msgstr "Kategorije proizvoda"
#. module: product
#: help:product.uom,category_id:0
msgid ""
"Unit of Measure of a category can be converted between each others in the "
"same category."
-msgstr ""
+msgstr "Jedninice mjere mogu"
#. module: product
#: model:ir.model,name:product.model_product_uom
msgid "Product Unit of Measure"
-msgstr ""
+msgstr "Jedinica mjere proizvoda"
#. module: product
#: field:product.template,sale_ok:0
msgid "Can be sold"
-msgstr ""
+msgstr "Može se prodati"
#. module: product
#: model:product.template,name:product.product_product_23_product_template
msgid "Complete PC With Peripherals"
-msgstr ""
+msgstr "Računalo s periferijama"
#. module: product
#: constraint:product.template:0
msgid ""
"Error: The default UOM and the purchase UOM must be in the same category."
msgstr ""
+"Greška: Zadana jedinica mjere i jedinica mjere nabave mora biti u istoj "
+"kategoriji."
#. module: product
#: model:product.template,name:product.product_product_mb2_product_template
diff --git a/addons/product/i18n/lt.po b/addons/product/i18n/lt.po
index 687febfb392..a9c06cd70e0 100644
--- a/addons/product/i18n/lt.po
+++ b/addons/product/i18n/lt.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 08:48+0000\n"
+"PO-Revision-Date: 2010-09-08 09:08+0000\n"
"Last-Translator: Giedrius Slavinskas \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:47+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Language: lt\n"
diff --git a/addons/product/i18n/mn.po b/addons/product/i18n/mn.po
index 15593a25795..7389630e6ad 100644
--- a/addons/product/i18n/mn.po
+++ b/addons/product/i18n/mn.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 09:01+0000\n"
+"PO-Revision-Date: 2010-09-08 09:08+0000\n"
"Last-Translator: ub121 \n"
"Language-Team: Mongolian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:47+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
diff --git a/addons/product/i18n/pt_BR.po b/addons/product/i18n/pt_BR.po
index 5dd69944e05..0bf7bda1ddc 100644
--- a/addons/product/i18n/pt_BR.po
+++ b/addons/product/i18n/pt_BR.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 08:59+0000\n"
+"PO-Revision-Date: 2010-09-08 09:10+0000\n"
"Last-Translator: OpenERP Administrators \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:47+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
diff --git a/addons/product/i18n/sr.po b/addons/product/i18n/sr.po
index 9240bcb4e96..a376fcada86 100644
--- a/addons/product/i18n/sr.po
+++ b/addons/product/i18n/sr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 08:46+0000\n"
+"PO-Revision-Date: 2010-09-08 08:58+0000\n"
"Last-Translator: Sonja Sardelić \n"
"Language-Team: Serbian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:47+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
diff --git a/addons/product/i18n/tr.po b/addons/product/i18n/tr.po
index 3fa01a2c986..1fa354d04b1 100644
--- a/addons/product/i18n/tr.po
+++ b/addons/product/i18n/tr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 09:00+0000\n"
+"PO-Revision-Date: 2010-09-08 09:09+0000\n"
"Last-Translator: Angel Spy \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:47+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
diff --git a/addons/product/i18n/zh_CN.po b/addons/product/i18n/zh_CN.po
index dd67721d0be..7cb31c3b142 100644
--- a/addons/product/i18n/zh_CN.po
+++ b/addons/product/i18n/zh_CN.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 09:01+0000\n"
+"PO-Revision-Date: 2010-09-08 09:03+0000\n"
"Last-Translator: Black Jack \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:47+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
diff --git a/addons/product/product.py b/addons/product/product.py
index 57f8316f939..8cb0a08f52d 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -252,7 +252,7 @@ class product_template(osv.osv):
'purchase_ok': fields.boolean('Can be Purchased', help="Determine if the product is visible in the list of products within a selection from a purchase order line."),
'state': fields.selection([('',''),('draft', 'In Development'),('sellable','In Production'),('end','End of Lifecycle'),('obsolete','Obsolete')], 'State', help="Tells the user if he can use the product or not."),
'uom_id': fields.many2one('product.uom', 'Default Unit Of Measure', required=True, help="Default Unit of Measure used for all stock operation."),
- 'uom_po_id': fields.many2one('product.uom', 'Purchase UoM', required=True, help="Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."),
+ 'uom_po_id': fields.many2one('product.uom', 'Purchase Unit of Measure', required=True, help="Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."),
'uos_id' : fields.many2one('product.uom', 'Unit of Sale',
help='Used by companies that manage two units of measure: invoicing and inventory management. For example, in food industries, you will manage a stock of ham but invoice in Kg. Keep empty to use the default UOM.'),
'uos_coeff': fields.float('UOM -> UOS Coeff', digits=(16,4),
diff --git a/addons/product/product_report.xml b/addons/product/product_report.xml
index ca4c3f4f356..6135fe64bca 100644
--- a/addons/product/product_report.xml
+++ b/addons/product/product_report.xml
@@ -4,7 +4,7 @@
+
diff --git a/addons/product/report/product_pricelist.py b/addons/product/report/product_pricelist.py
index d5faa4f0065..47979dfd71c 100644
--- a/addons/product/report/product_pricelist.py
+++ b/addons/product/report/product_pricelist.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -44,7 +44,8 @@ class product_pricelist(report_sxw.rml_parse):
qtys = 1
for i in range(1,6):
- vals['qty'+str(qtys)] = form['qty'+str(i)]
+ if form['qty'+str(i)]!=0:
+ vals['qty'+str(qtys)] = str(form['qty'+str(i)]) + ' units'
qtys += 1
lst.append(vals)
return lst
diff --git a/addons/product/report/product_pricelist.rml b/addons/product/report/product_pricelist.rml
index 7ce4ca4e19d..65d0c671fa8 100644
--- a/addons/product/report/product_pricelist.rml
+++ b/addons/product/report/product_pricelist.rml
@@ -1,6 +1,6 @@
-
+
@@ -13,10 +13,30 @@
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
@@ -27,26 +47,31 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
@@ -99,85 +124,68 @@
+
-
+
-
+ Price List
+
-
-
-
-
-
-
-
-
-
-
+
- Products Price List
+ Price List Name
+
+
+ Currency
+
+
+ Printing Date
-
-
-
-
+
- Price List Name:
+ [[ get_pricelist(data['form']['price_list']) ]]
@@ -397,4 +364,4 @@
-
+
\ No newline at end of file
diff --git a/addons/purchase/report/request_quotation.rml b/addons/purchase/report/request_quotation.rml
index 961ce8239b4..ed2f1859f79 100644
--- a/addons/purchase/report/request_quotation.rml
+++ b/addons/purchase/report/request_quotation.rml
@@ -1,6 +1,6 @@
-
+
@@ -33,16 +33,16 @@
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -66,8 +66,8 @@
+
- [[repeatIn(objects,'order')]][[ setLang(order.partner_id.lang) ]]
@@ -80,7 +80,7 @@
[[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street) or '']][[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street2) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street2) or '']][[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.zip) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.zip) or '' ]] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.city) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.city) or '' ]]
- [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.state_id and order.dest_address_id.state_id.name) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.state_id and order.warehouse_id.partner_address_id.state_id.name) or '']] [[(order.dest_address_id and order.dest_address_id and order.dest_address_id.country_id and order.dest_address_id.country_id.name) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.country_id and order.warehouse_id.partner_address_id.country_id.name) or '' ]]
+ [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.state_id and order.warehouse_id.partner_address_id.state_id.name) or order.partner_address_id and order.partner_address_id.state_id and order.partner_address_id.state_id.name]] [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.country_id and order.warehouse_id.partner_address_id.country_id.name) or order.partner_address_id.country_id.name ]]
@@ -88,7 +88,7 @@
- [[ order.partner_id.name ]] [[ order.partner_id.title or '' ]]
+ [[ (order.partner_id and order.partner_id.title) or '' ]] [[ order.partner_id.name ]][[ (order.partner_address_id and order.partner_address_id.title) or '' ]] [[ order.partner_address_id.name ]] [[ (order.partner_address_id and order.partner_address_id.street) or '']] [[ order.partner_address_id.street2 ]][[ (order.partner_address_id and order.partner_address_id.zip) or '' ]] [[ (order.partner_address_id and order.partner_address_id.city) or '' ]]
@@ -124,13 +124,13 @@
[[repeatIn(order.order_line,'order_line')]]
-
+
-
-
-
+ [[ format(order.notes or '') ]]
@@ -162,4 +160,4 @@
[[ user.signature or '' ]]
-
+
\ No newline at end of file
diff --git a/addons/purchase/stock_view.xml b/addons/purchase/stock_view.xml
index a991b79d0e9..2b741536d3b 100644
--- a/addons/purchase/stock_view.xml
+++ b/addons/purchase/stock_view.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/purchase/wizard/purchase_installer.py b/addons/purchase/wizard/purchase_installer.py
index 010f847ad99..bf106adc3ac 100644
--- a/addons/purchase/wizard/purchase_installer.py
+++ b/addons/purchase/wizard/purchase_installer.py
@@ -25,7 +25,7 @@ class purchase_installer(osv.osv_memory):
_inherit = 'res.config.installer'
_columns = {
- 'purchase_requisition':fields.boolean('Purchase Requisition',help="Manages your Purchase Requisition and allow you to easily keep track and manage all your purchase orders."),
+ 'purchase_requisition':fields.boolean('Purchase Requisition',help="Manages your Purchase Requisition and allows you to easily keep track and manage all your purchase orders."),
'purchase_analytic_plans': fields.boolean('Purchase Analytic Plans',help="Manages analytic distribution and purchase orders.")
}
purchase_installer()
diff --git a/addons/report_designer/installer.py b/addons/report_designer/installer.py
index d67ebabb77e..4dd35fd4560 100644
--- a/addons/report_designer/installer.py
+++ b/addons/report_designer/installer.py
@@ -29,14 +29,14 @@ class report_designer_installer(osv.osv_memory):
'base_report_designer':fields.boolean('OpenOffice Report Designer',help="This module adds wizards to import/export .SXW report that "
"you can modify in OpenOffice.Once you have modified it you can "
"upload the report using the same wizard."),
- 'base_report_creator':fields.boolean('Query Builder',help="his module allows you to create any statistic "
+ 'base_report_creator':fields.boolean('Query Builder',help="Query Builder allows you to create any statistic "
"reports on several objects. It's a SQL query builder and browser for and users. "
"After installation, it adds a menu to define custom report in the Dashboard menu."),
'olap':fields.boolean('Business Intelligence Report',help="Olap module is used to install BI module in client. Olap provides Online "
"Analytical Process with the mdx query. BI provides Cube Browsing and Cube Designing. "
- "After installation you will get Cube Browser and Cube Desinger in Reporting Menu. "
+ "After installation you will get Cube Browser and Cube Designer in Reporting Menu. "
"Cube Browser is used to generate the reports with table view (mdx view) of mdx query "
- "and Cube designer is used to make cubes in BI."),
+ "and Cube Designer is used to make cubes in BI."),
}
report_designer_installer()
diff --git a/addons/report_designer/report_designer_installer.xml b/addons/report_designer/report_designer_installer.xml
index 3afd23f45ed..79381691d32 100644
--- a/addons/report_designer/report_designer_installer.xml
+++ b/addons/report_designer/report_designer_installer.xml
@@ -8,7 +8,7 @@
-
+
-
+
\ No newline at end of file
diff --git a/addons/stock/report/packing.rml b/addons/stock/report/packing.rml
index 7288615da6d..15fa35e07e9 100644
--- a/addons/stock/report/packing.rml
+++ b/addons/stock/report/packing.rml
@@ -1,6 +1,6 @@
-
+
@@ -136,7 +136,7 @@
[[ (picking.address_id and picking.address_id.partner_id and picking.address_id.partner_id.title) or '' ]] [[ picking.address_id and picking.address_id.partner_id and picking.address_id.partner_id.name ]][[ picking.address_id and picking.address_id.street or '' ]][[ picking.address_id and picking.address_id.zip or '' ]] [[ picking.address_id and picking.address_id.city or '']]
-
+
@@ -276,7 +276,7 @@
-
+
[[ ([line for line in picking.move_lines if (line.state == 'draft' )]) and 'Non Assigned Products:' or removeParentNode('para') ]]
diff --git a/addons/stock/report/picking.rml b/addons/stock/report/picking.rml
index 3ef7ce2e866..3b837f51844 100644
--- a/addons/stock/report/picking.rml
+++ b/addons/stock/report/picking.rml
@@ -1,6 +1,6 @@
-
+
@@ -97,7 +97,7 @@
-
+
@@ -125,35 +125,20 @@
-
-
-
-
-
[[ (picking.address_id and picking.address_id.partner_id and picking.address_id.partner_id.title) or '' ]] [[ picking.address_id and picking.address_id.partner_id and picking.address_id.partner_id.name ]][[ picking.address_id and picking.address_id.street or '' ]]
+ [[ picking.address_id and picking.address_id.street2 or removeParentNode('para') ]][[ picking.address_id and picking.address_id.zip or '' ]] [[ picking.address_id and picking.address_id.city or '']]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ [[ (picking.address_id and picking.address_id.state_id and picking.address_id.state_id.name) or removeParentNode('para') ]]
+ [[ (picking.address_id and picking.address_id.country_id and picking.address_id.country_id.name) or '' ]]
- [[ picking.address_id and 'Shipping Address :' or removeParentNode('para') ]]
- [[ ( picking.address_id and picking.address_id.title) or '' ]] [[ (picking.address_id and picking.address_id.name) or '' ]]
+ [[ (picking.address_id and picking.address_id.title) or '' ]] [[ (picking.address_id and picking.address_id.name) or '' ]] [[ (picking.address_id and picking.address_id.street) or '' ]]
- [[ (picking.address_id and picking.address_id.zip) or '' ]] [[ (picking.address_id and picking.address_id.city) or '' ]] [[ (picking.address_id and picking.address_id.state_id and picking.address_id.state_id.name) or '' ]]
+ [[ (picking.address_id and picking.address_id.street2) or removeParentNode('para') ]]
+ [[ (picking.address_id and picking.address_id.zip) or '' ]] [[ (picking.address_id and picking.address_id.city) or '' ]]
+ [[ (picking.address_id and picking.address_id.state_id and picking.address_id.state_id.name) or removeParentNode('para') ]][[ (picking.address_id and picking.address_id.country_id and picking.address_id.country_id.name) or '' ]]
- [[ 'weight' in picking._columns.keys() and picking.weight or '']]
+ [[ 'weight' in picking._columns.keys() and picking.weight or '']]
-
+
Description
@@ -227,22 +212,16 @@
State
- Quantity
+ Quantity
Location
-
-
-
-
-
- [[ repeatIn([line for line in picking.move_lines if (line.state == 'confirmed' or line.state=='done' or line.state=='assigned')],'move_lines') ]]
- [[ picking.move_lines or removeParentNode('blockTable')]]
+ [[ picking.move_lines or removeParentNode('blockTable')]]
- [[ (move_lines.location_id and move_lines.location_id.name) or '' ]]
+ [[ (move_lines.location_id and move_lines.location_id.name) or '' ]]
-
-
-
-
-
-
-
-
-
-
-
+
+
+ [[ ([line for line in picking.move_lines if (line.state == 'draft' or line.state=='waiting' )]) and 'Non Assigned Products:' or removeParentNode('para') ]][[ repeatIn([line for line in picking.move_lines if (line.state == 'draft' or line.state=='waiting')],'move_lines') ]]
- [[ picking.move_lines or removeParentNode('blockTable')]]
+ [[ picking.move_lines or removeParentNode('blockTable')]]
[[ p.location_id.name ]]
@@ -208,4 +222,4 @@
-
+
\ No newline at end of file
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index e19e36b641f..5ecbd5f40ba 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -28,6 +28,7 @@ from tools.translate import _
import netsvc
import tools
import decimal_precision as dp
+import logging
#----------------------------------------------------------
@@ -39,7 +40,7 @@ class stock_incoterms(osv.osv):
_columns = {
'name': fields.char('Name', size=64, required=True, help="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."),
'code': fields.char('Code', size=3, required=True, help="Code for Incoterms"),
- 'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the incoterms without removing it."),
+ 'active': fields.boolean('Active', help="By unchecking the active field, you may hide an INCOTERM without deleting it."),
}
_defaults = {
'active': True,
@@ -167,9 +168,17 @@ class stock_location(osv.osv):
_columns = {
'name': fields.char('Location Name', size=64, required=True, translate=True),
- 'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the stock location without removing it."),
- 'usage': fields.selection([('supplier', 'Supplier Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory'), ('procurement', 'Procurement'), ('production', 'Production'), ('transit', 'Transit Location for Inter-Companies Transfers')], 'Location Type', required=True),
- 'allocation_method': fields.selection([('fifo', 'FIFO'), ('lifo', 'LIFO'), ('nearest', 'Nearest')], 'Allocation Method', required=True),
+ 'active': fields.boolean('Active', help="By unchecking the active field, you may hide a location without deleting it."),
+ 'usage': fields.selection([('supplier', 'Supplier Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory'), ('procurement', 'Procurement'), ('production', 'Production'), ('transit', 'Transit Location for Inter-Companies Transfers')], 'Location Type', required=True,
+ help="""* Supplier Location: Virtual location representing the source location for products coming from your suppliers
+ \n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products
+ \n* Internal Location: Physical locations inside your own warehouses,
+ \n* Customer Location: Virtual location representing the destination location for products sent to your customers
+ \n* Inventory: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)
+ \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* Production: Virtual counterpart location for production operations: this location consumes the raw material and produces finished products
+ """, select = True),
+ # temporarily removed, as it's unused: 'allocation_method': fields.selection([('fifo', 'FIFO'), ('lifo', 'LIFO'), ('nearest', 'Nearest')], 'Allocation Method', required=True),
'complete_name': fields.function(_complete_name, method=True, type='char', size=100, string="Location Name"),
'stock_real': fields.function(_product_qty_available, method=True, type='float', string='Real Stock', multi="stock"),
@@ -178,44 +187,46 @@ class stock_location(osv.osv):
'location_id': fields.many2one('stock.location', 'Parent Location', select=True, ondelete='cascade'),
'child_ids': fields.one2many('stock.location', 'location_id', 'Contains'),
- 'chained_journal_id': fields.many2one('stock.journal', 'Chained Journal'),
+ 'chained_journal_id': fields.many2one('stock.journal', 'Chaining Journal',help="Inventory Journal in which the chained move will be written, if the Chaining Type is not Transparent (no journal is used if left empty)"),
'chained_location_id': fields.many2one('stock.location', 'Chained Location If Fixed'),
'chained_location_type': fields.selection([('none', 'None'), ('customer', 'Customer'), ('fixed', 'Fixed Location')],
'Chained Location Type', required=True,
- help="This field is set to determine the destination location.\n" \
- "If the field is set to 'customer', the location is given by the properties of the partner form.\n"\
- "If the field is set to 'fixed', the destination location is given by the field Location if link is fixed."),
+ help="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." \
+ ),
'chained_auto_packing': fields.selection(
[('auto', 'Automatic Move'), ('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')],
- 'Automatic Move',
+ 'Chaining Type',
required=True,
help="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."
),
- 'chained_picking_type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('delivery', 'Delivery')], 'Shipping Type', help="Shipping type specify of the chained move, goods coming in or going out."),
- 'chained_company_id': fields.many2one('res.company', 'Chained Company', help='Set here the belonging company of the chained move'),
- 'chained_delay': fields.integer('Chained lead time (days)'),
- 'address_id': fields.many2one('res.partner.address', 'Location Address'),
- 'icon': fields.selection(tools.icons, 'Icon', size=64),
+ 'chained_picking_type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('delivery', 'Delivery')], 'Shipping Type', help="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)."),
+ 'chained_company_id': fields.many2one('res.company', 'Chained Company', help='The company the Picking List containing the chained move will belong to (leave empty to use the default company determination rules'),
+ 'chained_delay': fields.integer('Chaining Lead Time',help="Delay between original move and chained move in days"),
+ 'address_id': fields.many2one('res.partner.address', 'Location Address',help="Address of customer or supplier."),
+ 'icon': fields.selection(tools.icons, 'Icon', size=64,help="Icon show in hierarchical tree view"),
'comment': fields.text('Additional Information'),
- 'posx': fields.integer('Corridor (X)'),
- 'posy': fields.integer('Shelves (Y)'),
- 'posz': fields.integer('Height (Z)'),
+ 'posx': fields.integer('Corridor (X)',help="Optional localization details, for information purpose only"),
+ 'posy': fields.integer('Shelves (Y)', help="Optional localization details, for information purpose only"),
+ 'posz': fields.integer('Height (Z)', help="Optional localization details, for information purpose only"),
'parent_left': fields.integer('Left Parent', select=1),
'parent_right': fields.integer('Right Parent', select=1),
'stock_real_value': fields.function(_product_value, method=True, type='float', string='Real Stock Value', multi="stock"),
'stock_virtual_value': fields.function(_product_value, method=True, type='float', string='Virtual Stock Value', multi="stock"),
- 'company_id': fields.many2one('res.company', 'Company', select=1, help='Let this field empty if this location is shared for every companies'),
- 'scrap_location': fields.boolean('Scrap Location', help='Check this box if the current location is a place for destroyed items'),
+ 'company_id': fields.many2one('res.company', 'Company', select=1, help='Let this field empty if this location is shared between all companies'),
+ 'scrap_location': fields.boolean('Scrap Location', help='Check this box to allow using this location to put scrapped/damaged goods.'),
}
_defaults = {
'active': True,
'usage': 'internal',
- 'allocation_method': 'fifo',
'chained_location_type': 'none',
'chained_auto_packing': 'manual',
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.location', context=c),
@@ -274,6 +285,9 @@ class stock_location(osv.osv):
pricetype = self.pool.get('product.price.type').browse(cr, uid, price_type_id)
context['currency_id'] = self.pool.get('res.users').browse(cr, uid, uid).company_id.currency_id.id
+ # To be able to offer recursive or non-recursive reports we need to prevent recursive quantities by default
+ context['compute_child'] = False
+
if not product_ids:
product_ids = product_obj.search(cr, uid, [])
@@ -360,20 +374,82 @@ class stock_location(osv.osv):
def _product_virtual_get(self, cr, uid, id, product_ids=False, context=None, states=['done']):
return self._product_all_get(cr, uid, id, product_ids, context, ['confirmed', 'waiting', 'assigned', 'done'])
- def _product_reserve(self, cr, uid, ids, product_id, product_qty, context=None):
+ def _product_reserve(self, cr, uid, ids, product_id, product_qty, context=None, lock=False):
"""
- @param product_id: Id of product
- @param product_qty: Quantity of product
- @return: List of Values or False
+ Attempt to find a quantity ``product_qty`` (in the product's default uom or the uom passed in ``context``) of product ``product_id``
+ in locations with id ``ids`` and their child locations. If ``lock`` is True, the stock.move lines
+ of product with id ``product_id`` in the searched location will be write-locked using Postgres's
+ "FOR UPDATE NOWAIT" option until the transaction is committed or rolled back, to prevent reservin
+ twice the same products.
+ If ``lock`` is True and the lock cannot be obtained (because another transaction has locked some of
+ the same stock.move lines), a log line will be output and False will be returned, as if there was
+ not enough stock.
+
+ :param product_id: Id of product to reserve
+ :param product_qty: Quantity of product to reserve (in the product's default uom or the uom passed in ``context``)
+ :param lock: if True, the stock.move lines of product with id ``product_id`` in all locations (and children locations) with ``ids`` will
+ be write-locked using postgres's "FOR UPDATE NOWAIT" option until the transaction is committed or rolled back. This is
+ to prevent reserving twice the same products.
+ :param context: optional context dictionary: it a 'uom' key is present it will be used instead of the default product uom to
+ compute the ``product_qty`` and in the return value.
+ :return: List of tuples in the form (qty, location_id) with the (partial) quantities that can be taken in each location to
+ reach the requested product_qty (``qty`` is expressed in the default uom of the product), of False if enough
+ products could not be found, or the lock could not be obtained (and ``lock`` was True).
"""
result = []
amount = 0.0
if context is None:
context = {}
for id in self.search(cr, uid, [('location_id', 'child_of', ids)]):
- cr.execute("select product_uom,sum(product_qty) as product_qty from stock_move where location_dest_id=%s and location_id<>%s and product_id=%s and state='done' group by product_uom", (id, id, product_id))
+ if lock:
+ try:
+ # Must lock with a separate select query because FOR UPDATE can't be used with
+ # aggregation/group by's (when individual rows aren't identifiable).
+ # We use a SAVEPOINT to be able to rollback this part of the transaction without
+ # failing the whole transaction in case the LOCK cannot be acquired.
+ cr.execute("SAVEPOINT stock_location_product_reserve")
+ cr.execute("""SELECT id FROM stock_move
+ WHERE product_id=%s AND
+ (
+ (location_dest_id=%s AND
+ location_id<>%s AND
+ state='done')
+ OR
+ (location_id=%s AND
+ location_dest_id<>%s AND
+ state in ('done', 'assigned'))
+ )
+ FOR UPDATE of stock_move NOWAIT""", (product_id, id, id, id, id), log_exceptions=False)
+ except Exception:
+ # Here it's likely that the FOR UPDATE NOWAIT failed to get the LOCK,
+ # so we ROLLBACK to the SAVEPOINT to restore the transaction to its earlier
+ # state, we return False as if the products were not available, and log it:
+ cr.execute("ROLLBACK TO stock_location_product_reserve")
+ logger = logging.getLogger('stock.location')
+ logger.warn("Failed attempt to reserve %s x product %s, likely due to another transaction already in progress. Next attempt is likely to work. Detailed error available at DEBUG level.", product_qty, product_id)
+ logger.debug("Trace of the failed product reservation attempt: ", exc_info=True)
+ return False
+
+ # XXX TODO: rewrite this with one single query, possibly even the quantity conversion
+ cr.execute("""SELECT product_uom, sum(product_qty) AS product_qty
+ FROM stock_move
+ WHERE location_dest_id=%s AND
+ location_id<>%s AND
+ product_id=%s AND
+ state='done'
+ GROUP BY product_uom
+ """,
+ (id, id, product_id))
results = cr.dictfetchall()
- cr.execute("select product_uom,-sum(product_qty) as product_qty from stock_move where location_id=%s and location_dest_id<>%s and product_id=%s and state in ('done', 'assigned') group by product_uom", (id, id, product_id))
+ cr.execute("""SELECT product_uom,-sum(product_qty) AS product_qty
+ FROM stock_move
+ WHERE location_id=%s AND
+ location_dest_id<>%s AND
+ product_id=%s AND
+ state in ('done', 'assigned')
+ GROUP BY product_uom
+ """,
+ (id, id, product_id))
results += cr.dictfetchall()
total = 0.0
@@ -419,11 +495,11 @@ class stock_tracking(osv.osv):
return sequence + str(self.checksum(sequence))
_columns = {
- 'name': fields.char('Tracking ID', size=64, required=True),
- 'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the pack without removing it."),
- 'serial': fields.char('Reference', size=64),
- 'move_ids': fields.one2many('stock.move', 'tracking_id', 'Moves Tracked'),
- 'date': fields.datetime('Created Date', required=True),
+ 'name': fields.char('Pack Reference', size=64, required=True, select=True),
+ 'active': fields.boolean('Active', help="By unchecking the active field, you may hide a pack without deleting it."),
+ 'serial': fields.char('Additional Reference', size=64, select=True, help="Other reference or serial number"),
+ 'move_ids': fields.one2many('stock.move', 'tracking_id', 'Moves for this pack', readonly=True),
+ 'date': fields.datetime('Creation Date', required=True),
}
_defaults = {
'active': 1,
@@ -448,7 +524,19 @@ class stock_tracking(osv.osv):
def unlink(self, cr, uid, ids, context=None):
raise osv.except_osv(_('Error'), _('You can not remove a lot line !'))
-
+
+ def action_traceability(self, cr, uid, ids, context={}):
+ """ It traces the information of a product
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param ids: List of IDs selected
+ @param context: A standard dictionary
+ @return: A dictionary of values
+ """
+ value={}
+ value=self.pool.get('action.traceability').action_traceability(cr,uid,ids,context)
+ return value
stock_tracking()
#----------------------------------------------------------
@@ -534,16 +622,15 @@ class stock_picking(osv.osv):
_columns = {
'name': fields.char('Reference', size=64, select=True),
- 'origin': fields.char('Origin', size=64, help="Reference of the document that produced this picking."),
- 'backorder_id': fields.many2one('stock.picking', 'Back Order', help="If the picking is splitted then the picking id in available state of move for this picking is stored in Backorder."),
+ 'origin': fields.char('Origin', size=64, help="Reference of the document that produced this picking.", select=True),
+ 'backorder_id': fields.many2one('stock.picking', 'Back Order of', help="If this picking was split this field links to the picking that contains the other part that has been processed already.", select=True),
'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('delivery', 'Delivery')], 'Shipping Type', required=True, select=True, help="Shipping type specify, goods coming in or going out."),
- 'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the picking without removing it."),
'note': fields.text('Notes'),
- 'stock_journal_id': fields.many2one('stock.journal','Stock Journal'),
+ 'stock_journal_id': fields.many2one('stock.journal','Stock Journal', select=True),
'location_id': fields.many2one('stock.location', 'Location', help="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."),
- 'location_dest_id': fields.many2one('stock.location', 'Dest. Location',help="Location where the system will stock the finished products."),
+ "if you subcontract the manufacturing operations.", select=True),
+ 'location_dest_id': fields.many2one('stock.location', 'Dest. Location',help="Location where the system will stock the finished products.", select=True),
'move_type': fields.selection([('direct', 'Direct Delivery'), ('one', 'All at once')], 'Delivery Method', required=True, help="It specifies goods to be delivered all at once or by direct delivery"),
'state': fields.selection([
('draft', 'Draft'),
@@ -553,13 +640,15 @@ class stock_picking(osv.osv):
('done', 'Done'),
('cancel', 'Cancelled'),
], 'State', readonly=True, select=True,
- help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed picking. \
- \n* The \'Confirmed\' state is used for stock movement to do with unavailable products. \
- \n* The \'Available\' state is set automatically when the products are ready to be moved.\
- \n* The \'Waiting\' state is used in MTO moves when a movement is waiting for another one.'),
+ help="* 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"),
'min_date': fields.function(get_min_max_date, fnct_inv=_set_minimum_date, multi="min_max_date",
- method=True, store=True, type='datetime', string='Expected Date', select=1, help="Expected date for Picking. Default it takes current date"),
- 'date': fields.datetime('Order Date', help="Date of Order"),
+ method=True, store=True, type='datetime', string='Expected Date', select=1, help="Expected date for the picking to be processed. Will be set to date of actual processing if not specified."),
+ 'date': fields.datetime('Order Date', help="Date of Order", select=True),
'date_done': fields.datetime('Date Done', help="Date of Completion"),
'max_date': fields.function(get_min_max_date, fnct_inv=_set_maximum_date, multi="min_max_date",
method=True, store=True, type='datetime', string='Max. Expected Date', select=2),
@@ -569,13 +658,12 @@ class stock_picking(osv.osv):
'invoice_state': fields.selection([
("invoiced", "Invoiced"),
("2binvoiced", "To Be Invoiced"),
- ("none", "Not from Picking")], "Invoice Status",
+ ("none", "Not from Picking")], "Invoice Control",
select=True, required=True, readonly=True, states={'draft': [('readonly', False)]}),
- 'company_id': fields.many2one('res.company', 'Company', required=True, select=1),
+ 'company_id': fields.many2one('res.company', 'Company', required=True, select=True),
}
_defaults = {
'name': lambda self, cr, uid, context: '/',
- 'active': 1,
'state': 'draft',
'move_type': 'direct',
'type': 'in',
@@ -589,10 +677,18 @@ class stock_picking(osv.osv):
default = {}
default = default.copy()
picking_obj = self.browse(cr, uid, [id], context)[0]
+ move_obj=self.pool.get('stock.move')
if ('name' not in default) or (picking_obj.name=='/'):
seq_obj_name = 'stock.picking.' + picking_obj.type
default['name'] = self.pool.get('ir.sequence').get(cr, uid, seq_obj_name)
- return super(stock_picking, self).copy(cr, uid, id, default, context)
+ default['origin'] = ''
+ default['backorder_id'] = False
+ res=super(stock_picking, self).copy(cr, uid, id, default, context)
+ if res:
+ picking_obj = self.browse(cr, uid, [res], context)[0]
+ for move in picking_obj.move_lines:
+ move_obj.write(cr, uid, [move.id], {'tracking_id': False,'prodlot_id':False})
+ return res
def onchange_partner_in(self, cr, uid, context=None, partner_id=None):
return {}
@@ -1164,6 +1260,7 @@ class stock_picking(osv.osv):
@param ids: List of Picking Ids
@param context: A standard dictionary for contextual values
"""
+ msg=''
for pick in self.browse(cr, uid, ids, context=context):
type_list = {
'out':'Picking List',
@@ -1172,11 +1269,14 @@ class stock_picking(osv.osv):
'delivery': 'Delivery order'
}
message = type_list.get(pick.type, _('Document')) + " '" + (pick.name or 'n/a') + "' "
+ if pick.min_date:
+ msg=datetime.strptime(pick.min_date, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d') + "'."
state_list = {
- 'confirmed': "is scheduled for the '" + datetime.strptime(pick.min_date, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d') + "'.",
+ 'confirmed': "is scheduled for the '" + msg ,
'assigned': 'is ready to process.',
'cancel': 'is Cancelled.',
'done': 'is processed.',
+ 'draft':'is draft.',
}
message += state_list[pick.state]
self.log(cr, uid, pick.id, message)
@@ -1247,14 +1347,15 @@ class stock_production_lot(osv.osv):
return ids
_columns = {
- 'name': fields.char('Serial', size=64, required=True),
- 'ref': fields.char('Internal Reference', size=256),
- 'prefix': fields.char('Prefix', size=64),
+ 'name': fields.char('Serial Number', size=64, required=True, help="Unique serial number, will be displayed as: PREFIX/SERIAL [INT_REF]"),
+ 'ref': fields.char('Internal Reference', size=256, help="Internal reference number in case it differs from the manufacturer's serial number"),
+ 'prefix': fields.char('Prefix', size=64, help="Optional prefix to prepend when displaying this serial number: PREFIX/SERIAL [INT_REF]"),
'product_id': fields.many2one('product.product', 'Product', required=True),
- 'date': fields.datetime('Created Date', required=True),
- 'stock_available': fields.function(_get_stock, fnct_search=_stock_search, method=True, type="float", string="Available", select="2"),
+ 'date': fields.datetime('Creation Date', required=True),
+ 'stock_available': fields.function(_get_stock, fnct_search=_stock_search, method=True, type="float", string="Available", select="2", help="Current quantity of products with this Production Lot Number available in company warehouses"),
'revisions': fields.one2many('stock.production.lot.revision', 'lot_id', 'Revisions'),
- 'company_id': fields.many2one('res.company','Company',select=1),
+ 'company_id': fields.many2one('res.company', 'Company', select=True),
+ 'move_ids': fields.one2many('stock.move', 'prodlot_id', 'Moves for this production lot', readonly=True),
}
_defaults = {
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
@@ -1262,9 +1363,19 @@ class stock_production_lot(osv.osv):
'product_id': lambda x, y, z, c: c.get('product_id', False),
}
_sql_constraints = [
- ('name_ref_uniq', 'unique (name, ref)', 'The serial/ref must be unique !'),
+ ('name_ref_uniq', 'unique (name, ref)', _('The combination of serial number and internal reference must be unique !')),
]
-
+ def action_traceability(self, cr, uid, ids, context={}):
+ """ It traces the information of a product
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param ids: List of IDs selected
+ @param context: A standard dictionary
+ @return: A dictionary of values
+ """
+ value=self.pool.get('action.traceability').action_traceability(cr,uid,ids,context)
+ return value
stock_production_lot()
class stock_production_lot_revision(osv.osv):
@@ -1275,7 +1386,7 @@ class stock_production_lot_revision(osv.osv):
'name': fields.char('Revision Name', size=64, required=True),
'description': fields.text('Description'),
'date': fields.date('Revision Date'),
- 'indice': fields.char('Revision', size=16),
+ 'indice': fields.char('Revision Number', size=16),
'author_id': fields.many2one('res.users', 'Author'),
'lot_id': fields.many2one('stock.production.lot', 'Production lot', select=True, ondelete='cascade'),
'company_id': fields.related('lot_id','company_id',type='many2one',relation='res.company',string='Company',store=True),
@@ -1321,10 +1432,10 @@ class stock_move(osv.osv):
if not move.prodlot_id and \
(move.state == 'done' and \
( \
- (move.product_id.track_production and move.location_id.usage=='production') or \
- (move.product_id.track_production and move.location_dest_id.usage=='production') or \
- (move.product_id.track_incoming and move.location_id.usage in ('supplier','internal')) or \
- (move.product_id.track_outgoing and move.location_dest_id.usage in ('customer','internal')) \
+ (move.product_id.track_production and move.location_id.usage == 'production') or \
+ (move.product_id.track_production and move.location_dest_id.usage == 'production') or \
+ (move.product_id.track_incoming and move.location_id.usage == 'supplier') or \
+ (move.product_id.track_outgoing and move.location_dest_id.usage == 'customer') \
)):
return False
return True
@@ -1342,7 +1453,7 @@ class stock_move(osv.osv):
'name': fields.char('Name', size=64, required=True, select=True),
'priority': fields.selection([('0', 'Not urgent'), ('1', 'Urgent')], 'Priority'),
- 'date': fields.datetime('Created Date'),
+ 'date': fields.datetime('Creation Date', select=True),
'date_planned': fields.datetime('Date', required=True, help="Scheduled date for the movement of the products or real date if the move is done."),
'date_expected': fields.datetime('Date Expected', readonly=True,required=True, help="Scheduled date for the movement of the products"),
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
@@ -1354,17 +1465,17 @@ class stock_move(osv.osv):
'product_packaging': fields.many2one('product.packaging', 'Packaging', help="It specifies attributes of packaging like type, quantity of packaging,etc."),
'location_id': fields.many2one('stock.location', 'Source Location', required=True, select=True, help="Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations."),
- 'location_dest_id': fields.many2one('stock.location', 'Dest. Location', required=True, select=True, help="Location where the system will stock the finished products."),
- 'address_id': fields.many2one('res.partner.address', 'Dest. Address', help="Address where goods are to be delivered"),
+ 'location_dest_id': fields.many2one('stock.location', 'Destination Location', required=True, select=True, help="Location where the system will stock the finished products."),
+ 'address_id': fields.many2one('res.partner.address', 'Destination Address', help="Optional address where goods are to be delivered, specifically used for allotment"),
- 'prodlot_id': fields.many2one('stock.production.lot', 'Production Lot', help="Production lot is used to put a serial number on the production"),
- 'tracking_id': fields.many2one('stock.tracking', 'Pack', select=True, help="This is the code that will be put on the logistical unit: pallet, box, pack."),
+ 'prodlot_id': fields.many2one('stock.production.lot', 'Production Lot', help="Production lot is used to put a serial number on the production", select=True),
+ 'tracking_id': fields.many2one('stock.tracking', 'Pack', select=True, help="Logistical shipping unit: pallet, box, pack ..."),
'auto_validate': fields.boolean('Auto Validate'),
- 'move_dest_id': fields.many2one('stock.move', 'Dest. Move'),
- 'move_history_ids': fields.many2many('stock.move', 'stock_move_history_ids', 'parent_id', 'child_id', 'Move History'),
- 'move_history_ids2': fields.many2many('stock.move', 'stock_move_history_ids', 'child_id', 'parent_id', 'Move History'),
+ 'move_dest_id': fields.many2one('stock.move', 'Destination Move', help="Optional: next stock move when chaining them", select=True),
+ 'move_history_ids': fields.many2many('stock.move', 'stock_move_history_ids', 'parent_id', 'child_id', 'Move History (child moves)'),
+ 'move_history_ids2': fields.many2many('stock.move', 'stock_move_history_ids', 'child_id', 'parent_id', 'Move History (parent moves)'),
'picking_id': fields.many2one('stock.picking', 'Picking List', select=True),
'note': fields.text('Notes'),
'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True,
@@ -1372,12 +1483,13 @@ class stock_move(osv.osv):
\nThe state is \'Waiting\' if the move is waiting for another one.'),
'price_unit': fields.float('Unit Price',
digits_compute= dp.get_precision('Account')),
- 'company_id': fields.many2one('res.company', 'Company', required=True, select=1),
- 'partner_id': fields.related('picking_id','address_id','partner_id',type='many2one', relation="res.partner", string="Partner", store=True),
- 'backorder_id': fields.related('picking_id','backorder_id',type='many2one', relation="stock.picking", string="Back Order"),
- 'origin': fields.related('picking_id','origin',type='char', size=64, relation="stock.picking", string="Origin",store=True),
- 'scraped': fields.related('location_dest_id','scrap_location',type='boolean',relation='stock.location',string='Scraped'),
- 'move_stock_return_history': fields.many2many('stock.move', 'stock_move_return_history', 'move_id', 'return_move_id', 'Move Return History',readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company', required=True, select=True),
+ 'partner_id': fields.related('picking_id','address_id','partner_id',type='many2one', relation="res.partner", string="Partner", store=True, select=True),
+ 'backorder_id': fields.related('picking_id','backorder_id',type='many2one', relation="stock.picking", string="Back Order", select=True),
+ 'origin': fields.related('picking_id','origin',type='char', size=64, relation="stock.picking", string="Origin", store=True),
+
+ # used for colors in tree views:
+ 'scrapped': fields.related('location_dest_id','scrap_location',type='boolean',relation='stock.location',string='Scrapped'),
}
_constraints = [
(_check_tracking,
@@ -1422,18 +1534,27 @@ class stock_move(osv.osv):
'state': 'draft',
'priority': '1',
'product_qty': 1.0,
- 'scraped' : False,
+ 'scrapped' : False,
'date_planned': time.strftime('%Y-%m-%d %H:%M:%S'),
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.move', context=c),
'date_expected': time.strftime('%Y-%m-%d %H:%M:%S'),
}
+ def write(self, cr, uid, ids, vals, context=None):
+ if uid != 1:
+ for move in self.browse(cr, uid, ids):
+ if move.state == 'done':
+ frozen_fields = set(['product_qty', 'product_uom', 'product_uos_qty', 'product_uos', 'location_id', 'location_dest_id', 'product_id'])
+ if frozen_fields.intersection(vals):
+ raise osv.except_osv(_('Operation forbidden'),
+ _('Quantities, UoMs, Products and Locations cannot be modified on stock moves that have already been processed (except by the Administrator)'))
+ return super(stock_move, self).write(cr, uid, ids, vals, context=context)
+
def copy(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
default = default.copy()
- default['move_stock_return_history'] = []
return super(stock_move, self).copy(cr, uid, id, default, context=context)
def _auto_init(self, cursor, context=None):
@@ -1659,19 +1780,20 @@ class stock_move(osv.osv):
if context is None:
context = {}
for move in self.browse(cr, uid, ids, context=context):
- if move.product_id.type == 'consu':
+ if move.product_id.type == 'consu' or move.location_id.usage == 'supplier':
if move.state in ('confirmed', 'waiting'):
done.append(move.id)
pickings[move.picking_id.id] = 1
continue
if move.state in ('confirmed', 'waiting'):
- res = self.pool.get('stock.location')._product_reserve(cr, uid, [move.location_id.id], move.product_id.id, move.product_qty, {'uom': move.product_uom.id})
+ # Important: we must pass lock=True to _product_reserve() to avoid race conditions and double reservations
+ res = self.pool.get('stock.location')._product_reserve(cr, uid, [move.location_id.id], move.product_id.id, move.product_qty, {'uom': move.product_uom.id}, lock=True)
if res:
#_product_available_test depends on the next status for correct functioning
#the test does not work correctly if the same product occurs multiple times
#in the same order. This is e.g. the case when using the button 'split in two' of
#the stock outgoing form
- self.write(cr, uid, move.id, {'state':'assigned'})
+ self.write(cr, uid, [move.id], {'state':'assigned'})
done.append(move.id)
pickings[move.picking_id.id] = 1
r = res.pop(0)
@@ -1906,14 +2028,14 @@ class stock_move(osv.osv):
""" Move the scrap/damaged product into scrap location
@param cr: the database cursor
@param uid: the user id
- @param ids: ids of stock move object to be scraped
+ @param ids: ids of stock move object to be scrapped
@param quantity : specify scrap qty
@param location_id : specify scrap location
@param context: context arguments
@return: Scraped lines
"""
if quantity <= 0:
- raise osv.except_osv(_('Warning!'), _('Please provide Proper Quantity !'))
+ raise osv.except_osv(_('Warning!'), _('Please provide a positive quantity to scrap!'))
res = []
for move in self.browse(cr, uid, ids, context=context):
move_qty = move.product_qty
@@ -1922,15 +2044,17 @@ class stock_move(osv.osv):
'product_qty': quantity,
'product_uos_qty': uos_qty,
'state': move.state,
- 'scraped' : True,
- 'location_dest_id': location_id
+ 'scrapped' : True,
+ 'location_dest_id': location_id,
+ 'tracking_id':False,
+ 'prodlot_id':False
}
new_move = self.copy(cr, uid, move.id, default_val)
+
res += [new_move]
product_obj = self.pool.get('product.product')
for (id, name) in product_obj.name_get(cr, uid, [move.product_id.id]):
- message = _('Product ') + " '" + name + "' "+ _("is scraped with") + " '" + str(move.product_qty) + "' "+ _("quantity.")
- self.log(cr, uid, move.id, message)
+ self.log(cr, uid, move.id, "%s x %s %s" % (move.product_qty, name, _("were scrapped")))
self.action_done(cr, uid, res)
return res
@@ -2191,13 +2315,13 @@ class stock_inventory(osv.osv):
_name = "stock.inventory"
_description = "Inventory"
_columns = {
- 'name': fields.char('Inventory', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}),
- 'date': fields.datetime('Date create', required=True, readonly=True, states={'draft': [('readonly', False)]}),
+ 'name': fields.char('Inventory Reference', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}),
+ 'date': fields.datetime('Creation Date', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'date_done': fields.datetime('Date done'),
'inventory_line_id': fields.one2many('stock.inventory.line', 'inventory_id', 'Inventories', states={'done': [('readonly', True)]}),
'move_ids': fields.many2many('stock.move', 'stock_inventory_move_rel', 'inventory_id', 'move_id', 'Created Moves'),
- 'state': fields.selection( (('draft', 'Draft'), ('done', 'Done'), ('cancel','Cancelled')), 'State', readonly=True),
- 'company_id': fields.many2one('res.company','Company',required=True,select=1),
+ 'state': fields.selection( (('draft', 'Draft'), ('done', 'Done'), ('cancel','Cancelled')), 'State', readonly=True, select=True),
+ 'company_id': fields.many2one('res.company','Company',required=True,select=True),
}
_defaults = {
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
@@ -2289,10 +2413,10 @@ class stock_inventory_line(osv.osv):
_columns = {
'inventory_id': fields.many2one('stock.inventory', 'Inventory', ondelete='cascade', select=True),
'location_id': fields.many2one('stock.location', 'Location', required=True),
- 'product_id': fields.many2one('product.product', 'Product', required=True),
+ 'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
'product_qty': fields.float('Quantity'),
- 'company_id': fields.related('inventory_id','company_id',type='many2one',relation='res.company',string='Company',store=True),
+ 'company_id': fields.related('inventory_id','company_id',type='many2one',relation='res.company',string='Company',store=True, select=True),
'prod_lot_id': fields.many2one('stock.production.lot', 'Production Lot', domain="[('product_id','=',product_id)]"),
'state': fields.related('inventory_id','state',type='char',string='State',readonly=True),
}
@@ -2322,8 +2446,8 @@ class stock_warehouse(osv.osv):
_name = "stock.warehouse"
_description = "Warehouse"
_columns = {
- 'name': fields.char('Name', size=60, required=True),
- 'company_id': fields.many2one('res.company','Company',required=True,select=1),
+ 'name': fields.char('Name', size=128, required=True, select=True),
+ 'company_id': fields.many2one('res.company', 'Company', required=True, select=True),
'partner_address_id': fields.many2one('res.partner.address', 'Owner Address'),
'lot_input_id': fields.many2one('stock.location', 'Location Input', required=True, domain=[('usage','<>','view')]),
'lot_stock_id': fields.many2one('stock.location', 'Location Stock', required=True, domain=[('usage','<>','view')]),
@@ -2390,7 +2514,7 @@ stock_picking_move_wizard()
class report_products_to_received_planned(osv.osv):
_name = "report.products.to.received.planned"
- _description = "Product to Received Vs Planned"
+ _description = "Received Products vs Planned"
_auto = False
_columns = {
'date':fields.date('Date'),
@@ -2424,7 +2548,7 @@ report_products_to_received_planned()
class report_delivery_products_planned(osv.osv):
_name = "report.delivery.products.planned"
- _description = "Number of Delivery products vs planned"
+ _description = "Delivered products vs Planned"
_auto = False
_columns = {
'date':fields.date('Date'),
diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml
index 205e4a44396..6933db289a0 100644
--- a/addons/stock/stock_data.xml
+++ b/addons/stock/stock_data.xml
@@ -37,8 +37,8 @@
viewterp-mrp
-
- Scraped
+
+ ScrappedTrueinventory
diff --git a/addons/stock/stock_demo.xml b/addons/stock/stock_demo.xml
index 31cd94e040d..6607d97b2b3 100644
--- a/addons/stock/stock_demo.xml
+++ b/addons/stock/stock_demo.xml
@@ -224,7 +224,6 @@
-
diff --git a/addons/stock/stock_report.xml b/addons/stock/stock_report.xml
index 855a56a0f75..1332e840e10 100644
--- a/addons/stock/stock_report.xml
+++ b/addons/stock/stock_report.xml
@@ -1,12 +1,12 @@
-
+
-
-
-
+
+
+
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index 203b190053c..f9fd2ed2bd2 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -8,7 +8,7 @@
-
+
@@ -98,7 +98,7 @@
-
+
@@ -157,10 +157,25 @@
form
@@ -1623,8 +1761,6 @@
-
-
@@ -1653,7 +1789,7 @@
ir.actions.act_windowformtree,form
- [('picking_id.type','=','in')]
+ ['|','&',('picking_id','=',False),('location_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','in')]{"search_default_receive":1}
@@ -1744,7 +1880,7 @@
Products
-
+
@@ -1753,7 +1889,7 @@
Open Products
-
+
@@ -1862,7 +1998,7 @@
ir.actions.act_windowformtree,form
- [('picking_id','!=',False),('picking_id.type','=','out')]
+ ['|','&',('picking_id','=',False),('location_dest_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','out')]{"search_default_receive":1}
diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock/wizard/stock_invoice_onshipping.py
index b8692783824..f931e575b2f 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock/wizard/stock_invoice_onshipping.py
@@ -53,7 +53,7 @@ class stock_invoice_onshipping(osv.osv_memory):
if pick.invoice_state == 'invoiced':
raise osv.except_osv(_('UserError'), _('Invoice is already created.'))
if pick.invoice_state == 'none':
- raise osv.except_osv(_('UserError'), _('Invoice cannot be created from Picking.'))
+ raise osv.except_osv(_('UserError'), _('This picking does not require any invoicing.'))
if pick.move_lines:
usage = pick.move_lines[0].location_id.usage
diff --git a/addons/stock/wizard/stock_invoice_onshipping_view.xml b/addons/stock/wizard/stock_invoice_onshipping_view.xml
index 62689019af0..e1e742d7aee 100644
--- a/addons/stock/wizard/stock_invoice_onshipping_view.xml
+++ b/addons/stock/wizard/stock_invoice_onshipping_view.xml
@@ -22,12 +22,15 @@
-
+
+ Create Invoice
+ stock.invoice.onshipping
+ ir.actions.act_window
+ form
+ tree,form
+
+ new
+
+
diff --git a/addons/stock/wizard/stock_move.py b/addons/stock/wizard/stock_move.py
index e50266706d5..a5a401800d3 100644
--- a/addons/stock/wizard/stock_move.py
+++ b/addons/stock/wizard/stock_move.py
@@ -142,7 +142,7 @@ class stock_move_scrap(osv.osv_memory):
return res
def move_scrap(self, cr, uid, ids, context={}):
- """ To move scraped products
+ """ To move scrapped products
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@@ -191,10 +191,10 @@ class split_in_production_lot(osv.osv_memory):
_columns = {
'qty': fields.integer('Quantity'),
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
- 'product_uom': fields.many2one('product.uom', 'Product UOM'),
- 'line_ids': fields.one2many('stock.move.split.lines', 'lot_id', 'Lots Number'),
- 'line_exist_ids': fields.one2many('stock.move.split.lines.exist', 'lot_id', 'Lots Existing Numbers'),
- 'use_exist' : fields.boolean('Existing Lot'),
+ 'product_uom': fields.many2one('product.uom', 'UoM'),
+ 'line_ids': fields.one2many('stock.move.split.lines', 'lot_id', 'Production Lots'),
+ 'line_exist_ids': fields.one2many('stock.move.split.lines.exist', 'lot_id', 'Production Lots'),
+ 'use_exist' : fields.boolean('Existing Lots', help="Check this option to select existing lots in the list below, otherwise you should enter new ones line by line."),
}
def split_lot(self, cr, uid, ids, context=None):
@@ -261,7 +261,7 @@ class split_in_production_lot(osv.osv_memory):
'name': line.name,
'product_id': move.product_id.id},
context=context)
- print 'write', current_move, {'prodlot_id': prodlot_id, 'state':move.state}
+
move_obj.write(cr, uid, [current_move], {'prodlot_id': prodlot_id, 'state':move.state})
update_val = {}
diff --git a/addons/stock/wizard/stock_move_view.xml b/addons/stock/wizard/stock_move_view.xml
index 980a1b5f402..46d3893900b 100644
--- a/addons/stock/wizard/stock_move_view.xml
+++ b/addons/stock/wizard/stock_move_view.xml
@@ -73,7 +73,7 @@
-
+
@@ -121,24 +121,24 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
diff --git a/addons/stock/wizard/stock_partial_move.py b/addons/stock/wizard/stock_partial_move.py
index 51429058eb5..17515f86252 100644
--- a/addons/stock/wizard/stock_partial_move.py
+++ b/addons/stock/wizard/stock_partial_move.py
@@ -28,9 +28,7 @@ class stock_partial_move(osv.osv_memory):
_description = "Partial Move"
_columns = {
'date': fields.datetime('Date', required=True),
- 'partner_id': fields.many2one('res.partner',string="Partner"),
'type': fields.char("Type", size=3),
- 'address_id': fields.many2one('res.partner.address', 'Address', help="Address where goods are to be delivered"),
}
def view_init(self, cr, uid, fields_list, context=None):
@@ -66,12 +64,6 @@ class stock_partial_move(osv.osv_memory):
_moves_arch_lst = """
-
-
-
-
-
-
"""
_moves_fields = result['fields']
@@ -164,21 +156,7 @@ class stock_partial_move(osv.osv_memory):
if m.state in ('done', 'cancel'):
continue
res['type'] = m.picking_id and m.picking_id.type or ''
- address_ids = list(set([(pick.address_id and pick.address_id.id, pick.address_id and pick.address_id.partner_id and pick.address_id.partner_id.id) for pick in move_obj.browse(cr, uid, move_ids)]))
- address_ids1 = list(set([(pick.address_id and pick.address_id.id, pick.address_id and pick.address_id.partner_id and pick.address_id.partner_id.id) for pick in move_obj.browse(cr, uid, move_ids) if pick.address_id]))
- if len(address_ids1) == 1:
- if m.picking_id and m.picking_id.type=='out':
- res['address_id'] = address_ids[0][0] or False
- res['partner_id'] = address_ids[0][1] or False
- if m.picking_id and m.picking_id.type=='in':
- res['partner_id'] = m.company_id.partner_id.id or False
- if m.company_id.partner_id:
- address_default = [add.id for add in m.company_id.partner_id.address if add.type=='default']
- address_delivery = [add.id for add in m.company_id.partner_id.address if add.type=='delivery']
- if len(address_delivery):
- res['address_id'] = address_delivery and address_delivery[0] or False
- else:
- res['address_id'] = address_default and address_default[0] or False
+
if 'move%s_product_id'%(m.id) in fields:
res['move%s_product_id'%(m.id)] = m.product_id.id
@@ -230,8 +208,6 @@ class stock_partial_move(osv.osv_memory):
move_ids = context.get('active_ids', False)
partial = self.browse(cr, uid, ids[0], context)
partial_datas = {
- 'partner_id' : partial.partner_id and partial.partner_id.id or False,
- 'address_id' : partial.address_id and partial.address_id.id or False,
'delivery_date' : partial.date
}
for m in move_obj.browse(cr, uid, move_ids):
diff --git a/addons/stock/wizard/stock_return_picking.py b/addons/stock/wizard/stock_return_picking.py
index e1aa0dc4e13..30403e3b1d0 100644
--- a/addons/stock/wizard/stock_return_picking.py
+++ b/addons/stock/wizard/stock_return_picking.py
@@ -103,7 +103,7 @@ class stock_return_picking(osv.osv_memory):
return_history = {}
for m_line in pick.move_lines:
return_history[m_line.id] = 0
- for rec in m_line.move_stock_return_history:
+ for rec in m_line.move_history_ids2:
return_history[m_line.id] += rec.product_qty
res['fields'].clear()
arch_lst=['', '
' % _('Return lines'), '' % _('Provide the quantities of the returned products.')]
@@ -169,7 +169,7 @@ class stock_return_picking(osv.osv_memory):
new_qty = data['return%s' % move.id]
returned_qty = move.product_qty
- for rec in move.move_stock_return_history:
+ for rec in move.move_history_ids2:
returned_qty -= rec.product_qty
if returned_qty != new_qty:
@@ -182,7 +182,7 @@ class stock_return_picking(osv.osv_memory):
'picking_id':new_picking, 'state':'draft',
'location_id':new_location, 'location_dest_id':move.location_id.id,
'date':date_cur, 'date_planned':date_cur,})
- move_obj.write(cr, uid, [move.id], {'move_stock_return_history':[(4,new_move)]})
+ move_obj.write(cr, uid, [move.id], {'move_history_ids2':[(4,new_move)]})
if set_invoice_state_to_none:
pick_obj.write(cr, uid, [pick.id], {'invoice_state':'none'})
diff --git a/addons/stock/wizard/stock_splitinto.py b/addons/stock/wizard/stock_splitinto.py
index 8623ba65875..5e75801d2f6 100644
--- a/addons/stock/wizard/stock_splitinto.py
+++ b/addons/stock/wizard/stock_splitinto.py
@@ -41,6 +41,14 @@ class stock_split_into(osv.osv_memory):
quantity = self.browse(cr, uid, data[0], context).quantity or 0.0
for move in move_obj.browse(cr, uid, rec_id):
quantity_rest = move.product_qty - quantity
+ if move.tracking_id :
+ raise osv.except_osv(_('Error!'), _('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)') % \
+ (move.product_id.name, move.product_id.id,))
+ if quantity > move.product_qty:
+ raise osv.except_osv(_('Error!'), _('Total quantity after split exceeds the quantity to split ' \
+ 'for this product: "%s" (id: %d)') % \
+ (move.product_id.name, move.product_id.id,))
if quantity > 0:
move_obj.setlast_tracking(cr, uid, [move.id], context=context)
move_obj.write(cr, uid, [move.id], {
@@ -51,14 +59,17 @@ class stock_split_into(osv.osv_memory):
if quantity_rest>0:
quantity_rest = move.product_qty - quantity
tracking_id = track_obj.create(cr, uid, {})
- default_val = {
+ if quantity==0.0:
+ move_obj.write(cr, uid, [move.id], {'tracking_id': tracking_id})
+ else:
+ default_val = {
'product_qty': quantity_rest,
'product_uos_qty': quantity_rest,
'tracking_id': tracking_id,
'state': move.state,
'product_uos': move.product_uom.id
}
- current_move = move_obj.copy(cr, uid, move.id, default_val)
+ current_move = move_obj.copy(cr, uid, move.id, default_val)
return {}
stock_split_into()
diff --git a/addons/stock/wizard/stock_splitinto_view.xml b/addons/stock/wizard/stock_splitinto_view.xml
index b6c19db5e9c..a325519ca75 100644
--- a/addons/stock/wizard/stock_splitinto_view.xml
+++ b/addons/stock/wizard/stock_splitinto_view.xml
@@ -7,7 +7,7 @@
form
-
+
diff --git a/addons/stock/wizard/stock_traceability.py b/addons/stock/wizard/stock_traceability.py
index 063c094d296..815f90810ed 100644
--- a/addons/stock/wizard/stock_traceability.py
+++ b/addons/stock/wizard/stock_traceability.py
@@ -39,7 +39,7 @@ class action_traceability(osv.osv_memory):
@return: A dictionary of values
"""
- type1 = context['type'] or 'move_history_ids'
+ type1 = context['type'] or 'move_history_ids2'
field = context['field'] or 'tracking_id'
obj = self.pool.get('stock.move')
ids = obj.search(cr, uid, [(field, 'in',context['active_ids'])])
@@ -47,60 +47,17 @@ class action_traceability(osv.osv_memory):
view_id = cr.fetchone()[0]
value = {
'domain': "[('id','in',["+','.join(map(str, ids))+"])]",
- 'name': ((type1=='move_history_ids') and 'Upstream Traceability') or 'Downstream Traceability',
+ 'name': ((type1=='move_history_ids2') and 'Upstream Traceability') or 'Downstream Traceability',
'view_type': 'tree',
'res_model': 'stock.move',
'field_parent': type1,
'view_id': (view_id,'View'),
- 'type': 'ir.actions.act_window'
+ 'type': 'ir.actions.act_window',
+ 'nodestroy':True,
}
return value
action_traceability()
-class stock_traceability_downstream(osv.osv_memory):
- """
- This class is defined for Stock traceability downstream wizard
-
- """
- _name = "stock.traceability.downstream"
- _inherit = "action.traceability"
- _description = "Stock traceability downstream"
-
-stock_traceability_downstream()
-
-class stock_traceability_upstream(osv.osv_memory):
- """
- This class is defined for Stock traceability upstream wizard
-
- """
- _name = "stock.traceability.upstream"
- _inherit = "action.traceability"
- _description = "Stock traceability upstream"
-
-stock_traceability_upstream()
-
-class stock_traceability_lot_upstream(osv.osv_memory):
- """
- This class is defined for Stock traceability lot upstream wizard
-
- """
- _name = "stock.traceability.lot.upstream"
- _inherit = "action.traceability"
- _description = "Stock traceability lot upstream"
-
-stock_traceability_lot_upstream()
-
-class stock_traceability_lot_downstream(osv.osv_memory):
- """
- This class is defined for Stock traceability lot downstream wizard
-
- """
- _name = "stock.traceability.lot.downstream"
- _inherit = "action.traceability"
- _description = "Stock traceability lot downstream"
-
-stock_traceability_lot_downstream()
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_traceability_view.xml b/addons/stock/wizard/stock_traceability_view.xml
deleted file mode 100644
index 47f244b2cb6..00000000000
--- a/addons/stock/wizard/stock_traceability_view.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
-
- Stock traceability downstream
- stock.traceability.downstream
- form
-
-
Thunderbird
- This module allows you to archive an e-mail on one or more objects of OpenERP. You can attach an email to a partner, a task, an analytic account or any other object. You can also create a new object like a lead, a phone call, claim and many more.
+ 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.Configure
@@ -35,7 +35,7 @@
-
+
@@ -84,7 +84,7 @@
-
+
diff --git a/addons/warning/i18n/tr.po b/addons/warning/i18n/tr.po
index 404202c9717..d436c63ed9e 100644
--- a/addons/warning/i18n/tr.po
+++ b/addons/warning/i18n/tr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 08:45+0000\n"
+"PO-Revision-Date: 2010-09-08 08:42+0000\n"
"Last-Translator: Fabien (Open ERP) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:48+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:47+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: warning
diff --git a/addons/wiki/i18n/tr.po b/addons/wiki/i18n/tr.po
index b4ebde239d8..3e56d2efad0 100644
--- a/addons/wiki/i18n/tr.po
+++ b/addons/wiki/i18n/tr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-04 08:37+0000\n"
+"PO-Revision-Date: 2010-09-08 09:02+0000\n"
"Last-Translator: adsiz_1029@hotmail.com \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:48+0000\n"
+"X-Launchpad-Export-Date: 2010-09-09 04:47+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: wiki
diff --git a/addons/wiki_quality_manual/i18n/it.po b/addons/wiki_quality_manual/i18n/it.po
index e428e95102d..426348590d0 100644
--- a/addons/wiki_quality_manual/i18n/it.po
+++ b/addons/wiki_quality_manual/i18n/it.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-08-20 11:48+0000\n"
-"PO-Revision-Date: 2010-09-04 23:00+0000\n"
-"Last-Translator: Nicola Riolini - Micronaet \n"
+"PO-Revision-Date: 2010-09-05 08:58+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Italian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-05 04:48+0000\n"
+"X-Launchpad-Export-Date: 2010-09-06 05:03+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: wiki_quality_manual