From 91325105c510beb69a843e97e9d40833992fc9f6 Mon Sep 17 00:00:00 2001 From: Goran Kliska Date: Wed, 28 Mar 2012 18:25:45 +0200 Subject: [PATCH 001/163] l10n_hr bzr revid: goran.kliska@slobodni-programi.hr-20120328162545-p0outnnuqcp5desr --- addons/l10n_hr/__init__.py | 27 + addons/l10n_hr/__openerp__.py | 84 + .../l10n_hr/data/account.account.template.csv | 2284 +++++++++++++++++ addons/l10n_hr/data/account.account.type.csv | 26 + .../data/account.fiscal.position.template.csv | 4 + .../data/account.tax.code.template.csv | 78 + addons/l10n_hr/data/account.tax.template.csv | 62 + addons/l10n_hr/data/fiscal_position.xml | 68 + .../l10n_hr/data/fiscal_position.xml.backup | 139 + addons/l10n_hr/i18n/hr.po | 149 ++ addons/l10n_hr/i18n/l10n_hr.pot | 149 ++ addons/l10n_hr/l10n_hr_wizard.xml | 47 + 12 files changed, 3117 insertions(+) create mode 100644 addons/l10n_hr/__init__.py create mode 100644 addons/l10n_hr/__openerp__.py create mode 100644 addons/l10n_hr/data/account.account.template.csv create mode 100644 addons/l10n_hr/data/account.account.type.csv create mode 100644 addons/l10n_hr/data/account.fiscal.position.template.csv create mode 100644 addons/l10n_hr/data/account.tax.code.template.csv create mode 100644 addons/l10n_hr/data/account.tax.template.csv create mode 100644 addons/l10n_hr/data/fiscal_position.xml create mode 100644 addons/l10n_hr/data/fiscal_position.xml.backup create mode 100644 addons/l10n_hr/i18n/hr.po create mode 100644 addons/l10n_hr/i18n/l10n_hr.pot create mode 100755 addons/l10n_hr/l10n_hr_wizard.xml diff --git a/addons/l10n_hr/__init__.py b/addons/l10n_hr/__init__.py new file mode 100644 index 00000000000..e559ab15644 --- /dev/null +++ b/addons/l10n_hr/__init__.py @@ -0,0 +1,27 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Module: l10n_hr +# Author: Goran Kliska +# mail: gkliskaATgmail.com +# Copyright (C) 2011- Slobodni programi d.o.o., Zagreb +# Contributions: +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/l10n_hr/__openerp__.py b/addons/l10n_hr/__openerp__.py new file mode 100644 index 00000000000..ec0f6269364 --- /dev/null +++ b/addons/l10n_hr/__openerp__.py @@ -0,0 +1,84 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Module: l10n_hr +# Author: Goran Kliska +# mail: gkliskaATgmail.com +# Copyright: Slobodni programi d.o.o., Zagreb +# Contributions: +# Tomislav Bošnjaković, Storm Computers d.o.o. : +# - account types +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + "name" : "Croatia - RRIF's 2012 chat of accounts", + "description" : """ +Croatian localisation. +====================== + +Author: Goran Kliska, Slobodni programi d.o.o., Zagreb + http://www.slobodni-programi.hr + +Contributions: + Infokom d.o.o. + Storm Computers d.o.o. + +Description: + +Croatian Chart of Accounts (RRIF ver.2012) + +RRIF-ov računski plan za poduzetnike za 2012. +Vrste konta +Kontni plan prema RRIF-u, dorađen u smislu kraćenja naziva i dodavanja analitika +Porezne grupe prema poreznoj prijavi +Porezi PDV-a +Ostali porezi (samo češće korišteni) povezani s kontima kontnog plana + +Izvori podataka: + http://www.rrif.hr/dok/preuzimanje/rrif-rp2011.rar + http://www.rrif.hr/dok/preuzimanje/rrif-rp2012.rar + + + +""", + "version" : "2012.1", + "author" : "OpenERP Croatian Community", + "category" : 'Localization/Account Charts', + "website": "https://code.launchpad.net/openobject-croatia" , + + 'depends': [ + 'account', + 'base_vat', + 'base_iban', + 'account_chart', +# 'account_coda', + ], + 'init_xml': [], + 'update_xml': [ + 'data/account.account.type.csv', + 'data/account.tax.code.template.csv', + 'data/account.account.template.csv', + 'l10n_hr_wizard.xml', + 'data/account.tax.template.csv', + 'data/fiscal_position.xml', + ], + "demo_xml" : [], + 'test' : [], + "active": False, + "installable": True, +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_hr/data/account.account.template.csv b/addons/l10n_hr/data/account.account.template.csv new file mode 100644 index 00000000000..ee6ebba3cae --- /dev/null +++ b/addons/l10n_hr/data/account.account.template.csv @@ -0,0 +1,2284 @@ +"code","id","parent_id:id","type","user_type:id","reconcile","shortcut","name","note" +"RRIF","kp_rrif",,"view","account_type_view",,,"KONTNI PLAN", +"0","kp_rrif0","kp_rrif","view","account_type_view",,,"POTRAŽIVANJA ZA UPISANI KAPITAL I DUGOTRAJNA IMOVINA","POTRAŽIVANJA ZA UPISANI KAPITAL I DUGOTRAJNA IMOVINA" +"00","kp_rrif00","kp_rrif0","view","account_type_view",,,"POTRAŽIVANJA ZA UPISANI A NEUPLAĆENI KAPITAL","POTRAŽIVANJA ZA UPISANI A NEUPLAĆENI KAPITAL" +"000","kp_rrif000","kp_rrif00","view","account_type_view",,,"Potraživanja za upisani a neuplaćeni dionički kapital (analitika po upisnicima)","Potraživanja za upisani a neuplaćeni dionički kapital (analitika po upisnicima)" +"0000","kp_rrif0000","kp_rrif000","other","account_type_upis_kapital",,,"Potraživanja za upisani a neuplaćeni dionički kapital (analitika po upisnicima)-a1","Potraživanja za upisani a neuplaćeni dionički kapital (analitika po upisnicima)-Analitika 1" +"001","kp_rrif001","kp_rrif00","view","account_type_view",,,"Potraživanja iz ponovljene emisije dionica za upisane a neuplaćene svote kapitala po emisijama dionica","Potraživanja iz ponovljene emisije dionica za upisane a neuplaćene svote kapitala (razrada po emisijama dionica)" +"0010","kp_rrif0010","kp_rrif001","other","account_type_upis_kapital",,,"Potraživanja iz ponovljene emisije dionica za upisane a neuplaćene svote kapitala po emisijama dionica-a1","Potraživanja iz ponovljene emisije dionica za upisane a neuplaćene svote kapitala (razrada po emisijama dionica)-Analitika 1" +"002","kp_rrif002","kp_rrif00","view","account_type_view",,,"Potraživanja za upisani a neuplaćeni kapital u d.o.o. (analitika po članovima društva)","Potraživanja za upisani a neuplaćeni kapital u d.o.o. (analitika po članovima društva)" +"0020","kp_rrif0020","kp_rrif002","other","account_type_upis_kapital",,,"Potraživanja za upisani a neuplaćeni kapital u d.o.o. (analitika po članovima društva)-a1","Potraživanja za upisani a neuplaćeni kapital u d.o.o. (analitika po članovima društva)-Analitika 1" +"003","kp_rrif003","kp_rrif00","view","account_type_view",,,"Potraživanja za temeljni ulog komanditora","Potraživanja za temeljni ulog komanditora" +"0030","kp_rrif0030","kp_rrif003","other","account_type_upis_kapital",,,"Potraživanja za temeljni ulog komanditora-a1","Potraživanja za temeljni ulog komanditora-Analitika 1" +"004","kp_rrif004","kp_rrif00","view","account_type_view",,,"Potraživanje za ostale uloge u kapital","Potraživanje za ostale uloge u kapital" +"0040","kp_rrif0040","kp_rrif004","other","account_type_upis_kapital",,,"Potraživanje za ostale uloge u kapital-a1","Potraživanje za ostale uloge u kapital-Analitika 1" +"01","kp_rrif01","kp_rrif0","view","account_type_view",,,"NEMATERIJALNA IMOVINA","NEMATERIJALNA IMOVINA" +"010","kp_rrif010","kp_rrif01","view","account_type_view",,,"Izdatci za razvoj","Izdatci za razvoj" +"0100","kp_rrif0100","kp_rrif010","other","account_type_dug_imovina",,,"Izdatci za razvoj projekta (konstruiranje i test. prototipova i modela,alata,naprava i kalupa i sl.","Izdatci za razvoj projekta (konstruiranje i testiranje prototipova i modela, dizajn alata, naprava i kalupa i sl." +"0101","kp_rrif0101","kp_rrif010","other","account_type_dug_imovina",,,"Izdatci za razvoj proizvoda (uzorci, recepture, troškovi pronalazaka i sl.).","Izdatci za razvoj proizvoda (uzorci, recepture, troškovi pronalazaka i sl.)." +"0102","kp_rrif0102","kp_rrif010","other","account_type_dug_imovina",,,"Izdatci za istraživanje mineralnih blaga (MSFI 6)","Izdatci za istraživanje mineralnih blaga (MSFI 6)" +"011","kp_rrif011","kp_rrif01","view","account_type_view",,,"Koncesije, patenti, licencije, robne i uslužne marke","Koncesije, patenti, licencije, robne i uslužne marke" +"0110","kp_rrif0110","kp_rrif011","other","account_type_dug_imovina",,,"Ulaganje u koncesije idozvole(za resurse, ceste, ribarenje, linije, sirovine, itd.)","Ulaganje u koncesije i dozvole (za resurse, ceste, ribarenje, linije, sirovine, itd.)" +"0111","kp_rrif0111","kp_rrif011","other","account_type_dug_imovina",,,"Ulaganje u patente i tehnologiju, inovacije, teh.dokumentaciju za proizv. proizvoda ili pružanje usluga","Ulaganje u patente i tehnologiju, inovacije, tehničku i tehnološku dokumentaciju za proizvodnju proizvoda ili pružanje usluga" +"0112","kp_rrif0112","kp_rrif011","other","account_type_dug_imovina",,,"Ulaganje u licenciju i frenčajz (Franchising)","Ulaganje u licenciju i frenčajz (Franchising)" +"0113","kp_rrif0113","kp_rrif011","other","account_type_dug_imovina",,,"Robne marke, trgovačko ime, lista kupaca, industrijska prava, marketinška prava, usl. marke i sl.prava","Robne marke, trgovačko ime, lista kupaca, industrijska prava, marketinška prava, uslužne marke i sl. prava" +"0114","kp_rrif0114","kp_rrif011","other","account_type_dug_imovina",,,"Ulaganje u tržišni udio (otkup prava distribucije za neko područje)","Ulaganje u tržišni udio (otkup prava distribucije za neko područje)" +"012","kp_rrif012","kp_rrif01","view","account_type_view",,,"Softver i ostala prava","Softver i ostala prava" +"0120","kp_rrif0120","kp_rrif012","view","account_type_view",,,"Softwer","Softwer" +"01200","kp_rrif01200","kp_rrif0120","other","account_type_dug_imovina",,,"Ulaganje u računalni softwer","Ulaganje u računalni softwer" +"01201","kp_rrif01201","kp_rrif0120","other","account_type_dug_imovina",,,"Ulaganje u internetske stranice","Ulaganje u internetske stranice" +"0121","kp_rrif0121","kp_rrif012","view","account_type_view",,,"Ostala dugotrajna prava","Ostala dugotrajna prava" +"01210","kp_rrif01210","kp_rrif0121","other","account_type_dug_imovina",,,"Ulaganje u autorska i dr. prava korištenja","Ulaganje u autorska i dr. prava korištenja" +"01211","kp_rrif01211","kp_rrif0121","other","account_type_dug_imovina",,,"Ulaganje u znanje (know how), dizajn","Ulaganje u znanje (know how), dizajn" +"01212","kp_rrif01212","kp_rrif0121","other","account_type_dug_imovina",,,"Ulaganje u pravo reproduciranja (npr. filmova), pravo objave u izdavaštvu i sl.","Ulaganje u pravo reproduciranja (npr. filmova), pravo objave u izdavaštvu i sl." +"01213","kp_rrif01213","kp_rrif0121","other","account_type_dug_imovina",,,"Ulaganja na tuđoj imovini radi uporabe ili poboljšanja (nekretnina, opreme i sl.)","Ulaganja na tuđoj imovini radi uporabe ili poboljšanja (nekretnina, opreme i sl.)" +"01214","kp_rrif01214","kp_rrif0121","other","account_type_dug_imovina",,,"Ulaganje u dugogodišnje pravo uporabe (prema ugovoru)","Ulaganje u dugogodišnje pravo uporabe (prema ugovoru)" +"01215","kp_rrif01215","kp_rrif0121","other","account_type_dug_imovina",,,"Ulaganje u pravo suvlasništva opreme","Ulaganje u pravo suvlasništva opreme" +"0122","kp_rrif0122","kp_rrif012","view","account_type_view",,,"Ostala prava","Ostala prava" +"01220","kp_rrif01220","kp_rrif0122","other","account_type_dug_imovina",,,"Založno pravo i hipoteke (realizirane)","Založno pravo i hipoteke (realizirane)" +"01221","kp_rrif01221","kp_rrif0122","other","account_type_dug_imovina",,,"Ostala dugogodišnja prava","Ostala dugogodišnja prava" +"013","kp_rrif013","kp_rrif01","view","account_type_view",,,"Goodwill","Goodwill" +"0130","kp_rrif0130","kp_rrif013","other","account_type_dug_imovina",,,"Goodwill","Goodwill" +"014","kp_rrif014","kp_rrif01","view","account_type_view",,,"Ostala nematerijalna imovina","Ostala nematerijalna imovina" +"0140","kp_rrif0140","kp_rrif014","other","account_type_dug_imovina",,,"Dugogodišnje naknade plaćene za pravo građenja, pravo prolaza i sl.","Dugogodišnje naknade plaćene za pravo građenja, pravo prolaza i sl." +"0141","kp_rrif0141","kp_rrif014","other","account_type_dug_imovina",,,"Filmovi, glazbeni zapisi","Filmovi, glazbeni zapisi" +"0142","kp_rrif0142","kp_rrif014","other","account_type_dug_imovina",,,"Ostala nematerijalna imovina","Ostala nematerijalna imovina" +"015","kp_rrif015","kp_rrif01","view","account_type_view",,,"Predujmovi za nabavu nematerijalne imovine","Predujmovi za nabavu nematerijalne imovine" +"0150","kp_rrif0150","kp_rrif015","other","account_type_dug_imovina",,,"Predujmovi za razvoj","Predujmovi za razvoj" +"0151","kp_rrif0151","kp_rrif015","other","account_type_dug_imovina",,,"Predujmovi za koncesije","Predujmovi za koncesije" +"0152","kp_rrif0152","kp_rrif015","other","account_type_dug_imovina",,,"Predujmovi za patente, licencije i dr.","Predujmovi za patente, licencije i dr." +"0153","kp_rrif0153","kp_rrif015","other","account_type_dug_imovina",,,"Predujmovi za robne ili uslužne marke","Predujmovi za robne ili uslužne marke" +"0154","kp_rrif0154","kp_rrif015","other","account_type_dug_imovina",,,"Predujmovi za nabavu softwera","Predujmovi za nabavu softwera" +"0155","kp_rrif0155","kp_rrif015","other","account_type_dug_imovina",,,"Predujmovi za nabavu ostalih prava uporabe","Predujmovi za nabavu ostalih prava uporabe" +"0156","kp_rrif0156","kp_rrif015","other","account_type_dug_imovina",,,"Predujmovi za ostalu nematerijalnu imovinu","Predujmovi za ostalu nematerijalnu imovinu" +"016","kp_rrif016","kp_rrif01","view","account_type_view",,,"Nematerijalna imovina u pripremi (analitika prema vrsti računa skupine 01)","Nematerijalna imovina u pripremi (analitika prema vrsti računa skupine 01)" +"0160","kp_rrif0160","kp_rrif016","other","account_type_dug_imovina",,,"Nematerijalna imovina u pripremi (analitika prema vrsti računa skupine 01)-a1","Nematerijalna imovina u pripremi (analitika prema vrsti računa skupine 01)-Analitika 1" +"018","kp_rrif018","kp_rrif01","view","account_type_view",,,"Vrijednosno usklađenje nematerijalne imovine (analitika prema vrsti računa skupine 01)","Vrijednosno usklađenje nematerijalne imovine (analitika prema vrsti računa skupine 01)" +"0180","kp_rrif0180","kp_rrif018","other","account_type_dug_imovina",,,"Vrijednosno usklađenje nematerijalne imovine (analitika prema vrsti računa skupine 01)-a1","Vrijednosno usklađenje nematerijalne imovine (analitika prema vrsti računa skupine 01)-Analitika 1" +"019","kp_rrif019","kp_rrif01","view","account_type_view",,,"Akumulirana amortizacija nematerijalne imovine","Akumulirana amortizacija nematerijalne imovine" +"0190","kp_rrif0190","kp_rrif019","other","account_type_dug_imovina",,,"Akumulirana amortizacija izdataka za razvoj","Akumulirana amortizacija izdataka za razvoj" +"0191","kp_rrif0191","kp_rrif019","other","account_type_dug_imovina",,,"Akumulirana amortizacija koncesija, patenata, licencija i sl.","Akumulirana amortizacija koncesija, patenata, licencija i sl." +"0192","kp_rrif0192","kp_rrif019","other","account_type_dug_imovina",,,"Akumulirana amort. robne i uslužne marke","Akumulirana amort. robne i uslužne marke" +"0193","kp_rrif0193","kp_rrif019","other","account_type_dug_imovina",,,"Akumulirana amortizacija softwera","Akumulirana amortizacija softwera" +"0194","kp_rrif0194","kp_rrif019","other","account_type_dug_imovina",,,"Akumulirana amortizacija godwilla (v. napom. 3.)","Akumulirana amortizacija godwilla (v. napom. 3.)" +"0195","kp_rrif0195","kp_rrif019","other","account_type_dug_imovina",,,"Akumulirana amort. ostale nematerijalne imovine","Akumulirana amort. ostale nematerijalne imovine" +"02","kp_rrif02","kp_rrif0","view","account_type_view",,,"MATERIJALNA IMOVINA - NEKRETNINE","MATERIJALNA IMOVINA - NEKRETNINE" +"020","kp_rrif020","kp_rrif02","view","account_type_view",,,"Zemljišta","Zemljišta" +"0200","kp_rrif0200","kp_rrif020","other","account_type_dug_imovina",,,"Građevinsko zemljište (bez zgrada)","Građevinsko zemljište (bez zgrada)" +"0201","kp_rrif0201","kp_rrif020","other","account_type_dug_imovina",,,"Poljoprivredno zemljište","Poljoprivredno zemljište" +"0202","kp_rrif0202","kp_rrif020","other","account_type_dug_imovina",,,"Zemljište za deponije smeća i otpada","Zemljište za deponije smeća i otpada" +"0203","kp_rrif0203","kp_rrif020","other","account_type_dug_imovina",,,"Zemljište za eksploataciju kamena, gline, šljunka i pijeska,","Zemljište za eksploataciju kamena, gline, šljunka i pijeska," +"0204","kp_rrif0204","kp_rrif020","other","account_type_dug_imovina",,,"Zemljište sa supstancijalnom potrošnjom ili odlagališta","Zemljište sa supstancijalnom potrošnjom ili odlagališta" +"0205","kp_rrif0205","kp_rrif020","other","account_type_dug_imovina",,,"Zemljište pod prometnicama, dvorištima, parkiralištima i sl.","Zemljište pod prometnicama, dvorištima, parkiralištima i sl." +"0206","kp_rrif0206","kp_rrif020","other","account_type_dug_imovina",,,"Zemljišta pod dugogodišnjim nasadama, parkovima, vrtovima i sl.","Zemljišta pod dugogodišnjim nasadama, parkovima, vrtovima i sl." +"0207","kp_rrif0207","kp_rrif020","other","account_type_dug_imovina",,,"Čista neobrađena i nezasađena zemljišta i kamenjari","Čista neobrađena i nezasađena zemljišta i kamenjari" +"0208","kp_rrif0208","kp_rrif020","other","account_type_dug_imovina",,,"Zemljišta ispod građevina","Zemljišta ispod građevina" +"0209","kp_rrif0209","kp_rrif020","other","account_type_dug_imovina",,,"Poboljšanja na zemljištu (ulaganja u odvodnjavanje, uređivanje prilaza i sl.)","Poboljšanja na zemljištu (ulaganja u odvodnjavanje, uređivanje prilaza i sl.)" +"021","kp_rrif021","kp_rrif02","view","account_type_view",,,"Zemljišna prava (višegodišnja)","Zemljišna prava (višegodišnja)" +"0210","kp_rrif0210","kp_rrif021","other","account_type_dug_imovina",,,"Zemljište s upisanim pravom građenja (unaprijed plaćena)","Zemljište s upisanim pravom građenja (unaprijed plaćena)" +"0211","kp_rrif0211","kp_rrif021","other","account_type_dug_imovina",,,"Pravo služnosti na zemljištu (unaprijed plaćena)","Pravo služnosti na zemljištu (unaprijed plaćena)" +"0212","kp_rrif0212","kp_rrif021","other","account_type_dug_imovina",,,"Zemljišta u zakupu (unaprijed plaćena)","Zemljišta u zakupu (unaprijed plaćena)" +"023","kp_rrif023","kp_rrif02","view","account_type_view",,,"Građevinski objekti (za vlastite potrebe)","Građevinski objekti (za vlastite potrebe)" +"0230","kp_rrif0230","kp_rrif023","other","account_type_dug_imovina",,,"Poslovne zgrade","Poslovne zgrade" +"0231","kp_rrif0231","kp_rrif023","other","account_type_dug_imovina",,,"Tvorničke zgrade, hale i radionice","Tvorničke zgrade, hale i radionice" +"0232","kp_rrif0232","kp_rrif023","other","account_type_dug_imovina",,,"Zgrade trgovine, hotela, motela, restorana","Zgrade trgovine, hotela, motela, restorana" +"0233","kp_rrif0233","kp_rrif023","other","account_type_dug_imovina",,,"Skladišta, silosi, nadstrešnice i garaže, staklenici, sušionice, hladnjače","Skladišta, silosi, nadstrešnice i garaže, staklenici, sušionice, hladnjače" +"0234","kp_rrif0234","kp_rrif023","other","account_type_dug_imovina",,,"Zgrade montažne, barake, mostovi, drvene konstrukcije i sl.","Zgrade montažne, barake, mostovi, drvene konstrukcije i sl." +"0235","kp_rrif0235","kp_rrif023","other","account_type_dug_imovina",,,"Ograde, izlozi, potporni zidovi -brane, športski tereni,šatori,žičare i sl.","Ograde (betonske, kamene, metalne i sl.), izlozi, potporni zidovi - brane, športski tereni, šatori, žičare i sl." +"0236","kp_rrif0236","kp_rrif023","other","account_type_dug_imovina",,,"Putovi, parkirališta, staze i dr. građevine (rampe i sl.), nadvožnjaci i dr. bet. ili met. konstruk.","Putovi, parkirališta, staze i dr. građevine (rampe i sl.), nadvožnjaci i dr. betonske ili metalne konstrukcije" +"0237","kp_rrif0237","kp_rrif023","other","account_type_dug_imovina",,,"Cjevovodi, vodospremnici, utvrđene obale, kanali, kanalizacija, dalekovodi","Cjevovodi, vodospremnici, utvrđene obale, kanali, kanalizacija, dalekovodi" +"0238","kp_rrif0238","kp_rrif023","other","account_type_dug_imovina",,,"Objekti poljoprivrede i ribarstva","Objekti poljoprivrede i ribarstva" +"0239","kp_rrif0239","kp_rrif023","other","account_type_dug_imovina",,,"Ostali nespomenuti građevinski objekti (rudnici, brane) i objekti izvan uporabe","Ostali nespomenuti građevinski objekti (rudnici, brane) i objekti izvan uporabe" +"024","kp_rrif024","kp_rrif02","view","account_type_view",,,"Stanovi za vlastite zaposlenike","Stanovi za vlastite zaposlenike" +"0240","kp_rrif0240","kp_rrif024","other","account_type_dug_imovina",,,"Stanovi za vlastite zaposlenike-a1","Stanovi za vlastite zaposlenike-Analitika 1" +"026","kp_rrif026","kp_rrif02","view","account_type_view",,,"Predujmovi za nabavu nekretnina","Predujmovi za nabavu nekretnina" +"0260","kp_rrif0260","kp_rrif026","other","account_type_dug_imovina",,,"Predujmovi za nabavu zemljišta","Predujmovi za nabavu zemljišta" +"0261","kp_rrif0261","kp_rrif026","other","account_type_dug_imovina",,,"Predujmovi za građevine u nabavi","Predujmovi za građevine u nabavi" +"027","kp_rrif027","kp_rrif02","view","account_type_view",,,"Nekretnine u pripremi","Nekretnine u pripremi" +"0270","kp_rrif0270","kp_rrif027","other","account_type_dug_imovina",,,"Zemljišta u pripremi","Zemljišta u pripremi" +"0271","kp_rrif0271","kp_rrif027","other","account_type_dug_imovina",,,"Građevine u pripremi","Građevine u pripremi" +"028","kp_rrif028","kp_rrif02","view","account_type_view",,,"Vrijednosno usklađenje nekretnina","Vrijednosno usklađenje nekretnina" +"0280","kp_rrif0280","kp_rrif028","other","account_type_dug_imovina",,,"Vrijednosno usklađenje zemljišta","Vrijednosno usklađenje zemljišta" +"0281","kp_rrif0281","kp_rrif028","other","account_type_dug_imovina",,,"Vrijednosno usklađenje građevina","Vrijednosno usklađenje građevina" +"029","kp_rrif029","kp_rrif02","view","account_type_view",,,"Akumulirana amortizacija građevina","Akumulirana amortizacija građevina" +"0290","kp_rrif0290","kp_rrif029","other","account_type_dug_imovina",,,"Akumulirana amortizacija građevina (analitika prema pojedinim građevinama)","Akumulirana amortizacija građevina (analitika prema pojedinim građevinama)" +"0291","kp_rrif0291","kp_rrif029","other","account_type_dug_imovina",,,"Akumulirana amortizacija odlagališta otpada, kamenoloma i sl. (MRS 16. t. 58.)","Akumulirana amortizacija odlagališta otpada, kamenoloma i sl. (MRS 16. t. 58.)" +"03","kp_rrif03","kp_rrif0","view","account_type_view",,,"POSTROJENJA, OPREMA, ALATI, INVENTAR I TRANSPORTNA SREDSTVA","POSTROJENJA, OPREMA, ALATI, INVENTAR I TRANSPORTNA SREDSTVA" +"030","kp_rrif030","kp_rrif03","view","account_type_view",,,"Postrojenja","Postrojenja" +"0300","kp_rrif0300","kp_rrif030","other","account_type_dug_imovina",,,"Tehnička postrojenja, uređaji, spremnici, pogonski motori, platforme i dr.","Tehnička postrojenja, uređaji, spremnici, pogonski motori, platforme i dr." +"0301","kp_rrif0301","kp_rrif030","other","account_type_dug_imovina",,,"Strojevi i alati u svezi sa strojevima u pogonima i radionicama za obradu i preradu","Strojevi i alati u svezi sa strojevima u pogonima i radionicama za obradu i preradu" +"0302","kp_rrif0302","kp_rrif030","other","account_type_dug_imovina",,,"Energetska postrojenja (kotlovnice, generatori,solarne ćelije, vjetro-elektrane, toplinske crpke i dr.)","Energetska postrojenja (kotlovnice, generatori, naponske i solarne ćelije, vjetro-elektrane, toplinske crpke i dr.)" +"0303","kp_rrif0303","kp_rrif030","other","account_type_dug_imovina",,,"Rashladna postrojenja","Rashladna postrojenja" +"0304","kp_rrif0304","kp_rrif030","other","account_type_dug_imovina",,,"Prijenosna postrojenja (dizala, pokretne stepenice, elevatori, pokretne trake i sl.)","Prijenosna postrojenja (dizala, pokretne stepenice, elevatori, pokretne trake i sl.)" +"0305","kp_rrif0305","kp_rrif030","other","account_type_dug_imovina",,,"Poboljšanje na postrojenjima","Poboljšanje na postrojenjima" +"0306","kp_rrif0306","kp_rrif030","other","account_type_dug_imovina",,,"Mlinska postrojenja","Mlinska postrojenja" +"0307","kp_rrif0307","kp_rrif030","other","account_type_dug_imovina",,,"Postrojenje za pakiranje, ambalažu i sl.","Postrojenje za pakiranje, ambalažu i sl." +"0309","kp_rrif0309","kp_rrif030","other","account_type_dug_imovina",,,"Ostala postrojenja i postrojenja izvan uporabe","Ostala postrojenja i postrojenja izvan uporabe" +"031","kp_rrif031","kp_rrif03","view","account_type_view",,,"Oprema","Oprema" +"0310","kp_rrif0310","kp_rrif031","other","account_type_dug_imovina",,,"Uredska oprema (fotokopirni, telefoni, telefaxi, blagajne, alarmi, klima, hladnjaci, televizori, i dr.)","Uredska oprema (fotokopirni aparati, telefoni, telefaxi, blagajne, alarmi, klimatizacijski uređaji, hladnjaci, televizori, i dr.)" +"0311","kp_rrif0311","kp_rrif031","other","account_type_dug_imovina",,,"Računalna oprema","Računalna oprema" +"0312","kp_rrif0312","kp_rrif031","other","account_type_dug_imovina",,,"Telekomunikacijska oprema (mobiteli, tel. centrale, antene i sl.)","Telekomunikacijska oprema (mobiteli, tel. centrale, antene i sl.)" +"0313","kp_rrif0313","kp_rrif031","other","account_type_dug_imovina",,,"Oprema trgovine (police, blagajne, hladnjaci, i dr.)","Oprema trgovine (police, blagajne, hladnjaci, i dr.)" +"0314","kp_rrif0314","kp_rrif031","other","account_type_dug_imovina",,,"Oprema ugostiteljstva, hotela i sl. (aparati, štednjaci, hladnjaci, pokućstvo i sl.)","Oprema ugostiteljstva, hotela i sl. (aparati, štednjaci, hladnjaci, pokućstvo i sl.)" +"0315","kp_rrif0315","kp_rrif031","other","account_type_dug_imovina",,,"Oprema servisa (dizalice, ispitni uređaji, aparati i dr.)","Oprema servisa (dizalice, ispitni uređaji, aparati i dr.)" +"0316","kp_rrif0316","kp_rrif031","other","account_type_dug_imovina",,,"Oprema za graditeljstvo i montažu(kranovi, bageri, skele, oplate, mješalice, dizalice, valjci i sl.)","Oprema za graditeljstvo (kranovi, bageri, skele, oplate, mješalice, dizalice, valjci i sl.)" +"0317","kp_rrif0317","kp_rrif031","other","account_type_dug_imovina",,,"Oprema grijanja i hlađenja","Oprema grijanja i hlađenja" +"0318","kp_rrif0318","kp_rrif031","other","account_type_dug_imovina",,,"Oprema zaštite na radu i protupožarne zaštite","Oprema zaštite na radu i protupožarne zaštite" +"0319","kp_rrif0319","kp_rrif031","other","account_type_dug_imovina",,,"Ostala oprema i oprema izvan uporabe","Ostala oprema i oprema izvan uporabe" +"032","kp_rrif032","kp_rrif03","view","account_type_view",,,"Alati, pogonski inventar i transportna imovina","Alati, pogonski inventar i transportna imovina" +"0320","kp_rrif0320","kp_rrif032","view","account_type_view",,,"Transportna imovina","Transportna imovina" +"03200","kp_rrif03200","kp_rrif0320","other","account_type_dug_imovina",,,"Putnička vozila (osobna i putnički kombi) i motor kotači","Putnička vozila (osobna i putnički kombi) i motor kotači" +"03201","kp_rrif03201","kp_rrif0320","other","account_type_dug_imovina",,,"Teretna i vučna vozila, tegljači i kamioni","Teretna i vučna vozila, tegljači i kamioni" +"03202","kp_rrif03202","kp_rrif0320","other","account_type_dug_imovina",,,"Priključna transportna sredstva (prikolice)","Priključna transportna sredstva (prikolice)" +"03203","kp_rrif03203","kp_rrif0320","other","account_type_dug_imovina",,,"Teretna vozila (dostavna i kombi) i hladnjače, cisterne","Teretna vozila (dostavna i kombi) i hladnjače, cisterne" +"03204","kp_rrif03204","kp_rrif0320","other","account_type_dug_imovina",,,"Auto mješalice, auto crpke za beton, auto dizalice i sl.","Auto mješalice, auto crpke za beton, auto dizalice i sl." +"03205","kp_rrif03205","kp_rrif0320","other","account_type_dug_imovina",,,"Autobusi","Autobusi" +"03206","kp_rrif03206","kp_rrif0320","other","account_type_dug_imovina",,,"Zrakoplovi","Zrakoplovi" +"03207","kp_rrif03207","kp_rrif0320","other","account_type_dug_imovina",,,"Brodovi (veći od 1000 BRT)","Brodovi (veći od 1000 BRT)" +"03208","kp_rrif03208","kp_rrif0320","other","account_type_dug_imovina",,,"Brodice, jahte i ost. plovila","Brodice, jahte i ost. plovila" +"03209","kp_rrif03209","kp_rrif0320","other","account_type_dug_imovina",,,"Ostala transportna sredstva i uređaji (gusjeničari, el. vozila, viljuškari, vagoni bicikli i dr.)","Ostala transportna sredstva i uređaji (gusjeničari, el. vozila, viljuškari, vagoni, elevatori, traktori, bicikli i dr.)" +"0321","kp_rrif0321","kp_rrif032","view","account_type_view",,,"Pokućstvo - inventar","Pokućstvo - inventar" +"03210","kp_rrif03210","kp_rrif0321","other","account_type_dug_imovina",,,"Uredsko pokućstvo, sagovi, zavjese i sl.","Uredsko pokućstvo, sagovi, zavjese i sl." +"03211","kp_rrif03211","kp_rrif0321","other","account_type_dug_imovina",,,"Inventar trgovine (police, pregrade, pultovi)","Inventar trgovine (police, pregrade, pultovi)" +"03212","kp_rrif03212","kp_rrif0321","other","account_type_dug_imovina",,,"Ugostiteljsko i hotelsko pokućstvo i inventar","Ugostiteljsko i hotelsko pokućstvo i inventar" +"03213","kp_rrif03213","kp_rrif0321","other","account_type_dug_imovina",,,"Ostalo pokućstvo i inventar","Ostalo pokućstvo i inventar" +"0322","kp_rrif0322","kp_rrif032","other","account_type_dug_imovina",,,"Pogonski i skladišni inventar (stalaže, zatvoreni ormari, skele, oplate, protupožarni aparati i sl.)","Pogonski i skladišni inventar (stalaže, zatvoreni ormari, skele, oplate, protupožarni aparati, zaštitna sredstva i sl.)" +"0323","kp_rrif0323","kp_rrif032","other","account_type_dug_imovina",,,"Alati, mjerni i kontrolni instrumenti i pomoćna oprema","Alati, mjerni i kontrolni instrumenti i pomoćna oprema" +"0324","kp_rrif0324","kp_rrif032","other","account_type_dug_imovina",,,"Audio i video aparati, kamere, parkir. rampe i sl.","Audio i video aparati, kamere, parkir. rampe i sl." +"0325","kp_rrif0325","kp_rrif032","other","account_type_dug_imovina",,,"Reklame (svjetleće), stupovi i sl.","Reklame (svjetleće), stupovi i sl." +"0326","kp_rrif0326","kp_rrif032","other","account_type_dug_imovina",,,"Inventar ustanova (aparati, kreveti i sl.)","Inventar ustanova (aparati, kreveti i sl.)" +"0327","kp_rrif0327","kp_rrif032","other","account_type_dug_imovina",,,"Ostali pogonski inventar,","Ostali pogonski inventar," +"0328","kp_rrif0328","kp_rrif032","other","account_type_dug_imovina",,,"Višegodišnja ambalaža","Višegodišnja ambalaža" +"0329","kp_rrif0329","kp_rrif032","other","account_type_dug_imovina",,,"Alati, inventar i vozila izvan uporabe","Alati, inventar i vozila izvan uporabe" +"033","kp_rrif033","kp_rrif03","view","account_type_view",,,"Pretporez koji se ne može odbiti (kao dio vrijed. os. aut.)","Pretporez koji se ne može odbiti (kao dio vrijed. os. aut.)" +"0330","kp_rrif0330","kp_rrif033","other","account_type_dug_imovina",,,"30% pretporeza od osobnih automobila (n. v. do 400.000,00 kn)","30% pretporeza od osobnih automobila (n. v. do 400.000,00 kn)" +"0331","kp_rrif0331","kp_rrif033","other","account_type_dug_imovina",,,"30% i 100% pretporeza od osobnih automobila (n. v. veće od 400.000,00 kn)","30% i 100% pretporeza od osobnih automobila (n. v. veće od 400.000,00 kn)" +"0332","kp_rrif0332","kp_rrif033","other","account_type_dug_imovina",,,"30% pretporeza od brodova, jahti i dr. (n.v. do 400.000,00 kn)","30% pretporeza od brodova, jahti i dr. (n.v. do 400.000,00 kn)" +"0333","kp_rrif0333","kp_rrif033","other","account_type_dug_imovina",,,"30% i 100% pretporeza od brodova, jahti i dr. (n.v. veće od 400.000,00 kn)","30% i 100% pretporeza od brodova, jahti i dr. (n.v. veće od 400.000,00 kn)" +"034","kp_rrif034","kp_rrif03","view","account_type_view",,,"Poljoprivredna oprema i mehanizacija","Poljoprivredna oprema i mehanizacija" +"0340","kp_rrif0340","kp_rrif034","other","account_type_dug_imovina",,,"Traktori, kombajni, prikolice, kosilice i sl.","Traktori, kombajni, prikolice kosilice i sl." +"0341","kp_rrif0341","kp_rrif034","other","account_type_dug_imovina",,,"Radni priključci (plugovi, beračice, freze, prskalice, sabirače i sl.)","Radni priključci (plugovi, beračice, freze, prskalice, sabirače i sl.)" +"0342","kp_rrif0342","kp_rrif034","other","account_type_dug_imovina",,,"Oprema za mljekarstvo (muzilice, separatori, police, spremnici i sl.)","Oprema za mljekarstvo (muzilice, separatori, police, spremnici i sl.)" +"0343","kp_rrif0343","kp_rrif034","other","account_type_dug_imovina",,,"Oprema ribarstva (kavezi, mreže, čamci i brodovi, pakirnice)","Oprema ribarstva (kavezi, mreže, čamci i brodovi, pakirnice)" +"0344","kp_rrif0344","kp_rrif034","other","account_type_dug_imovina",,,"Oprema vinogradarstva (bačve, filteri, preše, punionica)","Oprema vinogradarstva (bačve, filteri, preše, punionica)" +"0345","kp_rrif0345","kp_rrif034","other","account_type_dug_imovina",,,"Oprema vočarstva i maslinarstva","Oprema vočarstva i maslinarstva" +"0346","kp_rrif0346","kp_rrif034","other","account_type_dug_imovina",,,"Oprema stočarstva i pćelarstva","Oprema stočarstva i pćelarstva" +"0347","kp_rrif0347","kp_rrif034","other","account_type_dug_imovina",,,"Oprema mlinova","Oprema mlinova" +"0349","kp_rrif0349","kp_rrif034","other","account_type_dug_imovina",,,"Ostala oprema poljoprivrede, stočarstva i ribarstva","Ostala oprema poljoprivrede, stočarstva i ribarstva" +"035","kp_rrif035","kp_rrif03","view","account_type_view",,,"Ostala materijalna imovina","Ostala materijalna imovina" +"0350","kp_rrif0350","kp_rrif035","other","account_type_dug_imovina",,,"Umjetnine, slike i sl.","Umjetnine, slike i sl." +"0351","kp_rrif0351","kp_rrif035","other","account_type_dug_imovina",,,"Arhivski predmeti, makete i sl.","Arhivski predmeti, makete i sl." +"0352","kp_rrif0352","kp_rrif035","other","account_type_dug_imovina",,,"Knjige, karte, fotografije i sl.","Knjige, karte, fotografije i sl." +"0353","kp_rrif0353","kp_rrif035","other","account_type_dug_imovina",,,"Oldtimeri (automobili, brodovi i dr.)","Oldtimeri (automobili, brodovi i dr.)" +"0354","kp_rrif0354","kp_rrif035","other","account_type_dug_imovina",,,"Ostala materijalna imovina","Ostala materijalna imovina" +"036","kp_rrif036","kp_rrif03","view","account_type_view",,,"Predujmovi za materijalnu imovinu","Predujmovi za materijalnu imovinu" +"0360","kp_rrif0360","kp_rrif036","other","account_type_dug_imovina",,,"Predujmovi za postrojenja i opremu","Predujmovi za postrojenja i opremu" +"0361","kp_rrif0361","kp_rrif036","other","account_type_dug_imovina",,,"Predujmovi za alate, pogonski inventar i transportnu imovinu","Predujmovi za alate, pogonski inventar i transportnu imovinu" +"0367","kp_rrif0367","kp_rrif036","other","account_type_dug_imovina",,,"Predujam za ostalu imovinu","Predujam za ostalu imovinu" +"037","kp_rrif037","kp_rrif03","view","account_type_view",,,"Materijalna imovina u pripremi","Materijalna imovina u pripremi" +"0370","kp_rrif0370","kp_rrif037","other","account_type_dug_imovina",,,"Postrojenja u pripremi","Postrojenja u pripremi" +"0371","kp_rrif0371","kp_rrif037","other","account_type_dug_imovina",,,"Oprema u pripremi","Oprema u pripremi" +"0372","kp_rrif0372","kp_rrif037","other","account_type_dug_imovina",,,"Alati, pogonski inventar u pripremi","Alati, pogonski inventar u pripremi" +"0373","kp_rrif0373","kp_rrif037","other","account_type_dug_imovina",,,"Osobni automobili i transportna sredstva u pripremi","Osobni automobili i transportna sredstva u pripremi" +"0374","kp_rrif0374","kp_rrif037","other","account_type_dug_imovina",,,"Poljoprivredna oprema u pripremi","Poljoprivredna oprema u pripremi" +"0375","kp_rrif0375","kp_rrif037","other","account_type_dug_imovina",,,"Ostala imovina u pripremi","Ostala imovina u pripremi" +"038","kp_rrif038","kp_rrif03","view","account_type_view",,,"Vrijednosno usklađenje postrojenja i opreme","Vrijednosno usklađenje postrojenja i opreme" +"0380","kp_rrif0380","kp_rrif038","other","account_type_dug_imovina",,,"Vrijednosno usklađenje postrojenja","Vrijednosno usklađenje postrojenja" +"0381","kp_rrif0381","kp_rrif038","other","account_type_dug_imovina",,,"Vrijednosno usklađenje opreme","Vrijednosno usklađenje opreme" +"0382","kp_rrif0382","kp_rrif038","other","account_type_dug_imovina",,,"Vrijednosno usklađenje alata, pogonskog inventara i transportne imovine","Vrijednosno usklađenje alata, pogonskog inventara i transportne imovine" +"0383","kp_rrif0383","kp_rrif038","other","account_type_dug_imovina",,,"Vrijednosno usklađenje ostale mat. imovine","Vrijednosno usklađenje ostale mat. imovine" +"0384","kp_rrif0384","kp_rrif038","other","account_type_dug_imovina",,,"Vrijednosno usklađenje poljoprivredne opreme","Vrijednosno usklađenje poljoprivredne opreme" +"039","kp_rrif039","kp_rrif03","view","account_type_view",,,"Akumulirana amortizacija postrojenja i opreme","Akumulirana amortizacija postrojenja i opreme" +"0390","kp_rrif0390","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. postrojenja","Akumulirana amortiz. postrojenja" +"0391","kp_rrif0391","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. opreme","Akumulirana amortiz. opreme" +"0392","kp_rrif0392","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. alata, pogonskog inventara i transportne imovine","Akumulirana amortiz. alata, pogonskog inventara i transportne imovine" +"0393","kp_rrif0393","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. ostale mat. imovine","Akumulirana amortiz. ostale mat. imovine" +"0394","kp_rrif0394","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. poljoprivredne opreme","Akumulirana amortiz. poljoprivredne opreme" +"0395","kp_rrif0395","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. 30% pretporeza od osob. automobila","Akumulirana amortiz. 30% pretporeza od osob. automobila" +"0396","kp_rrif0396","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. 30% i 100% pretporeza od osob. automobila (n. v. veće od 400.000,00 kn)","Akumulirana amortiz. 30% i 100% pretporeza od osob. automobila (n. v. veće od 400.000,00 kn)" +"0397","kp_rrif0397","kp_rrif039","other","account_type_dug_imovina",,,"Akumulirana amortiz. 30% od pretporeza od brodova, jahti i dr. sred. za osobni prijevoz","Akumulirana amortiz. 30% od pretporeza od brodova, jahti i dr. sred. za osobni prijevoz" +"0398","kp_rrif0398","kp_rrif039","other","account_type_dug_imovina",,,"Akum. amortiz.30% i 100% pretporeza od brodova, jahti i dr. sred. za os. prijevoz(NV preko 400000,00kn)","Akumulirana amortiz. 30% i 100% pretporeza od brodova, jahti i dr. sred. za osobni prijevoz (n. v. veće od 400.000,00 kn)" +"0399","kp_rrif0399","kp_rrif039","other","account_type_dug_imovina",,,"Ostala akumulirana amortizacija","Ostala akumulirana amortizacija" +"04","kp_rrif04","kp_rrif0","view","account_type_view",,,"BIOLOŠKA IMOVINA","BIOLOŠKA IMOVINA" +"040","kp_rrif040","kp_rrif04","view","account_type_view",,,"Biološka imovina - bilje - višegodišnji nasadi","Biološka imovina - bilje - višegodišnji nasadi" +"0400","kp_rrif0400","kp_rrif040","other","account_type_dug_imovina",,,"Voćnjaci","Voćnjaci" +"0401","kp_rrif0401","kp_rrif040","other","account_type_dug_imovina",,,"Vinogradi","Vinogradi" +"0402","kp_rrif0402","kp_rrif040","other","account_type_dug_imovina",,,"Maslinici","Maslinici" +"0403","kp_rrif0403","kp_rrif040","other","account_type_dug_imovina",,,"Plantaže drveća i bilja (šume)","Plantaže drveća i bilja (šume)" +"0404","kp_rrif0404","kp_rrif040","other","account_type_dug_imovina",,,"Parkovi, zelenila, nasadi i cvijeće","Parkovi, zelenila, nasadi i cvijeće" +"0405","kp_rrif0405","kp_rrif040","other","account_type_dug_imovina",,,"Ulaganja u ostale višegodišnje nasade","Ulaganja u ostale višegodišnje nasade" +"041","kp_rrif041","kp_rrif04","view","account_type_view",,,"Biološka imovina - životinje - osnovno stado","Biološka imovina - životinje - osnovno stado" +"0410","kp_rrif0410","kp_rrif041","other","account_type_dug_imovina",,,"Goveda","Goveda" +"0411","kp_rrif0411","kp_rrif041","other","account_type_dug_imovina",,,"Konji","Konji" +"0412","kp_rrif0412","kp_rrif041","other","account_type_dug_imovina",,,"Mazge, magarci i mule","Mazge, magarci i mule" +"0413","kp_rrif0413","kp_rrif041","other","account_type_dug_imovina",,,"Svinje","Svinje" +"0414","kp_rrif0414","kp_rrif041","other","account_type_dug_imovina",,,"Ovce i koze","Ovce i koze" +"0415","kp_rrif0415","kp_rrif041","other","account_type_dug_imovina",,,"Perad","Perad" +"0416","kp_rrif0416","kp_rrif041","other","account_type_dug_imovina",,,"Ribe","Ribe" +"0417","kp_rrif0417","kp_rrif041","other","account_type_dug_imovina",,,"Pčelinja društva","Pčelinja društva" +"0418","kp_rrif0418","kp_rrif041","other","account_type_dug_imovina",,,"Stado divljači","Stado divljači, kunića, nutrija (za rasplod)" +"0419","kp_rrif0419","kp_rrif041","other","account_type_dug_imovina",,,"Ostale nespomenute životinje (psi, ptice i dr.)","Ostale nespomenute životinje (psi, ptice i dr.)" +"046","kp_rrif046","kp_rrif04","view","account_type_view",,,"Predujmovi za biološku imovinu","Predujmovi za biološku imovinu" +"0460","kp_rrif0460","kp_rrif046","other","account_type_dug_imovina",,,"Predujmovi za višegodišnje nasade","Predujmovi za višegodišnje nasade" +"0461","kp_rrif0461","kp_rrif046","other","account_type_dug_imovina",,,"Predujmovi na nabavu životinja","Predujmovi na nabavu životinja" +"047","kp_rrif047","kp_rrif04","view","account_type_view",,,"Biološka imovina u pripremi","Biološka imovina u pripremi" +"0470","kp_rrif0470","kp_rrif047","other","account_type_dug_imovina",,,"Višegodišnji nasadi u pripremi","Višegodišnji nasadi u pripremi" +"0471","kp_rrif0471","kp_rrif047","other","account_type_dug_imovina",,,"Životinje (osnovno stado) u nabavi","Životinje (osnovno stado) u nabavi" +"048","kp_rrif048","kp_rrif04","view","account_type_view",,,"Vrijednosno usklađenje biološke imovine","Vrijednosno usklađenje biološke imovine" +"0480","kp_rrif0480","kp_rrif048","other","account_type_dug_imovina",,,"Vrijednosno usklađenje višegodišnjih nasada","Vrijednosno usklađenje višegodišnjih nasada" +"0481","kp_rrif0481","kp_rrif048","other","account_type_dug_imovina",,,"Vrijednosno usklađenje životinja (osnovnog stada)","Vrijednosno usklađenje životinja (osnovnog stada)" +"049","kp_rrif049","kp_rrif04","view","account_type_view",,,"Akumulirana amortizacija biološke imovine","Akumulirana amortizacija biološke imovine" +"0490","kp_rrif0490","kp_rrif049","other","account_type_dug_imovina",,,"Akumulirana amortiz. višegodišnjih nasada","Akumulirana amortiz. višegodišnjih nasada" +"0491","kp_rrif0491","kp_rrif049","other","account_type_dug_imovina",,,"Akumulirana amortiz. životinja (osnovnog stada)","Akumulirana amortiz. životinja (osnovnog stada)" +"05","kp_rrif05","kp_rrif0","view","account_type_view",,,"ULAGANJA U NEKRETNINE","ULAGANJA U NEKRETNINE" +"050","kp_rrif050","kp_rrif05","view","account_type_view",,,"Ulaganja u nekretnine - zemljišta","Ulaganja u nekretnine - zemljišta" +"0500","kp_rrif0500","kp_rrif050","other","account_type_dug_imovina",,,"Ulaganja u nekretnine - zemljišta-a1","Ulaganja u nekretnine - zemljišta-Analitika 1" +"051","kp_rrif051","kp_rrif05","view","account_type_view",,,"Ulaganja u nekretnine - građevine","Ulaganja u nekretnine - građevine" +"0510","kp_rrif0510","kp_rrif051","other","account_type_dug_imovina",,,"Građevine u najmovima (poslovne zgrade, stanovi, apartmani, kuće)","Građevine u najmovima (poslovne zgrade, stanovi, apartmani, kuće)" +"0511","kp_rrif0511","kp_rrif051","other","account_type_dug_imovina",,,"Građevine izvan uporabe (zgrade, stanovi, apartmani, kuće)","Građevine izvan uporabe (zgrade, stanovi, apartmani, kuće)" +"056","kp_rrif056","kp_rrif05","view","account_type_view",,,"Predujmovi za ulaganja u nekretnine","Predujmovi za ulaganja u nekretnine" +"0560","kp_rrif0560","kp_rrif056","other","account_type_dug_imovina",,,"Predujam za ulaganja u zemljište","Predujam za ulaganja u zemljište" +"0561","kp_rrif0561","kp_rrif056","other","account_type_dug_imovina",,,"Predujam za ulaganje u građevine","Predujam za ulaganje u građevine" +"057","kp_rrif057","kp_rrif05","view","account_type_view",,,"Ulaganja u nekretnine u pripremi","Ulaganja u nekretnine u pripremi" +"0570","kp_rrif0570","kp_rrif057","other","account_type_dug_imovina",,,"Ulaganja u zemljišta u nabavi","Ulaganja u zemljišta u nabavi" +"0571","kp_rrif0571","kp_rrif057","other","account_type_dug_imovina",,,"Ulaganja u građevine u nabavi","Ulaganja u građevine u nabavi" +"0572","kp_rrif0572","kp_rrif057","other","account_type_dug_imovina",,,"Ulaganja u građevine u izgradnji","Ulaganja u građevine u izgradnji" +"058","kp_rrif058","kp_rrif05","view","account_type_view",,,"Vrijednosno usklađenje ulaganja u nekretnine","Vrijednosno usklađenje ulaganja u nekretnine" +"0580","kp_rrif0580","kp_rrif058","other","account_type_dug_imovina",,,"Vrijednosno usklađenje ulaganja u zemljište","Vrijednosno usklađenje ulaganja u zemljište" +"0581","kp_rrif0581","kp_rrif058","other","account_type_dug_imovina",,,"Vrijednosno usklađenje ulaganja u građevine","Vrijednosno usklađenje ulaganja u građevine" +"059","kp_rrif059","kp_rrif05","view","account_type_view",,,"Akumulirana amortizacija ulaganja u građevine","Akumulirana amortizacija ulaganja u građevine" +"0590","kp_rrif0590","kp_rrif059","other","account_type_dug_imovina",,,"Akumulirana amortizacija ulaganja u građevine-a1","Akumulirana amortizacija ulaganja u građevine-Analitika 1" +"06","kp_rrif06","kp_rrif0","view","account_type_view",,,"DUGOTRAJNA FINANCIJSKA IMOVINA (s povratom dužim od jedne godine)","DUGOTRAJNA FINANCIJSKA IMOVINA (s povratom dužim od jedne godine)" +"060","kp_rrif060","kp_rrif06","view","account_type_view",,,"Udjeli (dionice) kod povezanih poduzetnika (s više od 20% udjela)","Udjeli (dionice) kod povezanih poduzetnika (s više od 20% udjela)" +"0600","kp_rrif0600","kp_rrif060","other","account_type_dug_imovina",,,"Udjel u dionicama (s više od 20%)","Udjel u dionicama (s više od 20%)" +"0601","kp_rrif0601","kp_rrif060","other","account_type_dug_imovina",,,"Udjel u kapitalu d.o.o.-a (s više od 20%)","Udjel u kapitalu d.o.o.-a (s više od 20%)" +"0602","kp_rrif0602","kp_rrif060","other","account_type_dug_imovina",,,"Udjeli u komanditnom društvu","Udjeli u komanditnom društvu" +"0603","kp_rrif0603","kp_rrif060","other","account_type_dug_imovina",,,"Udjeli u društvima u inozemstvu (s više od 20%)","Udjeli u društvima u inozemstvu (s više od 20%)" +"0604","kp_rrif0604","kp_rrif060","other","account_type_dug_imovina",,,"Osnivački udjeli u ustanovama","Osnivački udjeli u ustanovama" +"0605","kp_rrif0605","kp_rrif060","other","account_type_dug_imovina",,,"Udjeli u zadrugama","Udjeli u zadrugama" +"0606","kp_rrif0606","kp_rrif060","other","account_type_dug_imovina",,,"Udio u društvu s uzajamnim udjelima","Udio u društvu s uzajamnim udjelima" +"0607","kp_rrif0607","kp_rrif060","other","account_type_dug_imovina",,,"Ulaganje u kapitalne pričuve (neupisani kapital)","Ulaganje u kapitalne pričuve (neupisani kapital)" +"061","kp_rrif061","kp_rrif06","view","account_type_view",,,"Dani zajmovi povezanim poduzetnicima (analitika po društvima u kojima se ima više od 20% udjela)","Dani zajmovi povezanim poduzetnicima (analitika po društvima u kojima se ima više od 20% udjela)" +"0610","kp_rrif0610","kp_rrif061","other","account_type_dug_imovina",,,"Dani zajmovi povezanim poduzetnicima (analitika po društvima u kojima se ima više od 20% udjela)-a1","Dani zajmovi povezanim poduzetnicima (analitika po društvima u kojima se ima više od 20% udjela)-Analitika 1" +"062","kp_rrif062","kp_rrif06","view","account_type_view",,,"Sudjelujući interesi (udjeli)","Sudjelujući interesi (udjeli)" +"0620","kp_rrif0620","kp_rrif062","other","account_type_dug_imovina",,,"Udjel u dioničkom kapitalu (do 20% udjela - analitika po društvima)","Udjel u dioničkom kapitalu (do 20% udjela - analitika po društvima)" +"0621","kp_rrif0621","kp_rrif062","other","account_type_dug_imovina",,,"Udjel u kapitalu d.o.o. (do 20% udjela)","Udjel u kapitalu d.o.o. (do 20% udjela)" +"0622","kp_rrif0622","kp_rrif062","other","account_type_dug_imovina",,,"Udjeli u društvima u inozemstvu (do 20% udjela)","Udjeli u društvima u inozemstvu (do 20% udjela)" +"0623","kp_rrif0623","kp_rrif062","other","account_type_dug_imovina",,,"Ulaganje u dionice i udjele radi preprodaje","Ulaganje u dionice i udjele radi preprodaje" +"0624","kp_rrif0624","kp_rrif062","other","account_type_dug_imovina",,,"Potraživanja za udio u dobitku (analitika po udjelima)","Potraživanja za udio u dobitku (analitika po udjelima)" +"063","kp_rrif063","kp_rrif06","view","account_type_view",,,"Zajmovi dani poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela u T.K.)","Zajmovi dani poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela u T.K.)" +"0630","kp_rrif0630","kp_rrif063","other","account_type_dug_imovina",,,"Zajmovi dani poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela u T.K.)-a1","Zajmovi dani poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela u T.K.)-Analitika 1" +"064","kp_rrif064","kp_rrif06","view","account_type_view",,,"Ulaganja u vrijednosne papire (dugotrajne)","Ulaganja u vrijednosne papire (dugotrajne)" +"0640","kp_rrif0640","kp_rrif064","other","account_type_dug_imovina",,,"Ulaganja u mjenice, zadužnice (kupljene)","Ulaganja u mjenice, zadužnice (kupljene)" +"0641","kp_rrif0641","kp_rrif064","other","account_type_dug_imovina",,,"Ulaganja u državne obveznice","Ulaganja u državne obveznice" +"0642","kp_rrif0642","kp_rrif064","other","account_type_dug_imovina",,,"Dugotrajna ulaganja u obveznice društva","Dugotrajna ulaganja u obveznice društva" +"0643","kp_rrif0643","kp_rrif064","other","account_type_dug_imovina",,,"Dugotrajna ulaganja u blagajničke zapise","Dugotrajna ulaganja u blagajničke zapise" +"0644","kp_rrif0644","kp_rrif064","other","account_type_dug_imovina",,,"Dugotrajna ulaganja u opcije, certifikate i sl.","Dugotrajna ulaganja u opcije, certifikate i sl." +"0645","kp_rrif0645","kp_rrif064","other","account_type_dug_imovina",,,"Ulaganja u robne ugovore","Ulaganja u robne ugovore" +"0646","kp_rrif0646","kp_rrif064","view","account_type_dug_imovina",,,"Ulaganja u ostale vrijednosne papire","Ulaganja ostale u vrijednosne papire" +"06460","kp_rrif06460","kp_rrif0646","other","account_type_dug_imovina",,,"Ulaganja u vrijednosne papire po fer vrijednosti","Ulaganja u vrijednosne papire po fer vrijednosti" +"06461","kp_rrif06461","kp_rrif0646","other","account_type_dug_imovina",,,"Vrijednosni papiri namijenjeni prodaji (do dospijeća)","Vrijednosni papiri namijenjeni prodaji (do dospijeća)" +"0648","kp_rrif0648","kp_rrif064","other","account_type_dug_imovina",,,"Ulaganje u vrijed. pap. raspoložive za prodaju","Ulaganje u vrijed. pap. raspoložive za prodaju" +"0649","kp_rrif0649","kp_rrif064","other","account_type_dug_imovina",,,"Nezarađeni prihodi u financijskim instrumentima","Nezarađeni prihodi u financijskim instrumentima" +"065","kp_rrif065","kp_rrif06","view","account_type_view",,,"Dani zajmovi, depoziti i sl.","Dani zajmovi, depoziti i sl." +"0650","kp_rrif0650","kp_rrif065","view","account_type_view",,,"Dani dugotrajni zajmovi","Dani dugotrajni zajmovi" +"06500","kp_rrif06500","kp_rrif0650","other","account_type_dug_imovina",,,"Dani zajmovi vanjskim pravnim osobama (nepovezanim)","Dani zajmovi vanjskim pravnim osobama (nepovezanim)" +"06501","kp_rrif06501","kp_rrif0650","other","account_type_dug_imovina",,,"Dani zajmovi vanjskim fizičkim osobama - obrtnicima","Dani zajmovi vanjskim fizičkim osobama - obrtnicima" +"06502","kp_rrif06502","kp_rrif0650","other","account_type_dug_imovina",,,"Dani zajmovi kooperantima","Dani zajmovi kooperantima" +"06503","kp_rrif06503","kp_rrif0650","other","account_type_dug_imovina",,,"Dani zajmovi direktoru, ortacima, menadžerima, zaposlenicima","Dani zajmovi direktoru, ortacima, menadžerima, zaposlenicima" +"06504","kp_rrif06504","kp_rrif0650","other","account_type_dug_imovina",,,"Oročenja u bankama","Oročenja u bankama" +"06505","kp_rrif06505","kp_rrif0650","other","account_type_dug_imovina",,,"Financijski zajmovi dani u inozemstvo","Financijski zajmovi dani u inozemstvo" +"06509","kp_rrif06509","kp_rrif0650","other","account_type_dug_imovina",,,"Ostali dugotrajni zajmovi","Ostali dugotrajni zajmovi" +"0651","kp_rrif0651","kp_rrif065","view","account_type_view",,,"Depoziti dugotrajni","Depoziti dugotrajni" +"06510","kp_rrif06510","kp_rrif0651","other","account_type_dug_imovina",,,"Depoziti iz poslovnih aktivnosti","Depoziti iz poslovnih aktivnosti" +"06511","kp_rrif06511","kp_rrif0651","other","account_type_dug_imovina",,,"Depoziti kod osiguravajućih društava","Depoziti kod osiguravajućih društava" +"06512","kp_rrif06512","kp_rrif0651","other","account_type_dug_imovina",,,"Depoziti u poslovnim bankama","Depoziti u poslovnim bankama" +"06513","kp_rrif06513","kp_rrif0651","other","account_type_dug_imovina",,,"Depoziti na carini (garancija špeditera)","Depoziti na carini (garancija špeditera)" +"06514","kp_rrif06514","kp_rrif0651","other","account_type_dug_imovina",,,"Sudski depoziti","Sudski depoziti" +"0652","kp_rrif0652","kp_rrif065","view","account_type_view",,,"Kaucije i kapare","Kaucije i kapare" +"06520","kp_rrif06520","kp_rrif0652","other","account_type_dug_imovina",,,"Kaucije za obveze","Kaucije za obveze" +"06521","kp_rrif06521","kp_rrif0652","other","account_type_dug_imovina",,,"Kaucije iz kupoprodajnih poslova","Kaucije iz kupoprodajnih poslova" +"06522","kp_rrif06522","kp_rrif0652","other","account_type_dug_imovina",,,"Kaucije za plaćanja","Kaucije za plaćanja" +"06523","kp_rrif06523","kp_rrif0652","other","account_type_dug_imovina",,,"Dane kapare i osiguranja","Dane kapare i osiguranja" +"066","kp_rrif066","kp_rrif06","view","account_type_view",,,"Ulaganja koja se obračunavaju metodom udjela","Ulaganja koja se obračunavaju metodom udjela" +"0660","kp_rrif0660","kp_rrif066","other","account_type_dug_imovina",,,"Ulaganja (udjeli) koji su raspoloživi za prodaju (dugotrajno ulaganje -MRS28.t.11. i 13. te MRS39.t.9.)","Ulaganja (udjeli) koji su raspoloživi za prodaju (dugotrajno ulaganje - MRS 28. t. 11. i 13. te MRS 39. t. 9.)" +"067","kp_rrif067","kp_rrif06","view","account_type_view",,,"Ostala dugotrajna financijska imovina","Ostala dugotrajna financijska imovina" +"0670","kp_rrif0670","kp_rrif067","other","account_type_dug_imovina",,,"Ulaganja u investicijske fondove (s rokom dužim od 1 god.)","Ulaganja u investicijske fondove (s rokom dužim od 1 god.)" +"0672","kp_rrif0672","kp_rrif067","other","account_type_dug_imovina",,,"Ostala nespomenuta dugoročna ulaganja","Ostala nespomenuta dugoročna ulaganja" +"068","kp_rrif068","kp_rrif06","view","account_type_view",,,"Vrijednosno usklađenje financijske imovine - dugotrajne (analitika prema oblicima imovine u usklađenju)","Vrijednosno usklađenje financijske imovine - dugotrajne (analitika prema oblicima imovine u usklađenju)" +"0680","kp_rrif0680","kp_rrif068","other","account_type_dug_imovina",,,"Vrijednosno usklađenje financijske imovine - dugotrajne (analitika prema oblicima imovine u usklađenju)-a1","Vrijednosno usklađenje financijske imovine - dugotrajne (analitika prema oblicima imovine u usklađenju)-Analitika 1" +"069","kp_rrif069","kp_rrif06","view","account_type_view",,,"Nezarađene kamate u kreditima i sl.","Nezarađene kamate u kreditima i sl." +"0690","kp_rrif0690","kp_rrif069","other","account_type_dug_imovina",,,"Nezarađene kamate u kreditima i sl.-a1","Nezarađene kamate u kreditima i sl.-Analitika 1" +"07","kp_rrif07","kp_rrif0","view","account_type_view",,,"POTRAŽIVANJA (dulja od jedne godine)","POTRAŽIVANJA (dulja od jedne godine)" +"070","kp_rrif070","kp_rrif07","view","account_type_view",,,"Potraživanja od povezanih poduzetnika","Potraživanja od povezanih poduzetnika" +"0700","kp_rrif0700","kp_rrif070","other","account_type_dug_imovina",,,"Potraživanja od povezanih društava za isporuke dobara i usluga","Potraživanja od povezanih društava za isporuke dobara i usluga" +"0701","kp_rrif0701","kp_rrif070","other","account_type_dug_imovina",,,"Potraživanja od povezanih društava za dana sredstva na dugoročnu posudbu (osim novca)","Potraživanja od povezanih društava za dana sredstva na dugoročnu posudbu (osim novca)" +"0702","kp_rrif0702","kp_rrif070","other","account_type_dug_imovina",,,"Potraživanja od zadrugara, kooperanata i sl.","Potraživanja od zadrugara, kooperanata i sl." +"071","kp_rrif071","kp_rrif07","view","account_type_view",,,"Potraživanja s osnove prodaje na kredit","Potraživanja s osnove prodaje na kredit" +"0710","kp_rrif0710","kp_rrif071","other","account_type_dug_imovina",,,"Potraživanja s osnove prodaje na robni kredit","Potraživanja s osnove prodaje na robni kredit" +"0711","kp_rrif0711","kp_rrif071","other","account_type_dug_imovina",,,"Potraživanja s osnove prodaje na robni kredit u inozemstvu","Potraživanja s osnove prodaje na robni kredit u inozemstvu" +"0712","kp_rrif0712","kp_rrif071","other","account_type_dug_imovina",,,"Potraživanja za prodane usluge na kredit","Potraživanja za prodane usluge na kredit" +"0713","kp_rrif0713","kp_rrif071","other","account_type_dug_imovina",,,"Potraživanje za dugotr. imovinu prodanu na kredit","Potraživanje za dugotr. imovinu prodanu na kredit" +"0714","kp_rrif0714","kp_rrif071","other","account_type_dug_imovina",,,"Potraživanja za prodaju u financijskom lizingu","Potraživanja za prodaju u financijskom lizingu" +"0715","kp_rrif0715","kp_rrif071","other","account_type_dug_imovina",,,"Potraživanja za prodani udjel na kredit","Potraživanja za prodani udjel na kredit" +"0716","kp_rrif0716","kp_rrif071","other","account_type_dug_imovina",,,"Potraživanja za prodaju na potrošački kredit","Potraživanja za prodaju na potrošački kredit" +"0717","kp_rrif0717","kp_rrif071","other","account_type_dug_imovina",,,"Ostala potraživanja iz prodaje na kredit","Ostala potraživanja iz prodaje na kredit" +"072","kp_rrif072","kp_rrif07","view","account_type_view",,,"Potraživanja iz faktoringa","Potraživanja iz faktoringa" +"0720","kp_rrif0720","kp_rrif072","other","account_type_dug_imovina",,,"Potraživanja iz faktoringa-a1","Potraživanja iz faktoringa-Analitika 1" +"073","kp_rrif073","kp_rrif07","view","account_type_view",,,"Potraživanja za jamčevine","Potraživanja za jamčevine" +"0730","kp_rrif0730","kp_rrif073","other","account_type_dug_imovina",,,"Potraživanja za jamčevine iz operativnog lizinga","Potraživanja za jamčevine iz operativnog lizinga" +"0731","kp_rrif0731","kp_rrif073","other","account_type_dug_imovina",,,"Jamstvo za dobro izvedene radove","Jamstvo za dobro izvedene radove" +"0732","kp_rrif0732","kp_rrif073","other","account_type_dug_imovina",,,"Jamčevine iz natječaja","Jamčevine iz natječaja" +"0733","kp_rrif0733","kp_rrif073","other","account_type_dug_imovina",,,"Jamčevine za štete","Jamčevine za štete" +"074","kp_rrif074","kp_rrif07","view","account_type_view",,,"Potraživanja u sporu i rizična potraživanja","Potraživanja u sporu i rizična potraživanja" +"0740","kp_rrif0740","kp_rrif074","other","account_type_dug_imovina",,,"Potraživanja u sporu i rizična potraživanja-a1","Potraživanja u sporu i rizična potraživanja-Analitika 1" +"075","kp_rrif075","kp_rrif07","view","account_type_view",,,"Potraživanja za predujmove za usluge","Potraživanja za predujmove za usluge" +"0750","kp_rrif0750","kp_rrif075","other","account_type_dug_imovina",,,"Potraživanja za predujmove za usluge-a1","Potraživanja za predujmove za usluge-Analitika 1" +"076","kp_rrif076","kp_rrif07","view","account_type_view",,,"Ostala potraživanja - dugotrajna","Ostala potraživanja - dugotrajna" +"0760","kp_rrif0760","kp_rrif076","other","account_type_dug_imovina",,,"Potraživanja od radnika","Potraživanja od radnika" +"0761","kp_rrif0761","kp_rrif076","other","account_type_dug_imovina",,,"Potraživanja od članova društva","Potraživanja od članova društva" +"0762","kp_rrif0762","kp_rrif076","other","account_type_dug_imovina",,,"Potraživanja iz ortaštva","Potraživanja iz ortaštva" +"078","kp_rrif078","kp_rrif07","view","account_type_view",,,"Vrijednosno usklađivanje dugotrajnih potraživanja","Vrijednosno usklađivanje dugotrajnih potraživanja" +"0780","kp_rrif0780","kp_rrif078","other","account_type_dug_imovina",,,"Vrijednosno usklađivanje dugotrajnih potraživanja-a1","Vrijednosno usklađivanje dugotrajnih potraživanja-Analitika 1" +"079","kp_rrif079","kp_rrif07","view","account_type_view",,,"Potraživanja za nezarađenu kamatu","Potraživanja za nezarađenu kamatu" +"0790","kp_rrif0790","kp_rrif079","other","account_type_dug_imovina",,,"Potraživanja za nezarađenu kamatu-a1","Potraživanja za nezarađenu kamatu-Analitika 1" +"08","kp_rrif08","kp_rrif0","view","account_type_view",,,"ODGOĐENA POREZNA IMOVINA","ODGOĐENA POREZNA IMOVINA" +"080","kp_rrif080","kp_rrif08","view","account_type_view",,,"Odgođena privremena razlika poreza na dobitak (analitika po godinama)","Odgođena privremena razlika poreza na dobitak (analitika po godinama)" +"0800","kp_rrif080","kp_rrif08","view","account_type_view",,,"Odgođena porezna imovina s osnove poreznog gubitka","Odgođena porezna imovina s osnove poreznog gubitka" +"08000","kp_rrif08000","kp_rrif080","other","account_type_dug_imovina",,,"Odgođena porezna imovina s osnove poreznog gubitka-a1","Odgođena porezna imovina s osnove poreznog gubitka-Analitika 1" +"0801","kp_rrif081","kp_rrif080","view","account_type_view",,,"Odgođena porezna imovina s osnove povećane amortizacije","Odgođena porezna imovina s osnove povećane amortizacije" +"08010","kp_rrif08010","kp_rrif081","other","account_type_dug_imovina",,,"Odgođena porezna imovina s osnove povećane amortizacije-a1","Odgođena porezna imovina s osnove povećane amortizacije -Analitika 1" +"081","kp_rrif081","kp_rrif08","view","account_type_view",,,"Ostala odgođena porezna imovina","Ostala odgođena porezna imovina" +"0810","kp_rrif0810","kp_rrif081","other","account_type_dug_imovina",,,"Ostala odgođena porezna imovina-a1","Ostala odgođena porezna imovina-Analitika 1" +"1","kp_rrif1","kp_rrif","view","account_type_view",,,"NOVAC, KRATKOTRAJNA FINANCIJSKA IMOVINA, KRATKOTRAJNA POTRAŽIVANJA, TROŠKOVI I PRIHOD BUDUĆEG RAZDOBLJA","NOVAC, KRATKOTRAJNA FINANCIJSKA IMOVINA, KRATKOTRAJNA POTRAŽIVANJA, TE TROŠKOVI I PRIHOD BUDUĆEG RAZDOBLJA" +"10","kp_rrif10","kp_rrif1","view","account_type_view",,,"NOVAC U BANKAMA I BLAGAJNAMA","NOVAC U BANKAMA I BLAGAJNAMA" +"100","kp_rrif100","kp_rrif10","view","account_type_view",,,"Transakcijski računi u bankama","Transakcijski računi u bankama" +"1000","kp_rrif1000","kp_rrif100","view","account_type_view",,,"Transakcijski u banci (analitika po računima u bankama i štedionicama)","Transakcijski u banci (analitika po računima u bankama i štedionicama)" +"1007","kp_rrif1007","kp_rrif100","liquidity","account_type_kratk_imovina",,,"Podračun društva","Podračun društva" +"1008","kp_rrif1008","kp_rrif100","liquidity","account_type_kratk_imovina",,,"Račun društva u osnivanju","Račun društva u osnivanju" +"1009","kp_rrif1009","kp_rrif100","liquidity","account_type_kratk_imovina",,,"Žiro-račun prijelazni konto","Žiro-račun prijelazni konto" +"101","kp_rrif101","kp_rrif10","view","account_type_view",,,"Otvoreni akreditiv u domaćoj banci","Otvoreni akreditiv u domaćoj banci" +"1010","kp_rrif1010","kp_rrif101","liquidity","account_type_kratk_imovina",,,"Otvoreni akreditiv u domaćoj banci-a1","Otvoreni akreditiv u domaćoj banci-Analitika 1" +"102","kp_rrif102","kp_rrif10","view","account_type_view",,,"Blagajne","Blagajne" +"1020","kp_rrif1020","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Glavna blagajna (uključivo i plemenitih metala)","Glavna blagajna (uključivo i plemenitih metala)" +"1021","kp_rrif1021","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Blagajna vrijednosnica (poštanskih, taksenih maraka i dr. vrijednosnica)","Blagajna vrijednosnica (poštanskih, taksenih maraka i dr. vrijednosnica)" +"1022","kp_rrif1022","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Blagajna prodavaonice","Blagajna prodavaonice" +"1023","kp_rrif1023","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Blagajna servisa","Blagajna servisa" +"1024","kp_rrif1024","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Blagajna recepcije (šanka)","Blagajna recepcije (šanka)" +"1025","kp_rrif1025","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Blagajna radne jedinice","Blagajna radne jedinice" +"1028","kp_rrif1028","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Blagajna za ostalo","Blagajna za ostalo" +"1029","kp_rrif1029","kp_rrif102","liquidity","account_type_kratk_imovina",,,"Prijelazni račun blagajne prodavaonice","Prijelazni račun blagajne prodavaonice" +"103","kp_rrif103","kp_rrif10","view","account_type_view",,,"Devizni računi","Devizni računi" +"1030","kp_rrif1030","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Devizni račun u domaćoj banci (analitika po devizama)","Devizni račun u domaćoj banci (analitika po devizama)" +"1031","kp_rrif1031","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Devizni račun u inozemnoj banci (u EU)","Devizni račun u inozemnoj banci (u EU)" +"1032","kp_rrif1032","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Devizni račun reeksportnih poslova","Devizni račun reeksportnih poslova" +"1034","kp_rrif1034","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Devizni račun investicijskih radova","Devizni račun investicijskih radova" +"1035","kp_rrif1035","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Devizni račun poslovne jedinice u inozemstvu","Devizni račun poslovne jedinice u inozemstvu" +"1036","kp_rrif1036","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Devizni račun u slobodnoj zoni","Devizni račun u slobodnoj zoni" +"1037","kp_rrif1037","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Nerezidentski devizni račun","Nerezidentski devizni račun" +"1038","kp_rrif1038","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Devizni račun terminskih poslova","Devizni račun terminskih poslova" +"1039","kp_rrif1039","kp_rrif103","liquidity","account_type_kratk_imovina",,,"Prijelazni devizni račun","Prijelazni devizni račun" +"104","kp_rrif104","kp_rrif10","view","account_type_view",,,"Otvoreni akreditiv u stranim valutama","Otvoreni akreditiv u stranim valutama" +"1040","kp_rrif1040","kp_rrif104","liquidity","account_type_kratk_imovina",,,"Otvoreni devizni akreditiv u domaćoj banci","Otvoreni devizni akreditiv u domaćoj banci" +"1041","kp_rrif1041","kp_rrif104","liquidity","account_type_kratk_imovina",,,"Otvoreni akreditiv u inozemnoj banci","Otvoreni akreditiv u inozemnoj banci" +"1042","kp_rrif1042","kp_rrif104","liquidity","account_type_kratk_imovina",,,"Ecsrow račun","Ecsrow račun" +"105","kp_rrif105","kp_rrif10","view","account_type_view",,,"Devizna blagajna","Devizna blagajna" +"1050","kp_rrif1050","kp_rrif105","liquidity","account_type_kratk_imovina",,,"Glavna devizna blagajna","Glavna devizna blagajna" +"1051","kp_rrif1051","kp_rrif105","liquidity","account_type_kratk_imovina",,,"Devizna blagajna za službena putovanja u inozemstvo","Devizna blagajna za službena putovanja u inozemstvo" +"1052","kp_rrif1052","kp_rrif105","liquidity","account_type_kratk_imovina",,,"Devizna blagajna za troškove prijevoza robe u inozemstvo","Devizna blagajna za troškove prijevoza robe u inozemstvo" +"1053","kp_rrif1053","kp_rrif105","liquidity","account_type_kratk_imovina",,,"Devizna blagajna za mjenjačke poslove","Devizna blagajna za mjenjačke poslove" +"1055","kp_rrif1055","kp_rrif105","liquidity","account_type_kratk_imovina",,,"Devizna blagajna za razne isplate","Devizna blagajna za razne isplate" +"106","kp_rrif106","kp_rrif10","view","account_type_view",,,"Novac za kupnju deviza","Novac za kupnju deviza" +"1060","kp_rrif1060","kp_rrif106","liquidity","account_type_kratk_imovina",,,"Novac za kupnju deviza-a1","Novac za kupnju deviza-Analitika 1" +"108","kp_rrif108","kp_rrif10","view","account_type_view",,,"Ostala novčana sredstva","Ostala novčana sredstva" +"1080","kp_rrif1080","kp_rrif108","liquidity","account_type_kratk_imovina",,,"Ostala novčana sredstva-a1","Ostala novčana sredstva-Analitika 1" +"109","kp_rrif109","kp_rrif10","view","account_type_view",,,"Vrijednosno usklađenje depozita u bankama","Vrijednosno usklađenje depozita u bankama" +"1090","kp_rrif1090","kp_rrif109","liquidity","account_type_kratk_imovina",,,"Vrijednosno usklađenje depozita u bankama-a1","Vrijednosno usklađenje depozita u bankama-Analitika 1" +"11","kp_rrif11","kp_rrif1","view","account_type_view",,,"KRATKOTRAJNA FINANCIJSKA IMOVINA (do jedne godine)","KRATKOTRAJNA FINANCIJSKA IMOVINA (do jedne godine)" +"110","kp_rrif110","kp_rrif11","view","account_type_view",,,"Udjeli (dionice) u povezanim poduzetnicima","Udjeli (dionice) u povezanim poduzetnicima" +"1100","kp_rrif1100","kp_rrif110","other","account_type_kratk_imovina",,,"Udjeli u povezanim društvima (s više od 20%)","Udjeli u povezanim društvima (s više od 20%)" +"1101","kp_rrif1101","kp_rrif110","other","account_type_kratk_imovina",,,"Dionički udio u d.d. (s više od 20%)","Dionički udio u d.d. (s više od 20%)" +"1102","kp_rrif1102","kp_rrif110","other","account_type_kratk_imovina",,,"Ulaganje u dionice radi preprodaje (iz udjela više od 20%)","Ulaganje u dionice radi preprodaje (iz udjela više od 20%)" +"111","kp_rrif111","kp_rrif11","view","account_type_view",,,"Dani zajmovi povezanim poduzetnicima","Dani zajmovi povezanim poduzetnicima" +"1110","kp_rrif1110","kp_rrif111","other","account_type_kratk_imovina",,,"Kratkoročni zajam povezanom društvu","Kratkoročni zajam povezanom društvu" +"1111","kp_rrif1111","kp_rrif111","other","account_type_kratk_imovina",,,"Kratkoročni zajam povezanom društvu u inozemstvu","Kratkoročni zajam povezanom društvu u inozemstvu" +"1112","kp_rrif1112","kp_rrif111","other","account_type_kratk_imovina",,,"Zajmovi dani vlastitim podružnicama","Zajmovi dani vlastitim podružnicama" +"1113","kp_rrif1113","kp_rrif111","other","account_type_kratk_imovina",,,"Zajmovi dani ustanovama i školama (kojih je društvo osnivač)","Zajmovi dani ustanovama i školama (kojih je društvo osnivač)" +"112","kp_rrif112","kp_rrif11","view","account_type_view",,,"Sudjelujući interesi (udjeli)","Sudjelujući interesi (udjeli)" +"1120","kp_rrif1120","kp_rrif112","other","account_type_kratk_imovina",,,"Udjeli (do 20%) u društvima kapitala","Udjeli (do 20%) u društvima kapitala" +"1121","kp_rrif1121","kp_rrif112","other","account_type_kratk_imovina",,,"Udjeli - dionice u bankama","Udjeli - dionice u bankama" +"1122","kp_rrif1122","kp_rrif112","other","account_type_kratk_imovina",,,"Udjeli (do 20%) u ustanovama, zadrugama i dr.","Udjeli (do 20%) u ustanovama, zadrugama i dr." +"113","kp_rrif113","kp_rrif11","view","account_type_view",,,"Zajmovi dani poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)","Zajmovi dani poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)" +"1130","kp_rrif1130","kp_rrif113","other","account_type_kratk_imovina",,,"Zajmovi u novcu","Zajmovi u novcu" +"1131","kp_rrif1131","kp_rrif113","other","account_type_kratk_imovina",,,"Zajmovi iz preuzetog duga","Zajmovi iz preuzetog duga" +"1132","kp_rrif1132","kp_rrif113","other","account_type_kratk_imovina",,,"Zajmovi iz dospjelih anuiteta u razdoblju do 12 mj. od dospijeća","Zajmovi iz dospjelih anuiteta u razdoblju do 12 mj. od dospijeća" +"1133","kp_rrif1133","kp_rrif113","other","account_type_kratk_imovina",,,"Ostali zajmovi društvima u kojima se drži udjel do 20%","Ostali zajmovi društvima u kojima se drži udjel do 20%" +"114","kp_rrif114","kp_rrif11","view","account_type_view",,,"Ulaganja u vrijednosne papire","Ulaganja u vrijednosne papire" +"1140","kp_rrif1140","kp_rrif114","other","account_type_kratk_imovina",,,"Čekovi","Čekovi" +"1141","kp_rrif1141","kp_rrif114","view","account_type_view",,,"Mjenice","Mjenice" +"11410","kp_rrif11410","kp_rrif1141","other","account_type_kratk_imovina",,,"Mjenice u portfelju","Mjenice u portfelju" +"11411","kp_rrif11411","kp_rrif1141","other","account_type_kratk_imovina",,,"Mjenice na naplati","Mjenice na naplati" +"11412","kp_rrif11412","kp_rrif1141","other","account_type_kratk_imovina",,,"Mjenice u protestu","Mjenice u protestu" +"11413","kp_rrif11413","kp_rrif1141","other","account_type_kratk_imovina",,,"Utužene mjenice","Utužene mjenice" +"1142","kp_rrif1142","kp_rrif114","other","account_type_kratk_imovina",,,"Komercijalni zapisi","Komercijalni zapisi" +"1143","kp_rrif1143","kp_rrif114","other","account_type_kratk_imovina",,,"Kratkotrajne obveze poduzetnika","Kratkotrajne obveze poduzetnika" +"1144","kp_rrif1144","kp_rrif114","other","account_type_kratk_imovina",,,"Blagajnički zapisi (izdani od banaka)","Blagajnički zapisi (izdani od banaka)" +"1145","kp_rrif1145","kp_rrif114","other","account_type_kratk_imovina",,,"Ulaganje u obveznice","Ulaganje u obveznice" +"1146","kp_rrif1146","kp_rrif114","other","account_type_kratk_imovina",,,"Zadužnice (iskupljene)-trađbina s temelja jamstva","Zadužnice (iskupljene)-trađbina s temelja jamstva" +"1147","kp_rrif1147","kp_rrif114","other","account_type_kratk_imovina",,,"Ulaganje u vrijednosne papire (namjenjene za trgovanje)","Ulaganje u vrijednosne papire (namjenjene za trgovanje)" +"1148","kp_rrif1148","kp_rrif114","other","account_type_kratk_imovina",,,"Ostali brzounovčivi vrijednosni papiri (robni papiri, ostale obveznice)","Ostali brzounovčivi vrijednosni papiri (robni papiri, ostale obveznice)" +"1149","kp_rrif1149","kp_rrif114","other","account_type_kratk_imovina",,,"Predani vrijednosni papiri na naplatu","Predani vrijednosni papiri na naplatu" +"115","kp_rrif115","kp_rrif11","view","account_type_view",,,"Dani zajmovi, depoziti i sl.","Dani zajmovi, depoziti i sl." +"1150","kp_rrif1150","kp_rrif115","view","account_type_view",,,"Dani kratkotrajni zajmovi","Dani kratkotrajni zajmovi" +"11500","kp_rrif11500","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi poduzetnicima","Zajmovi poduzetnicima" +"11501","kp_rrif11501","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi ortacima","Zajmovi ortacima" +"11502","kp_rrif11502","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi obrtnicima","Zajmovi obrtnicima" +"11503","kp_rrif11503","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi podružnicama","Zajmovi podružnicama" +"11504","kp_rrif11504","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi ustanovama","Zajmovi ustanovama" +"11505","kp_rrif11505","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi dani u inozemstvo","Zajmovi dani u inozemstvo" +"11506","kp_rrif11506","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi članovima uprave i zaposlenicima","Zajmovi članovima uprave i zaposlenicima" +"11507","kp_rrif11507","kp_rrif1150","other","account_type_kratk_imovina",,,"Zajmovi dani poljoprivrednicima ili zadrugarima","Zajmovi dani poljoprivrednicima ili zadrugarima" +"11508","kp_rrif11508","kp_rrif1150","other","account_type_kratk_imovina",,,"Dospjeli anuiteti dugotrajnih zajmova (naplaćuju se u roku od 12 mjeseci - analitika po korisnicima)","Dospjeli anuiteti dugotrajnih zajmova (koji se naplaćuju u roku od 12 mjeseci - analitika po korisnicima)" +"11509","kp_rrif11509","kp_rrif1150","other","account_type_kratk_imovina",,,"Ostali kratkotrajni zajmovi","Ostali kratkotrajni zajmovi" +"1151","kp_rrif1151","kp_rrif115","view","account_type_view",,,"Depoziti (do jedne godine)","Depoziti (do jedne godine)" +"11510","kp_rrif11510","kp_rrif1151","other","account_type_kratk_imovina",,,"Depoziti u bankama","Depoziti u bankama" +"11511","kp_rrif11511","kp_rrif1151","other","account_type_kratk_imovina",,,"Depoziti u osiguravajućim društvima","Depoziti u osiguravajućim društvima" +"11512","kp_rrif11512","kp_rrif1151","other","account_type_kratk_imovina",,,"Depoziti u inozemnim financijskim institucijama","Depoziti u inozemnim financijskim institucijama" +"11513","kp_rrif11513","kp_rrif1151","other","account_type_kratk_imovina",,,"Depoziti za ostale poslovne aktivnosti","Depoziti za ostale poslovne aktivnosti" +"1152","kp_rrif1152","kp_rrif115","view","account_type_view",,,"Kaucije i jamčevine (do jedne godine)","Kaucije i jamčevine (do jedne godine)" +"11520","kp_rrif11520","kp_rrif1152","other","account_type_kratk_imovina",,,"Kaucije na aukcijama (dražbama)","Kaucije na aukcijama (dražbama)" +"11521","kp_rrif11521","kp_rrif1152","other","account_type_kratk_imovina",,,"Kaucije za robu","Kaucije za robu" +"11522","kp_rrif11522","kp_rrif1152","other","account_type_kratk_imovina",,,"Kaucije za ambalažu","Kaucije za ambalažu" +"11523","kp_rrif11523","kp_rrif1152","other","account_type_kratk_imovina",,,"Dane jamčevine za natječaje","Dane jamčevine za natječaje" +"11524","kp_rrif11524","kp_rrif1152","other","account_type_kratk_imovina",,,"Potraživanja za kapare (čl. 303. ZOO-a)","Potraživanja za kapare (čl. 303. ZOO-a)" +"11525","kp_rrif11525","kp_rrif1152","other","account_type_kratk_imovina",,,"Polozi gotovine za ostale poslovne aktivnosti","Polozi gotovine za ostale poslovne aktivnosti" +"116","kp_rrif116","kp_rrif11","view","account_type_view",,,"Potraživanja iz ulaganja u investicijske fondove","Potraživanja iz ulaganja u investicijske fondove" +"1160","kp_rrif1160","kp_rrif116","other","account_type_kratk_imovina",,,"Kratkotrajno ulaganje u novčane fondove","Kratkotrajno ulaganje u novčane fondove" +"1161","kp_rrif1161","kp_rrif116","other","account_type_kratk_imovina",,,"Kratkotrajno ulaganje u ostale investicijske fondove","Kratkotrajno ulaganje u ostale investicijske fondove" +"117","kp_rrif117","kp_rrif11","view","account_type_view",,,"Ostala financijska imovina","Ostala financijska imovina" +"1170","kp_rrif1170","kp_rrif117","other","account_type_kratk_imovina",,,"Otkup kratkoročnih potraživanja (faktoring)","Otkup kratkoročnih potraživanja (faktoring)" +"1171","kp_rrif1171","kp_rrif117","other","account_type_kratk_imovina",,,"Ulaganje u kratkotrajne eskontne poslove","Ulaganje u kratkotrajne eskontne poslove" +"1172","kp_rrif1172","kp_rrif117","other","account_type_kratk_imovina",,,"Potraživanja za više uplaćeno po kreditnoj kartici","Potraživanja za više uplaćeno po kreditnoj kartici" +"1173","kp_rrif1173","kp_rrif117","other","account_type_kratk_imovina",,,"Potraživanja za isplate avaliranih ili indosiranih mjenica","Potraživanja za isplate avaliranih ili indosiranih mjenica" +"1174","kp_rrif1174","kp_rrif117","other","account_type_kratk_imovina",,,"Potraživanja po isplaćenim garancijama","Potraživanja po isplaćenim garancijama" +"1175","kp_rrif1175","kp_rrif117","other","account_type_kratk_imovina",,,"Potraživanja iz preuzetog duga (čl. 96. ZOO)","Potraživanja iz preuzetog duga (čl. 96. ZOO)" +"1176","kp_rrif1176","kp_rrif117","other","account_type_kratk_imovina",,,"Potraživanje po asignacijama, novacijama i sl.","Potraživanje po asignacijama, novacijama i sl." +"118","kp_rrif118","kp_rrif11","view","account_type_view",,,"Potraživanja u sporu (npr. utužena, u stečaju i sl. iz fin. imovine)","Potraživanja u sporu (npr. utužena, u stečaju i sl. iz fin. imovine)" +"1180","kp_rrif1180","kp_rrif118","other","account_type_kratk_imovina",,,"Potraživanja u sporu (npr. utužena, u stečaju i sl. iz fin. imovine)-a1","Potraživanja u sporu (npr. utužena, u stečaju i sl. iz fin. imovine)-Analitika 1" +"119","kp_rrif119","kp_rrif11","view","account_type_view",,,"Vrijednosno usklađivanje financijske imovine - kratkotrajne (analitika po otpisima iz ove skupine rn)","Vrijednosno usklađivanje financijske imovine - kratkotrajne (analitika po otpisima iz ove skupine računa)" +"1190","kp_rrif1190","kp_rrif119","other","account_type_kratk_imovina",,,"Vrijednosno usklađivanje financijske imovine - kratkotrajne (analitika po otpisima iz ove skupine rn)-a1","Vrijednosno usklađivanje financijske imovine - kratkotrajne (analitika po otpisima iz ove skupine računa)-Analitika 1" +"12","kp_rrif12","kp_rrif1","view","account_type_view",,,"POTRAŽIVANJA (KRATKOTRAJNA)","POTRAŽIVANJA (KRATKOTRAJNA)" +"120","kp_rrif120","kp_rrif12","view","account_type_view",,,"Potraživanja od kupaca","Potraživanja od kupaca" +"1200","kp_rrif1200","kp_rrif120","receivable","account_type_potraz_kup","True",,"Potraživanja od kupaca dobara","Potraživanja od kupaca dobara" +"1201","kp_rrif1201","kp_rrif120","receivable","account_type_potraz_kup","True",,"Potraživanja od kupaca usluga (servisne, najmovi, ustupanje radne snage, kapaciteta i dr.)","Potraživanja od kupaca usluga (servisne, najmovi, ustupanje radne snage, kapaciteta i dr.)" +"1202","kp_rrif1202","kp_rrif120","receivable","account_type_potraz_kup","True",,"Potraživanja za prodaju prava","Potraživanja za prodaju prava" +"1203","kp_rrif1203","kp_rrif120","receivable","account_type_potraz_kup","True",,"Kupci građani i prodaja na potrošački kredit","Kupci građani i prodaja na potrošački kredit" +"1204","kp_rrif1204","kp_rrif120","receivable","account_type_potraz_kup","True",,"Kupci imovinskih sredstava, inventara, materijala, otpadaka i sl.","Kupci imovinskih sredstava, inventara, materijala, otpadaka i sl." +"1205","kp_rrif1205","kp_rrif120","receivable","account_type_potraz_kup","True",,"Potraživanja od kupaca za prodanu robu iz komisije","Potraživanja od kupaca za prodanu robu iz komisije" +"1206","kp_rrif1206","kp_rrif120","receivable","account_type_potraz_kup","True",,"Kupci zastupničke i franšizne prodaje","Kupci zastupničke i franšizne prodaje" +"1207","kp_rrif1207","kp_rrif120","receivable","account_type_potraz_kup","True",,"Potraživanja za prodaju na kreditne kartice","Potraživanja za prodaju na kreditne kartice" +"1208","kp_rrif1208","kp_rrif120","receivable","account_type_potraz_kup","True",,"Potraživanja od ostalih prodaja","Potraživanja od ostalih prodaja" +"1209","kp_rrif1209","kp_rrif120","receivable","account_type_potraz_kup","True",,"Potraživanja za nefakturiranu isporuku dobara ili usluga","Potraživanja za nefakturiranu isporuku dobara ili usluga" +"121","kp_rrif121","kp_rrif12","view","account_type_view",,,"Kupci u inozemstvu","Kupci u inozemstvu" +"1210","kp_rrif1210","kp_rrif121","receivable","account_type_potraz_kup","True",,"Kupci dobara iz inozemstva","Kupci dobara iz inozemstva" +"1211","kp_rrif1211","kp_rrif121","receivable","account_type_potraz_kup","True",,"Kupci usluga iz inozemstva","Kupci usluga iz inozemstva" +"1212","kp_rrif1212","kp_rrif121","receivable","account_type_potraz_kup","True",,"Kupci prava iz inozemstva","Kupci prava iz inozemstva" +"122","kp_rrif122","kp_rrif12","view","account_type_view",,,"Potraživanja od povezanih poduzetnika (s više od 20% udjela - ovisni poduzet.)","Potraživanja od povezanih poduzetnika (s više od 20% udjela - ovisni poduzet.)" +"1220","kp_rrif1220","kp_rrif122","receivable","account_type_potraz_kup","True",,"Potraživanja za prodaju - isporuku povezanim društvima","Potraživanja za prodaju - isporuku povezanim društvima" +"1221","kp_rrif1221","kp_rrif122","receivable","account_type_potraz_kup","True",,"Potraživanja za dividende od povezanih društava","Potraživanja za dividende od povezanih društava" +"1222","kp_rrif1222","kp_rrif122","receivable","account_type_potraz_kup","True",,"Potraživanja za isporuke povezanim društvima u inozemstvu","Potraživanja za isporuke povezanim društvima u inozemstvu" +"1223","kp_rrif1223","kp_rrif122","receivable","account_type_potraz_kup","True",,"Potraživanja za nadoknadu gubitka od povezanih društava (čl. 489. ZTD)","Potraživanja za nadoknadu gubitka od povezanih društava (čl. 489. ZTD)" +"1224","kp_rrif1224","kp_rrif122","receivable","account_type_potraz_kup","True",,"Potraživanja za kamate od povezanih društava","Potraživanja za kamate od povezanih društava" +"1225","kp_rrif1225","kp_rrif122","receivable","account_type_potraz_kup","True",,"Potraživanja od podružnica","Potraživanja od podružnica" +"1226","kp_rrif1226","kp_rrif122","receivable","account_type_potraz_kup","True",,"Ostala kratkoročna potraživanja od povezanih poduzetnika","Ostala kratkoročna potraživanja od povezanih poduzetnika" +"1227","kp_rrif1227","kp_rrif122","receivable","account_type_potraz_kup","True",,"Potraživanja za udio u dobitku d.o.o.-a","Potraživanja za udio u dobitku d.o.o.-a" +"1228","kp_rrif1228","kp_rrif122","other","account_type_potraz_kup",,,"Potraživanja iz ulaganja radi povećanja udjela (do upisa u t.k.)","Potraživanja iz ulaganja radi povećanja udjela (do upisa u t.k.)" +"123","kp_rrif123","kp_rrif12","view","account_type_view",,,"Potraživanja od sudjelujućih poduzetnika (u kojima se drži manje od 20% udjela)","Potraživanja od sudjelujućih poduzetnika (u kojima se drži manje od 20% udjela)" +"1230","kp_rrif1230","kp_rrif123","receivable","account_type_potraz_kup","True",,"Potraživanja za isporuke dobara i usluga","Potraživanja za isporuke dobara i usluga" +"1231","kp_rrif1231","kp_rrif123","receivable","account_type_potraz_kup","True",,"Potraživanja za dividendu - dobitak","Potraživanja za dividendu - dobitak" +"1232","kp_rrif1232","kp_rrif123","receivable","account_type_potraz_kup","True",,"Potraživanja za kamate","Potraživanja za kamate" +"1233","kp_rrif1233","kp_rrif123","receivable","account_type_potraz_kup","True",,"Ostala potraživanja od sudjelujućih društava","Ostala potraživanja od sudjelujućih društava" +"124","kp_rrif124","kp_rrif12","view","account_type_view",,,"Potraživanja za kamate","Potraživanja za kamate" +"1240","kp_rrif1240","kp_rrif124","receivable","account_type_potraz_kup","True",,"Potraživanja od kupaca za ugovorene kamate (koje nisu pripisane glavnici)","Potraživanja od kupaca za ugovorene kamate (koje nisu pripisane glavnici)" +"1241","kp_rrif1241","kp_rrif124","receivable","account_type_potraz_kup","True",,"Potraživanja za zatezne kamate (koje nisu pripisane glavnici)","Potraživanja za zatezne kamate (koje nisu pripisane glavnici)" +"1242","kp_rrif1242","kp_rrif124","receivable","account_type_potraz_kup","True",,"Potraživanja za kamate po nagodbama","Potraživanja za kamate po nagodbama" +"1243","kp_rrif1243","kp_rrif124","receivable","account_type_potraz_kup","True",,"Potraživanje za kamatu iz danih zajmova","Potraživanje za kamatu iz danih zajmova" +"1245","kp_rrif1245","kp_rrif124","receivable","account_type_potraz_kup","True",,"Kamate iz ostalih trađbina","Kamate iz ostalih trađbina" +"125","kp_rrif125","kp_rrif12","view","account_type_view",,,"Potraživanja za predujmove za usluge (koje nisu u svezi sa zalihama i dugotr. imov.)","Potraživanja za predujmove za usluge (koje nisu u svezi sa zalihama i dugotr. imov.)" +"1250","kp_rrif1250","kp_rrif125","receivable","account_type_potraz_kup","True",,"Potraživanja za predujmove za usluge (koje nisu u svezi sa zalihama i dugotr. imov.)-a1","Potraživanja za predujmove za usluge (koje nisu u svezi sa zalihama i dugotr. imov.)-Analitika 1" +"126","kp_rrif126","kp_rrif12","view","account_type_view",,,"Potraživanja iz vanjskotrgovačkog poslovanja (s osnove uvoza odnosno izvoza za tuđi račun)","Potraživanja iz vanjskotrgovačkog poslovanja (s osnove uvoza odnosno izvoza za tuđi račun)" +"1260","kp_rrif1260","kp_rrif126","receivable","account_type_potraz_kup","True",,"Potraživanja po poslovima uvoza za tuđi račun","Potraživanja po poslovima uvoza za tuđi račun" +"1261","kp_rrif1261","kp_rrif126","receivable","account_type_potraz_kup","True",,"Potraživanja od izvoznika","Potraživanja od izvoznika" +"127","kp_rrif127","kp_rrif12","view","account_type_view",,,"Potraživanja s osnove ostalih aktivnosti","Potraživanja s osnove ostalih aktivnosti" +"1270","kp_rrif1270","kp_rrif127","receivable","account_type_potraz_kup","True",,"Potraživanja s osnove prodaje udjela i dionica","Potraživanja s osnove prodaje udjela i dionica" +"1271","kp_rrif1271","kp_rrif127","receivable","account_type_potraz_kup","True",,"Potraživanja za nakladno odobrene popuste (bonifikacije, casa-sconto, rabat i sl.)","Potraživanja za nakladno odobrene popuste (bonifikacije, casa-sconto, rabat i sl.)" +"1272","kp_rrif1272","kp_rrif127","receivable","account_type_potraz_kup","True",,"Potraživanja za predujam za kupnju dionica i udjela","Potraživanja za predujam za kupnju dionica i udjela" +"1273","kp_rrif1273","kp_rrif127","receivable","account_type_potraz_kup","True",,"Potraživanja od komisionara","Potraživanja od komisionara" +"128","kp_rrif128","kp_rrif12","view","account_type_view",,,"Ostala kratkoročna potraživanja","Ostala kratkoročna potraživanja" +"1280","kp_rrif1280","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja iz odštetnih zahtjeva (od osiguravajućih društava)","Potraživanja iz odštetnih zahtjeva (od osiguravajućih društava)" +"1281","kp_rrif1281","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja za udjel u dobitku - prihodu u investicijskom fondu","Potraživanja za udjel u dobitku - prihodu u investicijskom fondu" +"1282","kp_rrif1282","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja za tantijeme (nadoknade za korištenje patenta, znaka i autorskih prava)","Potraživanja za tantijeme (nadoknade za korištenje patenta, znaka i autorskih prava)" +"1283","kp_rrif1283","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja stečena cesijom, asignacijom i preuzimanjem duga od prodaje","Potraživanja stečena cesijom, asignacijom i preuzimanjem duga od prodaje" +"1284","kp_rrif1284","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja za nadoknadu troškova iz jamstva","Potraživanja za nadoknadu troškova iz jamstva" +"1285","kp_rrif1285","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja od kooperanata, zadrugara, ustanove","Potraživanja od kooperanata, zadrugara, ustanove" +"1286","kp_rrif1286","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja od članova društva za pokriće gubitka","Potraživanja od članova društva za pokriće gubitka" +"1287","kp_rrif1287","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja za dana jamstva i činidbe","Potraživanja za dana jamstva i činidbe" +"1288","kp_rrif1288","kp_rrif128","receivable","account_type_potraz_kup","True",,"Potraživanja za poreze iz poslovnih odnosa","Potraživanja za poreze iz poslovnih odnosa" +"1289","kp_rrif1289","kp_rrif128","receivable","account_type_potraz_kup","True",,"Ostala potraživanja","Ostala potraživanja" +"129","kp_rrif129","kp_rrif12","view","account_type_view",,,"Vrijednosno usklađenje potraživanja","Vrijednosno usklađenje potraživanja" +"1290","kp_rrif1290","kp_rrif129","receivable","account_type_potraz_kup","True",,"Vrijednosno usklađenje potraživanja od kupaca","Vrijednosno usklađenje potraživanja od kupaca" +"1291","kp_rrif1291","kp_rrif129","receivable","account_type_potraz_kup","True",,"Vrijednosno usklađenje potraživanja od povezanih društava","Vrijednosno usklađenje potraživanja od povezanih društava" +"1292","kp_rrif1292","kp_rrif129","receivable","account_type_potraz_kup","True",,"Vrijednosno usklađenje od poduzetnika iz sudjelujućih interesa","Vrijednosno usklađenje od poduzetnika iz sudjelujućih interesa" +"1293","kp_rrif1293","kp_rrif129","receivable","account_type_potraz_kup","True",,"Vrijednosno usklađenje kamata","Vrijednosno usklađenje kamata" +"1294","kp_rrif1294","kp_rrif129","receivable","account_type_potraz_kup","True",,"Vrijednosno usklađenje za dane predujmove za usluge","Vrijednosno usklađenje za dane predujmove za usluge" +"1295","kp_rrif1295","kp_rrif129","receivable","account_type_potraz_kup","True",,"Vrijednosno usklađenje ostalih potraživanja (računi 126 do 128)","Vrijednosno usklađenje ostalih potraživanja (računi 126 do 128)" +"13","kp_rrif13","kp_rrif1","view","account_type_view",,,"POTRAŽIVANJA OD ZAPOSLENIH I OSTALA POTRAŽIVANJA (kratkotrajna)","POTRAŽIVANJA OD ZAPOSLENIH I OSTALA POTRAŽIVANJA (kratkotrajna)" +"130","kp_rrif130","kp_rrif13","view","account_type_view",,,"Potraživanja od zaposlenih","Potraživanja od zaposlenih" +"1300","kp_rrif1300","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja od zaposlenih za više isplaćenu plaću","Potraživanja od zaposlenih za više isplaćenu plaću" +"1301","kp_rrif1301","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja za isplaćeni predujam za službeni put","Potraživanja za isplaćeni predujam za službeni put" +"1302","kp_rrif1302","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja za dane novčane svote za nabave u gotovini (za tržišni nakup, za karnete i dr.)","Potraživanja za dane novčane svote za nabave u gotovini (za tržišni nakup, za karnete i dr.)" +"1303","kp_rrif1303","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja za manjkove i učinjene štete (s PDV-om)","Potraživanja za manjkove i učinjene štete (s PDV-om)" +"1304","kp_rrif1304","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja za prehranu, kazne, za korištenje odmarališta i sl.","Potraživanja za prehranu, kazne, za korištenje odmarališta i sl." +"1305","kp_rrif1305","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja od zaposlenih za manje plaćene poreze i doprinose","Potraživanja od zaposlenih za manje plaćene poreze i doprinose" +"1306","kp_rrif1306","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja od zaposlenika za plaćene privatne troškove (npr. po službenoj kred. kartici)","Potraživanja od zaposlenika za plaćene privatne troškove (npr. po službenoj kred. kartici)" +"1307","kp_rrif1307","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja od zaposlenika za primitak u naravi","Potraživanja od zaposlenika za primitak u naravi" +"1309","kp_rrif1309","kp_rrif130","other","account_type_kratk_imovina",,,"Ostala potraživanja od zaposlenih","Ostala potraživanja od zaposlenih" +"131","kp_rrif130","kp_rrif13","view","account_type_view",,,"Potraživanja od vanjskih suradnika","Potraživanja od vanjskih suradnika" +"1310","kp_rrif1310","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja za predujmljene honorare","Potraživanja za predujmljene honorare" +"1311","kp_rrif1311","kp_rrif130","other","account_type_kratk_imovina",,,"Potraživanja za isplaćene svote","Potraživanja za isplaćene svote" +"1319","kp_rrif1319","kp_rrif130","other","account_type_kratk_imovina",,,"Ostala potraživanja od vanjskih suradnika","Ostala potraživanja od vanjskih suradnika" +"133","kp_rrif133","kp_rrif13","view","account_type_view",,,"Potraživanja od članova poduzetnika","Potraživanja od članova poduzetnika" +"1330","kp_rrif1330","kp_rrif133","other","account_type_kratk_imovina",,,"Potraživanja od članova društva za predujmljeni dobitak - dividendu","Potraživanja od članova društva za predujmljeni dobitak - dividendu" +"1331","kp_rrif1331","kp_rrif133","other","account_type_kratk_imovina",,,"Potraživanja od članova društva za privatne troškove","Potraživanja od članova društva za privatne troškove" +"1332","kp_rrif1332","kp_rrif133","other","account_type_kratk_imovina",,,"Potraživanja od članova ustanove","Potraživanja od članova ustanove" +"1333","kp_rrif1333","kp_rrif133","other","account_type_kratk_imovina",,,"Potraživanja od članova zadruge","Potraživanja od članova zadruge" +"134","kp_rrif134","kp_rrif13","view","account_type_view",,,"Potraživanja u sporu i rizična potraživanja (iz skupine 12 i 13)","Potraživanja u sporu i rizična potraživanja (iz skupine 12 i 13)" +"1340","kp_rrif1340","kp_rrif134","other","account_type_kratk_imovina",,,"Potraživanja u sporu i rizična potraživanja (iz skupine 12 i 13)-a1","Potraživanja u sporu i rizična potraživanja (iz skupine 12 i 13)-Analitika 1" +"135","kp_rrif135","kp_rrif13","view","account_type_view",,,"Potraživanja za sredstva u slobodnoj zoni","Potraživanja za sredstva u slobodnoj zoni" +"1350","kp_rrif1350","kp_rrif135","other","account_type_kratk_imovina",,,"Potraživanja za sredstva u slobodnoj zoni-a1","Potraživanja za sredstva u slobodnoj zoni-Analitika 1" +"136","kp_rrif136","kp_rrif13","view","account_type_view",,,"Potraživanja od banaka za prodaju na potrošački kredit","Potraživanja od banaka za prodaju na potrošački kredit" +"1360","kp_rrif1360","kp_rrif136","other","account_type_kratk_imovina",,,"Potraživanja od banaka za prodaju na potrošački kredit-a1","Potraživanja od banaka za prodaju na potrošački kredit-Analitika 1" +"137","kp_rrif137","kp_rrif13","view","account_type_view",,,"Potraživanja od poslovnih jedinica u inozemstvu","Potraživanja od poslovnih jedinica u inozemstvu" +"1370","kp_rrif1370","kp_rrif137","other","account_type_kratk_imovina",,,"Potraživanja za isporučena dobra i usluge","Potraživanja za isporučena dobra i usluge" +"1371","kp_rrif1371","kp_rrif137","other","account_type_kratk_imovina",,,"Potraživanja za doznake novca, za dobitak i dr.","Potraživanja za doznake novca, za dobitak i dr." +"138","kp_rrif138","kp_rrif13","view","account_type_view",,,"Ostala poslovna potraživanja","Ostala poslovna potraživanja" +"1380","kp_rrif1380","kp_rrif138","other","account_type_kratk_imovina",,,"Potraživanja za naknadne popuste","Potraživanja za naknadne popuste" +"1381","kp_rrif1381","kp_rrif138","other","account_type_kratk_imovina",,,"Potraživanja od ortaka","Potraživanja od ortaka" +"1382","kp_rrif1382","kp_rrif138","other","account_type_kratk_imovina",,,"Potraživanja od zastupnika","Potraživanja od zastupnika" +"1389","kp_rrif1389","kp_rrif138","other","account_type_kratk_imovina",,,"Ostala poslovna potraživanja","Ostala poslovna potraživanja" +"139","kp_rrif139","kp_rrif13","view","account_type_view",,,"Vrijednosno usklađenje potraživanja od zaposlenih članova društva i ostalih potraživanja","Vrijednosno usklađenje potraživanja od zaposlenih članova društva i ostalih potraživanja" +"1390","kp_rrif1390","kp_rrif139","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje potraživanja od zaposlenih članova društva i ostalih potraživanja-a1","Vrijednosno usklađenje potraživanja od zaposlenih članova društva i ostalih potraživanja-Analitika 1" +"14","kp_rrif14","kp_rrif1","view","account_type_view",,,"POTRAŽIVANJA OD DRŽAVE ZA POREZE, CARINU I DOPRINOSE","POTRAŽIVANJA OD DRŽAVE ZA POREZE, CARINU I DOPRINOSE" +"140","kp_rrif140","kp_rrif14","view","account_type_view",,,"Porez na dodanu vrijednost","Porez na dodanu vrijednost" +"1400","kp_rrif1400","kp_rrif140","view","account_type_view",,,"Pretporez po ulaznim računima","Pretporez po ulaznim računima" +"14000","kp_rrif14000","kp_rrif1400","other","account_type_pretporez",,,"Pretporez - 10%","Pretporez - 10%" +"14001","kp_rrif14001","kp_rrif1400","other","account_type_pretporez",,,"Pretporez - 22%","Pretporez - 22%" +"14002","kp_rrif14002","kp_rrif1400","other","account_type_pretporez",,,"Pretporez - 23%","Pretporez - 23%" +"14003","kp_rrif14003","kp_rrif1400","other","account_type_pretporez",,,"Pretporez - 25%","Pretporez - 25%" +"1401","kp_rrif1401","kp_rrif140","view","account_type_view",,,"Pretporez iz predujmova","Pretporez iz predujmova" +"14010","kp_rrif14010","kp_rrif1401","other","account_type_pretporez",,,"Pretporez iz predujmova -10%","Pretporez iz predujmova -10%" +"14011","kp_rrif14011","kp_rrif1401","other","account_type_pretporez",,,"Pretporez iz predujmova - 22%","Pretporez iz predujmova - 22%" +"14012","kp_rrif14012","kp_rrif1401","other","account_type_pretporez",,,"Pretporez iz predujmova - 23%","Pretporez iz predujmova - 23%" +"14013","kp_rrif14013","kp_rrif1401","other","account_type_pretporez",,,"Pretporez iz predujmova - 25%","Pretporez iz predujmova - 25%" +"1402","kp_rrif1402","kp_rrif140","view","account_type_view",,,"Plaćeni PDV pri uvozu dobara","Plaćeni PDV pri uvozu dobara" +"14020","kp_rrif14020","kp_rrif1402","other","account_type_pretporez",,,"Plaćeni PDV pri uvozu dobara - 10%","Plaćeni PDV pri uvozu dobara - 10%" +"14021","kp_rrif14021","kp_rrif1402","other","account_type_pretporez",,,"Plaćeni PDV pri uvozu dobara - 22%","Plaćeni PDV pri uvozu dobara - 22%" +"14022","kp_rrif14022","kp_rrif1402","other","account_type_pretporez",,,"Plaćeni PDV pri uvozu dobara - 23%","Plaćeni PDV pri uvozu dobara - 23%" +"14023","kp_rrif14023","kp_rrif1402","other","account_type_pretporez",,,"Plaćeni PDV pri uvozu dobara - 25%","Plaćeni PDV pri uvozu dobara - 25%" +"1403","kp_rrif1403","kp_rrif140","view","account_type_view",,,"Plaćeni PDV na usluge inozemnih poduzetnika","Plaćeni PDV na usluge inozemnih poduzetnika" +"14030","kp_rrif14030","kp_rrif1403","other","account_type_pretporez",,,"Plaćeni PDV na usluge inozemnih poduzetnika - 10%","Plaćeni PDV na usluge inozemnih poduzetnika - 10%" +"14031","kp_rrif14031","kp_rrif1403","other","account_type_pretporez",,,"Plaćeni PDV na usluge inozemnih poduzetnika - 22%","Plaćeni PDV na usluge inozemnih poduzetnika - 22%" +"14032","kp_rrif14032","kp_rrif1403","other","account_type_pretporez",,,"Plaćeni PDV na usluge inozemnih poduzetnika - 23%","Plaćeni PDV na usluge inozemnih poduzetnika - 23%" +"14033","kp_rrif14033","kp_rrif1403","other","account_type_pretporez",,,"Plaćeni PDV na usluge inozemnih poduzetnika - 25%","Plaćeni PDV na usluge inozemnih poduzetnika - 25%" +"1404","kp_rrif1404","kp_rrif140","view","account_type_view",,,"Ispravci pretporeza zbog prenamjene dobara","Ispravci pretporeza zbog prenamjene dobara" +"14040","kp_rrif14040","kp_rrif1404","other","account_type_pretporez",,,"Ispravak pretporeza zbog promjene postotka priznavanja PDV-a","Ispravak pretporeza zbog promjene postotka priznavanja PDV-a" +"1406","kp_rrif1406","kp_rrif140","other","account_type_pretporez",,,"Pretporez stečen po ugovoru o asignaciji ili iz preknjižavanja","Pretporez stečen po ugovoru o asignaciji ili iz preknjižavanja" +"1407","kp_rrif1407","kp_rrif140","other","account_type_pretporez",,,"Potraživanja za razliku većeg pretporeza od obveze u obračunskom razdoblju","Potraživanja za razliku većeg pretporeza od obveze u obračunskom razdoblju" +"1408","kp_rrif1408","kp_rrif140","other","account_type_pretporez",,,"Pretporez koji još nije priznan (uključivo i neplaćeni R-2)","Pretporez koji još nije priznan (uključivo i neplaćeni R-2)" +"1409","kp_rrif1409","kp_rrif140","other","account_type_pretporez",,,"Potraživanja za više plaćeni PDV po konačnom obračunu","Potraživanja za više plaćeni PDV po konačnom obračunu" +"141","kp_rrif141","kp_rrif14","view","account_type_view",,,"Potraživanja za porez i prirez na dohodak iz plaća i drugih primanja","Potraživanja za porez i prirez na dohodak iz plaća i drugih primanja" +"1410","kp_rrif1410","kp_rrif141","other","account_type_kratk_imovina",,,"Potraživanja za porez na dohodak iz plaća","Potraživanja za porez na dohodak iz plaća" +"1411","kp_rrif1411","kp_rrif141","other","account_type_kratk_imovina",,,"Potraživanja za prirez iz plaća","Potraživanja za prirez iz plaća" +"1412","kp_rrif1412","kp_rrif141","other","account_type_kratk_imovina",,,"Potraživanja za porez na dohodak iz autorskih prava, ugovora o djelu, članova nadz. odbora i dr.doh.","Potraživanja za porez na dohodak iz autorskih prava, ugovora o djelu, dohodaka članova nadzornog odbora i drugih dohodaka" +"1413","kp_rrif1413","kp_rrif141","other","account_type_kratk_imovina",,,"Potraživanja za porez i prirez na stipendije i nagrade učenika i studenta","Potraživanja za porez i prirez na stipendije i nagrade učenika i studenta" +"1414","kp_rrif1414","kp_rrif141","other","account_type_kratk_imovina",,,"Potraživanja za poreze iz drugih dohodaka","Potraživanja za poreze iz drugih dohodaka" +"1417","kp_rrif1417","kp_rrif141","other","account_type_kratk_imovina",,,"Potraživanja za više plaćeni porez na dohodak od kapitala","Potraživanja za više plaćeni porez na dohodak od kapitala" +"142","kp_rrif142","kp_rrif14","view","account_type_view",,,"Potraživanja za više plaćene doprinose iz plaća i na plaće","Potraživanja za više plaćene doprinose iz plaća i na plaće" +"1420","kp_rrif1420","kp_rrif142","other","account_type_kratk_imovina",,,"Potraživanja za više plaćene doprinose za MO iz plaće","Potraživanja za više plaćene doprinose za MO iz plaće" +"1421","kp_rrif1421","kp_rrif142","other","account_type_kratk_imovina",,,"Potraživanja od MO za više plaćeni doprinos za beneficirani staž","Potraživanja od MO za više plaćeni doprinos za beneficirani staž" +"1422","kp_rrif1422","kp_rrif142","other","account_type_kratk_imovina",,,"Potraživanja za više plaćeni doprinos za zdravstveno osiguranje na plaće","Potraživanja za više plaćeni doprinos za zdravstveno osiguranje na plaće" +"1423","kp_rrif1423","kp_rrif142","other","account_type_kratk_imovina",,,"Potraživanja za više plaćeni dopr. za zdrav. osigur. za slučaj ozljede na radu i prof. bolesti","Potraživanja za više plaćeni dopr. za zdrav. osigur. za slučaj ozljede na radu i prof. bolesti" +"1424","kp_rrif1424","kp_rrif142","other","account_type_kratk_imovina",,,"Potraživanja za više plaćeni doprinos za zapošljavanje na plaće","Potraživanja za više plaćeni doprinos za zapošljavanje na plaće" +"1429","kp_rrif1429","kp_rrif142","other","account_type_kratk_imovina",,,"Potraživanja za ostale nespomenute doprinose","Potraživanja za ostale nespomenute doprinose" +"143","kp_rrif143","kp_rrif14","view","account_type_view",,,"Potraživanja za porez na dobitak i po odbitku","Potraživanja za porez na dobitak i po odbitku" +"1430","kp_rrif1430","kp_rrif143","other","account_type_kratk_imovina",,,"Potraživanja za plaćene predujmove poreza na dobitak","Potraživanja za plaćene predujmove poreza na dobitak" +"1432","kp_rrif1432","kp_rrif143","other","account_type_kratk_imovina",,,"Potraživanja za više plaćeni porez po odbitku (na inozemne usluge)","Potraživanja za više plaćeni porez po odbitku (na inozemne usluge)" +"1433","kp_rrif1433","kp_rrif143","other","account_type_kratk_imovina",,,"Potraživanja za porez na dobitak stečen po ugovoru o cesiji ili iz preknjižavanja","Potraživanja za porez na dobitak stečen po ugovoru o cesiji ili iz preknjižavanja" +"1434","kp_rrif1434","kp_rrif143","other","account_type_kratk_imovina",,,"Porez na dobitak plaćen u inozemstvu","Porez na dobitak plaćen u inozemstvu" +"144","kp_rrif144","kp_rrif14","view","account_type_view",,,"Potraživanja za posebne poreze (akcize - trošarine) i dr. poreze od države","Potraživanja za posebne poreze (akcize - trošarine) i dr. poreze od države" +"1440","kp_rrif1440","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na kavu","Potraživanja za poseban porez na kavu" +"1441","kp_rrif1441","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na bezalkoholna pića","Potraživanja za poseban porez na bezalkoholna pića" +"1442","kp_rrif1442","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na alkoholna pića","Potraživanja za poseban porez na alkoholna pića" +"1443","kp_rrif1443","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na pivo","Potraživanja za poseban porez na pivo" +"1444","kp_rrif1444","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na duhanske proizvode","Potraživanja za poseban porez na duhanske proizvode" +"1445","kp_rrif1445","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na naftne derivate i naknade za ceste","Potraživanja za poseban porez na naftne derivate i naknade za ceste" +"1446","kp_rrif1446","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na osobne automobile, motocikle, ostala mot. vozila, plovila i zrakop.","Potraživanja za poseban porez na osobne automobile, motocikle, ostala motorna vozila, plovila i zrakoplove" +"1447","kp_rrif1447","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za poseban porez na luksuzne proizvode","Potraživanja za poseban porez na luksuzne proizvode" +"1448","kp_rrif1448","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za porez na promet nekretnina","Potraživanja za porez na promet nekretnina" +"1449","kp_rrif1449","kp_rrif144","other","account_type_kratk_imovina",,,"Potraživanja za 5% poreza na promet motornih vozila i plovila","Potraživanja za 5% poreza na promet motornih vozila i plovila" +"145","kp_rrif145","kp_rrif14","view","account_type_view",,,"Potraživanja za plaćenu članarinu turističkim zajed.","Potraživanja za plaćenu članarinu turističkim zajed." +"1450","kp_rrif1450","kp_rrif145","other","account_type_kratk_imovina",,,"Potraživanja za plaćenu članarinu turističkim zajed.-a1","Potraživanja za plaćenu članarinu turističkim zajed.-Analitika 1" +"146","kp_rrif146","kp_rrif14","view","account_type_view",,,"Potraživanja za članarine komori (HGK ili HOK)","Potraživanja za članarine komori (HGK ili HOK)" +"1460","kp_rrif1460","kp_rrif146","other","account_type_kratk_imovina",,,"Potraživanja za članarine komori (HGK ili HOK)-a1","Potraživanja za članarine komori (HGK ili HOK)-Analitika 1" +"147","kp_rrif147","kp_rrif14","view","account_type_view",,,"Potraživanja za carinu i više plaćene carinske pristojbe","Potraživanja za carinu i više plaćene carinske pristojbe" +"1470","kp_rrif1470","kp_rrif147","other","account_type_kratk_imovina",,,"Potraživanja za carinu i više plaćene carinske pristojbe-a1","Potraživanja za carinu i više plaćene carinske pristojbe-Analitika 1" +"148","kp_rrif148","kp_rrif14","view","account_type_view",,,"Potraživanja za županijski i općinski (gradski) porez","Potraživanja za županijski i općinski (gradski) porez" +"1480","kp_rrif1480","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za više plaćeni porez na motorna vozila i plovne objekte","Potraživanja za više plaćeni porez na motorna vozila i plovne objekte" +"1481","kp_rrif1481","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za porez na kuće za odmor i korištenje javnih površina","Potraživanja za porez na kuće za odmor i korištenje javnih površina" +"1482","kp_rrif1482","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za porez na reklamu","Potraživanja za porez na reklamu" +"1483","kp_rrif1483","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za porez na tvrtku ili naziv","Potraživanja za porez na tvrtku ili naziv" +"1484","kp_rrif1484","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za porez na potrošnju u ugostiteljstvu","Potraživanja za porez na potrošnju u ugostiteljstvu" +"1485","kp_rrif1485","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za plaćeni porez na priređivanje zabavnih i športskih priredbi","Potraživanja za plaćeni porez na priređivanje zabavnih i športskih priredbi" +"1486","kp_rrif1486","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za plaćeni porez na nasljedstva i darove","Potraživanja za plaćeni porez na nasljedstva i darove" +"1487","kp_rrif1487","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za više plaćeni porez na neiskorištene nekretnine","Potraživanja za više plaćeni porez na neiskorištene nekretnine" +"1489","kp_rrif1489","kp_rrif148","other","account_type_kratk_imovina",,,"Potraživanja za ostale poreze županije (grada), općine","Potraživanja za ostale poreze županije (grada), općine" +"149","kp_rrif149","kp_rrif14","view","account_type_view",,,"Potraživanja za ostale nespomenute poreze, doprinose, takse i pristojbe","Potraživanja za ostale nespomenute poreze, doprinose, takse i pristojbe" +"1490","kp_rrif1490","kp_rrif149","other","account_type_kratk_imovina",,,"Potraživanja za više plaćenu nadoknadu za šume","Potraživanja za više plaćenu nadoknadu za šume" +"1491","kp_rrif1491","kp_rrif149","other","account_type_kratk_imovina",,,"Potraživanja za više plaćene kazne i sl.","Potraživanja za više plaćene kazne i sl." +"1492","kp_rrif1492","kp_rrif149","other","account_type_kratk_imovina",,,"Potraživanja za više uplaćene naknade za iskorištavanje mineralnih sirovina","Potraživanja za više uplaćene naknade za iskorištavanje mineralnih sirovina" +"1493","kp_rrif1493","kp_rrif149","other","account_type_kratk_imovina",,,"Potraživanja za više plaćene naknade za koncesije","Potraživanja za više plaćene naknade za koncesije" +"1495","kp_rrif1495","kp_rrif149","other","account_type_kratk_imovina",,,"Potraživanja za spomeničku rentu","Potraživanja za spomeničku rentu" +"1497","kp_rrif1497","kp_rrif149","other","account_type_kratk_imovina",,,"Potraživanje od Fonda za razvoj i sl.","Potraživanje od Fonda za razvoj i sl." +"1499","kp_rrif1499","kp_rrif149","other","account_type_kratk_imovina",,,"Potraživanja za ostala plaćena davanja državi i državnim institucijama","Potraživanja za ostala plaćena davanja državi i državnim institucijama" +"15","kp_rrif15","kp_rrif1","view","account_type_view",,,"OSTALA POTRAŽIVANJA OD DRŽAVNIH I DRUGIH INSTITUCIJA","OSTALA POTRAŽIVANJA OD DRŽAVNIH I DRUGIH INSTITUCIJA" +"150","kp_rrif150","kp_rrif15","view","account_type_view",,,"Potraživanje za nadoknade bolovanja od HZZO","Potraživanje za nadoknade bolovanja od HZZO" +"1500","kp_rrif1500","kp_rrif150","other","account_type_kratk_imovina",,,"Potraživanje za nadoknade bolovanja od HZZO-a1","Potraživanje za nadoknade bolovanja od HZZO-Analitika 1" +"151","kp_rrif151","kp_rrif15","view","account_type_view",,,"Potraživanja od mirovinskog osiguranja","Potraživanja od mirovinskog osiguranja" +"1510","kp_rrif1510","kp_rrif151","other","account_type_kratk_imovina",,,"Potraživanja od mirovinskog osiguranja-a1","Potraživanja od mirovinskog osiguranja-Analitika 1" +"152","kp_rrif152","kp_rrif15","view","account_type_view",,,"Potraživanja od lokalne samouprave","Potraživanja od lokalne samouprave" +"1520","kp_rrif1520","kp_rrif152","other","account_type_kratk_imovina",,,"Potraživanja od lokalne samouprave-a1","Potraživanja od lokalne samouprave-Analitika 1" +"153","kp_rrif153","kp_rrif15","view","account_type_view",,,"Potraživ. za regrese, premije, stimulac. i držav. potpore","Potraživ. za regrese, premije, stimulac. i držav. potpore" +"1530","kp_rrif1530","kp_rrif153","other","account_type_kratk_imovina",,,"Potraživ. za regrese, premije, stimulac. i držav. potpore-a1","Potraživ. za regrese, premije, stimulac. i držav. potpore-Analitika 1" +"154","kp_rrif154","kp_rrif15","view","account_type_view",,,"Potraživanje od Fonda za otkupljenu ambalažu","Potraživanje od Fonda za otkupljenu ambalažu" +"1540","kp_rrif1540","kp_rrif154","other","account_type_kratk_imovina",,,"Potraživanje od Fonda za otkupljenu ambalažu-a1","Potraživanje od Fonda za otkupljenu ambalažu-Analitika 1" +"155","kp_rrif155","kp_rrif15","view","account_type_view",,,"Ostala potraživanja od državnih institucija","Ostala potraživanja od državnih institucija" +"1550","kp_rrif1550","kp_rrif155","other","account_type_kratk_imovina",,,"Ostala potraživanja od državnih institucija-a1","Ostala potraživanja od državnih institucija-Analitika 1" +"159","kp_rrif159","kp_rrif15","view","account_type_view",,,"Vrijednosno usklađenje potraživanja od države i drugih institucija","Vrijednosno usklađenje potraživanja od države i drugih institucija" +"1590","kp_rrif1590","kp_rrif159","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje potraživanja od države i drugih institucija-a1","Vrijednosno usklađenje potraživanja od države i drugih institucija-Analitika 1" +"19","kp_rrif19","kp_rrif1","view","account_type_view",,,"PLAĆENI TROŠKOVI BUDUĆEG RAZDOBLJA I OBRAČUNANI PRIHODI","PLAĆENI TROŠKOVI BUDUĆEG RAZDOBLJA I OBRAČUNANI PRIHODI" +"190","kp_rrif190","kp_rrif19","view","account_type_view",,,"Unaprijed plaćeni troškovi","Unaprijed plaćeni troškovi" +"1900","kp_rrif1900","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni troškovi održavanja, opreme, postrojenja i građevina","Unaprijed plaćeni troškovi održavanja, opreme, postrojenja i građevina" +"1901","kp_rrif1901","kp_rrif190","view","account_type_view",,,"Unaprijed plaćena zakupnina iz operativnog - poslovnog najma","Unaprijed plaćena zakupnina iz operativnog - poslovnog najma" +"19010","kp_rrif19010","kp_rrif1901","other","account_type_aktiv_razgran",,,"Unaprijed plaćena zakupnina","Unaprijed plaćena zakupnina" +"19011","kp_rrif19011","kp_rrif1901","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni a nepriznati PDV na zakupninu (npr. 30% od leasinga osob. aut.)","Unaprijed plaćeni a nepriznati PDV na zakupninu (npr. 30% od leasinga osob. aut.)" +"1902","kp_rrif1902","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni troškovi reklame, propagande i sajmova","Unaprijed plaćeni troškovi reklame, propagande i sajmova" +"1903","kp_rrif1903","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni troškovi energije za sljedeće razdoblje","Unaprijed plaćeni troškovi energije za sljedeće razdoblje" +"1904","kp_rrif1904","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni troškovi osig. imovine i osoba na opasnim poslovima ili putnika u prometu i sl.","Unaprijed plaćeni troškovi osiguranja imovine i osoba koje rade na opasnim poslovima ili putnika u prometu i sl." +"1905","kp_rrif1905","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćene kamate na bankovna jamstava i sl.","Unaprijed plaćene kamate na bankovna jamstava i sl." +"1906","kp_rrif1906","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni troškovi reprezentacije","Unaprijed plaćeni troškovi reprezentacije" +"1907","kp_rrif1907","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćene pretplate na službena glasila i stručne časopise","Unaprijed plaćene pretplate na službena glasila i stručne časopise" +"1908","kp_rrif1908","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed isplaćene plaće za buduće razdoblje","Unaprijed isplaćene plaće za buduće razdoblje" +"1909","kp_rrif1909","kp_rrif190","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni ostali troškovi posl.(prijevoza, bank. usluge, zdr. zaštita,autorski,rad po ug. i sl)","Unaprijed plaćeni ostali troškovi poslovanja (troškovi prijevoza, bankovne usluge, zdravstvena zaštita, autorski honorari, rad po ugovoru i sl.)" +"191","kp_rrif191","kp_rrif19","view","account_type_view",,,"Obračunani prihodi (budućeg razdoblja)","Obračunani prihodi (budućeg razdoblja)" +"1910","kp_rrif1910","kp_rrif191","other","account_type_aktiv_razgran",,,"Obračunani prihodi (budućeg razdoblja)-a1","Obračunani prihodi (budućeg razdoblja)-Analitika 1" +"192","kp_rrif192","kp_rrif19","view","account_type_view",,,"Unaprijed plaćeni ovisni troškovi nabave (koji nisu na 651)","Unaprijed plaćeni ovisni troškovi nabave (koji nisu na 651)" +"1920","kp_rrif1920","kp_rrif192","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni ovisni troškovi nabave (koji nisu na 651)-a1","Unaprijed plaćeni ovisni troškovi nabave (koji nisu na 651)-Analitika 1" +"193","kp_rrif193","kp_rrif19","view","account_type_view",,,"Troškovi kamata iz budućeg razdoblja","Troškovi kamata iz budućeg razdoblja" +"1930","kp_rrif1930","kp_rrif193","other","account_type_aktiv_razgran",,,"Troškovi kamata iz budućeg razdoblja-a1","Troškovi kamata iz budućeg razdoblja-Analitika 1" +"194","kp_rrif194","kp_rrif19","view","account_type_view",,,"Unaprijed plaćeni troškovi koncesija (za razdoblje do 12 mj.)","Unaprijed plaćeni troškovi koncesija (za razdoblje do 12 mj.)" +"1940","kp_rrif1940","kp_rrif194","other","account_type_aktiv_razgran",,,"Unaprijed plaćeni troškovi koncesija (za razdoblje do 12 mj.)-a1","Unaprijed plaćeni troškovi koncesija (za razdoblje do 12 mj.)-Analitika 1" +"195","kp_rrif195","kp_rrif19","view","account_type_view",,,"Unaprijed plaćene franšize, trgovačko znakovlje, prava i sl. (do 12 mj.)","Unaprijed plaćene franšize, trgovačko znakovlje, prava i sl. (do 12 mj.)" +"1950","kp_rrif1950","kp_rrif195","other","account_type_aktiv_razgran",,,"Unaprijed plaćene franšize, trgovačko znakovlje, prava i sl. (do 12 mj.)-a1","Unaprijed plaćene franšize, trgovačko znakovlje, prava i sl. (do 12 mj.)-Analitika 1" +"196","kp_rrif196","kp_rrif19","view","account_type_view",,,"Unaprijed plaćene licencije i patenti (do 12 mj.)","Unaprijed plaćene licencije i patenti (do 12 mj.)" +"1960","kp_rrif1960","kp_rrif196","other","account_type_aktiv_razgran",,,"Unaprijed plaćene licencije i patenti (do 12 mj.)-a1","Unaprijed plaćene licencije i patenti (do 12 mj.)-Analitika 1" +"199","kp_rrif199","kp_rrif19","view","account_type_view",,,"Ostali plaćeni troškovi budućeg razdoblja","Ostali plaćeni troškovi budućeg razdoblja" +"1999","kp_rrif1999","kp_rrif199","other","account_type_aktiv_razgran",,,"Ostala aktivna vremenska razgraničenja","Ostala aktivna vremenska razgraničenja" +"2","kp_rrif2","kp_rrif","view","account_type_view",,,"KRATKOROČNE I DUGOROČNE OBVEZE, DUGOROČNA REZERVIRANJA, ODGOĐENA PLAĆANJA I PRIHODI BUDUĆEG RAZDOBLJA","KRATKOROČNE I DUGOROČNE OBVEZE, DUGOROČNA REZERVIRANJA, ODGOĐENA PLAĆANJA I PRIHODI BUDUĆEG RAZDOBLJA" +"20","kp_rrif20","kp_rrif2","view","account_type_view",,,"KRATKOROČNE OBVEZE PREMA POVEZANIM PODUZETNICIMA I S OSNOVE UDJELA U REZULTATU (do jedne godine)","KRATKOROČNE OBVEZE PREMA POVEZANIM PODUZETNICIMA I S OSNOVE UDJELA U REZULTATU (do jedne godine)" +"200","kp_rrif200","kp_rrif20","view","account_type_view",,,"Obveze prema povezanim poduzetnicima","Obveze prema povezanim poduzetnicima" +"2000","kp_rrif2000","kp_rrif200","other","account_type_kratk_obveze",,,"Obveze prema povezanim društvima za zalihe (poluproizvoda, robe i sl.)","Obveze prema povezanim društvima za zalihe (poluproizvoda, robe i sl.)" +"2001","kp_rrif2001","kp_rrif200","other","account_type_kratk_obveze",,,"Obveze za raspoređeni dobitak iz poslovanja prema povezanim društvima","Obveze za raspoređeni dobitak iz poslovanja prema povezanim društvima" +"2002","kp_rrif2002","kp_rrif200","other","account_type_kratk_obveze",,,"Obveze za zajmove prema povezanim društvima","Obveze za zajmove prema povezanim društvima" +"2003","kp_rrif2003","kp_rrif200","other","account_type_kratk_obveze",,,"Obveze prema podružnicama","Obveze prema podružnicama" +"2004","kp_rrif2004","kp_rrif200","other","account_type_kratk_obveze",,,"Obveze prema osnovanim ustanovama, zadrugama i sl.","Obveze prema osnovanim ustanovama, zadrugama i sl." +"2005","kp_rrif2005","kp_rrif200","other","account_type_kratk_obveze",,,"Obveze za predujmove od povezanih društvima","Obveze za predujmove od povezanih društvima" +"2008","kp_rrif2008","kp_rrif200","other","account_type_kratk_obveze",,,"Obveze za kamate prema povezanim društvima","Obveze za kamate prema povezanim društvima" +"2009","kp_rrif2009","kp_rrif200","other","account_type_kratk_obveze",,,"Ostale kratkoročne obveze prema povezanim društvima","Ostale kratkoročne obveze prema povezanim društvima" +"201","kp_rrif201","kp_rrif20","view","account_type_view",,,"Obveze s osnove udjela u rezultatu","Obveze s osnove udjela u rezultatu" +"2010","kp_rrif2010","kp_rrif201","other","account_type_kratk_obveze",,,"Obveze s osnove udjela u dobitku (analitika prema članovima)","Obveze s osnove udjela u dobitku (analitika prema članovima)" +"2011","kp_rrif2011","kp_rrif201","other","account_type_kratk_obveze",,,"Obveze za dividende dioničarima","Obveze za dividende dioničarima" +"2012","kp_rrif2012","kp_rrif201","other","account_type_kratk_obveze",,,"Obveze za sudjelujuće dobitke u rezultatu iz zajedničkog pothvata","Obveze za sudjelujuće dobitke u rezultatu iz zajedničkog pothvata" +"2013","kp_rrif2013","kp_rrif201","other","account_type_kratk_obveze",,,"Obveze prema zadrugarima iz rezultata","Obveze prema zadrugarima iz rezultata" +"2014","kp_rrif2014","kp_rrif201","other","account_type_kratk_obveze",,,"Obveze iz dobitka prema tajnim članovima","Obveze iz dobitka prema tajnim članovima" +"2015","kp_rrif2015","kp_rrif201","other","account_type_kratk_obveze",,,"Ostale obveze s osnove udjela u dobitku","Ostale obveze s osnove udjela u dobitku" +"21","kp_rrif21","kp_rrif2","view","account_type_view",,,"KRATKOROČNE FINANCIJSKE OBVEZE","KRATKOROČNE FINANCIJSKE OBVEZE" +"210","kp_rrif210","kp_rrif21","view","account_type_view",,,"Obveze za izdane čekove","Obveze za izdane čekove" +"2100","kp_rrif2100","kp_rrif210","other","account_type_kratk_obveze",,,"Obveze za izdane čekove-a1","Obveze za izdane čekove-Analitika 1" +"211","kp_rrif211","kp_rrif21","view","account_type_view",,,"Obveze za izdane mjenice","Obveze za izdane mjenice" +"2110","kp_rrif2110","kp_rrif211","other","account_type_kratk_obveze",,,"Obveze za dane mjenice","Obveze za dane mjenice" +"2111","kp_rrif2111","kp_rrif211","other","account_type_kratk_obveze",,,"Obveze za dane mjenične akcepte","Obveze za dane mjenične akcepte" +"212","kp_rrif212","kp_rrif21","view","account_type_view",,,"Obveze po izdanim vrijednosnim papirima","Obveze po izdanim vrijednosnim papirima" +"2120","kp_rrif2120","kp_rrif212","other","account_type_kratk_obveze",,,"Obveze po izdanim komercijalnim zapisima","Obveze po izdanim komercijalnim zapisima" +"2121","kp_rrif2121","kp_rrif212","other","account_type_kratk_obveze",,,"Obveze po izdanim obveznicama","Obveze po izdanim obveznicama" +"2122","kp_rrif2122","kp_rrif212","other","account_type_kratk_obveze",,,"Obveze po izdanim zadužnicama","Obveze po izdanim zadužnicama" +"2123","kp_rrif2123","kp_rrif212","other","account_type_kratk_obveze",,,"Obveze po ostalim kratkoročnim vrijednosnim papirima","Obveze po ostalim kratkoročnim vrijednosnim papirima" +"2128","kp_rrif2128","kp_rrif212","other","account_type_kratk_obveze",,,"Obveze za kamate sadržane u vrijed. papirima","Obveze za kamate sadržane u vrijed. papirima" +"213","kp_rrif213","kp_rrif21","view","account_type_view",,,"Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)","Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)" +"2130","kp_rrif2130","kp_rrif213","other","account_type_kratk_obveze",,,"Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)-a1","Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)-Analitika 1" +"214","kp_rrif214","kp_rrif21","view","account_type_view",,,"Obveze s osnove zajmova, depozita i sl.","Obveze s osnove zajmova, depozita i sl." +"2140","kp_rrif2140","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za financijske zajmove od društava","Obveze za financijske zajmove od društava" +"2141","kp_rrif2141","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za zajmove od ustanova, zadruga i sl.","Obveze za zajmove od ustanova, zadruga i sl." +"2142","kp_rrif2142","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za kratkoročne zajmove iz inozemstva","Obveze za kratkoročne zajmove iz inozemstva" +"2143","kp_rrif2143","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za dio dospjelih dugoročnih zajmova koji se trebaju platiti u roku 12 mj.","Obveze za dio dospjelih dugoročnih zajmova koji se trebaju platiti u roku 12 mj." +"2144","kp_rrif2144","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za zajmove prema građanima","Obveze za zajmove prema građanima" +"2145","kp_rrif2145","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za zajmove članova društva","Obveze za zajmove članova društva" +"2146","kp_rrif2146","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze po kontokorentnom računu","Obveze po kontokorentnom računu" +"2147","kp_rrif2147","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za depozite, jamčevine i kapare","Obveze za depozite, jamčevine i kapare" +"2148","kp_rrif2148","kp_rrif214","other","account_type_kratk_obveze",,,"Obveze za kaucije","Obveze za kaucije" +"2149","kp_rrif2149","kp_rrif214","other","account_type_kratk_obveze",,,"Ostali kratkoročni zajmovi i sl.","Ostali kratkoročni zajmovi i sl." +"215","kp_rrif215","kp_rrif21","view","account_type_view",,,"Obveze prema bankama i drugim financijskim institucijama","Obveze prema bankama i drugim financijskim institucijama" +"2150","kp_rrif2150","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze za kratkoročne kredite u banci (analitika po bankama a unutar banke po ugovorima o kreditu)","Obveze za kratkoročne kredite u banci (analitika po bankama a unutar banke po ugovorima o kreditu)" +"2151","kp_rrif2151","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze za kratkoročne kredite u osiguravajućim društvima (analitika po društvima i kreditima)","Obveze za kratkoročne kredite u osiguravajućim društvima (analitika po društvima i kreditima)" +"2152","kp_rrif2152","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze prema ostalim kreditnim institucijama (štedionicama, mirovinskom fondu i dr.)","Obveze prema ostalim kreditnim institucijama (štedionicama, mirovinskom fondu i dr.)" +"2153","kp_rrif2153","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze prema kreditnim institucijama i bankama u inozemstvu","Obveze prema kreditnim institucijama i bankama u inozemstvu" +"2154","kp_rrif2154","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze prema bankama po naplaćenim garancijama","Obveze prema bankama po naplaćenim garancijama" +"2155","kp_rrif2155","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze po isplaćenom akreditivu","Obveze po isplaćenom akreditivu" +"2156","kp_rrif2156","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze za prekoračenje na računu (okvirni kredit)","Obveze za prekoračenje na računu (okvirni kredit)" +"2157","kp_rrif2157","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze za kamate prema bankama","Obveze za kamate prema bankama" +"2158","kp_rrif2158","kp_rrif215","other","account_type_kratk_obveze",,,"Obveze za kamate prema financ. institucijama","Obveze za kamate prema financ. institucijama" +"2159","kp_rrif2159","kp_rrif215","other","account_type_kratk_obveze",,,"Ostale obveze prema kreditnim institucijama","Ostale obveze prema kreditnim institucijama" +"216","kp_rrif216","kp_rrif21","view","account_type_view",,,"Obveze prema izdavateljima kreditnih kartica (analitika prema kartičarima)","Obveze prema izdavateljima kreditnih kartica (analitika prema kartičarima)" +"2160","kp_rrif2160","kp_rrif216","other","account_type_kratk_obveze",,,"Obveze prema izdavateljima kreditnih kartica (analitika prema kartičarima)-a1","Obveze prema izdavateljima kreditnih kartica (analitika prema kartičarima)-Analitika 1" +"217","kp_rrif217","kp_rrif21","view","account_type_view",,,"Obveze iz eskontnih poslova","Obveze iz eskontnih poslova" +"2170","kp_rrif2170","kp_rrif217","other","account_type_kratk_obveze",,,"Obveze s temelja eskontiranih mjenica","Obveze s temelja eskontiranih mjenica" +"2171","kp_rrif2171","kp_rrif217","other","account_type_kratk_obveze",,,"Ostale obveze iz eskonta vrijednosnih papira","Ostale obveze iz eskonta vrijednosnih papira" +"2172","kp_rrif2172","kp_rrif217","other","account_type_kratk_obveze",,,"Obveze iz otkupa tražbina","Obveze iz otkupa tražbina" +"218","kp_rrif218","kp_rrif21","view","account_type_view",,,"Obveze s osnove dugotrajne imovine namijenjene prodaji (analitika prema izvorima)","Obveze s osnove dugotrajne imovine namijenjene prodaji (analitika prema izvorima)" +"2180","kp_rrif2180","kp_rrif218","other","account_type_kratk_obveze",,,"Obveze s osnove dugotrajne imovine namijenjene prodaji (analitika prema izvorima)-a1","Obveze s osnove dugotrajne imovine namijenjene prodaji (analitika prema izvorima)-Analitika 1" +"22","kp_rrif22","kp_rrif2","view","account_type_view",,,"OBVEZE PREMA DOBAVLJAČIMA, ZA PREDUJMOVE I OSTALE OBVEZE","OBVEZE PREMA DOBAVLJAČIMA, ZA PREDUJMOVE I OSTALE OBVEZE" +"220","kp_rrif220","kp_rrif22","view","account_type_view",,,"Obveze prema dobavljačima u zemlji (analitika prema dobavljačima)","Obveze prema dobavljačima u zemlji (analitika prema dobavljačima)" +"2200","kp_rrif2200","kp_rrif220","payable","account_type_obveze_dob","True",,"Dobavljači dobara","Dobavljači dobara" +"2201","kp_rrif2201","kp_rrif220","payable","account_type_obveze_dob","True",,"Dobavljači usluga","Dobavljači usluga" +"2202","kp_rrif2202","kp_rrif220","payable","account_type_obveze_dob","True",,"Dobavljači opreme, postrojenja i nekretnina","Dobavljači opreme, postrojenja i nekretnina" +"2203","kp_rrif2203","kp_rrif220","payable","account_type_obveze_dob","True",,"Dobavljači nematerijalne imovine","Dobavljači nematerijalne imovine" +"2204","kp_rrif2204","kp_rrif220","payable","account_type_obveze_dob","True",,"Dobavljači iz operativnog lizinga (za najmove)","Dobavljači iz operativnog lizinga (za najmove)" +"2205","kp_rrif2205","kp_rrif220","payable","account_type_obveze_dob","True",,"Dobavljači iz ortačkog ugovora","Dobavljači iz ortačkog ugovora" +"2206","kp_rrif2206","kp_rrif220","payable","account_type_obveze_dob","True",,"Dobavljači zadruge, ustanove i dr.","Dobavljači zadruge, ustanove i dr." +"221","kp_rrif221","kp_rrif22","view","account_type_view",,,"Dobavljači iz inozemstva (analitika prema dobavljačima)","Dobavljači iz inozemstva (analitika prema dobavljačima)" +"2210","kp_rrif2210","kp_rrif221","payable","account_type_obveze_dob","True",,"Dobavljači dobara iz inozemstva","Dobavljači dobara iz inozemstva" +"2211","kp_rrif2211","kp_rrif221","payable","account_type_obveze_dob","True",,"Dobavljači usluga iz inozemstva","Dobavljači usluga iz inozemstva" +"2212","kp_rrif2212","kp_rrif221","payable","account_type_obveze_dob","True",,"Dobavljači prava intelektualnog vlasništva, istraživanja tržišta i dr.","Dobavljači prava intelektualnog vlasništva, istraživanja tržišta i dr." +"2213","kp_rrif2213","kp_rrif221","payable","account_type_obveze_dob","True",,"Dobavljači prava na franšizu, uporabu imena i sl.","Dobavljači prava na franšizu, uporabu imena i sl." +"222","kp_rrif222","kp_rrif22","view","account_type_view",,,"Dobavljači fizičke osobe","Dobavljači fizičke osobe" +"2220","kp_rrif2220","kp_rrif222","payable","account_type_obveze_dob","True",,"Dobavljači, obrtnici i slobodna zanimanja","Dobavljači, obrtnici i slobodna zanimanja" +"2221","kp_rrif2221","kp_rrif222","payable","account_type_obveze_dob","True",,"Dobavljači fizičke osobe (za isporučene osnovne proizvode poljodjelstva, ribarstva i šumarstva)","Dobavljači fizičke osobe (za isporučene osnovne proizvode poljodjelstva, ribarstva i šumarstva)" +"2222","kp_rrif2222","kp_rrif222","payable","account_type_obveze_dob","True",,"Dobavljači za isporučenu osobnu imovinu","Dobavljači za isporučenu osobnu imovinu" +"2223","kp_rrif2223","kp_rrif222","payable","account_type_obveze_dob","True",,"Obveze s osnove autorskih prava, inovacija, patenata i sl.","Obveze s osnove autorskih prava, inovacija, patenata i sl." +"2224","kp_rrif2224","kp_rrif222","payable","account_type_obveze_dob","True",,"Obveze s osnove ugovora o djelu i akviziterstva","Obveze s osnove ugovora o djelu i akviziterstva" +"2225","kp_rrif2225","kp_rrif222","payable","account_type_obveze_dob","True",,"Obveze prema studentima i učenicima za rad preko studentskog servisa","Obveze prema studentima i učenicima za rad preko studentskog servisa" +"2226","kp_rrif2226","kp_rrif222","payable","account_type_obveze_dob","True",,"Dobavljači kooperanti - fizičke osobe","Dobavljači kooperanti - fizičke osobe" +"2229","kp_rrif2229","kp_rrif222","payable","account_type_obveze_dob","True",,"Ostali dobavljači - fizičke osobe","Ostali dobavljači - fizičke osobe" +"223","kp_rrif223","kp_rrif22","view","account_type_view",,,"Dobavljači komunalnih usluga","Dobavljači komunalnih usluga" +"2230","kp_rrif2230","kp_rrif223","payable","account_type_obveze_dob","True",,"Obveze za energetske isporuke","Obveze za energetske isporuke" +"2231","kp_rrif2231","kp_rrif223","payable","account_type_obveze_dob","True",,"Obveze za usluge odvodnje i odvoza smeća","Obveze za usluge odvodnje i odvoza smeća" +"2232","kp_rrif2232","kp_rrif223","payable","account_type_obveze_dob","True",,"Obveze za ostale komunalne usluge","Obveze za ostale komunalne usluge" +"224","kp_rrif224","kp_rrif22","view","account_type_view",,,"Obveze za nefakturirane a preuzete isporuke robe i usluge","Obveze za nefakturirane a preuzete isporuke robe i usluge" +"2240","kp_rrif2240","kp_rrif224","payable","account_type_obveze_dob","True",,"Obveze za nefakturirane a preuzete isporuke robe i usluge-a1","Obveze za nefakturirane a preuzete isporuke robe i usluge-Analitika 1" +"225","kp_rrif225","kp_rrif22","view","account_type_view",,,"Obveze za predujmove","Obveze za predujmove" +"2250","kp_rrif2250","kp_rrif225","payable","account_type_obveze_dob","True",,"Primljeni predujmovi za koje su izdani računi s PDV-om","Primljeni predujmovi za koje su izdani računi s PDV-om" +"2251","kp_rrif2251","kp_rrif225","payable","account_type_obveze_dob","True",,"Primljeni predujmovi koji nisu pod PDV-om","Primljeni predujmovi koji nisu pod PDV-om" +"2252","kp_rrif2252","kp_rrif225","payable","account_type_obveze_dob","True",,"Primljeni predujmovi iz inozemstva","Primljeni predujmovi iz inozemstva" +"2253","kp_rrif2253","kp_rrif225","payable","account_type_obveze_dob","True",,"Obveze za predujmove građana","Obveze za predujmove građana" +"23","kp_rrif23","kp_rrif2","view","account_type_view",,,"OBVEZE PREMA ZAPOSLENIMA I OSTALE OBVEZE","OBVEZE PREMA ZAPOSLENIMA I OSTALE OBVEZE" +"230","kp_rrif230","kp_rrif23","view","account_type_view",,,"Obveze prema zaposlenicima","Obveze prema zaposlenicima" +"2300","kp_rrif2300","kp_rrif230","other","account_type_kratk_obveze",,,"Obveze za neto-plaće","Obveze za neto-plaće" +"2301","kp_rrif2301","kp_rrif230","other","account_type_kratk_obveze",,,"Nadoknade plaća koje se refundiraju (od državnih institucija, od HZZO, od lokalne samoupr.)","Nadoknade plaća koje se refundiraju (od državnih institucija, od HZZO, od lokalne samoupr.)" +"2302","kp_rrif2302","kp_rrif230","other","account_type_kratk_obveze",,,"Obveze za nadoknade troškova (dnevnice, terenski dod.,troškovi sl. puta, km,dolazak na posao i dr.)","Obveze za nadoknade troškova (dnevnice, terenski dodatak, nadoknade troškova službenog puta, uključivo i kilometraža, nadoknade za dolazak na posao i dr.)" +"2303","kp_rrif2303","kp_rrif230","other","account_type_kratk_obveze",,,"Obveze za darove i potpore (božićnica, dar djeci, potpora zbog bolesti, regres za g. o. i sl.)","Obveze za darove i potpore (božićnica, dar djeci, potpora zbog bolesti, regres za g. o. i sl.)" +"2304","kp_rrif2304","kp_rrif230","other","account_type_kratk_obveze",,,"Obveze prema zaposlenima za primitke koji se smatraju dohotkom (prehrana, davanja u naravi i sl.)","Obveze prema zaposlenima za primitke koji se smatraju dohotkom (prehrana, davanja u naravi i sl.)" +"2305","kp_rrif2305","kp_rrif230","other","account_type_kratk_obveze",,,"Obveze prema zaposlenima zbog otpremnine, jubilarne, odvojeni život, pomoć obitelji umrlog posloprimca","Obveze prema zaposlenima s temelja otpremnine, jubilarne nagrade, nadoknade za odvojeni život, pomoći obitelji umrlog posloprimca i sl." +"2306","kp_rrif2306","kp_rrif230","view","account_type_view",,,"Obveze za obustave iz neto-plaća i nadoknada plaća","Obveze za obustave iz neto-plaća i nadoknada plaća" +"23060","kp_rrif23060","kp_rrif2306","other","account_type_kratk_obveze",,,"Obveze za obustave iz neto-plaće za isplate kredita i pozajmica","Obveze za obustave iz neto-plaće za isplate kredita i pozajmica" +"23061","kp_rrif23061","kp_rrif2306","other","account_type_kratk_obveze",,,"Obveze za obustave iz neto-plaća i nadoknada za sudske zabrane, kazne i sl.","Obveze za obustave iz neto-plaća i nadoknada za sudske zabrane, kazne i sl." +"23062","kp_rrif23062","kp_rrif2306","other","account_type_kratk_obveze",,,"Obveze iz ovrha na neto-plaći","Obveze iz ovrha na neto-plaći" +"23063","kp_rrif23063","kp_rrif2306","other","account_type_kratk_obveze",,,"Obveze za obustave iz neto-plaća i nadoknada plaća za članarine, i dr.","Obveze za obustave iz neto-plaća i nadoknada plaća za članarine, i dr." +"2307","kp_rrif2307","kp_rrif230","other","account_type_kratk_obveze",,,"Obveze prema zaposlenima za zatezne kamate i sl.","Obveze prema zaposlenima za zatezne kamate i sl." +"2308","kp_rrif2308","kp_rrif230","other","account_type_kratk_obveze",,,"Obveza prema zaposlenima za naknadu šteta: zbog ozljede na radu, neiskorištenog godišnjeg odmora i sl.","Obveza prema zaposlenima za naknadu šteta: zbog ozljede na radu, neiskorištenog godišnjeg odmora i sl." +"2309","kp_rrif2309","kp_rrif230","other","account_type_kratk_obveze",,,"Obveze za obračunanu bruto-plaću iz prošle poslovne godine (koje nisu isplaćene i XIII. plaća)","Obveze za obračunanu bruto-plaću iz prošle poslovne godine (koje nisu isplaćene i XIII. plaća)" +"231","kp_rrif231","kp_rrif23","view","account_type_view",,,"Kratkoročne obveze iz nabava i potpora","Kratkoročne obveze iz nabava i potpora" +"2310","kp_rrif2310","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze s temelja tekuće nabave u gotovini","Obveze s temelja tekuće nabave u gotovini" +"2311","kp_rrif2311","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze prema vanjskim članovima uprave, nadzornog odbora, prokuristima, stečajnim upraviteljima i sl.","Obveze prema vanjskim članovima uprave, nadzornog odbora, prokuristima, stečajnim upraviteljima i sl." +"2312","kp_rrif2312","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze za preuzeta plaćanja temeljem ugovora o cesiji, asignaciji i preuzimanjem duga","Obveze za preuzeta plaćanja temeljem ugovora o cesiji, asignaciji i preuzimanjem duga" +"2313","kp_rrif2313","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze za ugovorene penale, kazne i sl.","Obveze za ugovorene penale, kazne i sl." +"2314","kp_rrif2314","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze za darovanja (do 2% od ukupnog prihoda)","Obveze za darovanja (do 2% od ukupnog prihoda)" +"2315","kp_rrif2315","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze za nadoknadu troškova (refundacije)","Obveze za nadoknadu troškova (refundacije)" +"2316","kp_rrif2316","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze za naknadno odobrene bonifikacije, casasconte i druge popuste","Obveze za naknadno odobrene bonifikacije, casasconte i druge popuste" +"2317","kp_rrif2317","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze za stipendije","Obveze za stipendije" +"2318","kp_rrif2318","kp_rrif231","other","account_type_kratk_obveze",,,"Obveze za primljene potpore (nisu za prihod)","Obveze za primljene potpore (nisu za prihod)" +"2319","kp_rrif2319","kp_rrif231","other","account_type_kratk_obveze",,,"Ostale kratkoročne obveze (npr. prema vanjskim suradnicima)","Ostale kratkoročne obveze(npr. prema vanjskim suradnicima)" +"232","kp_rrif232","kp_rrif23","view","account_type_view",,,"Obveze za kamate (analitika prema dužnicima i vrstama obveza prema nepovezanim društvima)","Obveze za kamate (analitika prema dužnicima i vrstama obveza prema nepovezanim društvima)" +"2320","kp_rrif2320","kp_rrif232","other","account_type_kratk_obveze",,,"Obveze za ugovorenu kamatu","Obveze za ugovorenu kamatu" +"2321","kp_rrif2321","kp_rrif232","other","account_type_kratk_obveze",,,"Obveze za zateznu kamatu","Obveze za zateznu kamatu" +"2322","kp_rrif2322","kp_rrif232","other","account_type_kratk_obveze",,,"Obveze za kamate na zajmove prema poduzetnicima","Obveze za kamate na zajmove prema poduzetnicima" +"2323","kp_rrif2323","kp_rrif232","other","account_type_kratk_obveze",,,"Obveze za kamate po sudskim sporovima","Obveze za kamate po sudskim sporovima" +"233","kp_rrif233","kp_rrif23","view","account_type_view",,,"Obveze po obračunu prodanih dobara primljenih u komisiju ili konsignaciju","Obveze po obračunu prodanih dobara primljenih u komisiju ili konsignaciju" +"2330","kp_rrif2330","kp_rrif233","other","account_type_kratk_obveze",,,"Obveze po obračunu za prodana dobra","Obveze po obračunu za prodana dobra" +"2331","kp_rrif2331","kp_rrif233","other","account_type_kratk_obveze",,,"Obveze za isplatu komitentu","Obveze za isplatu komitentu" +"2332","kp_rrif2332","kp_rrif233","other","account_type_kratk_obveze",,,"Obveze prema nalogodavatelju iz zastupničke prodaje","Obveze prema nalogodavatelju iz zastupničke prodaje" +"234","kp_rrif234","kp_rrif23","view","account_type_view",,,"Obveze prema osiguravajućim društvima","Obveze prema osiguravajućim društvima" +"2340","kp_rrif2340","kp_rrif234","other","account_type_kratk_obveze",,,"Obveze iz osiguranja imovine i osoba","Obveze iz osiguranja imovine i osoba" +"2341","kp_rrif2341","kp_rrif234","other","account_type_kratk_obveze",,,"Obveze za životna osiguranja","Obveze za životna osiguranja" +"2342","kp_rrif2342","kp_rrif234","other","account_type_kratk_obveze",,,"Obveze za III. stupu mirovinskog osiguranja","Obveze za III. stupu mirovinskog osiguranja" +"2343","kp_rrif2343","kp_rrif234","other","account_type_kratk_obveze",,,"Obveze za premije zdravstvenog osiguranja","Obveze za premije zdravstvenog osiguranja" +"2344","kp_rrif2344","kp_rrif234","other","account_type_kratk_obveze",,,"Obveze za dopunsko zdravstveno osiguranje","Obveze za dopunsko zdravstveno osiguranje" +"235","kp_rrif235","kp_rrif23","view","account_type_view",,,"Obveze iz poslovanja u slobodnoj zoni","Obveze iz poslovanja u slobodnoj zoni" +"2350","kp_rrif2350","kp_rrif235","other","account_type_kratk_obveze",,,"Obveze iz poslovanja u slobodnoj zoni-a1","Obveze iz poslovanja u slobodnoj zoni-Analitika 1" +"236","kp_rrif236","kp_rrif23","view","account_type_view",,,"Obveze iz vanjskotrgovačkog poslovanja","Obveze iz vanjskotrgovačkog poslovanja" +"2360","kp_rrif2360","kp_rrif236","other","account_type_kratk_obveze",,,"Obveze prema uvozniku (ili naručitelju)","Obveze prema uvozniku (ili naručitelju)" +"2361","kp_rrif2361","kp_rrif236","other","account_type_kratk_obveze",,,"Obveze po poslovima izvoza za tuđi račun","Obveze po poslovima izvoza za tuđi račun" +"237","kp_rrif237","kp_rrif23","view","account_type_view",,,"Obveze prema poslovnim jedinicama u inozemstvu","Obveze prema poslovnim jedinicama u inozemstvu" +"2370","kp_rrif2370","kp_rrif237","other","account_type_kratk_obveze",,,"Obveze prema P.J. u inozemstvu","Obveze prema P.J. u inozemstvu" +"2371","kp_rrif2371","kp_rrif237","other","account_type_kratk_obveze",,,"Obveze prema podružnicama u inozemstvu","Obveze prema podružnicama u inozemstvu" +"238","kp_rrif238","kp_rrif23","view","account_type_view",,,"Obveze iz stjecanja udjela","Obveze iz stjecanja udjela" +"2380","kp_rrif2380","kp_rrif238","other","account_type_kratk_obveze",,,"Obveze za uplaćeni a neupisani temeljni kapital","Obveze za uplaćeni a neupisani temeljni kapital" +"2381","kp_rrif2381","kp_rrif238","other","account_type_kratk_obveze",,,"Obveze za kupnju poslovnog udjela","Obveze za kupnju poslovnog udjela" +"239","kp_rrif239","kp_rrif23","view","account_type_view",,,"Ostale kratkoročne obveze","Ostale kratkoročne obveze" +"2390","kp_rrif2390","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze prema odštetnim zahtjevima","Obveze prema odštetnim zahtjevima" +"2391","kp_rrif2391","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze prema brokerima za kupljene vrijednosne papire","Obveze prema brokerima za kupljene vrijednosne papire" +"2392","kp_rrif2392","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze za doprinos za komunalnu infrastrukturu","Obveze za doprinos za komunalnu infrastrukturu" +"2393","kp_rrif2393","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze za PDV iz poslovnih odnosa","Obveze za PDV iz poslovnih odnosa" +"2394","kp_rrif2394","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze iz primjene valutne klauzule","Obveze iz primjene valutne klauzule" +"2395","kp_rrif2395","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze s osnove sudskih presuda","Obveze s osnove sudskih presuda" +"2396","kp_rrif2396","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze iz ortaštva","Obveze iz ortaštva" +"2397","kp_rrif2397","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze za tuđa sredstva","Obveze za tuđa sredstva" +"2398","kp_rrif2398","kp_rrif239","other","account_type_kratk_obveze",,,"Obveze prema inozemnom poduzet. za PDV","Obveze prema inozemnom poduzet. za PDV" +"2399","kp_rrif2399","kp_rrif239","other","account_type_kratk_obveze",,,"Ostale nespomenute obveze","Ostale nespomenute obveze" +"24","kp_rrif24","kp_rrif2","view","account_type_view",,,"KRATKOROČNE OBVEZE ZA POREZE, DOPRINOSE I SLIČNA DAVANJA","KRATKOROČNE OBVEZE ZA POREZE, DOPRINOSE I SLIČNA DAVANJA" +"240","kp_rrif240","kp_rrif24","view","account_type_view",,,"Obveze za porez na dodanu vrijednost","Obveze za porez na dodanu vrijednost" +"2400","kp_rrif2400","kp_rrif240","view","account_type_view",,,"Obveza za PDV po isporukama","Obveza za PDV po isporukama" +"24000","kp_rrif24000","kp_rrif2400","other","account_type_pdv",,,"Obveza za PDV - 10%","Obveza za PDV - 10%" +"24001","kp_rrif24001","kp_rrif2400","other","account_type_pdv",,,"Obveza za PDV - 22%","Obveza za PDV - 22%" +"24002","kp_rrif24002","kp_rrif2400","other","account_type_pdv",,,"Obveza za PDV - 23%","Obveza za PDV - 23%" +"24003","kp_rrif24003","kp_rrif2400","other","account_type_pdv",,,"Obveza za PDV - 25%","Obveza za PDV - 25%" +"2401","kp_rrif2401","kp_rrif240","view","account_type_view",,,"Obveza za PDV-a prema računu za predujam","Obveza za PDV-a prema računu za predujam" +"24010","kp_rrif24010","kp_rrif2401","other","account_type_pdv",,,"Obveza za PDV za predujam - 10%","Obveza za PDV za predujam - 10%" +"24011","kp_rrif24011","kp_rrif2401","other","account_type_pdv",,,"Obveza za PDV za predujam - 22%","Obveza za PDV za predujam - 22%" +"24012","kp_rrif24012","kp_rrif2401","other","account_type_pdv",,,"Obveza za PDV za predujam - 23%","Obveza za PDV za predujam - 23%" +"24013","kp_rrif24013","kp_rrif2401","other","account_type_pdv",,,"Obveza za PDV za predujam - 25%","Obveza za PDV za predujam - 25%" +"2402","kp_rrif2402","kp_rrif240","other","account_type_pdv",,,"Obveze za PDV s osnove vlastite potrošnje - 23% (za proizv. za reprez. te za o.auto. nab. do 2010.)","Obveze za PDV s osnove vlastite potrošnje - 23% (za uporabu proizv. za reprezentaciju te za osobne automobile nabavljene do 1.I. 2010.)" +"2403","kp_rrif2403","kp_rrif240","view","account_type_view",,,"Obveza za PDV po nezaračunanim isporukama","Obveza za PDV po nezaračunanim isporukama" +"24030","kp_rrif24030","kp_rrif2403","other","account_type_pdv",,,"Obveza za PDV po nezaračunanim isporukama - 10%","Obveza za PDV po nezaračunanim isporukama - 10%" +"24031","kp_rrif24031","kp_rrif2403","other","account_type_pdv",,,"Obveza za PDV po nezaračunanim isporukama - 22%","Obveza za PDV po nezaračunanim isporukama - 22%" +"24032","kp_rrif24032","kp_rrif2403","other","account_type_pdv",,,"Obveza za PDV po nezaračunanim isporukama - 23%","Obveza za PDV po nezaračunanim isporukama - 23%" +"24033","kp_rrif24033","kp_rrif2403","other","account_type_pdv",,,"Obveza za PDV po nezaračunanim isporukama - 25%","Obveza za PDV po nezaračunanim isporukama - 25%" +"2404","kp_rrif2404","kp_rrif240","view","account_type_view",,,"Obveze za ispravljeni PDV zbog prenamjene dobara","Obveze za ispravljeni PDV zbog prenamjene dobara" +"24041","kp_rrif24041","kp_rrif2404","other","account_type_pdv",,,"Obveza za PDV zbog promjene postotka priznavanja PDV-a","Obveza za PDV zbog promjene postotka priznavanja PDV-a" +"2405","kp_rrif2405","kp_rrif240","other","account_type_pdv",,,"Obračunana a nedospjela obveza za PDV","Obračunana a nedospjela obveza za PDV" +"2406","kp_rrif2406","kp_rrif240","view","account_type_pdv",,,"Obveza za PDV koje se ne izvještavaju u obrascu PDV","Obveza za PDV koje se ne izvještavaju u obrascu PDV" +"24060","kp_rrif24060","kp_rrif2406","other","account_type_pdv",,,"Obveza za PDV po Rješenju PU","Obveza za PDV po Rješenju PU" +"24061","kp_rrif24061","kp_rrif2406","other","account_type_pdv",,,"Obveza za PDV na inozemne usluge","Obveza za PDV inozemne usluge" +"2407","kp_rrif2407","kp_rrif240","other","account_type_pdv",,,"Obveza za razliku poreza i pretporeza u obračunskom razdoblju","Obveza za razliku poreza i pretporeza u obračunskom razdoblju" +"2408","kp_rrif2408","kp_rrif240","other","account_type_pdv",,,"Povrat PDV-a iz putničkog prometa","Povrat PDV-a iz putničkog prometa" +"2409","kp_rrif2409","kp_rrif240","other","account_type_pdv",,,"Obveza za PDV po konačnom obračunu","Obveza za PDV po konačnom obračunu" +"241","kp_rrif241","kp_rrif24","view","account_type_view",,,"Obveze za porez i prirez na dohodak","Obveze za porez i prirez na dohodak" +"2410","kp_rrif2410","kp_rrif241","other","account_type_kratk_obveze",,,"Obveze za porez na dohodak iz plaća i primitaka izjednačenih s plaćom","Obveze za porez na dohodak iz plaća i primitaka izjednačenih s plaćom" +"2411","kp_rrif2411","kp_rrif241","other","account_type_kratk_obveze",,,"Obveze za prirez iz plaća i primitaka izjednačenih s plaćama","Obveze za prirez iz plaća i primitaka izjednačenih s plaćama" +"2412","kp_rrif2412","kp_rrif241","other","account_type_kratk_obveze",,,"Obveze za porez i prirez na drugi dohodak (autorski honorari, ug. o djelu, doh. članova nadz.i dr.)","Obveze za porez i prirez na drugi dohodak (iz autorskih honorara, ugovora o djelu, dohodaka članova nadzornog odbora i dr.)" +"2413","kp_rrif2413","kp_rrif241","other","account_type_kratk_obveze",,,"Obveze za porez i prirez iz stipendija i nagrada učenika na praksi","Obveze za porez i prirez iz stipendija i nagrada učenika na praksi" +"2414","kp_rrif2414","kp_rrif241","other","account_type_kratk_obveze",,,"Obveze za porez i prirez za ostale dohotke","Obveze za porez i prirez za ostale dohotke" +"242","kp_rrif242","kp_rrif24","view","account_type_view",,,"Obveze za doprinose za osiguranja","Obveze za doprinose za osiguranja" +"2420","kp_rrif2420","kp_rrif242","other","account_type_kratk_obveze",,,"Doprinos za MO iz plaća (I. stup)","Doprinos za MO iz plaća (I. stup)" +"2421","kp_rrif2421","kp_rrif242","other","account_type_kratk_obveze",,,"Doprinos za MO iz plaća (II. stup - analitika prema fondovima)","Doprinos za MO iz plaća (II. stup - analitika prema fondovima)" +"2422","kp_rrif2422","kp_rrif242","other","account_type_kratk_obveze",,,"Doprinos za MO za beneficirani staž (I. i II. stup)","Doprinos za MO za beneficirani staž (I. i II. stup)" +"2423","kp_rrif2423","kp_rrif242","other","account_type_kratk_obveze",,,"Doprinos za zdravstveno osiguranje na plaće","Doprinos za zdravstveno osiguranje na plaće" +"2424","kp_rrif2424","kp_rrif242","other","account_type_kratk_obveze",,,"Poseban doprinos za zdravstveno osiguranje na plaće za ozljede na radu i prof. bolesti","Poseban doprinos za zdravstveno osiguranje na plaće za ozljede na radu i prof. bolesti" +"2426","kp_rrif2426","kp_rrif242","other","account_type_kratk_obveze",,,"Doprinos za zapošljavanje na plaću","Doprinos za zapošljavanje na plaću" +"2427","kp_rrif2427","kp_rrif242","view","account_type_view",,,"Doprinosi za osiguranja na druge dohotke","Doprinosi za osiguranja na druge dohotke" +"24270","kp_rrif24270","kp_rrif2427","other","account_type_kratk_obveze",,,"Doprinos za MO I. stup","Doprinos za MO I. stup" +"24271","kp_rrif24271","kp_rrif2427","other","account_type_kratk_obveze",,,"Doprinos za MO II. stup","Doprinos za MO II. stup" +"24272","kp_rrif24272","kp_rrif2427","other","account_type_kratk_obveze",,,"Doprinos za zdravstveno osiguranje na honorar","Doprinos za zdravstveno osiguranje na honorar" +"2428","kp_rrif2428","kp_rrif242","other","account_type_kratk_obveze",,,"Doprinos HZZO-u na službena putovanja u inozemstvo","Doprinos HZZO-u na službena putovanja u inozemstvo" +"2429","kp_rrif2429","kp_rrif242","other","account_type_kratk_obveze",,,"Obveze za ostale nespomenute doprinose koji se plaćaju na dohotke","Obveze za ostale nespomenute doprinose koji se plaćaju na dohotke" +"243","kp_rrif243","kp_rrif24","view","account_type_view",,,"Obveze za porez na dobitak, dohodak od kapitala i porez po odbitku","Obveze za porez na dobitak, dohodak od kapitala i porez po odbitku" +"2430","kp_rrif2430","kp_rrif243","other","account_type_kratk_obveze",,,"Obveze za porez na dobitak","Obveze za porez na dobitak" +"2431","kp_rrif2431","kp_rrif243","view","account_type_view",,,"Obveze za porez na dohotke od kapitala","Obveze za porez na dohotke od kapitala" +"24310","kp_rrif24310","kp_rrif2431","other","account_type_kratk_obveze",,,"Porez na dohodak od kapitala na izuzimanja ili privatni život članova društva i dioničara (40%+prirez)","Porez na dohodak od kapitala na izuzimanja ili privatni život članova društva i dioničara (40% + prirez)" +"24311","kp_rrif24311","kp_rrif2431","other","account_type_kratk_obveze",,,"Porez na dohodak od kapitala na isplate dobitka i dividendi (iz 2001. do 2004. = 12% + prirez)","Porez na dohodak od kapitala na isplate dobitka i dividendi (iz 2001. do 2004. = 12% + prirez)" +"24312","kp_rrif24312","kp_rrif2431","other","account_type_kratk_obveze",,,"Porez na dohodak od kapitala na kamate (na zajmove fizičkih osoba = 40% + prirez)","Porez na dohodak od kapitala na kamate (na zajmove fizičkih osoba = 40% + prirez)" +"24313","kp_rrif24313","kp_rrif2431","other","account_type_kratk_obveze",,,"Porez na dohodak od kapitala s osnove opcijskih dionica (25% + prirez)","Porez na dohodak od kapitala s osnove opcijskih dionica (25% + prirez)" +"2432","kp_rrif2432","kp_rrif243","other","account_type_kratk_obveze",,,"Obveze za porez po odbitku (-15% -čl.31.Zakona o porezu na dobit -na ino usluge intelek. vlas. i dr.)","Obveze za porez po odbitku (na inozemne usluge intelektualnog vlasništva, za istraživ. tržišta, poslovno i porezno savjetovanje, revizorske usluge i na kamate inozemnim nebankarskim pravnim osobama - 15% - čl. 31. Zakona o porezu na dobit)" +"2436","kp_rrif2436","kp_rrif243","other","account_type_kratk_obveze",,,"Obveza za PD po rješenju poreznog nadzora","Obveza za PD po rješenju poreznog nadzora" +"244","kp_rrif244","kp_rrif24","view","account_type_view",,,"Obveze za posebne poreze (trošarine - akcize) i dr. poreze državi","Obveze za posebne poreze (trošarine - akcize) i dr. poreze državi" +"2440","kp_rrif2440","kp_rrif244","other","account_type_kratk_obveze",,,"Obveza za posebni porez pri uvozu automobila, plovila i zrakoplova","Obveza za posebni porez pri uvozu automobila, plovila i zrakoplova" +"2441","kp_rrif2441","kp_rrif244","other","account_type_kratk_obveze",,,"Obveza za posebni porez na bezalkoholna pića","Obveza za posebni porez na bezalkoholna pića" +"2442","kp_rrif2442","kp_rrif244","other","account_type_kratk_obveze",,,"Obveza za posebni porez na pivo","Obveza za posebni porez na pivo" +"2443","kp_rrif2443","kp_rrif244","other","account_type_kratk_obveze",,,"Obveza za posebni porez na alkohol","Obveza za posebni porez na alkohol" +"2444","kp_rrif2444","kp_rrif244","view","account_type_view",,,"Obveza za posebni porez na naftne derivate","Obveza za posebni porez na naftne derivate" +"24440","kp_rrif24440","kp_rrif2444","other","account_type_kratk_obveze",,,"Obveze za naknade za Hrvatske autoceste","Obveze za naknade za Hrvatske autoceste" +"24441","kp_rrif24441","kp_rrif2444","other","account_type_kratk_obveze",,,"Obveze za naknade za Hrvatske ceste","Obveze za naknade za Hrvatske ceste" +"2445","kp_rrif2445","kp_rrif244","other","account_type_kratk_obveze",,,"Obveze za posebni porez na duhanske proizvode","Obveze za posebni porez na duhanske proizvode" +"2446","kp_rrif2446","kp_rrif244","other","account_type_kratk_obveze",,,"Obveza za posebni porez na kavu","Obveza za posebni porez na kavu" +"2447","kp_rrif2447","kp_rrif244","other","account_type_kratk_obveze",,,"Obveze za posebni porez na luksuzne proizvode","Obveze za posebni porez na luksuzne proizvode" +"2448","kp_rrif2448","kp_rrif244","other","account_type_kratk_obveze",,,"Obveza za 5% poreza na promet nekretnina","Obveza za 5% poreza na promet nekretnina" +"2449","kp_rrif2449","kp_rrif244","other","account_type_kratk_obveze",,,"Obveze za 5% poreza na promet mot. vozila i plovila","Obveze za 5% poreza na promet mot. vozila i plovila" +"245","kp_rrif245","kp_rrif24","view","account_type_view",,,"Obveze za članarinu turist. zajednicama","Obveze za članarinu turist. zajednicama" +"2450","kp_rrif2450","kp_rrif245","other","account_type_kratk_obveze",,,"Obveze za članarinu turist. zajednicama-a1","Obveze za članarinu turist. zajednicama-Analitika 1" +"246","kp_rrif246","kp_rrif24","view","account_type_view",,,"Obveze za članarinu komori","Obveze za članarinu komori" +"2460","kp_rrif2460","kp_rrif246","other","account_type_kratk_obveze",,,"Obveza za HGK za paušalnu naknadu","Obveza za HGK za paušalnu naknadu" +"2461","kp_rrif2461","kp_rrif246","other","account_type_kratk_obveze",,,"Obveza za HGK za javnu funkciju","Obveza za HGK za javnu funkciju" +"2462","kp_rrif2462","kp_rrif246","other","account_type_kratk_obveze",,,"Obveza za članarinu Obrtničkoj komori","Obveza za članarinu Obrtničkoj komori" +"2463","kp_rrif2463","kp_rrif246","other","account_type_kratk_obveze",,,"Obveze za paušal HOK-u","Obveze za paušal HOK-u" +"2464","kp_rrif2464","kp_rrif246","other","account_type_kratk_obveze",,,"Obveze za članarinu granskoj ili strukovnoj komori","Obveze za članarinu granskoj ili strukovnoj komori" +"247","kp_rrif247","kp_rrif24","view","account_type_view",,,"Obveze za carinu i carinske pristojbe","Obveze za carinu i carinske pristojbe" +"2470","kp_rrif2470","kp_rrif247","other","account_type_kratk_obveze",,,"Obveze za carinu","Obveze za carinu" +"2471","kp_rrif2471","kp_rrif247","other","account_type_kratk_obveze",,,"Obveze za carinu prema mjernoj jedinici (prelevmani)","Obveze za carinu prema mjernoj jedinici (prelevmani)" +"2472","kp_rrif2472","kp_rrif247","other","account_type_kratk_obveze",,,"Obveze za carinske pristojbe i takse","Obveze za carinske pristojbe i takse" +"2473","kp_rrif2473","kp_rrif247","other","account_type_kratk_obveze",,,"Ostale obveze prema carini (za PDV i dr.)","Ostale obveze prema carini (za PDV i dr.)" +"248","kp_rrif248","kp_rrif24","view","account_type_view",,,"Obveze za županijske (gradske) i općinske poreze","Obveze za županijske (gradske) i općinske poreze" +"2480","kp_rrif2480","kp_rrif248","other","account_type_kratk_obveze",,,"Obveze za imovinski porez na motorna vozila i plovne objekte","Obveze za imovinski porez na motorna vozila i plovne objekte" +"2481","kp_rrif2481","kp_rrif248","other","account_type_kratk_obveze",,,"Obveze za imovinski porez na kuće za odmor i porez na korištenje javnih površina","Obveze za imovinski porez na kuće za odmor i porez na korištenje javnih površina" +"2482","kp_rrif2482","kp_rrif248","other","account_type_kratk_obveze",,,"Obveze za porez na istaknutu reklamu","Obveze za porez na istaknutu reklamu" +"2483","kp_rrif2483","kp_rrif248","other","account_type_kratk_obveze",,,"Obveze za porez na tvrtku ili naziv","Obveze za porez na tvrtku ili naziv" +"2484","kp_rrif2484","kp_rrif248","other","account_type_kratk_obveze",,,"Obveza za porez na potrošnju alkoholnih i bezalkoholnih pića i piva u ugostiteljstvu","Obveza za porez na potrošnju alkoholnih i bezalkoholnih pića i piva u ugostiteljstvu" +"2485","kp_rrif2485","kp_rrif248","other","account_type_kratk_obveze",,,"Obveze za porez na zabavne i športske priredbe","Obveze za porez na zabavne i športske priredbe" +"2486","kp_rrif2486","kp_rrif248","other","account_type_kratk_obveze",,,"Obveze za porez na nasljedstva i darove","Obveze za porez na nasljedstva i darove" +"2489","kp_rrif2489","kp_rrif248","other","account_type_kratk_obveze",,,"Obveze za ostale poreze županiji, gradu ili općini","Obveze za ostale poreze županiji, gradu ili općini" +"249","kp_rrif249","kp_rrif24","view","account_type_view",,,"Ostale obveze javnih davanja","Ostale obveze javnih davanja" +"2490","kp_rrif2490","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze za nadoknadu za šume","Obveze za nadoknadu za šume" +"2491","kp_rrif2491","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze prema lokalnoj samoupravi za financiranje komunalne izgradnje (Zakon o komunalnom gospodarstvu)","Obveze prema lokalnoj samoupravi za financiranje komunalne izgradnje (prema Zakonu o komunalnom gospodarstvu)" +"2492","kp_rrif2492","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze za zakonske kazne","Obveze za zakonske kazne" +"2493","kp_rrif2493","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze za boravišnu pristojbu","Obveze za boravišnu pristojbu" +"2494","kp_rrif2494","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze za koncesije","Obveze za koncesije" +"2495","kp_rrif2495","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze za spomeničku rentu","Obveze za spomeničku rentu" +"2496","kp_rrif2496","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze za naknade za iskorištav. mineral. sirovina","Obveze za naknade za iskorištav. mineral. sirovina" +"2497","kp_rrif2497","kp_rrif249","other","account_type_kratk_obveze",,,"Obveze za naknade za ambalažu","Obveze za naknade za ambalažu" +"2499","kp_rrif2499","kp_rrif249","other","account_type_kratk_obveze",,,"Ostale obveze za ostala javna davanja","Ostale obveze za ostala javna davanja" +"25","kp_rrif25","kp_rrif2","view","account_type_view",,,"DUGOROČNE OBVEZE (za duže od jedne godine)","DUGOROČNE OBVEZE (za duže od jedne godine)" +"250","kp_rrif250","kp_rrif25","view","account_type_view",,,"Obveze prema povezanim poduzetnicima","Obveze prema povezanim poduzetnicima" +"2500","kp_rrif2500","kp_rrif250","other","account_type_dug_obv",,,"Obveze za primljena dobra i usluge","Obveze za primljena dobra i usluge" +"2501","kp_rrif2501","kp_rrif250","other","account_type_dug_obv",,,"Obveze za korištenje zajmova","Obveze za korištenje zajmova" +"251","kp_rrif251","kp_rrif25","view","account_type_view",,,"Obveze za zajmove, depozite i sl.","Obveze za zajmove, depozite i sl." +"2510","kp_rrif2510","kp_rrif251","other","account_type_dug_obv",,,"Obveze za dugoročne financijske zajmove","Obveze za dugoročne financijske zajmove" +"2511","kp_rrif2511","kp_rrif251","other","account_type_dug_obv",,,"Obveze za dugoročne hipotekarne zajmove","Obveze za dugoročne hipotekarne zajmove" +"2512","kp_rrif2512","kp_rrif251","other","account_type_dug_obv",,,"Obveze za dugoročne zajmove prema građanima","Obveze za dugoročne zajmove prema građanima" +"2513","kp_rrif2513","kp_rrif251","other","account_type_dug_obv",,,"Obveze za dugoročne zajmove članovima društva","Obveze za dugoročne zajmove članovima društva" +"2514","kp_rrif2514","kp_rrif251","other","account_type_dug_obv",,,"Obveze za dugoročne zajmove iz inozemstva","Obveze za dugoročne zajmove iz inozemstva" +"2515","kp_rrif2515","kp_rrif251","other","account_type_dug_obv",,,"Obveze za depozite","Obveze za depozite" +"2516","kp_rrif2516","kp_rrif251","other","account_type_dug_obv",,,"Obveze za kapare","Obveze za kapare" +"2517","kp_rrif2517","kp_rrif251","other","account_type_dug_obv",,,"Obveze s osnove jamstva (realiziranih)","Obveze s osnove jamstva (realiziranih)" +"2519","kp_rrif2519","kp_rrif251","other","account_type_dug_obv",,,"Ostale obveze za dugoročne zajmove","Ostale obveze za dugoročne zajmove" +"252","kp_rrif252","kp_rrif25","view","account_type_view",,,"Obveze prema bankama i dr. financijskim institucijama","Obveze prema bankama i dr. financijskim institucijama" +"2520","kp_rrif2520","kp_rrif252","other","account_type_dug_obv",,,"Dugoročni financijski krediti banaka (analitika po bankama, pa po sklopljenim ugovorima o kreditu)","Dugoročni financijski krediti banaka (analitika po bankama a unutar toga po sklopljenim ugovorima o kreditu)" +"2521","kp_rrif2521","kp_rrif252","other","account_type_dug_obv",,,"Dugoročni krediti od osiguravajućih društava (analitika po društvima, pa po sklopljenim ugovorima)","Dugoročni krediti od osiguravajućih društava (analitika po društvima a unutar toga po sklopljenim ugovorima)" +"2522","kp_rrif2522","kp_rrif252","other","account_type_dug_obv",,,"Dugoročni krediti od ostalih domaćih kreditnih institucija (fonda, i dr.)","Dugoročni krediti od ostalih domaćih kreditnih institucija (fonda, i dr.)" +"2523","kp_rrif2523","kp_rrif252","other","account_type_dug_obv",,,"Dugoročni krediti od inozemnih banaka i drugih inozemnih kreditnih institucija","Dugoročni krediti od inozemnih banaka i drugih inozemnih kreditnih institucija" +"2529","kp_rrif2529","kp_rrif252","other","account_type_dug_obv",,,"Dugoročne obveze za kamate","Dugoročne obveze za kamate" +"253","kp_rrif253","kp_rrif25","view","account_type_view",,,"Dugoročne obveze iz financijskog lizinga","Dugoročne obveze iz financijskog lizinga" +"2530","kp_rrif2530","kp_rrif253","other","account_type_dug_obv",,,"Financijski najam vozila, brodova i dr.","Financijski najam vozila, brodova i dr." +"2531","kp_rrif2531","kp_rrif253","other","account_type_dug_obv",,,"Povratni financijski najam (npr. nekretnina brodova, tramvaja, vlakova i dr.)","Povratni financijski najam (npr. nekretnina brodova, tramvaja, vlakova i dr.)" +"254","kp_rrif254","kp_rrif25","view","account_type_view",,,"Obveze za predujmove","Obveze za predujmove" +"2540","kp_rrif2540","kp_rrif254","other","account_type_dug_obv",,,"Obveze za dugoročne predujmove (avanse) za izgradnju objekata i postrojenja (bez PDV-a)","Obveze za dugoročne predujmove (avanse) za izgradnju objekata i postrojenja (bez PDV-a)" +"2541","kp_rrif2541","kp_rrif254","other","account_type_dug_obv",,,"Obveze za dugoročne predujmove za isporuke zaliha","Obveze za dugoročne predujmove za isporuke zaliha" +"2542","kp_rrif2542","kp_rrif254","other","account_type_dug_obv",,,"Ostale dugoročne obveze za predujmove","Ostale dugoročne obveze za predujmove" +"255","kp_rrif255","kp_rrif25","view","account_type_view",,,"Obveze prema dobavljačima (neisplaćene dugoročne obveze prema vjerovnicima s osnove poslovanja)","Obveze prema dobavljačima (neisplaćene dugoročne obveze prema vjerovnicima s osnove poslovanja)" +"2550","kp_rrif2550","kp_rrif255","other","account_type_dug_obv",,,"Obveze prema dobavljačima s rokom plaćanja duljim od godine dana (npr. kod izgradnje)","Obveze prema dobavljačima s rokom plaćanja duljim od godine dana (npr. kod izgradnje)" +"2551","kp_rrif2551","kp_rrif255","other","account_type_dug_obv",,,"Obveze prema dobavljačima iz inozemstva (dugoročne)","Obveze prema dobavljačima iz inozemstva (dugoročne)" +"2552","kp_rrif2552","kp_rrif255","other","account_type_dug_obv",,,"Obveze prema vjerovnicima iz ostalih poslovnih aktivnosti","Obveze prema vjerovnicima iz ostalih poslovnih aktivnosti" +"2553","kp_rrif2553","kp_rrif255","other","account_type_dug_obv",,,"Obveze prema dobavljačima za zadržani dio iz jamstva","Obveze prema dobavljačima za zadržani dio iz jamstva" +"256","kp_rrif256","kp_rrif25","view","account_type_view",,,"Obveze po vrijednosnim papirima (dugoročnim)","Obveze po vrijednosnim papirima (dugoročnim)" +"2560","kp_rrif2560","kp_rrif256","other","account_type_dug_obv",,,"Obveze za izdane dugoročne obveznice","Obveze za izdane dugoročne obveznice" +"2561","kp_rrif2561","kp_rrif256","other","account_type_dug_obv",,,"Obveze za dugoročne komercijalne vrijednosne papire","Obveze za dugoročne komercijalne vrijednosne papire" +"2562","kp_rrif2562","kp_rrif256","other","account_type_dug_obv",,,"Obveze za dugoročne mjenice","Obveze za dugoročne mjenice" +"2563","kp_rrif2563","kp_rrif256","other","account_type_dug_obv",,,"Obveze po ostalim dugoroč. vrijednos. papirima","Obveze po ostalim dugoroč. vrijednos. papirima" +"2568","kp_rrif2568","kp_rrif256","other","account_type_dug_obv",,,"Obveze za kamate iz obveznica","Obveze za kamate iz obveznica" +"2569","kp_rrif2569","kp_rrif256","other","account_type_dug_obv",,,"Diskont na vrijednosne papire (kao razlika do nominalne vrijednosti)","Diskont na vrijednosne papire (kao razlika do nominalne vrijednosti)" +"257","kp_rrif257","kp_rrif25","view","account_type_view",,,"Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)","Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)" +"2570","kp_rrif2570","kp_rrif257","other","account_type_dug_obv",,,"Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)-a1","Obveze prema poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)-Analitika 1" +"258","kp_rrif258","kp_rrif25","view","account_type_view",,,"Obveze prema Državi (realizirana jamstva, krediti)","Obveze prema Državi (realizirana jamstva, krediti)" +"2580","kp_rrif2580","kp_rrif258","other","account_type_dug_obv",,,"Obveze prema Državi (realizirana jamstva, krediti)-a1","Obveze prema Državi (realizirana jamstva, krediti)-Analitika 1" +"259","kp_rrif259","kp_rrif25","view","account_type_view",,,"Ostale dugoročne obveze","Ostale dugoročne obveze" +"2590","kp_rrif2590","kp_rrif259","other","account_type_dug_obv",,,"Obveze prema zakladama, komorama i sl.","Obveze prema zakladama, komorama i sl." +"2591","kp_rrif2591","kp_rrif259","other","account_type_dug_obv",,,"Dugoročne obveze za porez","Dugoročne obveze za porez" +"2592","kp_rrif2592","kp_rrif259","other","account_type_dug_obv",,,"Dugoročne obveze za socijalno osiguranje","Dugoročne obveze za socijalno osiguranje" +"2593","kp_rrif2593","kp_rrif259","other","account_type_dug_obv",,,"Obveze za dugoročne jamčevine","Obveze za dugoročne jamčevine" +"2599","kp_rrif2599","kp_rrif259","other","account_type_dug_obv",,,"Ostale dugoročne obveze","Ostale dugoročne obveze" +"26","kp_rrif26","kp_rrif2","view","account_type_view",,,"ODGOĐENI POREZI","ODGOĐENI POREZI" +"260","kp_rrif260","kp_rrif26","view","account_type_view",,,"Odgođena porezna obveza","Odgođena porezna obveza" +"2600","kp_rrif2600","kp_rrif260","other","account_type_dug_obv",,,"Odgođena privremena razlika porezne obveze (analitika po godinama - HSFI t. 12.22. i MRS 12 t. 5.)","Odgođena privremena razlika porezne obveze (analitika po godinama - HSFI t. 12.22. i MRS 12 t. 5.)" +"28","kp_rrif28","kp_rrif2","view","account_type_view",,,"DUGOROČNA REZERVIRANJA ZA RIZIKE I TROŠKOVE","DUGOROČNA REZERVIRANJA ZA RIZIKE I TROŠKOVE" +"280","kp_rrif280","kp_rrif28","view","account_type_view",,,"Rezerviranja za otpremnine i mirovine","Rezerviranja za otpremnine i mirovine" +"2800","kp_rrif2800","kp_rrif280","other","account_type_rezervacije",,,"Rezerviranja za otpremnine","Rezerviranja za otpremnine" +"2801","kp_rrif2801","kp_rrif280","other","account_type_rezervacije",,,"Rezerviranja za mirovine","Rezerviranja za mirovine" +"281","kp_rrif281","kp_rrif28","view","account_type_view",,,"Rezerviranja za porezne obveze","Rezerviranja za porezne obveze" +"2810","kp_rrif2810","kp_rrif281","other","account_type_rezervacije",,,"Dugor. rezerv. za odg. plać. poreza i dopr.","Dugor. rezerv. za odg. plać. poreza i dopr." +"282","kp_rrif282","kp_rrif28","view","account_type_view",,,"Druga rezerviranja","Druga rezerviranja" +"2820","kp_rrif2820","kp_rrif282","other","account_type_rezervacije",,,"Dugoročna rezerviranja za troškove izdanih jamstava za prodana dobra","Dugoročna rezerviranja za troškove izdanih jamstava za prodana dobra" +"2821","kp_rrif2821","kp_rrif282","other","account_type_rezervacije",,,"Dugoročna rezerviranja za gubitke po započetim sudskim sporovima","Dugoročna rezerviranja za gubitke po započetim sudskim sporovima" +"2822","kp_rrif2822","kp_rrif282","other","account_type_rezervacije",,,"Dugor. rezerv. za obnovu prirodnog bogatstva-dug. rezer. za neiskor. g.o.(MRS19.t14.,HSFI13) -vidi 298","Dugor. rezerv. za obnovu prirodnog bogatstva - Dug. rezer. za neiskorištene g. o. (MRS 19. t. 14. i HSFI 13) - vidi račun 298" +"2824","kp_rrif2824","kp_rrif282","other","account_type_rezervacije",,,"Dugoročno rezerviranje za restrukturiranje (MRS 37 i HSFI t. 16.22.)","Dugoročno rezerviranje za restrukturiranje (MRS 37 i HSFI t. 16.22.)" +"2825","kp_rrif2825","kp_rrif282","other","account_type_rezervacije",,,"Rezerviranje za ugovore s poteškoćama (MRS 37, t. 66. i HSFI t. 16.21.)","Rezerviranje za ugovore s poteškoćama (MRS 37, t. 66. i HSFI t. 16.21.)" +"2829","kp_rrif2829","kp_rrif282","other","account_type_rezervacije",,,"Ostala dugoročna rezerviranja za rizike i dr.","Ostala dugoročna rezerviranja za rizike i dr." +"29","kp_rrif29","kp_rrif2","view","account_type_view",,,"ODGOĐENO PLAĆANJE TROŠKOVA I PRIHOD BUDUĆEG RAZDOBLJA","ODGOĐENO PLAĆANJE TROŠKOVA I PRIHOD BUDUĆEG RAZDOBLJA" +"290","kp_rrif290","kp_rrif29","view","account_type_view",,,"Odgođeno plaćanje troškova","Odgođeno plaćanje troškova" +"2900","kp_rrif2900","kp_rrif290","other","account_type_pas_razgran",,,"Obračunani troškovi za koje nije primljena faktura (telefon, grijanje, el. energija, plin, voda i sl.)","Obračunani troškovi za koje nije primljena faktura (telefon, grijanje, el. energija, plin, voda i sl.)" +"2901","kp_rrif2901","kp_rrif290","other","account_type_pas_razgran",,,"Obračunana najamnina iz operativnog (poslovnog) najma","Obračunana najamnina iz operativnog (poslovnog) najma" +"2902","kp_rrif2902","kp_rrif290","other","account_type_pas_razgran",,,"Obračunani troškovi tekućeg održavanja","Obračunani troškovi tekućeg održavanja" +"2903","kp_rrif2903","kp_rrif290","other","account_type_pas_razgran",,,"Obračunani troškovi reklame, propagande i sajmova","Obračunani troškovi reklame, propagande i sajmova" +"2904","kp_rrif2904","kp_rrif290","other","account_type_pas_razgran",,,"Obračunane a neplaćene usluge korištene u obračunskom razdoblju","Obračunane a neplaćene usluge korištene u obračunskom razdoblju" +"2905","kp_rrif2905","kp_rrif290","other","account_type_pas_razgran",,,"Obračunani rad po ugovoru o djelu, autor. hon.","Obračunani rad po ugovoru o djelu, autor. hon." +"2906","kp_rrif2906","kp_rrif290","other","account_type_pas_razgran",,,"Obračunani kalo, rastep, kvar i lom","Obračunani kalo, rastep, kvar i lom" +"2907","kp_rrif2907","kp_rrif290","other","account_type_pas_razgran",,,"Obračunani troškovi premije osiguranja","Obračunani troškovi premije osiguranja" +"2908","kp_rrif2908","kp_rrif290","other","account_type_pas_razgran",,,"Uračunani troškovi službenih glasila i stručnih časopisa","Uračunani troškovi službenih glasila i stručnih časopisa" +"2909","kp_rrif2909","kp_rrif290","other","account_type_pas_razgran",,,"Obračunani ostali troškovi poslovanja (prijevoz, bankovne usluge i platni promet, reprez. i dr.)","Obračunani ostali troškovi poslovanja (troškovi prijevoza, bankovne usluge i platni promet, reprezentacija i dr.)" +"291","kp_rrif291","kp_rrif29","view","account_type_view",,,"Obračunani troškovi korištenih prava","Obračunani troškovi korištenih prava" +"2910","kp_rrif2910","kp_rrif291","other","account_type_pas_razgran",,,"Obračunani troškovi franšiza, korištenih trgovačkih znakova, prava i sl.","Obračunani troškovi franšiza, korištenih trgovačkih znakova, prava i sl." +"2911","kp_rrif2911","kp_rrif291","other","account_type_pas_razgran",,,"Obračunani troškovi licencija","Obračunani troškovi licencija" +"2912","kp_rrif2912","kp_rrif291","other","account_type_pas_razgran",,,"Obračunani troškovi autorskih prava","Obračunani troškovi autorskih prava" +"2913","kp_rrif2913","kp_rrif291","other","account_type_pas_razgran",,,"Odgođeno plaćanje troškova za ostala prava","Odgođeno plaćanje troškova za ostala prava" +"292","kp_rrif292","kp_rrif29","view","account_type_view",,,"Obračunani troškovi nabave dobara","Obračunani troškovi nabave dobara" +"2920","kp_rrif2920","kp_rrif292","other","account_type_pas_razgran",,,"Obračunani ovisni troškovi nabave (za koje nisu primljeni računi)-prijevoz, osiguranje, špedicija i dr.","Obračunani ovisni troškovi nabave (za koje nisu primljeni računi) - prijevoz, osiguranje, špedicija i dr. vanjski troškovi" +"293","kp_rrif293","kp_rrif29","view","account_type_view",,,"Obračunani prihodi budućeg razdoblja","Obračunani prihodi budućeg razdoblja" +"2930","kp_rrif2930","kp_rrif293","other","account_type_pas_razgran",,,"Odgođeni prihodi radi neizvjesnih troškova","Odgođeni prihodi radi neizvjesnih troškova" +"2931","kp_rrif2931","kp_rrif293","other","account_type_pas_razgran",,,"Obračunani prihodi budućeg razdoblja koji su rezultat primjene računovodstvene politike","Obračunani prihodi budućeg razdoblja koji su rezultat primjene računovodstvene politike" +"2932","kp_rrif2932","kp_rrif293","other","account_type_pas_razgran",,,"Odgođeno priznavanje prihoda kad se predviđa povrat robe","Odgođeno priznavanje prihoda kad se predviđa povrat robe" +"2933","kp_rrif2933","kp_rrif293","other","account_type_pas_razgran",,,"Odgođeni prihodi iz otkupa tražbine (faktoring koji nije zarađen)","Odgođeni prihodi iz otkupa tražbine (faktoring koji nije zarađen)" +"2934","kp_rrif2934","kp_rrif293","other","account_type_pas_razgran",,,"Odgođeni prihodi od kamata iz financijskog lizinga","Odgođeni prihodi od kamata iz financijskog lizinga" +"2935","kp_rrif2935","kp_rrif293","other","account_type_pas_razgran",,,"Odgođeni prihodi iz operativnog lizinga","Odgođeni prihodi iz operativnog lizinga" +"2936","kp_rrif2936","kp_rrif293","other","account_type_pas_razgran",,,"Obračunane (anticipativne) kamate na dane zajmove i zatezne kamate (za buduće razdoblje)","Obračunane (anticipativne) kamate na dane zajmove i zatezne kamate (za buduće razdoblje)" +"2937","kp_rrif2937","kp_rrif293","other","account_type_pas_razgran",,,"Unaprijed obračunane ili naplaćene školarine","Unaprijed obračunane ili naplaćene školarine" +"2938","kp_rrif2938","kp_rrif293","other","account_type_pas_razgran",,,"Odgođeni prihodi iz ortaštva","Odgođeni prihodi iz ortaštva" +"2939","kp_rrif2939","kp_rrif293","other","account_type_pas_razgran",,,"Ostali odgođeni prihodi budućeg razdoblja","Ostali odgođeni prihodi budućeg razdoblja" +"294","kp_rrif294","kp_rrif29","view","account_type_view",,,"Odgođeno priznavanje prihoda iz državnih potpora (HSFI t. 15.37 i MRS 20, t. 12. i 24.)","Odgođeno priznavanje prihoda iz državnih potpora (HSFI t. 15.37 i MRS 20, t. 12. i 24.)" +"2940","kp_rrif2940","kp_rrif294","other","account_type_pas_razgran",,,"Odgođeni prihodi iz potpora za dug. nemat. i mat. imovinu (analitike po primitcima, investicijama)","Odgođeni prihodi iz državnih i lokalnih potpora za dugotrajnu nematerijalnu i materijalnu imovinu (analitike po namjenskim primitcima iz proračuna - po investicijama)" +"2941","kp_rrif2941","kp_rrif294","other","account_type_pas_razgran",,,"Odgođeni prihodi iz potpora za zapošljavanje","Odgođeni prihodi iz potpora za zapošljavanje" +"2942","kp_rrif2942","kp_rrif294","other","account_type_pas_razgran",,,"Odgođeno priznavanje prihoda za unaprijed naplaćene subvencije i potpore","Odgođeno priznavanje prihoda za unaprijed naplaćene subvencije i potpore" +"2943","kp_rrif2943","kp_rrif294","other","account_type_pas_razgran",,,"Odgođeni prihodi ostalih potpora","Odgođeni prihodi ostalih potpora" +"295","kp_rrif295","kp_rrif29","view","account_type_view",,,"Odgođeno priznavanje prihoda","Odgođeno priznavanje prihoda" +"2950","kp_rrif2950","kp_rrif295","other","account_type_pas_razgran",,,"Odgođeni prihodi zbog rizika naplate (HSFI t. 15.71 u svezi s t. 15.24)","Odgođeni prihodi zbog rizika naplate (HSFI t. 15.71 u svezi s t. 15.24)" +"2951","kp_rrif2951","kp_rrif295","other","account_type_pas_razgran",,,"Razgraničeni višak prihoda od prodaje i povratnog financijskog najma (MRS 17, t. 59.)","Razgraničeni višak prihoda od prodaje i povratnog financijskog najma (MRS 17, t. 59.)" +"296","kp_rrif296","kp_rrif29","view","account_type_view",,,"Odgođeni prihod s osnove nefakturiranih isporuka dobara i usluga","Odgođeni prihod s osnove nefakturiranih isporuka dobara i usluga" +"2960","kp_rrif2960","kp_rrif296","other","account_type_pas_razgran",,,"Odgođeni prihod s osnove nefakturiranih isporuka dobara i usluga-a1","Odgođeni prihod s osnove nefakturiranih isporuka dobara i usluga-Analitika 1" +"297","kp_rrif297","kp_rrif29","view","account_type_view",,,"Nerealizirani dobitci iz financijske imovine (HSFI 9 i MRS 39)","Nerealizirani dobitci iz financijske imovine (HSFI 9 i MRS 39)" +"2970","kp_rrif2970","kp_rrif297","other","account_type_pas_razgran",,,"Nerealizirani dobitci iz financijske imovine (HSFI 9 i MRS 39)-a1","Nerealizirani dobitci iz financijske imovine (HSFI 9 i MRS 39)-Analitika 1" +"298","kp_rrif298","kp_rrif29","view","account_type_view",,,"Rezerviranje troška za neiskorištene godišnje odmore","Rezerviranje troška za neiskorištene godišnje odmore" +"2980","kp_rrif2980","kp_rrif298","other","account_type_pas_razgran",,,"Rezerviranje troška za neiskorištene godišnje odmore-a1","Rezerviranje troška za neiskorištene godišnje odmore-Analitika 1" +"299","kp_rrif299","kp_rrif29","view","account_type_view",,,"Ostala pasivna vremenska razgraničenja","Ostala pasivna vremenska razgraničenja" +"2999","kp_rrif2999","kp_rrif299","other","account_type_pas_razgran",,,"Ostala pasivna vremenska razgraničenja troškova","Ostala pasivna vremenska razgraničenja troškova" +"3","kp_rrif3","kp_rrif","view","account_type_view",,,"ZALIHE SIROVINA I MATERIJALA, REZERVNIH DIJELOVA I SITNOG INVENTARA","ZALIHE SIROVINA I MATERIJALA, REZERVNIH DIJELOVA I SITNOG INVENTARA" +"30","kp_rrif30","kp_rrif3","view","account_type_view",,,"OBRAČUN TROŠKOVA KUPNJE ZALIHA","OBRAČUN TROŠKOVA KUPNJE ZALIHA" +"300","kp_rrif300","kp_rrif30","view","account_type_view",,,"Kupovna cijena dobavljača","Kupovna cijena dobavljača" +"3000","kp_rrif3000","kp_rrif300","other","account_type_kratk_imovina",,,"Fakturna cijena sirovina i materijala na putu","Fakturna cijena sirovina i materijala na putu" +"3001","kp_rrif3001","kp_rrif300","other","account_type_kratk_imovina",,,"Fakturna cijena sirovina i materijala","Fakturna cijena sirovina i materijala" +"3002","kp_rrif3002","kp_rrif300","other","account_type_kratk_imovina",,,"Fakturna cijena rezervnih dijelova","Fakturna cijena rezervnih dijelova" +"3003","kp_rrif3003","kp_rrif300","other","account_type_kratk_imovina",,,"Fakturna cijena sitnog inventara, autoguma i ambalaže","Fakturna cijena sitnog inventara, autoguma i ambalaže" +"3005","kp_rrif3005","kp_rrif300","other","account_type_kratk_imovina",,,"Materijal i dijelovi u preuzimanju (nema dokumentacije)","Materijal i dijelovi u preuzimanju (nema dokumentacije)" +"301","kp_rrif301","kp_rrif30","view","account_type_view",,,"Ovisni troškovi nabave (u svezi s dovođenjem na zalihu)","Ovisni troškovi nabave (u svezi s dovođenjem na zalihu)" +"3010","kp_rrif3010","kp_rrif301","other","account_type_kratk_imovina",,,"Troškovi transporta","Troškovi transporta" +"3011","kp_rrif3011","kp_rrif301","other","account_type_kratk_imovina",,,"Troškovi ukrcaja i iskrcaja (fakturirani)","Troškovi ukrcaja i iskrcaja (fakturirani)" +"3012","kp_rrif3012","kp_rrif301","other","account_type_kratk_imovina",,,"Transportno osiguranje i čuvanje","Transportno osiguranje i čuvanje" +"3013","kp_rrif3013","kp_rrif301","other","account_type_kratk_imovina",,,"Posebni troškovi pakiranja - ambalaže","Posebni troškovi pakiranja - ambalaže" +"3014","kp_rrif3014","kp_rrif301","other","account_type_kratk_imovina",,,"Troškovi vlastitog transporta","Troškovi vlastitog transporta" +"3015","kp_rrif3015","kp_rrif301","other","account_type_kratk_imovina",,,"Troškovi vlastitog ukrcaja i iskrcaja","Troškovi vlastitog ukrcaja i iskrcaja" +"3016","kp_rrif3016","kp_rrif301","other","account_type_kratk_imovina",,,"Troškovi špeditera","Troškovi špeditera" +"3017","kp_rrif3017","kp_rrif301","other","account_type_kratk_imovina",,,"Troškovi atesta i kontrole","Troškovi atesta i kontrole" +"3018","kp_rrif3018","kp_rrif301","other","account_type_kratk_imovina",,,"Troškovi dorade i oplemenjivanja za vrijeme dovođenja na zalihu","Troškovi dorade i oplemenjivanja za vrijeme dovođenja na zalihu" +"3019","kp_rrif3019","kp_rrif301","other","account_type_kratk_imovina",,,"Ostali ovisni troškovi nabave","Ostali ovisni troškovi nabave" +"302","kp_rrif302","kp_rrif30","view","account_type_view",,,"Carina i druge uvozne pristojbe","Carina i druge uvozne pristojbe" +"3020","kp_rrif3020","kp_rrif302","other","account_type_kratk_imovina",,,"Carina i druge uvozne pristojbe-a1","Carina i druge uvozne pristojbe-Analitika 1" +"303","kp_rrif303","kp_rrif30","view","account_type_view",,,"Posebni porezi (trošarine) koji se ne mogu odbiti","Posebni porezi (trošarine) koji se ne mogu odbiti" +"3030","kp_rrif3030","kp_rrif303","other","account_type_kratk_imovina",,,"Posebni porezi (trošarine) koji se ne mogu odbiti-a1","Posebni porezi (trošarine) koji se ne mogu odbiti-Analitika 1" +"309","kp_rrif309","kp_rrif30","view","account_type_view",,,"Obračun troškova kupnje","Obračun troškova kupnje" +"3090","kp_rrif3090","kp_rrif309","other","account_type_kratk_imovina",,,"Obračun nabave sirovina i materijala, dijelova i sitnog inventara koji se skladišti","Obračun nabave sirovina i materijala, dijelova i sitnog inventara koji se skladišti" +"3091","kp_rrif3091","kp_rrif309","other","account_type_kratk_imovina",,,"Obračun nabave sirovina i materijala i dijelova koji izravno terete troškove","Obračun nabave sirovina i materijala i dijelova koji izravno terete troškove" +"31","kp_rrif31","kp_rrif3","view","account_type_view",,,"SIROVINE I MATERIJAL NA ZALIHI","SIROVINE I MATERIJAL NA ZALIHI" +"310","kp_rrif310","kp_rrif31","view","account_type_view",,,"Sirovine i materijal u skladištu","Sirovine i materijal u skladištu" +"3100","kp_rrif3100","kp_rrif310","other","account_type_kratk_imovina",,,"Zalihe sirovina i materijala","Zalihe sirovina i materijala" +"3101","kp_rrif3101","kp_rrif310","other","account_type_kratk_imovina",,,"Zalihe goriva i maziva","Zalihe goriva i maziva" +"3102","kp_rrif3102","kp_rrif310","other","account_type_kratk_imovina",,,"Poluproizvodi za ugradnju ili proizvodnju","Poluproizvodi za ugradnju ili proizvodnju" +"3103","kp_rrif3103","kp_rrif310","other","account_type_kratk_imovina",,,"Uredski materijal i pribor","Uredski materijal i pribor" +"3104","kp_rrif3104","kp_rrif310","other","account_type_kratk_imovina",,,"Zalihe materijala s temelja povezane proizvodnje","Zalihe materijala s temelja povezane proizvodnje" +"3105","kp_rrif3105","kp_rrif310","other","account_type_kratk_imovina",,,"Zalihe ambalažnog materijala","Zalihe ambalažnog materijala" +"3106","kp_rrif3106","kp_rrif310","other","account_type_kratk_imovina",,,"Zalihe materijala kod kooperanata","Zalihe materijala kod kooperanata" +"3107","kp_rrif3107","kp_rrif310","other","account_type_kratk_imovina",,,"Materijal na zalihi u javnom ili drugom skladištu","Materijal na zalihi u javnom ili drugom skladištu" +"3108","kp_rrif3108","kp_rrif310","other","account_type_kratk_imovina",,,"Zalihe pića, hrane i dr. u ugostiteljstvu i hotelijerstvu","Zalihe pića, hrane i dr. u ugostiteljstvu i hotelijerstvu" +"3109","kp_rrif3109","kp_rrif310","other","account_type_kratk_imovina",,,"Zalihe otpadnog i rashodovanog materijala","Zalihe otpadnog i rashodovanog materijala" +"311","kp_rrif311","kp_rrif31","view","account_type_view",,,"Materijal u doradi, obradi i manipulaciji","Materijal u doradi, obradi i manipulaciji" +"3110","kp_rrif3110","kp_rrif311","other","account_type_kratk_imovina",,,"Materijal u doradi, obradi i oplemenjivanju","Materijal u doradi, obradi i oplemenjivanju" +"3111","kp_rrif3111","kp_rrif311","other","account_type_kratk_imovina",,,"Materijal u manipulaciji i na putu","Materijal u manipulaciji i na putu" +"3112","kp_rrif3112","kp_rrif311","other","account_type_kratk_imovina",,,"Troškovi dorade, obrade i oplemenjivanja","Troškovi dorade, obrade i oplemenjivanja" +"312","kp_rrif312","kp_rrif31","view","account_type_view",,,"Materijal na doradi kod ortaka","Materijal na doradi kod ortaka" +"3120","kp_rrif3120","kp_rrif312","other","account_type_kratk_imovina",,,"Materijal na doradi kod ortaka-a1","Materijal na doradi kod ortaka-Analitika 1" +"313","kp_rrif313","kp_rrif31","view","account_type_view",,,"Zalihe materijala za poljoprivredu","Zalihe materijala za poljoprivredu" +"3130","kp_rrif3130","kp_rrif313","other","account_type_kratk_imovina",,,"Zalihe sjemena i sadnog materijala","Zalihe sjemena i sadnog materijala" +"3131","kp_rrif3131","kp_rrif313","other","account_type_kratk_imovina",,,"Zalihe komponenti za proizvodnju","Zalihe komponenti za proizvodnju" +"318","kp_rrif318","kp_rrif31","view","account_type_view",,,"Odstupanje od cijene zaliha","Odstupanje od cijene zaliha" +"3180","kp_rrif3180","kp_rrif318","other","account_type_kratk_imovina",,,"Odstupanje od cijene zaliha-a1","Odstupanje od cijene zaliha-Analitika 1" +"319","kp_rrif319","kp_rrif31","view","account_type_view",,,"Vrijednosno usklađenje zaliha sirovina i materijala","Vrijednosno usklađenje zaliha sirovina i materijala" +"3190","kp_rrif3190","kp_rrif319","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje zaliha sirovina i materijala-a1","Vrijednosno usklađenje zaliha sirovina i materijala-Analitika 1" +"32","kp_rrif32","kp_rrif3","view","account_type_view",,,"ZALIHE REZERVNIH DIJELOVA","ZALIHE REZERVNIH DIJELOVA" +"320","kp_rrif320","kp_rrif32","view","account_type_view",,,"Rezervni dijelovi na zalihi","Rezervni dijelovi na zalihi" +"3200","kp_rrif3200","kp_rrif320","other","account_type_kratk_imovina",,,"Rezervni dijelovi za servisne usluge","Rezervni dijelovi za servisne usluge" +"3201","kp_rrif3201","kp_rrif320","other","account_type_kratk_imovina",,,"Dijelovi i sklopovi za ugradnju (u proizvode)","Dijelovi i sklopovi za ugradnju (u proizvode)" +"3202","kp_rrif3202","kp_rrif320","other","account_type_kratk_imovina",,,"Rezervni dijelovi za tekuće i investicijsko održavanje","Rezervni dijelovi za tekuće i investicijsko održavanje" +"3203","kp_rrif3203","kp_rrif320","other","account_type_kratk_imovina",,,"Zalihe polovnih rezervnih dijelova","Zalihe polovnih rezervnih dijelova" +"3204","kp_rrif3204","kp_rrif320","other","account_type_kratk_imovina",,,"Zalihe otpadaka rezervnih dijelova","Zalihe otpadaka rezervnih dijelova" +"328","kp_rrif328","kp_rrif32","view","account_type_view",,,"Odstupanje od cijene dijelova na zalihi","Odstupanje od cijene dijelova na zalihi" +"3280","kp_rrif3280","kp_rrif328","other","account_type_kratk_imovina",,,"Odstupanje od cijene dijelova na zalihi-a1","Odstupanje od cijene dijelova na zalihi-Analitika 1" +"329","kp_rrif329","kp_rrif32","view","account_type_view",,,"Vrijednosno usklađenje zaliha rezervnih dijelova","Vrijednosno usklađenje zaliha rezervnih dijelova" +"3290","kp_rrif3290","kp_rrif329","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje zaliha rezervnih dijelova-a1","Vrijednosno usklađenje zaliha rezervnih dijelova-Analitika 1" +"35","kp_rrif35","kp_rrif3","view","account_type_view",,,"ZALIHE SITNOG INVENTARA","ZALIHE SITNOG INVENTARA" +"350","kp_rrif350","kp_rrif35","view","account_type_view",,,"Sitan inventar na zalihi","Sitan inventar na zalihi" +"3500","kp_rrif3500","kp_rrif350","other","account_type_kratk_imovina",,,"Sitan inventar na zalihi (analitika prema vrstama: alati, mjerni instrumenti, pribori,odjeća, i dr.)","Sitan inventar na zalihi (analitika prema vrstama: alati, mjerni instrumenti, pribori, ostala sredstva rada male vrijednosti, radna i zaštitna odjeća, protupožarna i sanitetska sredstva, i dr.)" +"351","kp_rrif351","kp_rrif35","view","account_type_view",,,"Ambalaža na zalihi (samo vlastita i višekratna, analitika prema vrstama)","Ambalaža na zalihi (samo vlastita i višekratna, analitika prema vrstama)" +"3510","kp_rrif3510","kp_rrif351","other","account_type_kratk_imovina",,,"Ambalaža na zalihi (samo vlastita i višekratna, analitika prema vrstama)-a1","Ambalaža na zalihi (samo vlastita i višekratna, analitika prema vrstama)-Analitika 1" +"352","kp_rrif352","kp_rrif35","view","account_type_view",,,"Autogume na zalihi","Autogume na zalihi" +"3520","kp_rrif3520","kp_rrif352","other","account_type_kratk_imovina",,,"Autogume na zalihi-a1","Autogume na zalihi-Analitika 1" +"358","kp_rrif358","kp_rrif35","view","account_type_view",,,"Odstupanje od cijene","Odstupanje od cijene" +"3580","kp_rrif3580","kp_rrif358","other","account_type_kratk_imovina",,,"Odstupanje od cijene-a1","Odstupanje od cijene-Analitika 1" +"359","kp_rrif359","kp_rrif35","view","account_type_view",,,"Vrijednosno usklađenje zaliha","Vrijednosno usklađenje zaliha" +"3590","kp_rrif3590","kp_rrif359","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje zaliha-a1","Vrijednosno usklađenje zaliha-Analitika 1" +"36","kp_rrif36","kp_rrif3","view","account_type_view",,,"ZALIHE SITNOG INVENTARA U UPORABI","ZALIHE SITNOG INVENTARA U UPORABI" +"360","kp_rrif360","kp_rrif36","view","account_type_view",,,"Sitan inventar u uporabi","Sitan inventar u uporabi" +"3600","kp_rrif3600","kp_rrif360","other","account_type_kratk_imovina",,,"Sitan inventar u uporabi-a1","Sitan inventar u uporabi-Analitika 1" +"361","kp_rrif361","kp_rrif36","view","account_type_view",,,"Ambalaža u uporabi","Ambalaža u uporabi" +"3610","kp_rrif3610","kp_rrif361","other","account_type_kratk_imovina",,,"Ambalaža u uporabi-a1","Ambalaža u uporabi-Analitika 1" +"362","kp_rrif362","kp_rrif36","view","account_type_view",,,"Autogume u uporabi","Autogume u uporabi" +"3620","kp_rrif3620","kp_rrif362","other","account_type_kratk_imovina",,,"Autogume u uporabi-a1","Autogume u uporabi-Analitika 1" +"363","kp_rrif363","kp_rrif36","view","account_type_view",,,"Otpis sitnog inventara","Otpis sitnog inventara" +"3630","kp_rrif3630","kp_rrif363","other","account_type_kratk_imovina",,,"Otpis sitnog inventara-a1","Otpis sitnog inventara-Analitika 1" +"364","kp_rrif364","kp_rrif36","view","account_type_view",,,"Otpis ambalaže","Otpis ambalaže" +"3640","kp_rrif3640","kp_rrif364","other","account_type_kratk_imovina",,,"Otpis ambalaže-a1","Otpis ambalaže-Analitika 1" +"365","kp_rrif365","kp_rrif36","view","account_type_view",,,"Otpis autoguma","Otpis autoguma" +"3650","kp_rrif3650","kp_rrif365","other","account_type_kratk_imovina",,,"Otpis autoguma-a1","Otpis autoguma-Analitika 1" +"369","kp_rrif369","kp_rrif36","view","account_type_view",,,"Vrijednosno usklađenje sitnog inventara, ambalaže i autoguma","Vrijednosno usklađenje sitnog inventara, ambalaže i autoguma" +"3690","kp_rrif3690","kp_rrif369","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje sitnog inventara, ambalaže i autoguma-a1","Vrijednosno usklađenje sitnog inventara, ambalaže i autoguma-Analitika 1" +"37","kp_rrif37","kp_rrif3","view","account_type_view",,,"PREDUJMOVI DOBAVLJAČIMA SIROVINA I MATERIJALA, REZERVNIH DIJELOVA, SITNOG INVENTARA I AUTOGUMA","PREDUJMOVI DOBAVLJAČIMA SIROVINA I MATERIJALA, REZERVNIH DIJELOVA, SITNOG INVENTARA I AUTOGUMA" +"370","kp_rrif370","kp_rrif37","view","account_type_view",,,"Predujmovi dobavljačima materijala","Predujmovi dobavljačima materijala" +"3700","kp_rrif3700","kp_rrif370","other","account_type_kratk_imovina",,,"Predujmovi dobavljačima materijala-a1","Predujmovi dobavljačima materijala-Analitika 1" +"371","kp_rrif371","kp_rrif37","view","account_type_view",,,"Predujmovi dobavljačima rezervnih dijelova","Predujmovi dobavljačima rezervnih dijelova" +"3710","kp_rrif3710","kp_rrif371","other","account_type_kratk_imovina",,,"Predujmovi dobavljačima rezervnih dijelova-a1","Predujmovi dobavljačima rezervnih dijelova-Analitika 1" +"372","kp_rrif372","kp_rrif37","view","account_type_view",,,"Predujmovi dobavljačima sitnog inventara","Predujmovi dobavljačima sitnog inventara" +"3720","kp_rrif3720","kp_rrif372","other","account_type_kratk_imovina",,,"Predujmovi dobavljačima sitnog inventara-a1","Predujmovi dobavljačima sitnog inventara-Analitika 1" +"373","kp_rrif373","kp_rrif37","view","account_type_view",,,"Predujmovi dani uvozniku za nabavu sirovina i materijala, dijelova i inventara","Predujmovi dani uvozniku za nabavu sirovina i materijala, dijelova i inventara" +"3730","kp_rrif3730","kp_rrif373","other","account_type_kratk_imovina",,,"Predujmovi dani uvozniku za nabavu sirovina i materijala, dijelova i inventara-a1","Predujmovi dani uvozniku za nabavu sirovina i materijala, dijelova i inventara-Analitika 1" +"374","kp_rrif374","kp_rrif37","view","account_type_view",,,"Predujmovi inozemnim dobavljačima","Predujmovi inozemnim dobavljačima" +"3740","kp_rrif3740","kp_rrif374","other","account_type_kratk_imovina",,,"Predujmovi inozemnim dobavljačima-a1","Predujmovi inozemnim dobavljačima-Analitika 1" +"379","kp_rrif379","kp_rrif37","view","account_type_view",,,"Vrijednosno usklađenje danih predujmova","Vrijednosno usklađenje danih predujmova" +"3790","kp_rrif3790","kp_rrif379","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje danih predujmova-a1","Vrijednosno usklađenje danih predujmova-Analitika 1" +"4","kp_rrif4","kp_rrif","view","account_type_view",,,"TROŠKOVI PREMA VRSTAMA, FINANCIJSKI I OSTALI RASHODI","TROŠKOVI PREMA VRSTAMA, FINANCIJSKI I OSTALI RASHODI" +"40","kp_rrif40","kp_rrif4","view","account_type_view",,,"MATERIJALNI TROŠKOVI","MATERIJALNI TROŠKOVI" +"400","kp_rrif400","kp_rrif40","view","account_type_view",,,"Troškovi sirovina i materijala (za proizvodnju dobara i usluga)","Troškovi sirovina i materijala (za proizvodnju dobara i usluga)" +"4000","kp_rrif4000","kp_rrif400","other","account_type_posl_rashod",,,"Osnovni materijali i sirovine","Osnovni materijali i sirovine" +"4001","kp_rrif4001","kp_rrif400","other","account_type_posl_rashod",,,"Dijelovi i sklopovi","Dijelovi i sklopovi" +"4002","kp_rrif4002","kp_rrif400","other","account_type_posl_rashod",,,"Poluproizvodi za ugradnju","Poluproizvodi za ugradnju" +"4003","kp_rrif4003","kp_rrif400","other","account_type_posl_rashod",,,"Pomoćni materijali (mazivo, ljepila, svrdla, pile, noževi, brusne ploče i dr.)","Pomoćni materijali (mazivo, ljepila, svrdla, pile, noževi, brusne ploče i dr.)" +"4004","kp_rrif4004","kp_rrif400","other","account_type_posl_rashod",,,"Potrošni materijal za čišćenje i održavanje","Potrošni materijal za čišćenje i održavanje" +"4005","kp_rrif4005","kp_rrif400","other","account_type_posl_rashod",,,"Materijal za HTZ zaštitu, radna i zaštitna odjeća i obuća","Materijal za HTZ zaštitu, radna i zaštitna odjeća i obuća" +"4006","kp_rrif4006","kp_rrif400","other","account_type_posl_rashod",,,"Materijal pogonske administracije i menadžmenta (uredski potrošni i sl.)","Materijal pogonske administracije i menadžmenta (uredski potrošni i sl.)" +"4007","kp_rrif4007","kp_rrif400","other","account_type_posl_rashod",,,"Troškovi oblikovanja proizvoda za posebne kupce","Troškovi oblikovanja proizvoda za posebne kupce" +"4008","kp_rrif4008","kp_rrif400","other","account_type_posl_rashod",,,"Materijali u pomoćnoj djelatnosti (za restoran i dr.)","Materijali u pomoćnoj djelatnosti (za restoran i dr.)" +"4009","kp_rrif4009","kp_rrif400","other","account_type_posl_rashod",,,"Ostali izravni i opći troškovi pogona - uslužne jedinice (HSFI t. 10.17 i MRS 2, t. 10. do 19.)","Ostali izravni i opći troškovi pogona - uslužne jedinice (HSFI t. 10.17 i MRS 2, t. 10. do 19.)" +"401","kp_rrif401","kp_rrif40","view","account_type_view",,,"Materijalni troškovi administracije, uprave i prodaje","Materijalni troškovi administracije, uprave i prodaje" +"4010","kp_rrif4010","kp_rrif401","other","account_type_posl_rashod",,,"Uredski materijal (papir, registratori, olovke, tiskanice, toneri, ulošci, kalendari, rokovnici i sl.)","Uredski materijal (papir, registratori, olovke, tiskanice, toneri, ulošci, kalendari, rokovnici i sl.)" +"4011","kp_rrif4011","kp_rrif401","other","account_type_posl_rashod",,,"Materijal i sredstva za čišćenje i održavanje","Materijal i sredstva za čišćenje i održavanje" +"4012","kp_rrif4012","kp_rrif401","other","account_type_posl_rashod",,,"Troškovi otpisa sitnog inventara","Troškovi otpisa sitnog inventara" +"4013","kp_rrif4013","kp_rrif401","other","account_type_posl_rashod",,,"Ambalažni materijal, vrpce za blagajne, blokovi papira, pisači, naljepnice, etikete i dr.","Ambalažni materijal, vrpce za blagajne, blokovi papira, pisači, naljepnice, etikete i dr." +"4014","kp_rrif4014","kp_rrif401","other","account_type_posl_rashod",,,"Voda (izvorska) za piće","Voda (izvorska) za piće" +"4015","kp_rrif4015","kp_rrif401","other","account_type_posl_rashod",,,"Uniformirana radna odjeća i obuća","Uniformirana radna odjeća i obuća" +"4016","kp_rrif4016","kp_rrif401","other","account_type_posl_rashod",,,"Troškovi opomena","Troškovi opomena" +"4017","kp_rrif4017","kp_rrif401","other","account_type_posl_rashod",,,"Troškovi ukrasnog bilja","Troškovi ukrasnog bilja" +"4019","kp_rrif4019","kp_rrif401","other","account_type_posl_rashod",,,"Ostali materijalni troškovi trgovine","Ostali materijalni troškovi trgovine" +"402","kp_rrif402","kp_rrif40","view","account_type_view",,,"Troškovi istraživanja i razvoja (Zak. o znan - Nn. br. 46/07.)","Troškovi istraživanja i razvoja (Zak. o znan - Nn. br. 46/07.)" +"4020","kp_rrif4020","kp_rrif402","other","account_type_posl_rashod",,,"Troškovi projekta za temeljna istraživanja proizvoda","Troškovi projekta za temeljna istraživanja proizvoda" +"403","kp_rrif403","kp_rrif40","view","account_type_view",,,"Troškovi ambalaže","Troškovi ambalaže" +"4030","kp_rrif4030","kp_rrif403","other","account_type_posl_rashod",,,"Troškovi neodvojive ambalaže u proizvodnji (boce, limenke, kutije i dr.)","Troškovi neodvojive ambalaže u proizvodnji (boce, limenke, kutije i dr.)" +"4031","kp_rrif4031","kp_rrif403","other","account_type_posl_rashod",,,"Troškovi paleta, gajbi i sl.","Troškovi paleta, gajbi i sl." +"404","kp_rrif404","kp_rrif40","view","account_type_view",,,"Trošak sitnog inventara, ambalaže i autoguma","Trošak sitnog inventara, ambalaže i autoguma" +"4040","kp_rrif4040","kp_rrif404","other","account_type_posl_rashod",,,"Troškovi sitnog inventara,","Troškovi sitnog inventara," +"4041","kp_rrif4041","kp_rrif404","other","account_type_posl_rashod",,,"Troškovi ambalaže (povratne, posebne) - otpis","Troškovi ambalaže (povratne, posebne) - otpis" +"4042","kp_rrif4042","kp_rrif404","other","account_type_posl_rashod",,,"Troškovi autoguma (za kamione, autobuse, teretna vozila i strojeve)","Troškovi autoguma (za kamione, autobuse, teretna vozila i strojeve)" +"4044","kp_rrif4044","kp_rrif404","other","account_type_posl_rashod",,,"Trokš. auto guma (neto + 30% PDV) za slučaj plaće","Trokš. auto guma (neto + 30% PDV) za slučaj plaće" +"4045","kp_rrif4045","kp_rrif404","other","account_type_posl_rashod",,,"70% troška autoguma za os. automobile i dr. sredstva prijevoza za potrebe administr., uprave i prodaje","70% troška autoguma za osobne automobile i dr. sredstva prijevoza za potrebe administr., uprave i prodaje" +"4046","kp_rrif4046","kp_rrif404","other","account_type_posl_rashod",,,"30% troška inventara i autoguma za osobne automobile +30% PDV-a","30% troška inventara i autoguma za osobne automobile +30% PDV-a" +"405","kp_rrif405","kp_rrif40","view","account_type_view",,,"Potrošeni rezervni dijelovi i materijal za održavanje","Potrošeni rezervni dijelovi i materijal za održavanje" +"4050","kp_rrif4050","kp_rrif405","other","account_type_posl_rashod",,,"Potrošeni rezervni dijelovi za popravak vlastite opreme","Potrošeni rezervni dijelovi za popravak vlastite opreme" +"4051","kp_rrif4051","kp_rrif405","other","account_type_posl_rashod",,,"Materijal za održavanje opreme i objekata","Materijal za održavanje opreme i objekata" +"4054","kp_rrif4054","kp_rrif405","other","account_type_posl_rashod",,,"Trošak rez. dijelova (neto + 30% PDV) za slučaj plaće","Trošak rez. dijelova (neto + 30% PDV) za slučaj plaće" +"4055","kp_rrif4055","kp_rrif405","other","account_type_posl_rashod",,,"70% troškova rez. dijelova i mat. za automob., plovila i zrakopl.za prijevoz(čl.7.,st.1.,t.4.ZoPD)","70% troškova rezervnih dijelova i materijala za popravak automob., plovila i zrakopl. koji služe za osobni prijevoz poduzet. i zaposlenih (čl. 7., st. 1., t. 4. ZoPD)" +"4056","kp_rrif4056","kp_rrif405","other","account_type_posl_rashod",,,"30% troška rezervnih dijelova i materijala za održavanje automobila i dr. za osobni prijevoz +30% PDV-a","30% troška rezervnih dijelova i materijala za održavanje automobila i dr. za osobni prijevoz +30% PDV-a" +"4057","kp_rrif4057","kp_rrif405","other","account_type_posl_rashod",,,"Troškovi zamjene u jamstvenom roku","Troškovi zamjene u jamstvenom roku" +"4058","kp_rrif4058","kp_rrif405","other","account_type_posl_rashod",,,"Potrošeni vlastiti proizvodi i roba za održavanje","Potrošeni vlastiti proizvodi i roba za održavanje" +"4059","kp_rrif4059","kp_rrif405","other","account_type_posl_rashod",,,"Ostali troškovi rezervnih dijelova","Ostali troškovi rezervnih dijelova" +"406","kp_rrif406","kp_rrif40","view","account_type_view",,,"Potrošena energija u proizvodnji dobara i usluga","Potrošena energija u proizvodnji dobara i usluga" +"4060","kp_rrif4060","kp_rrif406","other","account_type_posl_rashod",,,"Električna energija","Električna energija" +"4061","kp_rrif4061","kp_rrif406","other","account_type_posl_rashod",,,"Plin, para, briketi i drva","Plin, para, briketi i drva" +"4062","kp_rrif4062","kp_rrif406","other","account_type_posl_rashod",,,"Mazut i ulje za loženje","Mazut i ulje za loženje" +"4063","kp_rrif4063","kp_rrif406","other","account_type_posl_rashod",,,"Dizelsko gorivo, benzin i motorno ulje (za stroj. i sl.)","Dizelsko gorivo, benzin i motorno ulje (za stroj. i sl.)" +"4067","kp_rrif4067","kp_rrif406","other","account_type_posl_rashod",,,"Trošak goriva za teretna vozila (kamione, autobuse, strojeve, brodove i sl.)","Trošak goriva za teretna vozila (kamione, autobuse, strojeve, brodove i sl.)" +"4069","kp_rrif4069","kp_rrif406","other","account_type_posl_rashod",,,"Ostali troškovi energije u proizvodnji","Ostali troškovi energije u proizvodnji" +"407","kp_rrif407","kp_rrif40","view","account_type_view",,,"Potrošena energija u administraciji, upravi i prodaji","Potrošena energija u administraciji, upravi i prodaji" +"4070","kp_rrif4070","kp_rrif407","other","account_type_posl_rashod",,,"Trošak električne energije","Trošak električne energije" +"4071","kp_rrif4071","kp_rrif407","other","account_type_posl_rashod",,,"Plin, toplinska energija, briketi, drva","Plin, toplinska energija, briketi, drva" +"4074","kp_rrif4074","kp_rrif407","other","account_type_posl_rashod",,,"Gorivo za osob. aut. (neto + 30% PDV) za sluč. plaće","Gorivo za osob. aut. (neto + 30% PDV) za sluč. plaće" +"4075","kp_rrif4075","kp_rrif407","other","account_type_posl_rashod",,,"70% troškova goriva za pogon automobila za osobni prijevoz(i automobila u najmu)","70% troškova diesela i benzina za pogon automobila, plovila i zrakoplova za osobni prijevoz poduzetnika i zaposlenih te za istu namjenu automobila u najmu" +"4076","kp_rrif4076","kp_rrif407","other","account_type_posl_rashod",,,"30% goriva za osobni prijevoz +30% PDV-a","30% goriva za osobni prijevoz +30% PDV-a" +"4077","kp_rrif4077","kp_rrif407","other","account_type_posl_rashod",,,"Trošak goriva za teretna vozila, strojeve i brodove","Trošak goriva za teretna vozila, strojeve i brodove" +"4079","kp_rrif4079","kp_rrif407","other","account_type_posl_rashod",,,"Ostali troškovi energije","Ostali troškovi energije" +"408","kp_rrif408","kp_rrif40","view","account_type_view",,,"Troškovi energije na pomoćnim mjestima u proizvodnji","Troškovi energije na pomoćnim mjestima u proizvodnji" +"4080","kp_rrif4080","kp_rrif408","other","account_type_posl_rashod",,,"Troškovi energije na pomoćnim mjestima u proizvodnji-a1","Troškovi energije na pomoćnim mjestima u proizvodnji-Analitika 1" +"409","kp_rrif409","kp_rrif40","view","account_type_view",,,"Odstupanja od standardnog troška","Odstupanja od standardnog troška" +"4090","kp_rrif4090","kp_rrif409","other","account_type_posl_rashod",,,"Odstupanja od standardnog troška-a1","Odstupanja od standardnog troška-Analitika 1" +"41","kp_rrif41","kp_rrif4","view","account_type_view",,,"OSTALI VANJSKI TROŠKOVI (TROŠKOVI USLUGA)","OSTALI VANJSKI TROŠKOVI (TROŠKOVI USLUGA)" +"410","kp_rrif410","kp_rrif41","view","account_type_view",,,"Troškovi telefona, prijevoza i sl.","Troškovi telefona, prijevoza i sl." +"4100","kp_rrif4100","kp_rrif410","other","account_type_posl_rashod",,,"Troškovi telefona, interneta i sl.","Troškovi telefona, interneta i sl." +"4101","kp_rrif4101","kp_rrif410","other","account_type_posl_rashod",,,"Poštanski troškovi","Poštanski troškovi" +"4102","kp_rrif4102","kp_rrif410","other","account_type_posl_rashod",,,"Prijevozne usluge u cestovnom prometu","Prijevozne usluge u cestovnom prometu" +"4103","kp_rrif4103","kp_rrif410","other","account_type_posl_rashod",,,"Prijevozne usluge željeznicom","Prijevozne usluge željeznicom" +"4104","kp_rrif4104","kp_rrif410","other","account_type_posl_rashod",,,"Prijevozne usluge brodara","Prijevozne usluge brodara" +"4105","kp_rrif4105","kp_rrif410","other","account_type_posl_rashod",,,"Prijevozne usluge zrakoplova","Prijevozne usluge zrakoplova" +"4106","kp_rrif4106","kp_rrif410","other","account_type_posl_rashod",,,"Troškovi specijalnih prijevoza","Troškovi specijalnih prijevoza" +"4107","kp_rrif4107","kp_rrif410","other","account_type_posl_rashod",,,"Usluge taksi- prijevoza","Usluge taksi- prijevoza" +"4108","kp_rrif4108","kp_rrif410","other","account_type_posl_rashod",,,"Usluge dostave i logistike","Usluge dostave i logistike" +"4109","kp_rrif4109","kp_rrif410","other","account_type_posl_rashod",,,"Ostale usluge prijevoza","Ostale usluge prijevoza" +"411","kp_rrif411","kp_rrif41","view","account_type_view",,,"Troškovi vanjskih usluga pri izradi dobara i obavljanju usluga","Troškovi vanjskih usluga pri izradi dobara i obavljanju usluga" +"4110","kp_rrif4110","kp_rrif411","other","account_type_posl_rashod",,,"Usluge dorade (oplemenjivanja), izrade, prerade i sl. u proizvodnji i izgradnji","Usluge dorade (oplemenjivanja), izrade, prerade i sl. u proizvodnji i izgradnji" +"4111","kp_rrif4111","kp_rrif411","other","account_type_posl_rashod",,,"Usluge kooperanata na zajedničkim uslugama prema trećima","Usluge kooperanata na zajedničkim uslugama prema trećima" +"4112","kp_rrif4112","kp_rrif411","other","account_type_posl_rashod",,,"Usluge studentskog i omladinskog servisa i na izradi proizvoda","Usluge studentskog i omladinskog servisa i na izradi proizvoda" +"4113","kp_rrif4113","kp_rrif411","other","account_type_posl_rashod",,,"Usluge pripreme teksta za tisak, za web. i sl.","Usluge pripreme teksta za tisak, za web. i sl." +"4114","kp_rrif4114","kp_rrif411","other","account_type_posl_rashod",,,"Grafičke usluge tiska i uveza","Grafičke usluge tiska i uveza" +"4115","kp_rrif4115","kp_rrif411","other","account_type_posl_rashod",,,"Usluge hotela i smještaja radnika na terenu","Usluge hotela i smještaja radnika na terenu" +"4116","kp_rrif4116","kp_rrif411","other","account_type_posl_rashod",,,"Usluge za iznajmljeni kapacitet","Usluge za iznajmljeni kapacitet" +"4117","kp_rrif4117","kp_rrif411","other","account_type_posl_rashod",,,"Usluge rada vanjskog osoblja","Usluge rada vanjskog osoblja" +"4118","kp_rrif4118","kp_rrif411","other","account_type_posl_rashod",,,"Usluge izrade ili popravka po ugovoru o djelu","Usluge izrade ili popravka po ugovoru o djelu" +"4119","kp_rrif4119","kp_rrif411","other","account_type_posl_rashod",,,"Ostale vanjske usluge na izradi dobara i proizvodnih usluga","Ostale vanjske usluge na izradi dobara i proizvodnih usluga" +"412","kp_rrif412","kp_rrif41","view","account_type_view",,,"Usluge održavanja i zaštite (servisne usluge)","Usluge održavanja i zaštite (servisne usluge)" +"4120","kp_rrif4120","kp_rrif412","other","account_type_posl_rashod",,,"Nabavljene usluge tekućeg održavanja (bez vlastitog materijala i dijelova)","Nabavljene usluge tekućeg održavanja (bez vlastitog materijala i dijelova)" +"4121","kp_rrif4121","kp_rrif412","other","account_type_posl_rashod",,,"Nabavljene usluge za investicijsko održavanje i popravke (bez vlastitog materijala i dijelova)","Nabavljene usluge za investicijsko održavanje i popravke (bez vlastitog materijala i dijelova)" +"4122","kp_rrif4122","kp_rrif412","other","account_type_posl_rashod",,,"Usluge čišćenja i pranja","Usluge čišćenja i pranja" +"4123","kp_rrif4123","kp_rrif412","other","account_type_posl_rashod",,,"Usluge održavanja softvera i web stranica","Usluge održavanja softvera i web stranica" +"4124","kp_rrif4124","kp_rrif412","view","account_type_view",,,"Vanjske usluge popravka prodanih a neispravnih dobara u jamstvenom roku","Vanjske usluge popravka prodanih a neispravnih dobara u jamstvenom roku" +"41244","kp_rrif41244","kp_rrif4124","other","account_type_posl_rashod",,,"Servis osob. automob. (neto + 30% PDV) za slučaj plaće u naravi","Servis osob. automob. (neto + 30% PDV) za slučaj plaće u naravi" +"4125","kp_rrif4125","kp_rrif412","other","account_type_posl_rashod",,,"70% usluga servisa za održavanje automobila za osobni prijevoz poduzetnika i zaposlenih","70% usluga servisa za održavanje automobila, plovila i zrakoplova koji služe za osobni prijevoz poduzetnika i zaposlenih" +"4126","kp_rrif4126","kp_rrif412","other","account_type_posl_rashod",,,"30% usluga održavanja prijevoznih sredstava za osobni prijevoz + 30% PDV-a","30% usluga održavanja prijevoznih sredstava za osobni prijevoz + 30% PDV-a" +"4127","kp_rrif4127","kp_rrif412","other","account_type_posl_rashod",,,"Usluge zaštite na radu i održavanja okoliša","Usluge zaštite na radu i održavanja okoliša" +"4128","kp_rrif4128","kp_rrif412","other","account_type_posl_rashod",,,"Usluge zaštitara na čuvanju imovine i osoba","Usluge zaštitara na čuvanju imovine i osoba" +"4129","kp_rrif4129","kp_rrif412","other","account_type_posl_rashod",,,"Ostale servisne usluge i usluge osoba","Ostale servisne usluge i usluge osoba" +"413","kp_rrif413","kp_rrif41","view","account_type_view",,,"Usluge registracije prijevoznih sredstava i troškovi dozvola","Usluge registracije prijevoznih sredstava i troškovi dozvola" +"4130","kp_rrif4130","kp_rrif413","other","account_type_posl_rashod",,,"70% troška registracije automobila, plovila i zrakoplova za prijevoz osoba poduz. (osim osiguranja)","70% troška registracije osobnih automobila, plovila i zrakoplova za prijevoz osoba poduzetnika (osim osiguranja)" +"4131","kp_rrif4131","kp_rrif413","view","account_type_view",,,"30% troška registracije sred. za osobni prijevoz + 30% PDV-a (osim troškova osiguranja)","30% troška registracije sred. za osobni prijevoz + 30% PDV-a (osim troškova osiguranja)" +"41314","kp_rrif41314","kp_rrif4131","other","account_type_posl_rashod",,,"Troškovi registr. (neto + 30% PDV) - plaća","Troškovi registr. (neto + 30% PDV) - plaća" +"4132","kp_rrif4132","kp_rrif413","other","account_type_posl_rashod",,,"Trošak registracije dostavnih i teret. vozila i autobusa (sveuk.) i automob. bez poreznog ograničenja","Trošak registracije dostavnih i teret. vozila i autobusa (sveukupno) i automob. bez poreznog ograničenja" +"4133","kp_rrif4133","kp_rrif413","other","account_type_posl_rashod",,,"Troškovi registracije plovila","Troškovi registracije plovila" +"4134","kp_rrif4134","kp_rrif413","other","account_type_posl_rashod",,,"Troškovi registracije zrakoplova","Troškovi registracije zrakoplova" +"4135","kp_rrif4135","kp_rrif413","other","account_type_posl_rashod",,,"Troškovi dozvola za prometne smjerove","Troškovi dozvola za prometne smjerove" +"4136","kp_rrif4136","kp_rrif413","other","account_type_posl_rashod",,,"Troškovi koncesija, licencija i dr. prava na prijevoz","Troškovi koncesija, licencija i dr. prava na prijevoz" +"4137","kp_rrif4137","kp_rrif413","other","account_type_posl_rashod",,,"Troškovi nadoknada za ceste, takse i sl.","Troškovi nadoknada za ceste, takse i sl." +"4139","kp_rrif4139","kp_rrif413","other","account_type_posl_rashod",,,"Ostali troškovi registracije prometala","Ostali troškovi registracije prometala" +"414","kp_rrif414","kp_rrif41","view","account_type_view",,,"Usluge zakupa - lizinga","Usluge zakupa - lizinga" +"4140","kp_rrif4140","kp_rrif414","other","account_type_posl_rashod",,,"Zakupnine - najamnine nekretnina","Zakupnine - najamnine nekretnina" +"4141","kp_rrif4141","kp_rrif414","other","account_type_posl_rashod",,,"Zakupnine opreme","Zakupnine opreme" +"4142","kp_rrif4142","kp_rrif414","other","account_type_posl_rashod",,,"Usluge operativnog (poslovnog) lizinga opreme","Usluge operativnog (poslovnog) lizinga opreme" +"4143","kp_rrif4143","kp_rrif414","other","account_type_posl_rashod",,,"70% usluga operativnog lizinga automobila, brodova i zrakoplova za osobni prijevoz osoba poduzetnika","70% usluga operativnog lizinga automobila, brodova i zrakoplova za osobni prijevoz osoba poduzetnika" +"4144","kp_rrif4144","kp_rrif414","other","account_type_posl_rashod",,,"Usluge operat. najma osob. automob. (neto + 30% PDV) za slučaj plaće","Usluge operat. najma osob. automob. (neto + 30% PDV) za slučaj plaće" +"4145","kp_rrif4145","kp_rrif414","other","account_type_posl_rashod",,,"70% rent-á-car usluge prijevoza osoba","70% rent-á-car usluge prijevoza osoba" +"4146","kp_rrif4146","kp_rrif414","other","account_type_posl_rashod",,,"30% usluga operativnog lizinga sred. za osobni prijevoz + 30% PDV-a","30% usluga operativnog lizinga sred. za osobni prijevoz + 30% PDV-a" +"4147","kp_rrif4147","kp_rrif414","other","account_type_posl_rashod",,,"30% rent-á-car usluga prijevoza osoba + 30% PDV-a","30% rent-á-car usluga prijevoza osoba + 30% PDV-a" +"4148","kp_rrif4148","kp_rrif414","other","account_type_posl_rashod",,,"Rent-á-car za prijevoz tereta","Rent-á-car za prijevoz tereta" +"4149","kp_rrif4149","kp_rrif414","other","account_type_posl_rashod",,,"Usluge najma informatičke opreme","Usluge najma informatičke opreme" +"415","kp_rrif415","kp_rrif41","view","account_type_view",,,"Usluge promidžbe, sponzorstva i troškovi sajmova","Usluge promidžbe, sponzorstva i troškovi sajmova" +"4150","kp_rrif4150","kp_rrif415","other","account_type_posl_rashod",,,"Troškovi promidžbe putem tiskovina, TV, plakata i sl.","Troškovi promidžbe putem tiskovina, TV, plakata i sl." +"4151","kp_rrif4151","kp_rrif415","other","account_type_posl_rashod",,,"Usluge promidžbenih agencija","Usluge promidžbenih agencija" +"4152","kp_rrif4152","kp_rrif415","other","account_type_posl_rashod",,,"Troškovi promidžbe u inozemstvu","Troškovi promidžbe u inozemstvu" +"4153","kp_rrif4153","kp_rrif415","other","account_type_posl_rashod",,,"Trošak sponzoriranja športa i kulture u cilju promidžbe","Trošak sponzoriranja športa i kulture u cilju promidžbe" +"4154","kp_rrif4154","kp_rrif415","other","account_type_posl_rashod",,,"Usluge unapređenja prodaje","Usluge unapređenja prodaje" +"4155","kp_rrif4155","kp_rrif415","other","account_type_posl_rashod",,,"Usluge istraživanja tržišta","Usluge istraživanja tržišta" +"4156","kp_rrif4156","kp_rrif415","other","account_type_posl_rashod",,,"Usluge sajmova (nadoknada za prostor)","Usluge sajmova (nadoknada za prostor)" +"4157","kp_rrif4157","kp_rrif415","other","account_type_posl_rashod",,,"Usluge oblikovanja i uređenja izložbenog i prodajnog prostora","Usluge oblikovanja i uređenja izložbenog i prodajnog prostora" +"4158","kp_rrif4158","kp_rrif415","other","account_type_posl_rashod",,,"Troškovi promidžbe najmom medija (stranica portala i sl.)","Troškovi promidžbe najmom medija (stranica portala i sl.)" +"4159","kp_rrif4159","kp_rrif415","other","account_type_posl_rashod",,,"Ostali troškovi promidžbe (osim reprezentacije, dnevnica na službenom putu i sl.)","Ostali troškovi promidžbe (osim reprezentacije, dnevnica na službenom putu i sl.)" +"416","kp_rrif416","kp_rrif41","view","account_type_view",,,"Intelektualne i osobne usluge","Intelektualne i osobne usluge" +"4160","kp_rrif4160","kp_rrif416","other","account_type_posl_rashod",,,"Troškovi drugih dohodaka (ugovora o djelu, akvizitera, trgov. putnika, konzultanata)","Troškovi drugih dohodaka (ugovora o djelu, akvizitera, trgov. putnika, konzultanata)" +"4161","kp_rrif4161","kp_rrif416","other","account_type_posl_rashod",,,"Autorski honorari (pisana, govorna, prijevodi i dr.)","Autorski honorari (pisana, govorna, prijevodi i dr.)" +"4162","kp_rrif4162","kp_rrif416","other","account_type_posl_rashod",,,"Usluge specijalističkog obrazovanja, znanstvenoistraživačke usluge, usluge informacija i sl.","Usluge specijalističkog obrazovanja, znanstvenoistraživačke usluge, usluge informacija i sl." +"4163","kp_rrif4163","kp_rrif416","other","account_type_posl_rashod",,,"Konzultantske i savjetničke usluge","Konzultantske i savjetničke usluge" +"4164","kp_rrif4164","kp_rrif416","other","account_type_posl_rashod",,,"Knjigovodstvene usluge","Knjigovodstvene usluge" +"4165","kp_rrif4165","kp_rrif416","other","account_type_posl_rashod",,,"Usluge poreznih savjetnika","Usluge poreznih savjetnika" +"4166","kp_rrif4166","kp_rrif416","other","account_type_posl_rashod",,,"Usluge revizije i procjene vrijednosti poduzeća","Usluge revizije i procjene vrijednosti poduzeća" +"4167","kp_rrif4167","kp_rrif416","other","account_type_posl_rashod",,,"Odvjetničke, bilježničke i usluge izrade pravnih akata","Odvjetničke, bilježničke i usluge izrade pravnih akata" +"4168","kp_rrif4168","kp_rrif416","other","account_type_posl_rashod",,,"Naknade za korištenje prava intelektualnog vlasništva (licencije, ind. prava., robni znak i sl.)","Naknade za korištenje prava intelektualnog vlasništva (licencije, ind. prava., robni znak i sl.)" +"4169","kp_rrif4169","kp_rrif416","other","account_type_posl_rashod",,,"Usluge vještačenja, administracijske usluge, i dr. intelektualne usluge","Usluge vještačenja, administracijske usluge, i dr. intelektualne usluge" +"417","kp_rrif417","kp_rrif41","view","account_type_view",,,"Troškovi komunalnih i sličnih usluga","Troškovi komunalnih i sličnih usluga" +"4170","kp_rrif4170","kp_rrif417","other","account_type_posl_rashod",,,"Komunalna naknada (za financ. izgradnje)","Komunalna naknada (za financ. izgradnje)" +"4171","kp_rrif4171","kp_rrif417","other","account_type_posl_rashod",,,"Odvoz smeća i fekalija","Odvoz smeća i fekalija" +"4172","kp_rrif4172","kp_rrif417","other","account_type_posl_rashod",,,"Voda i odvodnja","Voda i odvodnja" +"4173","kp_rrif4173","kp_rrif417","other","account_type_posl_rashod",,,"Održavanje zelenila","Održavanje zelenila" +"4174","kp_rrif4174","kp_rrif417","other","account_type_posl_rashod",,,"Usluge tržnica","Usluge tržnica" +"4175","kp_rrif4175","kp_rrif417","other","account_type_posl_rashod",,,"Garažiranje i parkiranje vozila","Garažiranje i parkiranje vozila" +"4176","kp_rrif4176","kp_rrif417","other","account_type_posl_rashod",,,"Deratizacija i dezinfekcijske usluge","Deratizacija i dezinfekcijske usluge" +"4177","kp_rrif4177","kp_rrif417","other","account_type_posl_rashod",,,"Dimnjačarske i ekološke usluge","Dimnjačarske i ekološke usluge" +"4178","kp_rrif4178","kp_rrif417","other","account_type_posl_rashod",,,"Veterinarske, sanitarne i usluge zbrinjavanja otpada","Veterinarske, sanitarne i usluge zbrinjavanja otpada" +"4179","kp_rrif4179","kp_rrif417","other","account_type_posl_rashod",,,"Ostale komunalne i ekološke usluge","Ostale komunalne i ekološke usluge" +"418","kp_rrif418","kp_rrif41","view","account_type_view",,,"Usluge reprezentacije - ugošćivanja i posredovanja","Usluge reprezentacije - ugošćivanja i posredovanja" +"4180","kp_rrif4180","kp_rrif418","other","account_type_posl_rashod",,,"70% vanjskih usluga ugošćenja (reprezentacije) + 70% PDV-a","70% vanjskih usluga ugošćenja (reprezentacije) + 70% PDV-a" +"4181","kp_rrif4181","kp_rrif418","other","account_type_posl_rashod",,,"30% vanjskih usluga ugošćenja (reprezentacije)","30% vanjskih usluga ugošćenja (reprezentacije)" +"4184","kp_rrif4184","kp_rrif418","other","account_type_posl_rashod",,,"Usluge posredovanja pri nabavi dobara i usluga","Usluge posredovanja pri nabavi dobara i usluga" +"4185","kp_rrif4185","kp_rrif418","other","account_type_posl_rashod",,,"Usluge posredovanja pri prodaji dobara i usluga","Usluge posredovanja pri prodaji dobara i usluga" +"4186","kp_rrif4186","kp_rrif418","other","account_type_posl_rashod",,,"Usluge agenata i detektiva","Usluge agenata i detektiva" +"4187","kp_rrif4187","kp_rrif418","other","account_type_posl_rashod",,,"Troškovi provizija za usluge","Troškovi provizija za usluge" +"419","kp_rrif419","kp_rrif41","view","account_type_view",,,"Troškovi ostalih vanjskih usluga","Troškovi ostalih vanjskih usluga" +"4190","kp_rrif4190","kp_rrif419","other","account_type_posl_rashod",,,"Usluge kontrole kakvoće i atestiranja dobara","Usluge kontrole kakvoće i atestiranja dobara" +"4191","kp_rrif4191","kp_rrif419","other","account_type_posl_rashod",,,"Usluge studentskog servisa","Usluge studentskog servisa" +"4192","kp_rrif4192","kp_rrif419","other","account_type_posl_rashod",,,"Hotelske usluge (u agencijskim poslovima)","Hotelske usluge (u agencijskim poslovima)" +"4193","kp_rrif4193","kp_rrif419","other","account_type_posl_rashod",,,"Vanjskotrgovačke usluge","Vanjskotrgovačke usluge" +"4194","kp_rrif4194","kp_rrif419","other","account_type_posl_rashod",,,"Špediterske usluge pri izvozu i sl.","Špediterske usluge pri izvozu i sl." +"4195","kp_rrif4195","kp_rrif419","other","account_type_posl_rashod",,,"Troškovi oglašavanja u tisku za slobodna radna mjesta, objava fin. izvješća i sl. (osim promidžbe)","Troškovi oglašavanja u tisku za slobodna radna mjesta, objava fin. izvješća i sl. (osim promidžbe)" +"4196","kp_rrif4196","kp_rrif419","other","account_type_posl_rashod",,,"Troškovi korištenja javnih skladišta, luka, pristaništa, hlađenja i sl.","Troškovi korištenja javnih skladišta, luka, pristaništa, hlađenja i sl." +"4197","kp_rrif4197","kp_rrif419","other","account_type_posl_rashod",,,"Trošak autoputa, tunela i mostarina","Trošak autoputa, tunela i mostarina" +"4198","kp_rrif4198","kp_rrif419","other","account_type_posl_rashod",,,"Troškovi fotokopiranja, prijepisa, izrade naljepnica i fotografija i sl.","Troškovi fotokopiranja, prijepisa, izrade naljepnica i fotografija i sl." +"4199","kp_rrif4199","kp_rrif419","other","account_type_posl_rashod",,,"Ostali nespomenuti vanjski troškovi - usluge","Ostali nespomenuti vanjski troškovi - usluge" +"42","kp_rrif42","kp_rrif4","view","account_type_view",,,"TROŠKOVI OSOBLJA - PLAĆE","TROŠKOVI OSOBLJA - PLAĆE" +"420","kp_rrif420","kp_rrif42","view","account_type_view",,,"Neto plaće i nadoknade","Neto plaće i nadoknade" +"4200","kp_rrif4200","kp_rrif420","other","account_type_posl_rashod",,,"Troškovi neto plaća uprave i prodaje","Troškovi neto plaća uprave i prodaje" +"4201","kp_rrif4201","kp_rrif420","other","account_type_posl_rashod",,,"Troškovi neto plaća proizvodnje","Troškovi neto plaća proizvodnje" +"4202","kp_rrif4202","kp_rrif420","other","account_type_posl_rashod",,,"Ostali povremeni primitci","Ostali povremeni primitci" +"421","kp_rrif421","kp_rrif42","view","account_type_view",,,"Troškovi poreza i prireza","Troškovi poreza i prireza" +"4210","kp_rrif4210","kp_rrif421","other","account_type_posl_rashod",,,"Uprava i prodaja","Uprava i prodaja" +"4211","kp_rrif4211","kp_rrif421","other","account_type_posl_rashod",,,"Proizvodnja","Proizvodnja" +"4212","kp_rrif4212","kp_rrif421","other","account_type_posl_rashod",,,"Ostali povremeni primitci","Ostali povremeni primitci" +"422","kp_rrif422","kp_rrif42","view","account_type_view",,,"Troškovi doprinosa iz plaća","Troškovi doprinosa iz plaća" +"4220","kp_rrif4220","kp_rrif422","other","account_type_posl_rashod",,,"Uprava i prodaja","Uprava i prodaja" +"4221","kp_rrif4221","kp_rrif422","other","account_type_posl_rashod",,,"Proizvodnja","Proizvodnja" +"4222","kp_rrif4222","kp_rrif422","other","account_type_posl_rashod",,,"Ostali povremeni primitci","Ostali povremeni primitci" +"423","kp_rrif423","kp_rrif42","view","account_type_view",,,"Doprinosi na plaće","Doprinosi na plaće" +"4230","kp_rrif4230","kp_rrif423","other","account_type_posl_rashod",,,"Uprava i prodaja","Uprava i prodaja" +"4231","kp_rrif4231","kp_rrif423","other","account_type_posl_rashod",,,"Proizvodnja","Proizvodnja" +"4232","kp_rrif4232","kp_rrif423","other","account_type_posl_rashod",,,"Ostali povremeni primitci","Ostali povremeni primitci - potpore i sl." +"4235","kp_rrif4235","kp_rrif423","other","account_type_posl_rashod",,,"Doprinosi za beneficirani radni staž","Doprinosi za beneficirani radni staž" +"424","kp_rrif424","kp_rrif42","view","account_type_view",,,"Bruto plaće (privremeno v. napom. 2)","Bruto plaće (privremeno v. napom. 2)" +"4240","kp_rrif4240","kp_rrif424","other","account_type_posl_rashod",,,"Bruto plaće (privremeno v. napom. 2)-a1","Bruto plaće (privremeno v. napom. 2)-Analitika 1" +"43","kp_rrif43","kp_rrif4","view","account_type_view",,,"AMORTIZACIJA","AMORTIZACIJA" +"430","kp_rrif430","kp_rrif43","view","account_type_view",,,"Amortizacija nematerijalne imovine","Amortizacija nematerijalne imovine" +"4300","kp_rrif4300","kp_rrif430","other","account_type_posl_rashod",,,"Amortizacija izdataka za razvoj","Amortizacija izdataka za razvoj" +"4301","kp_rrif4301","kp_rrif430","other","account_type_posl_rashod",,,"Amortizacija koncesije, patenata i dr. prava","Amortizacija koncesije, patenata i dr. prava" +"4302","kp_rrif4302","kp_rrif430","other","account_type_posl_rashod",,,"Amortizacija softvera i ost. prava","Amortizacija softvera i ost. prava" +"4303","kp_rrif4303","kp_rrif430","other","account_type_posl_rashod",,,"Amortizacija goodwila","Amortizacija goodwila" +"4304","kp_rrif4304","kp_rrif430","other","account_type_posl_rashod",,,"Amortizacija ostale nematerijalne imovine","Amortizacija ostale nematerijalne imovine" +"431","kp_rrif431","kp_rrif43","view","account_type_view",,,"Amortizacija materijalne imovine","Amortizacija materijalne imovine" +"4310","kp_rrif4310","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija građevina","Amortizacija građevina" +"4311","kp_rrif4311","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija postrojenja","Amortizacija postrojenja" +"4312","kp_rrif4312","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija opreme","Amortizacija opreme" +"4313","kp_rrif4313","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija alata i inventara","Amortizacija alata i inventara" +"4314","kp_rrif4314","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija transportnih sredstava","Amortizacija transportnih sredstava" +"4315","kp_rrif4315","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija brodova","Amortizacija brodova" +"4316","kp_rrif4316","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija poljoprivredne opreme","Amortizacija poljoprivredne opreme" +"4319","kp_rrif4319","kp_rrif431","other","account_type_posl_rashod",,,"Amortizacija ostale mater. imovine","Amortizacija ostale mater. imovine" +"432","kp_rrif432","kp_rrif43","view","account_type_view",,,"Amortizacija osobnih automobila i dr. sredstava za osobni prijevoz","Amortizacija osobnih automobila i dr. sredstava za osobni prijevoz" +"4320","kp_rrif4320","kp_rrif432","other","account_type_posl_rashod",,,"70% amortizacije osob. aut. i dr. sred. prijevoza","70% amortizacije osob. aut. i dr. sred. prijevoza" +"4321","kp_rrif4321","kp_rrif432","other","account_type_posl_rashod",,,"30% amortizacije osob. aut. i dr. sred. prijevoza","30% amortizacije osob. aut. i dr. sred. prijevoza" +"4322","kp_rrif4322","kp_rrif432","other","account_type_posl_rashod",,,"Dio amortizacije osob. aut. i dr. sred. prijevoza u vrijednosti iznad 400.000,00 kn","Dio amortizacije osob. aut. i dr. sred. prijevoza u vrijednosti iznad 400.000,00 kn" +"4323","kp_rrif4323","kp_rrif432","other","account_type_posl_rashod",,,"Amortizacija (otpis) nepriznatog PDV-a","Amortizacija (otpis) nepriznatog PDV-a" +"4324","kp_rrif4324","kp_rrif432","other","account_type_posl_rashod",,,"Amortiz. osob. aut. za sluč. plaće (neto + nepriz. PDV)","Amortiz. osob. aut. za sluč. plaće (neto + nepriz. PDV)" +"433","kp_rrif433","kp_rrif43","view","account_type_view",,,"Amortizacija objekata i opreme uprave i prodaje","Amortizacija objekata i opreme uprave i prodaje" +"4330","kp_rrif4330","kp_rrif433","other","account_type_posl_rashod",,,"Amortizacija građev. objekata","Amortizacija građev. objekata" +"4331","kp_rrif4331","kp_rrif433","other","account_type_posl_rashod",,,"Amortizacija računala, računalne opreme i programa te računalne mreže","Amortizacija računala, računalne opreme i programa te računalne mreže" +"4332","kp_rrif4332","kp_rrif433","other","account_type_posl_rashod",,,"Amortizacija osobnih automobila","Amortizacija osobnih automobila" +"4333","kp_rrif4333","kp_rrif433","other","account_type_posl_rashod",,,"Amortizacija ostale opreme (pokućstvo, telefonija i dr.)","Amortizacija ostale opreme (pokućstvo, telefonija i dr.)" +"434","kp_rrif434","kp_rrif43","view","account_type_view",,,"Povećana amortizacija s temelja revalorizacije","Povećana amortizacija s temelja revalorizacije" +"4340","kp_rrif4340","kp_rrif434","other","account_type_posl_rashod",,,"Povećana amortizacija s temelja revalorizacije-a1","Povećana amortizacija s temelja revalorizacije-Analitika 1" +"435","kp_rrif435","kp_rrif43","view","account_type_view",,,"Amortizacija biološke imovine (vinogradi, voćnjaci, osnovno stado i sl.)","Amortizacija biološke imovine (vinogradi, voćnjaci, osnovno stado i sl.)" +"4350","kp_rrif4350","kp_rrif435","other","account_type_posl_rashod",,,"Amortizacija biološke imovine (vinogradi, voćnjaci, osnovno stado i sl.)-a1","Amortizacija biološke imovine (vinogradi, voćnjaci, osnovno stado i sl.)-Analitika 1" +"436","kp_rrif436","kp_rrif43","view","account_type_view",,,"Amortizacija iznad porezno dopuštene","Amortizacija iznad porezno dopuštene" +"4360","kp_rrif4360","kp_rrif436","other","account_type_posl_rashod",,,"Amortizacija iznad porezno dopuštene-a1","Amortizacija iznad porezno dopuštene-Analitika 1" +"44","kp_rrif44","kp_rrif4","view","account_type_view",,,"VRIJEDNOSNO USKLAĐENJE DUGOTRAJNE I KRATKOTRAJNE IMOVINE","VRIJEDNOSNO USKLAĐENJE DUGOTRAJNE I KRATKOTRAJNE IMOVINE" +"440","kp_rrif440","kp_rrif44","view","account_type_view",,,"Vrijednosno usklađenje dugotrajne nematerijalne imovine (018)","Vrijednosno usklađenje dugotrajne nematerijalne imovine (018)" +"4400","kp_rrif4400","kp_rrif440","other","account_type_posl_rashod",,,"Vrijednosno usklađenje prava i dr.","Vrijednosno usklađenje prava i dr." +"4401","kp_rrif4401","kp_rrif440","other","account_type_posl_rashod",,,"Vrijednosno usklađenje goodwill","Vrijednosno usklađenje goodwill" +"4402","kp_rrif4402","kp_rrif440","other","account_type_posl_rashod",,,"Vrijednosno usklađenje ostale nemat. imov.","Vrijednosno usklađenje ostale nemat. imov." +"441","kp_rrif441","kp_rrif44","view","account_type_view",,,"Vrijednosno usklađenje dugotrajne materijalne imovine","Vrijednosno usklađenje dugotrajne materijalne imovine" +"4410","kp_rrif4410","kp_rrif441","other","account_type_posl_rashod",,,"Vrijednosno usklađenje nekretnina (028)","Vrijednosno usklađenje nekretnina (028)" +"4411","kp_rrif4411","kp_rrif441","other","account_type_posl_rashod",,,"Vrijednosno usklađenje postrojenja, opreme, alata, pogonskog inventara i transportne imovine (038)","Vrijednosno usklađenje postrojenja, opreme, alata, pogonskog inventara i transportne imovine (038)" +"4412","kp_rrif4412","kp_rrif441","other","account_type_posl_rashod",,,"Vrijednosno usklađenje biološke imovine (048)","Vrijednosno usklađenje biološke imovine (048)" +"4413","kp_rrif4413","kp_rrif441","other","account_type_posl_rashod",,,"Vrijednosno usklađenje ulaganja u nekretnine (058)","Vrijednosno usklađenje ulaganja u nekretnine (058)" +"4414","kp_rrif4414","kp_rrif441","other","account_type_posl_rashod",,,"Vrijednosno usklađenje ostale mater. imovine","Vrijednosno usklađenje ostale mater. imovine" +"442","kp_rrif442","kp_rrif44","view","account_type_view",,,"Vrijednosno usklađenje dugotrajnih potraživanja (veza sa 078)","Vrijednosno usklađenje dugotrajnih potraživanja (veza sa 078)" +"4420","kp_rrif4420","kp_rrif442","other","account_type_posl_rashod",,,"Vrijednosno usklađenje dugotrajnih potraživanja (veza sa 078)-a1","Vrijednosno usklađenje dugotrajnih potraživanja (veza sa 078)-Analitika 1" +"444","kp_rrif444","kp_rrif44","view","account_type_view",,,"Vrijednosno usklađenje depozita u bankama, mjenica, čekova i sl. (109 i dio 119)","Vrijednosno usklađenje depozita u bankama, mjenica, čekova i sl. (109 i dio 119)" +"4440","kp_rrif4440","kp_rrif444","other","account_type_posl_rashod",,,"Vrijednosno usklađenje depozita u bankama, mjenica, čekova i sl. (109 i dio 119)-a1","Vrijednosno usklađenje depozita u bankama, mjenica, čekova i sl. (109 i dio 119)-Analitika 1" +"445","kp_rrif445","kp_rrif44","view","account_type_view",,,"Vrijednosno usklađenje kratkotrajnih potraživanja","Vrijednosno usklađenje kratkotrajnih potraživanja" +"4450","kp_rrif4450","kp_rrif445","other","account_type_posl_rashod",,,"Vrijednosna usklađenja potraživanja od kupaca nenaplaćena dulje od 120 dana od dospijeća (veza s 129)","Vrijednosna usklađenja potraživanja od kupaca koja nisu naplaćena dulje od 120 dana od dospijeća (veza s 129)" +"4451","kp_rrif4451","kp_rrif445","other","account_type_posl_rashod",,,"Vrijed. usklađenja utuženih kratk. pot. do 5000,00kn (prije zastare,ovršni,stečaj i sl.-dio129,139i159)","Vrijednosna usklađenja kratkoročnih potraživanja od kupaca i drugih koja su utužena (prije zastare, koja su u ovršnom postupku, otvoren je stečaj, nagodba i sl. - dio 129, 139 i 159) i svote do 5.000,00 kn" +"4452","kp_rrif4452","kp_rrif445","other","account_type_posl_rashod",,,"Vrijednosna usklađenja zastarjelih potraživanja (dio sa 129, 139 i 159) - porezno nepriznata","Vrijednosna usklađenja zastarjelih potraživanja (dio sa 129, 139 i 159) - porezno nepriznata" +"446","kp_rrif446","kp_rrif44","view","account_type_view",,,"Vrijednosno usklađenje zaliha (veza s 319, 329, 359 i 369)","Vrijednosno usklađenje zaliha (veza s 319, 329, 359 i 369)" +"4460","kp_rrif4460","kp_rrif446","other","account_type_posl_rashod",,,"Vrijednosno usklađenje zaliha (veza s 319, 329, 359 i 369)-a1","Vrijednosno usklađenje zaliha (veza s 319, 329, 359 i 369)-Analitika 1" +"447","kp_rrif447","kp_rrif44","view","account_type_view",,,"Vrijednosno usklađenje danih predujmova (veza s 379)","Vrijednosno usklađenje danih predujmova (veza s 379)" +"4470","kp_rrif4470","kp_rrif447","other","account_type_posl_rashod",,,"Vrijednosno usklađenje danih predujmova (veza s 379)-a1","Vrijednosno usklađenje danih predujmova (veza s 379)-Analitika 1" +"45","kp_rrif45","kp_rrif4","view","account_type_view",,,"REZERVIRANJA (v. skupinu 28)","REZERVIRANJA (v. skupinu 28)" +"450","kp_rrif450","kp_rrif45","view","account_type_view",,,"Troškovi dugoročnog rezerviranja za rizike u jamstvenom (garancijskom) roku (čl. 11., st. 2. ZoPD)","Troškovi dugoročnog rezerviranja za rizike u jamstvenom (garancijskom) roku (čl. 11., st. 2. ZoPD)" +"4500","kp_rrif4500","kp_rrif450","other","account_type_posl_rashod",,,"Troškovi dugoročnog rezerviranja za rizike u jamstvenom (garancijskom) roku (čl. 11., st. 2. ZoPD)-a1","Troškovi dugoročnog rezerviranja za rizike u jamstvenom (garancijskom) roku (čl. 11., st. 2. ZoPD)-Analitika 1" +"451","kp_rrif451","kp_rrif45","view","account_type_view",,,"Troškovi dugoročnog rezerviranja za gubitke po započetim sudskim sporovima (čl. 11., st. 2. ZoPD)","Troškovi dugoročnog rezerviranja za gubitke po započetim sudskim sporovima (čl. 11., st. 2. ZoPD)" +"4510","kp_rrif4510","kp_rrif451","other","account_type_posl_rashod",,,"Troškovi dugoročnog rezerviranja za gubitke po započetim sudskim sporovima (čl. 11., st. 2. ZoPD)-a1","Troškovi dugoročnog rezerviranja za gubitke po započetim sudskim sporovima (čl. 11., st. 2. ZoPD)-Analitika 1" +"452","kp_rrif452","kp_rrif45","view","account_type_view",,,"Troškovi dugoročnog rezerviranja za obnovu prirodnog bogatstva (čl. 11., st. 2. ZoPD)","Troškovi dugoročnog rezerviranja za obnovu prirodnog bogatstva (čl. 11., st. 2. ZoPD)" +"4520","kp_rrif4520","kp_rrif452","other","account_type_posl_rashod",,,"Troškovi dugoročnog rezerviranja za obnovu prirodnog bogatstva (čl. 11., st. 2. ZoPD)-a1","Troškovi dugoročnog rezerviranja za obnovu prirodnog bogatstva (čl. 11., st. 2. ZoPD)-Analitika 1" +"453","kp_rrif453","kp_rrif45","view","account_type_view",,,"Troškovi dugoročnog rezerviranja za otpremnine (čl. 11., st. 2. ZoPD)","Troškovi dugoročnog rezerviranja za otpremnine (čl. 11., st. 2. ZoPD)" +"4530","kp_rrif4530","kp_rrif453","other","account_type_posl_rashod",,,"Troškovi dugoročnog rezerviranja za otpremnine (čl. 11., st. 2. ZoPD)-a1","Troškovi dugoročnog rezerviranja za otpremnine (čl. 11., st. 2. ZoPD)-Analitika 1" +"454","kp_rrif454","kp_rrif45","view","account_type_view",,,"Troškovi dugoroč. rez. za neiskorišteni godišnji odmor (čl. 11., st. 5. ZoPD i MRS 19) - vidi rač. 298","Troškovi dugoroč. rez. za neiskorišteni godišnji odmor (čl. 11., st. 5. ZoPD i MRS 19) - vidi rač. 298" +"4540","kp_rrif4540","kp_rrif454","other","account_type_posl_rashod",,,"Troškovi dugoroč. rez. za neiskorišteni godišnji odmor (čl. 11., st. 5. ZoPD i MRS 19) - vidi rač. 298-a1","Troškovi dugoroč. rez. za neiskorišteni godišnji odmor (čl. 11., st. 5. ZoPD i MRS 19) - vidi rač. 298-Analitika 1" +"455","kp_rrif455","kp_rrif45","view","account_type_view",,,"Troškovi dugoročnog rezerviranja za restrukturiranje poduzeća (MRS 37, t. 72. i HSFI t. 16.22)","Troškovi dugoročnog rezerviranja za restrukturiranje poduzeća (MRS 37, t. 72. i HSFI t. 16.22)" +"4550","kp_rrif4550","kp_rrif455","other","account_type_posl_rashod",,,"Troškovi dugoročnog rezerviranja za restrukturiranje poduzeća (MRS 37, t. 72. i HSFI t. 16.22)-a1","Troškovi dugoročnog rezerviranja za restrukturiranje poduzeća (MRS 37, t. 72. i HSFI t. 16.22)-Analitika 1" +"456","kp_rrif456","kp_rrif45","view","account_type_view",,,"Troškovi dugoročnog rezerviranja za mirovine i slične troškove - obveze (MRS 19)","Troškovi dugoročnog rezerviranja za mirovine i slične troškove - obveze (MRS 19)" +"4560","kp_rrif4560","kp_rrif456","other","account_type_posl_rashod",,,"Troškovi dugoročnog rezerviranja za mirovine i slične troškove - obveze (MRS 19)-a1","Troškovi dugoročnog rezerviranja za mirovine i slične troškove - obveze (MRS 19)-Analitika 1" +"457","kp_rrif457","kp_rrif45","view","account_type_view",,,"Troškovi rezerviranja po štetnim ugovorima (HSFI 16.21.)","Troškovi rezerviranja po štetnim ugovorima (HSFI 16.21.)" +"4570","kp_rrif4570","kp_rrif457","other","account_type_posl_rashod",,,"Troškovi rezerviranja po štetnim ugovorima (HSFI 16.21.)-a1","Troškovi rezerviranja po štetnim ugovorima (HSFI 16.21.)-Analitika 1" +"459","kp_rrif459","kp_rrif45","view","account_type_view",,,"Troškovi ostalih dugoročnih rezerviranja i troškovi rizika","Troškovi ostalih dugoročnih rezerviranja i troškovi rizika" +"4590","kp_rrif4590","kp_rrif459","other","account_type_posl_rashod",,,"Troškovi ostalih dugoročnih rezerviranja i troškovi rizika-a1","Troškovi ostalih dugoročnih rezerviranja i troškovi rizika-Analitika 1" +"46","kp_rrif46","kp_rrif4","view","account_type_view",,,"OSTALI TROŠKOVI POSLOVANJA","OSTALI TROŠKOVI POSLOVANJA" +"460","kp_rrif460","kp_rrif46","view","account_type_view",,,"Dnevnice za službena putovanja i putni troškovi","Dnevnice za službena putovanja i putni troškovi" +"4600","kp_rrif4600","kp_rrif460","other","account_type_posl_rashod",,,"Dnevnice za službena putovanja i troškovi noćenja u Hrvatskoj","Dnevnice za službena putovanja i troškovi noćenja u Hrvatskoj" +"4601","kp_rrif4601","kp_rrif460","other","account_type_posl_rashod",,,"Dnevnice za službena putovanja u inozemstvu","Dnevnice za službena putovanja u inozemstvu" +"4602","kp_rrif4602","kp_rrif460","other","account_type_posl_rashod",,,"Troškovi uporabe vlastitog automobila na službenom putu","Troškovi uporabe vlastitog automobila na službenom putu" +"4603","kp_rrif4603","kp_rrif460","other","account_type_posl_rashod",,,"Terenski dodatak - pomorski dodatak","Terenski dodatak - pomorski dodatak" +"4604","kp_rrif4604","kp_rrif460","other","account_type_posl_rashod",,,"Doprinos za zdravstveno osiguranje na službena putovanja u inozemstvo","Doprinos za zdravstveno osiguranje na službena putovanja u inozemstvo" +"4605","kp_rrif4605","kp_rrif460","other","account_type_posl_rashod",,,"Troškovi noćenja (po računu hotela i dr.)","Troškovi noćenja (po računu hotela i dr.)" +"4606","kp_rrif4606","kp_rrif460","other","account_type_posl_rashod",,,"Ostali troškovi na službenom putu (trošak autoceste, tunela, parkiranja, trajekta i dr.)","Ostali troškovi na službenom putu (trošak autoceste, tunela, parkiranja, trajekta i dr.)" +"4607","kp_rrif4607","kp_rrif460","other","account_type_posl_rashod",,,"Troškovi službenog puta vanjskih suradnika (bruto s porezima i doprinosima)","Troškovi službenog puta vanjskih suradnika (bruto s porezima i doprinosima)" +"461","kp_rrif461","kp_rrif46","view","account_type_view",,,"Nadoknade troškova, darovi i potpore","Nadoknade troškova, darovi i potpore" +"4610","kp_rrif4610","kp_rrif461","other","account_type_posl_rashod",,,"Troškovi prijevoza na posao i s posla","Troškovi prijevoza na posao i s posla" +"4611","kp_rrif4611","kp_rrif461","other","account_type_posl_rashod",,,"Loko vožnja - Nadoknada za uporabu privatnog automobila u poslovne svrhe za lokalnu vožnju","Nadoknada za uporabu privatnog automobila u poslovne svrhe za lokalnu vožnju" +"4612","kp_rrif4612","kp_rrif461","other","account_type_posl_rashod",,,"Nadoknade za odvojeni život","Nadoknade za odvojeni život" +"4613","kp_rrif4613","kp_rrif461","view","account_type_view",,,"Stipendije, nagrade učenicima i studentima","Stipendije, nagrade učenicima i studentima" +"46130","kp_rrif46130","kp_rrif4613","other","account_type_posl_rashod",,,"Stipendije i nagrade učenicima i studentima do neoporezivih svota","Stipendije i nagrade učenicima i studentima do neoporezivih svota" +"46131","kp_rrif46131","kp_rrif4613","other","account_type_posl_rashod",,,"Stipendije i nagrade učenicima i studentima iznad neoporezivih svota","Stipendije i nagrade učenicima i studentima iznad neoporezivih svota" +"4614","kp_rrif4614","kp_rrif461","other","account_type_posl_rashod",,,"Otpremnine (odlazak u mirovinu, otkaz i teh.viška-čl.119.ZOR-a,ozljeda ili prof.bolesti (čl.80.ZOR-a)","Otpremnine (zbog odlaska radnika u mirovinu i otpremnine zbog danih otkaza i tehnološkog viška - čl. 119. ZOR-a, te otpremnine zbog ozljede ili profesionalne bolesti (čl. 80. ZOR-a)" +"4615","kp_rrif4615","kp_rrif461","other","account_type_posl_rashod",,,"Darovi djeci i slične potpore (ako nisu dohodak)","Darovi djeci i slične potpore (ako nisu dohodak)" +"4616","kp_rrif4616","kp_rrif461","other","account_type_posl_rashod",,,"Prigodne nagrade (božićnice,uskrsnice,u naravi do 400kn, regres, jubilarne i sl., do 2500kn god.)","Prigodne nagrade (božićnice, uskrsnice, dar u naravi (do 400,00 kn god., regres za god. odmor, jubilarne nagrade i sl., do 2.500,00 kn god.)" +"4617","kp_rrif4617","kp_rrif461","other","account_type_posl_rashod",,,"Potpora zbog bolesti, invalidnosti, smrti, elementarnih nepogoda i sl.","Potpora zbog bolesti, invalidnosti, smrti, elementarnih nepogoda i sl." +"4618","kp_rrif4618","kp_rrif461","other","account_type_posl_rashod",,,"Potpore i pomoći iznad neoporezivih svota","Potpore i pomoći iznad neoporezivih svota" +"4619","kp_rrif4619","kp_rrif461","other","account_type_posl_rashod",,,"Ostali troškovi zaposlenika","Ostali troškovi zaposlenika" +"462","kp_rrif462","kp_rrif46","view","account_type_view",,,"Troškovi članova uprave","Troškovi članova uprave" +"4620","kp_rrif4620","kp_rrif462","other","account_type_posl_rashod",,,"Nadoknade članovima nadzornog odbora","Nadoknade članovima nadzornog odbora" +"4621","kp_rrif4621","kp_rrif462","other","account_type_posl_rashod",,,"Nadoknade vanjskim članovima uprave","Nadoknade vanjskim članovima uprave" +"4622","kp_rrif4622","kp_rrif462","other","account_type_posl_rashod",,,"Nadoknade stečajnim upraviteljima","Nadoknade stečajnim upraviteljima" +"4623","kp_rrif4623","kp_rrif462","other","account_type_posl_rashod",,,"Nadoknade prokuristima, članovima skupštine društva i dr.","Nadoknade prokuristima, članovima skupštine društva i dr." +"4624","kp_rrif4624","kp_rrif462","other","account_type_posl_rashod",,,"Troškovi usluga vanjske uprave (po računu)","Troškovi usluga vanjske uprave (po računu)" +"4625","kp_rrif4625","kp_rrif462","other","account_type_posl_rashod",,,"Troškovi honorara vanjskim članovima uprave","Troškovi honorara vanjskim članovima uprave" +"4626","kp_rrif4626","kp_rrif462","other","account_type_posl_rashod",,,"Godišnje nagrade članovima uprave","Godišnje nagrade članovima uprave" +"463","kp_rrif463","kp_rrif46","view","account_type_view",,,"Troškovi reprezentacije i promidžbe (interne)","Troškovi reprezentacije i promidžbe (interne)" +"4630","kp_rrif4630","kp_rrif463","other","account_type_posl_rashod",,,"70% troškova reprezentacije u darovima (robi i proizvodima + 70% PDV-a","70% troškova reprezentacije u darovima (robi i proizvodima + 70% PDV-a" +"4631","kp_rrif4631","kp_rrif463","other","account_type_posl_rashod",,,"70% troškova vlastitih usluga za reprezentaciju + 70% PDV-a","70% troškova vlastitih usluga za reprezentaciju + 70% PDV-a" +"4632","kp_rrif4632","kp_rrif463","other","account_type_posl_rashod",,,"70% troškova reprezentacije od uporabe vlastitih brodova, automobila, nekretnina i sl. + 70% PDV-a","70% troškova reprezentacije od uporabe vlastitih brodova, automobila, nekretnina i sl. + 70% PDV-a" +"4633","kp_rrif4633","kp_rrif463","other","account_type_posl_rashod",,,"30% od svih neto-troškova reprezentacije (vlastitih)","30% od svih neto-troškova reprezentacije (vlastitih)" +"4635","kp_rrif4635","kp_rrif463","other","account_type_posl_rashod",,,"Troškovi promidžbe (u katalozima, letcima, nagradne igre)","Troškovi promidžbe (u katalozima, letcima, nagradne igre)" +"4636","kp_rrif4636","kp_rrif463","other","account_type_posl_rashod",,,"Troškovi promidžbe u proizvodima ili robi (""nije za prodaju"" do 80,00 kn )","Troškovi promidžbe u proizvodima ili robi (s oznakom ""nije za prodaju"" s nazivom tvrtke ili proizvoda pojedinačne vrijedn. do 80,00 kn - čaše, pepeljare, stoljnjaci, podmetači, olovke, rokovnici, upaljači, privjesci i sl.)" +"464","kp_rrif464","kp_rrif46","view","account_type_view",,,"Premije osiguranja","Premije osiguranja" +"4640","kp_rrif4640","kp_rrif464","other","account_type_posl_rashod",,,"Troškovi osiguranja dugotrajne materijalne i nematerijalne imovine","Troškovi osiguranja dugotrajne materijalne i nematerijalne imovine" +"4641","kp_rrif4641","kp_rrif464","other","account_type_posl_rashod",,,"Premije osiguranja osoba (opasni poslovi, prenošenje novca, putnici i sl.)","Premije osiguranja osoba (opasni poslovi, prenošenje novca, putnici i sl.)" +"4642","kp_rrif4642","kp_rrif464","other","account_type_posl_rashod",,,"Premije osiguranja prometnih sredstava (uključivo i kasko)","Premije osiguranja prometnih sredstava (uključivo i kasko)" +"4643","kp_rrif4643","kp_rrif464","other","account_type_posl_rashod",,,"Transportno osiguranje dobara","Transportno osiguranje dobara" +"4644","kp_rrif4644","kp_rrif464","other","account_type_posl_rashod",,,"Premije za zdravstveno osiguranje","Premije za zdravstveno osiguranje" +"4645","kp_rrif4645","kp_rrif464","other","account_type_posl_rashod",,,"Troškovi premija životnog osiguranja (ugovaratelj i korisnik je trgovačko društvo)","Troškovi premija životnog osiguranja (ugovaratelj i korisnik je trgovačko društvo)" +"4646","kp_rrif4646","kp_rrif464","other","account_type_posl_rashod",,,"Premije dobrovoljnog mirov. osig. (do 6000kn god. po radniku-čl.10.Zak. o porezu na dohodak -NN80/10)","Premije dobrovoljnog mirov. osig. (do 6.000 kn godišnje po radniku - čl. 10. Zak. o porezu na dohodak - Nar. nov., br. 80/10.)" +"4647","kp_rrif4647","kp_rrif464","other","account_type_posl_rashod",,,"Premije za dokup mirovine zaposlenicima (III. stup) MRS 19 t. 43. i 44.","Premije za dokup mirovine zaposlenicima (III. stup) MRS 19 t. 43. i 44." +"4649","kp_rrif4649","kp_rrif464","other","account_type_posl_rashod",,,"Premije za ostale oblike osiguranja","Premije za ostale oblike osiguranja" +"465","kp_rrif465","kp_rrif46","view","account_type_view",,,"Bankovne usluge i troškovi platnog prometa","Bankovne usluge i troškovi platnog prometa" +"4650","kp_rrif4650","kp_rrif465","other","account_type_posl_rashod",,,"Troškovi platnog prometa","Troškovi platnog prometa" +"4651","kp_rrif4651","kp_rrif465","other","account_type_posl_rashod",,,"Troškovi provizija (pri kupnji deviza, brokeru i dr.)","Troškovi provizija (pri kupnji deviza, brokeru i dr.)" +"4652","kp_rrif4652","kp_rrif465","other","account_type_posl_rashod",,,"Bankovne usluge (za inozemni platni promet, tečajnu maržu i sl.)","Bankovne usluge (za inozemni platni promet, tečajnu maržu i sl.)" +"4653","kp_rrif4653","kp_rrif465","other","account_type_posl_rashod",,,"Troškovi provizija izdavatelja kreditnih kartica","Troškovi provizija izdavatelja kreditnih kartica" +"4654","kp_rrif4654","kp_rrif465","other","account_type_posl_rashod",,,"Troškovi obrade kredita","Troškovi obrade kredita" +"4655","kp_rrif4655","kp_rrif465","other","account_type_posl_rashod",,,"Troškovi akreditiva","Troškovi akreditiva" +"4656","kp_rrif4656","kp_rrif465","other","account_type_posl_rashod",,,"Troškovi bankovne garancije","Troškovi bankovne garancije" +"4657","kp_rrif4657","kp_rrif465","other","account_type_posl_rashod",,,"Ostali bankovni troškovi","Ostali bankovni troškovi" +"466","kp_rrif466","kp_rrif46","view","account_type_view",,,"Članarine, nadoknade i slična davanja","Članarine, nadoknade i slična davanja" +"4660","kp_rrif4660","kp_rrif466","other","account_type_posl_rashod",,,"Članarine komori (HGK ili HOK) i dopr. za javne ovlasti","Članarine komori (HGK ili HOK) i dopr. za javne ovlasti" +"4661","kp_rrif4661","kp_rrif466","other","account_type_posl_rashod",,,"Članarine udrugama i strukovnim komorama","Članarine udrugama i strukovnim komorama" +"4662","kp_rrif4662","kp_rrif466","other","account_type_posl_rashod",,,"Nadoknada za općekorisnu funkciju šuma (0,0525%)","Nadoknada za općekorisnu funkciju šuma (0,0525%)" +"4663","kp_rrif4663","kp_rrif466","other","account_type_posl_rashod",,,"Članarina turističkoj zajednici","Članarina turističkoj zajednici" +"4664","kp_rrif4664","kp_rrif466","other","account_type_posl_rashod",,,"Nadoknada za korištenje mineralnih sirovina","Nadoknada za korištenje mineralnih sirovina" +"4665","kp_rrif4665","kp_rrif466","other","account_type_posl_rashod",,,"Pričuva za održavanje zgrade (Zakon o vlasništvu - Nar. nov., br. 91/96. do 38/09.)","Pričuva za održavanje zgrade (Zakon o vlasništvu - Nar. nov., br. 91/96. do 38/09.)" +"4666","kp_rrif4666","kp_rrif466","other","account_type_posl_rashod",,,"Dozvole za korištenje autocesta, atesta, certifikata i sl.","Dozvole za korištenje autocesta, atesta, certifikata i sl." +"4667","kp_rrif4667","kp_rrif466","other","account_type_posl_rashod",,,"Članarina za kreditne i potrošačke kartice","Članarina za kreditne i potrošačke kartice" +"4668","kp_rrif4668","kp_rrif466","other","account_type_posl_rashod",,,"Spomenička renta","Spomenička renta" +"4669","kp_rrif4669","kp_rrif466","other","account_type_posl_rashod",,,"Ostala davanja","Ostala davanja" +"467","kp_rrif467","kp_rrif46","view","account_type_view",,,"Porezi koji ne ovise o dobitku i pristojbe","Porezi koji ne ovise o dobitku i pristojbe" +"4670","kp_rrif4670","kp_rrif467","other","account_type_posl_rashod",,,"Porez na tvrtku odnosno naziv","Porez na tvrtku odnosno naziv" +"4671","kp_rrif4671","kp_rrif467","other","account_type_posl_rashod",,,"Porez (imovinski) na cestovna vozila, plovne objekte i zrakoplove","Porez (imovinski) na cestovna vozila, plovne objekte i zrakoplove" +"4672","kp_rrif4672","kp_rrif467","other","account_type_posl_rashod",,,"Porez na reklame koje se ističu na javnim mjestima","Porez na reklame koje se ističu na javnim mjestima" +"4673","kp_rrif4673","kp_rrif467","other","account_type_posl_rashod",,,"Naknade Fondu za ambalažu (prema materijalu, po jed. proizv., povratna i poticajna ambalaža)","Naknade Fondu za ambalažu (prema materijalu, po jed. proizv., povratna i poticajna ambalaža)" +"4674","kp_rrif4674","kp_rrif467","other","account_type_posl_rashod",,,"Porez na kuće za odmor","Porez na kuće za odmor" +"4675","kp_rrif4675","kp_rrif467","other","account_type_posl_rashod",,,"Trošak poreza koji je ugovorno preuzet pri prodaji (npr. 5% p.p.n.)","Trošak poreza koji je ugovorno preuzet pri prodaji (npr. 5% p.p.n.)" +"4676","kp_rrif4676","kp_rrif467","view","account_type_view",,,"Trošak PDV-a koji se ne može priznati","Trošak PDV-a koji se ne može priznati" +"46760","kp_rrif46760","kp_rrif4676","other","account_type_posl_rashod",,,"Trošak PDV-a iz vlastite potrošnje (ako već nije sadržan u trošku)","Trošak PDV-a iz vlastite potrošnje (ako već nije sadržan u trošku)" +"46761","kp_rrif46761","kp_rrif4676","other","account_type_posl_rashod",,,"Trošak PDV-a za koji je prestalo pravo na pretporez","Trošak PDV-a za koji je prestalo pravo na pretporez" +"46762","kp_rrif46762","kp_rrif4676","other","account_type_posl_rashod",,,"30% PDV-a na osobne automobile i dr. sredstva osobnog prijevoza","30% PDV-a na osobne automobile i dr. sredstva osobnog prijevoza" +"46763","kp_rrif46763","kp_rrif4676","other","account_type_posl_rashod",,,"PDV na osobne automobile i dr. sred. prijevoza na dio n. v. iznad 400.000,00 kn","PDV na osobne automobile i dr. sred. prijevoza na dio n. v. iznad 400.000,00 kn" +"4677","kp_rrif4677","kp_rrif467","other","account_type_posl_rashod",,,"Porez po odbitku","Porez po odbitku" +"4678","kp_rrif4678","kp_rrif467","other","account_type_posl_rashod",,,"Troškovi naknadno utvrđenih poreza (npr. PDV, posebni i dr. porezi, osim poreza na dobitak)","Troškovi naknadno utvrđenih poreza (npr. PDV, posebni i dr. porezi, osim poreza na dobitak)" +"4679","kp_rrif4679","kp_rrif467","view","account_type_posl_rashod",,,"Ostali porezi i pristojbe","Ostali porezi i pristojbe" +"46790","kp_rrif46790","kp_rrif4679","other","account_type_posl_rashod",,,"Porez i carina pri izvozu","Porez i carina pri izvozu" +"468","kp_rrif468","kp_rrif46","view","account_type_view",,,"Troškovi prava korištenja (osim najmova)","Troškovi prava korištenja (osim najmova)" +"4680","kp_rrif4680","kp_rrif468","other","account_type_posl_rashod",,,"Troškovi koncesije","Troškovi koncesije" +"4681","kp_rrif4681","kp_rrif468","other","account_type_posl_rashod",,,"Troškovi franšiza, know howa, patenata, uporabe imena, znaka i dr.","Troškovi franšiza, know howa, patenata, uporabe imena, znaka i dr." +"4682","kp_rrif4682","kp_rrif468","other","account_type_posl_rashod",,,"Troškovi prava na proizvodni i sl. postupak","Troškovi prava na proizvodni i sl. postupak" +"4683","kp_rrif4683","kp_rrif468","other","account_type_posl_rashod",,,"Trošak prava na model, nacrt, formulu, plan, iskustvo i sl.","Trošak prava na model, nacrt, formulu, plan, iskustvo i sl." +"4684","kp_rrif4684","kp_rrif468","other","account_type_posl_rashod",,,"Trošak HRT pretplate","Trošak HRT pretplate" +"4685","kp_rrif4685","kp_rrif468","other","account_type_posl_rashod",,,"Troškovi licenciranih prava","Troškovi licenciranih prava" +"4686","kp_rrif4686","kp_rrif468","other","account_type_posl_rashod",,,"Troškovi prava uporabe računalnih programa","Troškovi prava uporabe računalnih programa" +"4689","kp_rrif4689","kp_rrif468","other","account_type_posl_rashod",,,"Ostali troškovi prava korištenja","Ostali troškovi prava korištenja" +"469","kp_rrif469","kp_rrif46","view","account_type_view",,,"Ostali troškovi poslovanja - nematerijalni","Ostali troškovi poslovanja - nematerijalni" +"4690","kp_rrif4690","kp_rrif469","view","account_type_view",,,"Troškovi obrazovanja zaposlenika (stručno, seminari, stručni ispiti,prekval., fakulteti, jezici i sl.)","Troškovi obrazovanja i izobrazbe zaposlenika (stručno obrazovanje, seminari, simpoziji, stručni ispiti, stručno usavršavanje, prekvalifikacije, fakulteti, poslijediplomski, doktorati, učenje jezika i sl.)" +"46900","kp_rrif46900","kp_rrif4690","other","account_type_posl_rashod",,,"Opće obrazovanje","Opće obrazovanje" +"46901","kp_rrif46901","kp_rrif4690","other","account_type_posl_rashod",,,"Posebno obrazovanje","Posebno obrazovanje" +"4691","kp_rrif4691","kp_rrif469","other","account_type_posl_rashod",,,"Troškovi za priručnike, časopise i stručnu literaturu","Troškovi za priručnike, časopise i stručnu literaturu" +"4692","kp_rrif4692","kp_rrif469","other","account_type_posl_rashod",,,"Troškovi službenih glasila","Troškovi službenih glasila" +"4693","kp_rrif4693","kp_rrif469","other","account_type_posl_rashod",,,"Sudski troškovi i pristojbe","Sudski troškovi i pristojbe" +"4694","kp_rrif4694","kp_rrif469","other","account_type_posl_rashod",,,"Troškovi zdravstvenog nadzora i kontrola proizvoda, robe, usluge i sl.","Troškovi zdravstvenog nadzora i kontrola proizvoda, robe, usluge i sl." +"4695","kp_rrif4695","kp_rrif469","other","account_type_posl_rashod",,,"Troškovi obveznih liječničkih pregleda","Troškovi obveznih liječničkih pregleda" +"4696","kp_rrif4696","kp_rrif469","other","account_type_posl_rashod",,,"Troškovi sistematskih kontrolnih liječničkih pregleda zaposlenika","Troškovi sistematskih kontrolnih liječničkih pregleda zaposlenika" +"4697","kp_rrif4697","kp_rrif469","other","account_type_posl_rashod",,,"Troškovi osnivanja (bilježnik, sud, oglasi, odvjetnik)","Troškovi osnivanja (bilježnik, sud, oglasi, odvjetnik)" +"4698","kp_rrif4698","kp_rrif469","other","account_type_posl_rashod",,,"Troškovi licenciranja, certifikata i sl.","Troškovi licenciranja, certifikata i sl." +"4699","kp_rrif4699","kp_rrif469","other","account_type_posl_rashod",,,"Ostali nespomenuti nematerijalni troškovi (ulaznice za sajmove i dr.)","Ostali nespomenuti nematerijalni troškovi (ulaznice za sajmove i dr.)" +"47","kp_rrif47","kp_rrif4","view","account_type_view",,,"FINANCIJSKI RASHODI","FINANCIJSKI RASHODI" +"470","kp_rrif470","kp_rrif47","view","account_type_view",,,"Kamate od povezanih društava","Kamate od povezanih društava" +"4700","kp_rrif4700","kp_rrif470","other","account_type_posl_rashod",,,"Ugovorene kamate","Ugovorene kamate" +"4701","kp_rrif4701","kp_rrif470","other","account_type_posl_rashod",,,"Zatezne kamate (čl. 7., st. 1., t. 9. ZoPD)","Zatezne kamate (čl. 7., st. 1., t. 9. ZoPD)" +"4702","kp_rrif4702","kp_rrif470","other","account_type_posl_rashod",,,"Kamate - porezno nepriznate","Kamate - porezno nepriznate" +"4703","kp_rrif4703","kp_rrif470","other","account_type_posl_rashod",,,"Kamate koje se uračunavaju u zalihe (MRS 23. t.11. i HSFI t. 10.22.)","Kamate koje se uračunavaju u zalihe (MRS 23. t.11. i HSFI t. 10.22.)" +"471","kp_rrif471","kp_rrif47","view","account_type_view",,,"Tečajne razlike iz odnosa s povezanim društvima","Tečajne razlike iz odnosa s povezanim društvima" +"4710","kp_rrif4710","kp_rrif471","other","account_type_posl_rashod",,,"Tečajne razlike iz odnosa s povezanim društvima-a1","Tečajne razlike iz odnosa s povezanim društvima-Analitika 1" +"472","kp_rrif472","kp_rrif47","view","account_type_view",,,"Ostali troškovi iz odnosa s povezanim poduzetnicima","Ostali troškovi iz odnosa s povezanim poduzetnicima" +"4720","kp_rrif4720","kp_rrif472","other","account_type_posl_rashod",,,"Rashodi financiranja, troškovi popusta i naknadnih odobrenja s povezanim poduzetnicima","Rashodi financiranja, troškovi popusta i naknadnih odobrenja s povezanim poduzetnicima" +"4721","kp_rrif4721","kp_rrif472","other","account_type_posl_rashod",,,"Troškovi usluga uprave koncerna i sl.","Troškovi usluga uprave koncerna i sl." +"473","kp_rrif473","kp_rrif47","view","account_type_view",,,"Kamate iz odnosa s nepovezanim društvima","Kamate iz odnosa s nepovezanim društvima" +"4730","kp_rrif4730","kp_rrif473","other","account_type_posl_rashod",,,"Kamate na kredite banaka","Kamate na kredite banaka" +"4731","kp_rrif4731","kp_rrif473","other","account_type_posl_rashod",,,"Kamate iz lizing poslova","Kamate iz lizing poslova" +"4732","kp_rrif4732","kp_rrif473","other","account_type_posl_rashod",,,"Kamate na zajmove pravnih osoba","Kamate na zajmove pravnih osoba" +"4733","kp_rrif4733","kp_rrif473","other","account_type_posl_rashod",,,"Kamata na pozajmice članova društva i dioničara","Kamata na pozajmice članova društva i dioničara" +"4734","kp_rrif4734","kp_rrif473","other","account_type_posl_rashod",,,"Kamate na zajmove od fizičkih osoba","Kamate na zajmove od fizičkih osoba" +"4735","kp_rrif4735","kp_rrif473","other","account_type_posl_rashod",,,"Diskontne kamate po mjenicama i dr. vrijednosnim papirima","Diskontne kamate po mjenicama i dr. vrijednosnim papirima" +"474","kp_rrif474","kp_rrif47","view","account_type_view",,,"Zatezne kamate","Zatezne kamate" +"4740","kp_rrif4740","kp_rrif474","other","account_type_posl_rashod",,,"Zatezne kamate iz trgovačkih ugovora","Zatezne kamate iz trgovačkih ugovora" +"4741","kp_rrif4741","kp_rrif474","other","account_type_posl_rashod",,,"Zatezne kamate na poreze, doprinose i dr. davanja","Zatezne kamate na poreze, doprinose i dr. davanja" +"4742","kp_rrif4742","kp_rrif474","other","account_type_posl_rashod",,,"Zatezne kamate između povezanih osoba (por. neprizn.)","Zatezne kamate između povezanih osoba (por. neprizn.)" +"4743","kp_rrif4743","kp_rrif474","other","account_type_posl_rashod",,,"Zatezne kamate po sudskim presudama","Zatezne kamate po sudskim presudama" +"4744","kp_rrif4744","kp_rrif474","other","account_type_posl_rashod",,,"Ostale zatezne kamate","Ostale zatezne kamate" +"475","kp_rrif475","kp_rrif47","view","account_type_view",,,"Tečajne razlike iz odnosa s nepovezanim društvima","Tečajne razlike iz odnosa s nepovezanim društvima" +"4750","kp_rrif4750","kp_rrif475","other","account_type_posl_rashod",,,"Negativne tečajne razlike iz obveza za nabave u inozemstvu","Negativne tečajne razlike iz obveza za nabave u inozemstvu" +"4751","kp_rrif4751","kp_rrif475","other","account_type_posl_rashod",,,"Negativne tečajne razlike iz kreditnih obveza","Negativne tečajne razlike iz kreditnih obveza" +"4752","kp_rrif4752","kp_rrif475","other","account_type_posl_rashod",,,"Negativne tečajne razlike iz potraživanja u inozemstvu","Negativne tečajne razlike iz potraživanja u inozemstvu" +"4753","kp_rrif4753","kp_rrif475","other","account_type_posl_rashod",,,"Negativne teč. razlike za ostalo (npr. iz blagajničkog, razlika kupovnog i srednjeg tečaja banke i dr.)","Negativne tečajne razlike za ostalo (npr. iz blagajničkog poslovanja, razlika između kupovnog i srednjeg tečaja banke i dr.)" +"4754","kp_rrif4754","kp_rrif475","other","account_type_posl_rashod",,,"Negativne tečajne razlike nastale na stanjima deviznog računa i devizne blagajne","Negativne tečajne razlike nastale na stanjima deviznog računa i devizne blagajne" +"476","kp_rrif476","kp_rrif47","view","account_type_view",,,"Gubitci iz ulaganja u dionice, udjele i dr. vrij. papire (prodane ispod troška nabave - čl. 10. ZoPD","Gubitci iz ulaganja u dionice, udjele, obveznice i dr. vrijednosne papire (koji su prodani ispod troška nabave - čl. 10. ZoPD" +"4760","kp_rrif4760","kp_rrif476","other","account_type_posl_rashod",,,"Gubitci iz ulaganja u dionice, udjele i dr. vrij. papire (prodane ispod troška nabave - čl. 10. ZoPD-a1","Gubitci iz ulaganja u dionice, udjele, obveznice i dr. vrijednosne papire (koji su prodani ispod troška nabave - čl. 10. ZoPD-Analitika 1" +"477","kp_rrif477","kp_rrif47","view","account_type_view",,,"Troškovi diskonta i nagodbi","Troškovi diskonta i nagodbi" +"4770","kp_rrif4770","kp_rrif477","other","account_type_posl_rashod",,,"Troškovi diskonta pri prodaji potraživanja (faktoring)","Troškovi diskonta pri prodaji potraživanja (faktoring)" +"4771","kp_rrif4771","kp_rrif477","other","account_type_posl_rashod",,,"Troškovi iz financijskih nagodbi","Troškovi iz financijskih nagodbi" +"4772","kp_rrif4772","kp_rrif477","other","account_type_posl_rashod",,,"Ostali troškovi","Ostali troškovi" +"478","kp_rrif478","kp_rrif47","view","account_type_view",,,"Nerealizirani gubitci (rashodi) od financ. imovine","Nerealizirani gubitci (rashodi) od financ. imovine" +"4780","kp_rrif4780","kp_rrif478","other","account_type_posl_rashod",,,"Gubitci od smanjenja – vrijed. usklađenja fin. imovine za trgovanje (MRS 39. t. 55a. i HSFI t. 9.22b)","Gubitci od smanjenja - vrijednosnog usklađenja fin. imovine za trgovanje (MRS 39. t. 55a. i HSFI t. 9.22b)" +"4781","kp_rrif4781","kp_rrif478","other","account_type_posl_rashod",,,"Troškovi smanjenja fin. imovine zbog ugovora o poteškoćama (HSFI t. 9.22a i MRS 39. t. 55b.)","Troškovi smanjenja fin. imovine zbog ugovora o poteškoćama (HSFI t. 9.22a i MRS 39. t. 55b.)" +"4782","kp_rrif4782","kp_rrif478","other","account_type_posl_rashod",,,"Gubitci od smanjenja vrijednosti ostale financ. imov.","Gubitci od smanjenja vrijednosti ostale financ. imov." +"479","kp_rrif479","kp_rrif47","view","account_type_view",,,"Ostali financijski troškovi","Ostali financijski troškovi" +"4790","kp_rrif4790","kp_rrif479","other","account_type_posl_rashod",,,"Rashodi s osnove valutne klauzule po obvezama i kreditima","Rashodi s osnove valutne klauzule po obvezama i kreditima" +"4791","kp_rrif4791","kp_rrif479","other","account_type_posl_rashod",,,"Rashodi s osnove usklađenja obveza zbog valutne i sl. klauzule (dobavljači, za predujmove i sl.)","Rashodi s osnove usklađenja obveza temeljem valutne i sl. klauzule (prema dobavljačima, za predujmove i sl.)" +"4792","kp_rrif4792","kp_rrif479","other","account_type_posl_rashod",,,"Troškovi valutne klauzule iz tražbina ili obveza","Troškovi valutne klauzule iz tražbina ili obveza" +"4793","kp_rrif4793","kp_rrif479","other","account_type_posl_rashod",,,"Troškovi burzovnih usluga, emisije vrijednosnih papira i sl.","Troškovi burzovnih usluga, emisije vrijednosnih papira i sl." +"4794","kp_rrif4794","kp_rrif479","other","account_type_posl_rashod",,,"Troškovi carine inozemnog financijskog i operativnog lizinga","Troškovi carine inozemnog financijskog i operativnog lizinga" +"4799","kp_rrif4799","kp_rrif479","other","account_type_posl_rashod",,,"Ostali nespomenuti financijski troškovi","Ostali nespomenuti financijski troškovi" +"48","kp_rrif48","kp_rrif4","view","account_type_view",,,"OSTALI POSLOVNI RASHODI","OSTALI POSLOVNI RASHODI" +"480","kp_rrif480","kp_rrif48","view","account_type_view",,,"Trošak naknadnih popusta, sniženja, reklamacija i troškovi uzoraka","Trošak naknadnih popusta, sniženja, reklamacija i troškovi uzoraka" +"4800","kp_rrif4800","kp_rrif480","other","account_type_posl_rashod",,,"Naknadno odobreni popusti i odobrenja","Naknadno odobreni popusti i odobrenja" +"4801","kp_rrif4801","kp_rrif480","other","account_type_posl_rashod",,,"Troškovi nagodbe (razlike iz sniženja)","Troškovi nagodbe (razlike iz sniženja)" +"4802","kp_rrif4802","kp_rrif480","other","account_type_posl_rashod",,,"Troškovi nenadoknađenih jamstava za prodana dobra","Troškovi nenadoknađenih jamstava za prodana dobra" +"4803","kp_rrif4803","kp_rrif480","other","account_type_posl_rashod",,,"Troškovi naknadnih reklamacija","Troškovi naknadnih reklamacija" +"4804","kp_rrif4804","kp_rrif480","other","account_type_posl_rashod",,,"Troškovi uzoraka zbog kontrole i pregleda, izlaganje radi prodaje i sl.","Troškovi uzoraka zbog kontrole i pregleda, izlaganje radi prodaje i sl." +"481","kp_rrif481","kp_rrif48","view","account_type_view",,,"Otpisi vrijednosno neusklađenih potraživanja","Otpisi vrijednosno neusklađenih potraživanja" +"4810","kp_rrif4810","kp_rrif481","other","account_type_posl_rashod",,,"Otpisi nenaplaćenih jamstava i drugih osiguranja","Otpisi nenaplaćenih jamstava i drugih osiguranja" +"4811","kp_rrif4811","kp_rrif481","other","account_type_posl_rashod",,,"Izravni otpisi nenaplaćenih potraživanja od kupaca i drugih koja nisu vrijednosno usklađena","Izravni otpisi nenaplaćenih potraživanja od kupaca i drugih koja nisu vrijednosno usklađena" +"4812","kp_rrif4812","kp_rrif481","other","account_type_posl_rashod",,,"Troškovi ostalih otpisa","Troškovi ostalih otpisa" +"482","kp_rrif482","kp_rrif48","view","account_type_view",,,"Rashodi - otpisi nematerijalne i materijalne imovine","Rashodi - otpisi nematerijalne i materijalne imovine" +"4820","kp_rrif4820","kp_rrif482","other","account_type_posl_rashod",,,"Neamortizirana vrijednost rashodovane, uništene ili otuđene dugotrajne imovine","Neamortizirana vrijednost rashodovane, uništene ili otuđene dugotrajne imovine" +"4821","kp_rrif4821","kp_rrif482","other","account_type_posl_rashod",,,"Otpisi imovine izvan uporabe - rashod","Otpisi imovine izvan uporabe - rashod" +"4822","kp_rrif4822","kp_rrif482","other","account_type_posl_rashod",,,"Gubitak od prodane dug. imov. koja se ne amortizira","Gubitak od prodane dug. imov. koja se ne amortizira" +"4823","kp_rrif4823","kp_rrif482","other","account_type_posl_rashod",,,"Gubitak od prodaje ost. dug. mat. i nemat. imovine","Gubitak od prodaje ost. dug. mat. i nemat. imovine" +"4824","kp_rrif4824","kp_rrif482","other","account_type_posl_rashod",,,"Otpisi materijala i robe - rashod","Otpisi materijala i robe - rashod" +"483","kp_rrif483","kp_rrif48","view","account_type_view",,,"Manjkovi i provalne krađe na zalihama i drugim sredstvima","Manjkovi i provalne krađe na zalihama i drugim sredstvima" +"4830","kp_rrif4830","kp_rrif483","other","account_type_posl_rashod",,,"Manjkovi uslijed više sile (provalna krađa, elementarna nepogoda)","Manjkovi uslijed više sile (provalna krađa, elementarna nepogoda)" +"4831","kp_rrif4831","kp_rrif483","other","account_type_posl_rashod",,,"Dopušteni manjkovi - kalo, rastep, kvar i lom na zalihama prema odlukama HGK, HOK ili internim aktima","Dopušteni manjkovi - kalo, rastep, kvar i lom na zalihama prema odlukama HGK, HOK ili internim aktima" +"4832","kp_rrif4832","kp_rrif483","other","account_type_posl_rashod",,,"Prekomjerni manjkovi na zalihama (KRL) iznad normativa+PDV, prema HGK,(čl.7.,st.5.ZoPD)","Prekomjerni manjkovi na zalihama (kalo, rastep, kvar i lom) iznad normativa + PDV, prema odlukama HGK, HOK ili interno - skrivene isplate (čl. 7., st. 5. ZoPD)" +"4833","kp_rrif4833","kp_rrif483","other","account_type_posl_rashod",,,"Manjkovi novca i vrijednosnih papira","Manjkovi novca i vrijednosnih papira" +"4839","kp_rrif4839","kp_rrif483","other","account_type_posl_rashod",,,"Ostali manjkovi iz imovine","Ostali manjkovi iz imovine" +"484","kp_rrif484","kp_rrif48","view","account_type_view",,,"Kazne, penali, nadoknade šteta i troškovi iz ugovora","Kazne, penali, nadoknade šteta i troškovi iz ugovora" +"4840","kp_rrif4840","kp_rrif484","other","account_type_posl_rashod",,,"Troškovi kazni za prijestupe i prekršaje i sl. (čl. 7., st. 1., t. 7. ZoPD)","Troškovi kazni za prijestupe i prekršaje i sl. (čl. 7., st. 1., t. 7. ZoPD)" +"4841","kp_rrif4841","kp_rrif484","other","account_type_posl_rashod",,,"Troškovi prisilne naplate poreza i dr. davanja (čl. 7., st. 1., t. 6. ZoPD)","Troškovi prisilne naplate poreza i dr. davanja (čl. 7., st. 1., t. 6. ZoPD)" +"4842","kp_rrif4842","kp_rrif484","other","account_type_posl_rashod",,,"Penali, ležarine, dangubnine","Penali, ležarine, dangubnine" +"4843","kp_rrif4843","kp_rrif484","other","account_type_posl_rashod",,,"Nadoknade šteta iz radnog odnosa (npr. za godišnji odmor, ozljede na radu, odštetne rente i sl.)","Nadoknade šteta iz radnog odnosa (npr. za neiskorišteni godišnji odmor, zbog ozljede na radu, odštetne rente i sl.)" +"4844","kp_rrif4844","kp_rrif484","other","account_type_posl_rashod",,,"Nadoknade štete - troškovi po nagodbama i sudskim presudama - tužbama","Nadoknade štete - troškovi po nagodbama i sudskim presudama - tužbama" +"4845","kp_rrif4845","kp_rrif484","other","account_type_posl_rashod",,,"Ugovorene kazne i penali zbog neizvršenja, propusta i sl.","Ugovorene kazne i penali zbog neizvršenja, propusta i sl." +"4846","kp_rrif4846","kp_rrif484","other","account_type_posl_rashod",,,"Troškovi preuzetih obveza iz ugovora","Troškovi preuzetih obveza iz ugovora" +"4847","kp_rrif4847","kp_rrif484","other","account_type_posl_rashod",,,"Kazne za parkiranje","Kazne za parkiranje" +"4849","kp_rrif4849","kp_rrif484","other","account_type_posl_rashod",,,"Ostali izdatci za štete","Ostali izdatci za štete" +"485","kp_rrif485","kp_rrif48","view","account_type_view",,,"Naknadno utvrđeni troškovi poslovanja","Naknadno utvrđeni troškovi poslovanja" +"4850","kp_rrif4850","kp_rrif485","other","account_type_posl_rashod",,,"Naknadno utvrđeni troškovi - računi iz prethodnih godina","Naknadno utvrđeni troškovi - računi iz prethodnih godina" +"4851","kp_rrif4851","kp_rrif485","other","account_type_posl_rashod",,,"Troškovi naknadnih razlika iz nabava","Troškovi naknadnih razlika iz nabava" +"4852","kp_rrif4852","kp_rrif485","other","account_type_posl_rashod",,,"Ispravak pogrešaka prethodnih razdoblja","Ispravak pogrešaka prethodnih razdoblja" +"486","kp_rrif486","kp_rrif48","view","account_type_view",,,"Darovanje do 2% od ukupnog prihoda","Darovanje do 2% od ukupnog prihoda" +"4860","kp_rrif4860","kp_rrif486","other","account_type_posl_rashod",,,"Darovanje za općekorisne namjene (u novcu ili naravi do 2% od UP pr.god. - čl. 7., st. 7. ZoPD)","Darovanje za općekorisne namjene (Darovi u novcu ili naravi do 2% od ukupnog prihoda prethodne godine za kulturu, znanost, odgoj i obrazovanje, zdravstvo, humanitarne, športske, vjerske, ekološke i dr. svrhe - čl. 7., st. 7. ZoPD)" +"4861","kp_rrif4861","kp_rrif486","other","account_type_posl_rashod",,,"Darovanje za zdrav.potrebe (vanjskih osoba do 2% UPpr.god. a nije pokriveno osig.-čl.7.,st.8.ZoPD)","Darovanje za zdravstvene potrebe (darovanje vanjskih osoba do 2% od UP prethodne godine za operativne zahvate, liječenja, nabavu lijekova, ortopedskih pomagala i dr. što nije pokriveno osiguranjem - čl. 7., st. 8. ZoPD)" +"487","kp_rrif487","kp_rrif48","view","account_type_view",,,"Darovanja iznad 2% od UP i dr. darovanja","Darovanja iznad 2% od UP i dr. darovanja" +"4870","kp_rrif4870","kp_rrif487","other","account_type_posl_rashod",,,"Porezno nepriznata darovanja iznad 2% UP (iznad dop. s 486) i ino. udruga i sl. (čl.7.st.1.t.10 ZoPD)","Porezno nepriznata darovanja iznad 2% UP (za svrhe iznad dopuštenih s računa 486) i darovanja inozemnih udruga, ustanova i sl. (čl. 7. st. 1. t. 10. ZoPD)" +"4871","kp_rrif4871","kp_rrif487","other","account_type_posl_rashod",,,"Darovi bez protučinidbe prim. i izdatci nisu u svezi s ostv.dobitka+PDV,osim na novac-čl7,st1.,t13ZoPD","Darovi (milodari), potpore i dotacije bez protučinidbe primatelja, te dr. izdatci koji nisu u svezi s ostvarivanjem dobitka (+PDV, osim na novac - čl. 7., st. 1., t. 13. ZoPD)" +"4872","kp_rrif4872","kp_rrif487","other","account_type_posl_rashod",,,"Darovanje političkih stranaka i nezavisnih kandidata","Darovanje političkih stranaka i nezavisnih kandidata" +"488","kp_rrif488","kp_rrif48","view","account_type_view",,,"Troškovi iz drugih aktivnosti (izvan osnovne djelatnosti)","Troškovi iz drugih aktivnosti (izvan osnovne djelatnosti)" +"4880","kp_rrif4880","kp_rrif488","other","account_type_posl_rashod",,,"Troškovi iz ortačkog ugovora","Troškovi iz ortačkog ugovora" +"4881","kp_rrif4881","kp_rrif488","other","account_type_posl_rashod",,,"Troškovi iz posredovanja","Troškovi iz posredovanja" +"489","kp_rrif489","kp_rrif48","view","account_type_view",,,"Ostali troškovi - rashodi (čl. 7. ZoPD)","Ostali troškovi - rashodi (čl. 7. ZoPD)" +"4890","kp_rrif4890","kp_rrif489","other","account_type_posl_rashod",,,"Rashodi utvrđeni u postupku nadzora (čl. 7. st. 1. t. 11. ZoPD) - skrivene isplate dobitka","Rashodi utvrđeni u postupku nadzora (čl. 7. st. 1. t. 11. ZoPD) - skrivene isplate dobitka - izuzimanje dioničara članova društva i fizičkih osoba (obrtnika) i s njima povez. osobama" +"4891","kp_rrif4891","kp_rrif489","other","account_type_posl_rashod",,,"Troškovi -porezno nepriznati- koji nisu u svezi s ostvarivanjem dobitka(čl7, st1,t13.ZoPD-red.br.24PD) ","Troškovi koji nisu izravno u svezi s ostvarivanjem dobitka (čl. 7., st. 1., t. 13. ZoPD - red. br. 24 PD, npr. amortiz. imov. koja ne služi obavljanju djelatnosti, dodjela vlastitih dionica - udjela i dr.) - porezno nepriznati" +"4892","kp_rrif4892","kp_rrif489","other","account_type_posl_rashod",,,"Troškovi povalstica i dr. oblici imovinskih koristi (čl. 7., st.1. t.10. ZoPD) - porezno nepriznati","Troškovi povalstica i dr. oblici imovinskih koristi (čl. 7., st.1. t.10. ZoPD) - porezno nepriznati" +"4899","kp_rrif4899","kp_rrif489","other","account_type_posl_rashod",,,"Ostali nespomenuti poslovni rashodi","Ostali nespomenuti poslovni rashodi" +"49","kp_rrif49","kp_rrif4","view","account_type_view",,,"RASPORED TROŠKOVA","RASPORED TROŠKOVA" +"490","kp_rrif490","kp_rrif49","view","account_type_view",,,"Raspored troškova za obračun proiz. i usluga (HSFI10, MRS2, MRS11)-uskladištivi troškovi (na 60,62i63)","Raspored troškova za obračun proizvoda i usluga (prema HSFI 10 i MRS-u 2 i MRS-u 11) - uskladištivi troškovi (na račune 60, 62 i 63)" +"4900","kp_rrif4900","kp_rrif490","other","account_type_posl_rashod",,,"Raspored troškova za obračun proiz. i usluga (HSFI10, MRS2, MRS11)-uskladištivi troškovi (na 60,62i63)-a1","Raspored troškova za obračun proizvoda i usluga (prema HSFI 10 i MRS-u 2 i MRS-u 11) - uskladištivi troškovi (na račune 60, 62 i 63)-Analitika 1" +"491","kp_rrif491","kp_rrif49","view","account_type_view",,,"Raspored troškova za pokriće upravnih, administrativnih, prodajnih i drugih troškova (na rn 70 i 71)","Raspored troškova za pokriće upravnih, administrativnih, prodajnih i drugih troškova (na račune 70 i 71)" +"4910","kp_rrif4910","kp_rrif491","other","account_type_posl_rashod",,,"Raspored troškova za pokriće upravnih, administrativnih, prodajnih i drugih troškova (na rn 70 i 71)-a1","Raspored troškova za pokriće upravnih, administrativnih, prodajnih i drugih troškova (na račune 70 i 71)-Analitika 1" +"6","kp_rrif6","kp_rrif","view","account_type_view",,,"PROIZVODNJA, BIOLOŠKA IMOVINA, GOTOVI PROIZVODI, ROBA I DUGOTRAJNA IMOVINA NAMIJENJENA PRODAJI","PROIZVODNJA, GOTOVI PROIZVODI, ROBA I DUGOTRAJNA IMOVINA NAMIJENJENA PRODAJI" +"60","kp_rrif60","kp_rrif6","view","account_type_view",,,"PROIZVODNJA - TROŠKOVI KONVERZIJE","PROIZVODNJA - TROŠKOVI KONVERZIJE" +"600","kp_rrif600","kp_rrif60","view","account_type_view",,,"Proizvodnja u tijeku (po serijama, nositeljima, mjestima, radnim nalozima i sl.)","Proizvodnja u tijeku (razrada po serijama, nositeljima troškova, mjestima, pogonima, gradilištima, objektima, radnim nalozima i sl.)" +"6000","kp_rrif6000","kp_rrif600","other","account_type_kratk_imovina",,,"Proizvodnja u tijeku (po serijama, nositeljima, mjestima, radnim nalozima i sl.)-a1","Proizvodnja u tijeku (razrada po serijama, nositeljima troškova, mjestima, pogonima, gradilištima, objektima, radnim nalozima i sl.)-Analitika 1" +"601","kp_rrif601","kp_rrif60","view","account_type_view",,,"Vrijednost usluga (u tijeku ili nedovršenih na datum bilance - MRS 2, t. 16.)","Vrijednost usluga (u tijeku ili nedovršenih na datum bilance - MRS 2, t. 16.)" +"6010","kp_rrif6010","kp_rrif601","other","account_type_kratk_imovina",,,"Vrijednost usluga (u tijeku ili nedovršenih na datum bilance - MRS 2, t. 16.)-a1","Vrijednost usluga (u tijeku ili nedovršenih na datum bilance - MRS 2, t. 16.)-Analitika 1" +"602","kp_rrif602","kp_rrif60","view","account_type_view",,,"Vanjska proizvodnja (kooperacija i dr.)","Vanjska proizvodnja (kooperacija i dr.)" +"6020","kp_rrif6020","kp_rrif602","other","account_type_kratk_imovina",,,"Vanjska proizvodnja (kooperacija i dr.)-a1","Vanjska proizvodnja (kooperacija i dr.)-Analitika 1" +"605","kp_rrif605","kp_rrif60","view","account_type_view",,,"Proizvodnja u slobodnoj zoni","Proizvodnja u slobodnoj zoni" +"6050","kp_rrif6050","kp_rrif605","other","account_type_kratk_imovina",,,"Proizvodnja u slobodnoj zoni-a1","Proizvodnja u slobodnoj zoni-Analitika 1" +"606","kp_rrif606","kp_rrif60","view","account_type_view",,,"Proizvodnja u doradi i manipulaciji","Proizvodnja u doradi i manipulaciji" +"6060","kp_rrif6060","kp_rrif606","other","account_type_kratk_imovina",,,"Proizvodnja u doradi i manipulaciji-a1","Proizvodnja u doradi i manipulaciji-Analitika 1" +"607","kp_rrif607","kp_rrif60","view","account_type_view",,,"Obustavljena proizvodnja","Obustavljena proizvodnja" +"6070","kp_rrif6070","kp_rrif607","other","account_type_kratk_imovina",,,"Obustavljena proizvodnja-a1","Obustavljena proizvodnja-Analitika 1" +"608","kp_rrif608","kp_rrif60","view","account_type_view",,,"Proizvodnja u tijeku iz ortačkog ugovora","Proizvodnja u tijeku iz ortačkog ugovora" +"6080","kp_rrif6080","kp_rrif608","other","account_type_kratk_imovina",,,"Proizvodnja u tijeku iz ortačkog ugovora-a1","Proizvodnja u tijeku iz ortačkog ugovora-Analitika 1" +"609","kp_rrif609","kp_rrif60","view","account_type_view",,,"Vrijednosno usklađivanje proizvodnje - usluga","Vrijednosno usklađivanje proizvodnje - usluga" +"6090","kp_rrif6090","kp_rrif609","other","account_type_kratk_imovina",,,"Vrijednosno usklađivanje proizvodnje - usluga-a1","Vrijednosno usklađivanje proizvodnje - usluga-Analitika 1" +"61","kp_rrif61","kp_rrif6","view","account_type_view",,,"NEDOVRŠENI PROIZVODI I POLUPROIZVODI","NEDOVRŠENI PROIZVODI I POLUPROIZVODI" +"610","kp_rrif610","kp_rrif61","view","account_type_view",,,"Zalihe poluproizvoda (analitika prema osnovnim skupinama ili po stupnju dovršenosti)","Zalihe poluproizvoda (analitika prema osnovnim skupinama ili po stupnju dovršenosti)" +"6100","kp_rrif6100","kp_rrif610","other","account_type_kratk_imovina",,,"Zalihe poluproizvoda (analitika prema osnovnim skupinama ili po stupnju dovršenosti)-a1","Zalihe poluproizvoda (analitika prema osnovnim skupinama ili po stupnju dovršenosti)-Analitika 1" +"611","kp_rrif611","kp_rrif61","view","account_type_view",,,"Nedovršeni proizvodi i poluproizvodi (analitika po vrstama proizvoda)","Nedovršeni proizvodi i poluproizvodi (analitika po vrstama proizvoda)" +"6110","kp_rrif6110","kp_rrif611","other","account_type_kratk_imovina",,,"Nedovršeni proizvodi i poluproizvodi (analitika po vrstama proizvoda)-a1","Nedovršeni proizvodi i poluproizvodi (analitika po vrstama proizvoda)-Analitika 1" +"619","kp_rrif619","kp_rrif61","view","account_type_view",,,"Vrijednosno usklađivanje nedovršenih proizvoda i poluproizvoda","Vrijednosno usklađivanje nedovršenih proizvoda i poluproizvoda" +"6190","kp_rrif6190","kp_rrif619","other","account_type_kratk_imovina",,,"Vrijednosno usklađivanje nedovršenih proizvoda i poluproizvoda-a1","Vrijednosno usklađivanje nedovršenih proizvoda i poluproizvoda-Analitika 1" +"62","kp_rrif62","kp_rrif6","view","account_type_view",,,"BIOLOŠKA IMOVINA","BIOLOŠKA IMOVINA" +"620","kp_rrif620","kp_rrif62","view","account_type_view",,,"Zalihe biološke proizvodnje u toku","Zalihe biološke proizvodnje u toku" +"6200","kp_rrif6200","kp_rrif620","other","account_type_kratk_imovina",,,"Zalihe biološke proizvodnje u toku-a1","Zalihe biološke proizvodnje u toku-Analitika 1" +"621","kp_rrif621","kp_rrif62","view","account_type_view",,,"Zaliha biloške imovine za prodaju","Biloška imovina za prodaju" +"6210","kp_rrif6210","kp_rrif621","other","account_type_kratk_imovina",,,"Biloška imovina za prodaju-a1","Biloška imovina za prodaju-Analitika 1" +"629","kp_rrif629","kp_rrif62","view","account_type_view",,,"Vrijednosno usklađivanje biloške imovine","Vrijednosno usklađivanje biloške imovine" +"6290","kp_rrif6290","kp_rrif629","other","account_type_kratk_imovina",,,"Vrijednosno usklađivanje biloške imovine-a1","Vrijednosno usklađivanje biloške imovine-Analitika 1" +"63","kp_rrif63","kp_rrif6","view","account_type_view",,,"ZALIHE GOTOVIH PROIZVODA","ZALIHE GOTOVIH PROIZVODA" +"630","kp_rrif630","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi na skladištu (razrada za svako skladište, pa po skupinama, tipovima, vrstama i sl.)","Gotovi proizvodi na skladištu (razrada za svako skladište a unutar toga po skupinama, tipovima, vrstama i sl.)" +"6300","kp_rrif6300","kp_rrif630","other","account_type_kratk_imovina",,,"Gotovi proizvodi na skladištu (razrada za svako skladište, pa po skupinama, tipovima, vrstama i sl.)-a1","Gotovi proizvodi na skladištu (razrada za svako skladište a unutar toga po skupinama, tipovima, vrstama i sl.)-Analitika 1" +"631","kp_rrif631","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi u javnom skladištu, silosu, i dr.","Gotovi proizvodi u javnom skladištu, silosu, i dr." +"6310","kp_rrif6310","kp_rrif631","other","account_type_kratk_imovina",,,"Gotovi proizvodi u javnom skladištu, silosu, i dr.-a1","Gotovi proizvodi u javnom skladištu, silosu, i dr.-Analitika 1" +"632","kp_rrif632","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi dani u komisijsku prodaju","Gotovi proizvodi dani u komisijsku prodaju" +"6320","kp_rrif6320","kp_rrif632","other","account_type_kratk_imovina",,,"Gotovi proizvodi dani u komisijsku prodaju-a1","Gotovi proizvodi dani u komisijsku prodaju-Analitika 1" +"633","kp_rrif633","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi dani u konsignacijsku prodaju","Gotovi proizvodi dani u konsignacijsku prodaju" +"6330","kp_rrif6330","kp_rrif633","other","account_type_kratk_imovina",,,"Gotovi proizvodi dani u konsignacijsku prodaju-a1","Gotovi proizvodi dani u konsignacijsku prodaju-Analitika 1" +"634","kp_rrif634","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi u doradi, obradi i manipulaciji","Gotovi proizvodi u doradi, obradi i manipulaciji" +"6340","kp_rrif6340","kp_rrif634","other","account_type_kratk_imovina",,,"Gotovi proizvodi u doradi, obradi i manipulaciji-a1","Gotovi proizvodi u doradi, obradi i manipulaciji-Analitika 1" +"635","kp_rrif635","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi u slobodnoj zoni","Gotovi proizvodi u slobodnoj zoni" +"6350","kp_rrif6350","kp_rrif635","other","account_type_kratk_imovina",,,"Gotovi proizvodi u slobodnoj zoni-a1","Gotovi proizvodi u slobodnoj zoni-Analitika 1" +"636","kp_rrif636","kp_rrif63","view","account_type_view",,,"Zalihe nekurentnih proizvoda i otpadaka","Zalihe nekurentnih proizvoda i otpadaka" +"6360","kp_rrif6360","kp_rrif636","other","account_type_kratk_imovina",,,"Zalihe nekurentnih proizvoda i otpadaka-a1","Zalihe nekurentnih proizvoda i otpadaka-Analitika 1" +"637","kp_rrif637","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi u izložbenim prostorima","Gotovi proizvodi u izložbenim prostorima" +"6370","kp_rrif6370","kp_rrif637","other","account_type_kratk_imovina",,,"Gotovi proizvodi u izložbenim prostorima-a1","Gotovi proizvodi u izložbenim prostorima-Analitika 1" +"638","kp_rrif638","kp_rrif63","view","account_type_view",,,"Gotovi proizvodi iz ortaštava","Gotovi proizvodi iz ortaštava" +"6380","kp_rrif6380","kp_rrif638","other","account_type_kratk_imovina",,,"Gotovi proizvodi iz ortaštava-a1","Gotovi proizvodi iz ortaštava-Analitika 1" +"639","kp_rrif639","kp_rrif63","view","account_type_view",,,"Vrijednosno usklađivanje zaliha gotovih proizvoda","Vrijednosno usklađivanje zaliha gotovih proizvoda" +"6390","kp_rrif6390","kp_rrif639","other","account_type_kratk_imovina",,,"Vrijednosno usklađivanje zaliha gotovih proizvoda-a1","Vrijednosno usklađivanje zaliha gotovih proizvoda-Analitika 1" +"64","kp_rrif64","kp_rrif6","view","account_type_view",,,"GOTOVI PROIZVODI U VLASTITIM PRODAVAONICAMA","GOTOVI PROIZVODI U VLASTITIM PRODAVAONICAMA" +"640","kp_rrif640","kp_rrif64","view","account_type_view",,,"Gotovi proizvodi u prodaji u vlastitim prodavaonicama (analitika po prodavaonicama)","Gotovi proizvodi u prodaji u vlastitim prodavaonicama (analitika po prodavaonicama)" +"6400","kp_rrif6400","kp_rrif640","other","account_type_kratk_imovina",,,"Gotovi proizvodi u prodaji u vlastitim prodavaonicama (analitika po prodavaonicama)-a1","Gotovi proizvodi u prodaji u vlastitim prodavaonicama (analitika po prodavaonicama)-Analitika 1" +"641","kp_rrif641","kp_rrif64","view","account_type_view",,,"Uračunani PDV u vrijednosti proizvoda","Uračunani PDV u vrijednosti proizvoda" +"6410","kp_rrif6410","kp_rrif641","other","account_type_kratk_imovina",,,"Uračunani PDV u vrijednosti proizvoda-a1","Uračunani PDV u vrijednosti proizvoda-Analitika 1" +"642","kp_rrif642","kp_rrif64","view","account_type_view",,,"Uračunani porez na luksuz","Uračunani porez na luksuz" +"6420","kp_rrif6420","kp_rrif642","other","account_type_kratk_imovina",,,"Uračunani porez na luksuz-a1","Uračunani porez na luksuz-Analitika 1" +"648","kp_rrif648","kp_rrif64","view","account_type_view",,,"Uračunana marža u prodajnoj cijeni gotovih proizvoda","Uračunana marža u prodajnoj cijeni gotovih proizvoda" +"6480","kp_rrif6480","kp_rrif648","other","account_type_kratk_imovina",,,"Uračunana marža u prodajnoj cijeni gotovih proizvoda-a1","Uračunana marža u prodajnoj cijeni gotovih proizvoda-Analitika 1" +"649","kp_rrif649","kp_rrif64","view","account_type_view",,,"Vrijednosno usklađivanje gotovih proizvoda u prodavaonicama","Vrijednosno usklađivanje gotovih proizvoda u prodavaonicama" +"6490","kp_rrif6490","kp_rrif649","other","account_type_kratk_imovina",,,"Vrijednosno usklađivanje gotovih proizvoda u prodavaonicama-a1","Vrijednosno usklađivanje gotovih proizvoda u prodavaonicama-Analitika 1" +"65","kp_rrif65","kp_rrif6","view","account_type_view",,,"OBRAČUN TROŠKOVA NABAVE ROBE - TROŠKOVI KUPNJE","OBRAČUN TROŠKOVA NABAVE ROBE - TROŠKOVI KUPNJE" +"650","kp_rrif650","kp_rrif65","view","account_type_view",,,"Kupovna cijena robe od dobavljača","Kupovna cijena robe od dobavljača" +"6500","kp_rrif6500","kp_rrif650","other","account_type_kratk_imovina",,,"Kupovna cijena robe od dobavljača-a1","Kupovna cijena robe od dobavljača-Analitika 1" +"651","kp_rrif651","kp_rrif65","view","account_type_view",,,"Ostali troškovi nabave u svezi s dovođenjem robe na zalihu","Ostali troškovi nabave u svezi s dovođenjem robe na zalihu" +"6510","kp_rrif6510","kp_rrif651","other","account_type_kratk_imovina",,,"Troškovi transporta","Troškovi transporta" +"6511","kp_rrif6511","kp_rrif651","other","account_type_kratk_imovina",,,"Troškovi ukrcaja i iskrcaja (fakturirani)","Troškovi ukrcaja i iskrcaja (fakturirani)" +"6512","kp_rrif6512","kp_rrif651","other","account_type_kratk_imovina",,,"Transportno osiguranje","Transportno osiguranje" +"6513","kp_rrif6513","kp_rrif651","other","account_type_kratk_imovina",,,"Troškovi posebnog pakiranja - ambalaže","Troškovi posebnog pakiranja - ambalaže" +"6514","kp_rrif6514","kp_rrif651","other","account_type_kratk_imovina",,,"Troškovi vlastitog transporta (ne više od tarife javnog prijevoza) dovođenja robe na prodajnu lokaciju","Troškovi vlastitog transporta (ne više od tarife javnog prijevoza) dovođenja robe na prodajnu lokaciju" +"6515","kp_rrif6515","kp_rrif651","other","account_type_kratk_imovina",,,"Troškovi oblikovanja za posebne kupce","Troškovi oblikovanja za posebne kupce" +"6516","kp_rrif6516","kp_rrif651","other","account_type_kratk_imovina",,,"Troškovi čuvanja i rukovanja (u fazi nabave)","Troškovi čuvanja i rukovanja (u fazi nabave)" +"6517","kp_rrif6517","kp_rrif651","other","account_type_kratk_imovina",,,"Špediterski i bankarski troškovi","Špediterski i bankarski troškovi" +"6518","kp_rrif6518","kp_rrif651","other","account_type_kratk_imovina",,,"Nadoknada uvozniku za uslugu uvoza","Nadoknada uvozniku za uslugu uvoza" +"6519","kp_rrif6519","kp_rrif651","other","account_type_kratk_imovina",,,"Ostali troškovi kupnje (pregledi, atesti i troškovi u svezi s dovođenjem robe na zalihu -HSFI10 i MRS2)","Ostali troškovi kupnje (pregledi, atesti i dr. troškovi u svezi s dovođenjem robe na zalihu - HSFI 10 i MRS 2)" +"652","kp_rrif652","kp_rrif65","view","account_type_view",,,"Carina i druge uvozne pristojbe za robu","Carina i druge uvozne pristojbe za robu" +"6520","kp_rrif6520","kp_rrif652","other","account_type_kratk_imovina",,,"Carina i druge uvozne pristojbe za robu-a1","Carina i druge uvozne pristojbe za robu-Analitika 1" +"653","kp_rrif653","kp_rrif65","view","account_type_view",,,"Posebni porezi (trošarine)","Posebni porezi (trošarine)" +"6530","kp_rrif6530","kp_rrif653","other","account_type_kratk_imovina",,,"Posebni porezi (trošarine)-a1","Posebni porezi (trošarine)-Analitika 1" +"659","kp_rrif659","kp_rrif65","view","account_type_view",,,"Obračun nabave - trošak kupnje","Obračun nabave - trošak kupnje" +"6590","kp_rrif6590","kp_rrif659","other","account_type_kratk_imovina",,,"Obračun nabave - trošak kupnje-a1","Obračun nabave - trošak kupnje-Analitika 1" +"66","kp_rrif66","kp_rrif6","view","account_type_view",,,"ROBA","ROBA" +"660","kp_rrif660","kp_rrif66","view","account_type_view",,,"Roba u skladištu","Roba u skladištu" +"6600","kp_rrif6600","kp_rrif660","other","account_type_kratk_imovina",,,"Roba u vlastitom veleprodajnom skladištu (analitika po skladištima)","Roba u vlastitom veleprodajnom skladištu (analitika po skladištima)" +"6601","kp_rrif6601","kp_rrif660","other","account_type_kratk_imovina",,,"Zaliha otpadaka od robe","Zaliha otpadaka od robe" +"661","kp_rrif661","kp_rrif66","view","account_type_view",,,"Roba u tuđem skladištu i izlozima","Roba u tuđem skladištu i izlozima" +"6610","kp_rrif6610","kp_rrif661","other","account_type_kratk_imovina",,,"Roba u tuđem skladištu","Roba u tuđem skladištu" +"6611","kp_rrif6611","kp_rrif661","other","account_type_kratk_imovina",,,"Roba u tuđim silosima, hladnjačama i sl.","Roba u tuđim silosima, hladnjačama i sl." +"6612","kp_rrif6612","kp_rrif661","other","account_type_kratk_imovina",,,"Roba u izložbenim prostorima","Roba u izložbenim prostorima" +"662","kp_rrif662","kp_rrif66","view","account_type_view",,,"Roba dana u komisijsku ili konsignacijsku prodaju","Roba dana u komisijsku ili konsignacijsku prodaju" +"6620","kp_rrif6620","kp_rrif662","other","account_type_kratk_imovina",,,"Roba dana u komisijsku ili konsignacijsku prodaju-a1","Roba dana u komisijsku ili konsignacijsku prodaju-Analitika 1" +"663","kp_rrif663","kp_rrif66","view","account_type_view",,,"Roba u prodavaonicama","Roba u prodavaonicama" +"6630","kp_rrif6630","kp_rrif663","view","account_type_view",,,"Roba u prodavaonici (po prodajnoj cijeni -analitika po prodavaonicama), ili","Roba u prodavaonici (po prodajnoj cijeni -analitika po prodavaonicama), ili" +"66300","kp_rrif66300","kp_rrif6630","other","account_type_kratk_imovina",,,"Roba u prodavaonici A s PDV-om 23%","Roba u prodavaonici A s PDV-om 23%" +"66301","kp_rrif66301","kp_rrif6630","other","account_type_kratk_imovina",,,"Roba u prodavaonici A s PDV-om 10%","Roba u prodavaonici A s PDV-om 10%" +"66302","kp_rrif66302","kp_rrif6630","other","account_type_kratk_imovina",,,"Roba u prodavaonici A s PDV-om 0%, itd.","Roba u prodavaonici A s PDV-om 0%, itd." +"664","kp_rrif664","kp_rrif66","view","account_type_view",,,"Uračunani porezi u robi","Uračunani porezi u robi" +"6640","kp_rrif6640","kp_rrif664","other","account_type_kratk_imovina",,,"Uračunani PDV (analitika po prodajnim mjestima i poreznim stopama)","Uračunani PDV (analitika po prodajnim mjestima i poreznim stopama)" +"6641","kp_rrif6641","kp_rrif664","other","account_type_kratk_imovina",,,"Uračunani porez na luksuz","Uračunani porez na luksuz" +"665","kp_rrif665","kp_rrif66","view","account_type_view",,,"Roba u carinskom skladištu ""D"" ili u slobodnoj zoni","Roba u carinskom skladištu ""D"" ili u slobodnoj zoni" +"6650","kp_rrif6650","kp_rrif665","other","account_type_kratk_imovina",,,"Vlastita roba u carinskom skladištu tipa ""D""","Vlastita roba u carinskom skladištu tipa ""D""" +"6651","kp_rrif6651","kp_rrif665","other","account_type_kratk_imovina",,,"Roba u slobodnoj zoni","Roba u slobodnoj zoni" +"666","kp_rrif666","kp_rrif66","view","account_type_view",,,"Roba u doradi, obradi i manipulaciji","Roba u doradi, obradi i manipulaciji" +"6660","kp_rrif6660","kp_rrif666","other","account_type_kratk_imovina",,,"Vrijednost robe u doradi","Vrijednost robe u doradi" +"6661","kp_rrif6661","kp_rrif666","other","account_type_kratk_imovina",,,"Troškovi u svezi s doradom","Troškovi u svezi s doradom" +"667","kp_rrif667","kp_rrif66","view","account_type_view",,,"Roba na putu","Roba na putu" +"6670","kp_rrif6670","kp_rrif667","other","account_type_kratk_imovina",,,"Roba na putu-a1","Roba na putu-Analitika 1" +"668","kp_rrif668","kp_rrif66","view","account_type_view",,,"Uračunana razlika u cijeni robe","Uračunana razlika u cijeni robe" +"6680","kp_rrif6680","kp_rrif668","other","account_type_kratk_imovina",,,"Razlika u cijeni robe na skladištu (analitički po skupinama robe s istom maržom)","Razlika u cijeni robe na skladištu (analitički po skupinama robe s istom maržom)" +"6681","kp_rrif6681","kp_rrif668","other","account_type_kratk_imovina",,,"Uračunana marža robe u prodavaonici","Uračunana marža robe u prodavaonici" +"669","kp_rrif669","kp_rrif66","view","account_type_view",,,"Vrijednosno usklađivanje zaliha robe","Vrijednosno usklađivanje zaliha robe" +"6690","kp_rrif6690","kp_rrif669","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje zbog pada cijena, smanjenja uporabljivosti i sl.","Vrijednosno usklađenje zbog pada cijena, smanjenja uporabljivosti i sl." +"6691","kp_rrif6691","kp_rrif669","other","account_type_kratk_imovina",,,"Prepravljene cijene robe zbog monetarnih oscilacija","Prepravljene cijene robe zbog monetarnih oscilacija" +"67","kp_rrif67","kp_rrif6","view","account_type_view",,,"PREDUJMOVI ZA NABAVU ROBE","PREDUJMOVI ZA NABAVU ROBE" +"670","kp_rrif670","kp_rrif67","view","account_type_view",,,"Dani predujmovi za nabavu robe","Dani predujmovi za nabavu robe" +"6700","kp_rrif6700","kp_rrif670","other","account_type_kratk_imovina",,,"Dani predujmovi za nabavu robe-a1","Dani predujmovi za nabavu robe-Analitika 1" +"671","kp_rrif671","kp_rrif67","view","account_type_view",,,"Dani predujmovi uvozniku za nabavu robe","Dani predujmovi uvozniku za nabavu robe" +"6710","kp_rrif6710","kp_rrif671","other","account_type_kratk_imovina",,,"Dani predujmovi uvozniku za nabavu robe-a1","Dani predujmovi uvozniku za nabavu robe-Analitika 1" +"672","kp_rrif672","kp_rrif67","view","account_type_view",,,"Dani predujmovi za robu povezanom društvu","Dani predujmovi za robu povezanom društvu" +"6720","kp_rrif6720","kp_rrif672","other","account_type_kratk_imovina",,,"Dani predujmovi za robu povezanom društvu-a1","Dani predujmovi za robu povezanom društvu-Analitika 1" +"679","kp_rrif679","kp_rrif67","view","account_type_view",,,"Vrijednosno usklađenje danih predujmova za robu","Vrijednosno usklađenje danih predujmova za robu" +"6790","kp_rrif6790","kp_rrif679","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje danih predujmova za robu-a1","Vrijednosno usklađenje danih predujmova za robu-Analitika 1" +"68","kp_rrif68","kp_rrif6","view","account_type_view",,,"NEKRETNINE I UMJETNINE ZA TRGOVANJE","NEKRETNINE I UMJETNINE ZA TRGOVANJE" +"680","kp_rrif680","kp_rrif68","view","account_type_view",,,"Nabavna vrijednost nekretnina za preprodaju (s porezom na promet)","Nabavna vrijednost nekretnina za preprodaju (s porezom na promet)" +"6800","kp_rrif6800","kp_rrif680","other","account_type_kratk_imovina",,,"Nabavna vrijednost nekretnina za preprodaju (s porezom na promet)-a1","Nabavna vrijednost nekretnina za preprodaju (s porezom na promet)-Analitika 1" +"681","kp_rrif681","kp_rrif68","view","account_type_view",,,"Troškovi dodatnog uređenja - dorade","Troškovi dodatnog uređenja - dorade" +"6810","kp_rrif6810","kp_rrif681","other","account_type_kratk_imovina",,,"Troškovi dodatnog uređenja - dorade-a1","Troškovi dodatnog uređenja - dorade-Analitika 1" +"682","kp_rrif682","kp_rrif68","view","account_type_view",,,"Umjetnine u prodaji","Umjetnine u prodaji" +"6820","kp_rrif6820","kp_rrif682","other","account_type_kratk_imovina",,,"Umjetnine u prodaji-a1","Umjetnine u prodaji-Analitika 1" +"683","kp_rrif683","kp_rrif68","view","account_type_view",,,"Nekretnine za prodaju (uređene)","Nekretnine za prodaju (uređene)" +"6830","kp_rrif6830","kp_rrif683","other","account_type_kratk_imovina",,,"Nekretnine za prodaju (uređene)-a1","Nekretnine za prodaju (uređene)-Analitika 1" +"684","kp_rrif684","kp_rrif68","view","account_type_view",,,"Uračunani PDV u umjetnine","Uračunani PDV u umjetnine" +"6840","kp_rrif6840","kp_rrif684","other","account_type_kratk_imovina",,,"Uračunani PDV u umjetnine-a1","Uračunani PDV u umjetnine-Analitika 1" +"687","kp_rrif687","kp_rrif68","view","account_type_view",,,"Predujmovi za kupnju nekretnina radi daljnje prodaje","Predujmovi za kupnju nekretnina radi daljnje prodaje" +"6870","kp_rrif6870","kp_rrif687","other","account_type_kratk_imovina",,,"Predujmovi za kupnju nekretnina radi daljnje prodaje-a1","Predujmovi za kupnju nekretnina radi daljnje prodaje-Analitika 1" +"688","kp_rrif688","kp_rrif68","view","account_type_view",,,"Uračunana razlika u cijeni nekretnina i umjetnina za daljnju prodaju","Uračunana razlika u cijeni nekretnina i umjetnina za daljnju prodaju" +"6880","kp_rrif6880","kp_rrif688","other","account_type_kratk_imovina",,,"Uračunana razlika u cijeni nekretnina i umjetnina za daljnju prodaju-a1","Uračunana razlika u cijeni nekretnina i umjetnina za daljnju prodaju-Analitika 1" +"689","kp_rrif689","kp_rrif68","view","account_type_view",,,"Vrijednosno usklađivanje nekretnina i umjetnina u prometu i predujmova","Vrijednosno usklađivanje nekretnina i umjetnina u prometu i predujmova" +"6890","kp_rrif6890","kp_rrif689","other","account_type_kratk_imovina",,,"Vrijednosno usklađivanje nekretnina i umjetnina u prometu i predujmova-a1","Vrijednosno usklađivanje nekretnina i umjetnina u prometu i predujmova-Analitika 1" +"69","kp_rrif69","kp_rrif6","view","account_type_view",,,"DUGOTRAJNA IMOVINA NAMIJENJENA PRODAJI","DUGOTRAJNA IMOVINA NAMIJENJENA PRODAJI" +"690","kp_rrif690","kp_rrif69","view","account_type_view",,,"Nematerijalna imovina namijenjena prodaji","Nematerijalna imovina namijenjena prodaji" +"6900","kp_rrif6900","kp_rrif690","other","account_type_kratk_imovina",,,"Nematerijalna imovina namijenjena prodaji-a1","Nematerijalna imovina namijenjena prodaji-Analitika 1" +"691","kp_rrif691","kp_rrif69","view","account_type_view",,,"Materijalna imovina namijenjena za prodaju","Materijalna imovina namijenjena za prodaju" +"6910","kp_rrif6910","kp_rrif691","other","account_type_kratk_imovina",,,"Skupina imovine za prodaju (npr. pogon, poslov. jedinica i sl. )","Skupina imovine za prodaju (npr. pogon, poslov. jedinica i sl. )" +"699","kp_rrif699","kp_rrif69","view","account_type_view",,,"Vrijednosno usklađenje dugotrajne imovine namijenjena prodaji","Vrijednosno usklađenje dugotrajne imovine namijenjena prodaji" +"6990","kp_rrif6990","kp_rrif699","other","account_type_kratk_imovina",,,"Vrijednosno usklađenje dugotrajne imovine namijenjena prodaji-a1","Vrijednosno usklađenje dugotrajne imovine namijenjena prodaji-Analitika 1" +"7","kp_rrif7","kp_rrif","view","account_type_view",,,"POKRIĆE RASHODA I PRIHODI RAZDOBLJA","POKRIĆE RASHODA I PRIHODI RAZDOBLJA" +"70","kp_rrif70","kp_rrif7","view","account_type_view",,,"TROŠKOVI PRODANIH ZALIHA PROIZVODA I USLUGA","TROŠKOVI PRODANIH ZALIHA PROIZVODA I USLUGA" +"700","kp_rrif700","kp_rrif70","view","account_type_view",,,"Trošak zaliha prodanih proizvoda (60, 62, 63 i 64)","Trošak zaliha prodanih proizvoda (60, 62, 63 i 64)" +"7000","kp_rrif7000","kp_rrif700","other","account_type_posl_rashod",,,"Trošak zaliha prodanih proizvoda (60, 62, 63 i 64)-a1","Trošak zaliha prodanih proizvoda (60, 62, 63 i 64)-Analitika 1" +"701","kp_rrif701","kp_rrif70","view","account_type_view",,,"Troškovi realiziranih usluga (490 i 601)","Troškovi realiziranih usluga (490 i 601)" +"7010","kp_rrif7010","kp_rrif701","other","account_type_posl_rashod",,,"Troškovi realiziranih usluga (490 i 601)-a1","Troškovi realiziranih usluga (490 i 601)-Analitika 1" +"702","kp_rrif702","kp_rrif70","view","account_type_view",,,"Troškovi neiskorištenog kapaciteta (HSFI t. 10.18. i MRS 2 t. 13)","Troškovi neiskorištenog kapaciteta (HSFI t. 10.18. i MRS 2 t. 13)" +"7020","kp_rrif7020","kp_rrif702","other","account_type_posl_rashod",,,"Troškovi neiskorištenog kapaciteta (HSFI t. 10.18. i MRS 2 t. 13)-a1","Troškovi neiskorištenog kapaciteta (HSFI t. 10.18. i MRS 2 t. 13)-Analitika 1" +"703","kp_rrif703","kp_rrif70","view","account_type_view",,,"Troškovi prodanih zaliha materijala i otpadaka (31, 32, 35 i 36)","Troškovi prodanih zaliha materijala i otpadaka (31, 32, 35 i 36)" +"7030","kp_rrif7030","kp_rrif703","other","account_type_posl_rashod",,,"Troškovi nabavne vrijednosti materijala, dijelova, inventara i otpadaka","Troškovi nabavne vrijednosti materijala, dijelova, inventara i otpadaka" +"7031","kp_rrif7031","kp_rrif703","other","account_type_posl_rashod",,,"Troškovi manjkova materijala, dijelova i inventara kojom se tereti odgovorna osoba","Troškovi manjkova materijala, dijelova i inventara kojom se tereti odgovorna osoba" +"704","kp_rrif704","kp_rrif70","view","account_type_view",,,"Rashodi zaliha proizvodnje (HSFI 10 i MRS 2)","Rashodi zaliha proizvodnje (HSFI 10 i MRS 2)" +"7040","kp_rrif7040","kp_rrif704","other","account_type_posl_rashod",,,"Dopušteni manjkovi -porezno priznati- tehnološki KRL i škart u proizvodnji (sa skupina 60, 62, 63 i 64)","Dopušteni manjkovi - tehnološki kalo, rastep, kvar i lom i škart u proizvodnji (sa skupina 60, 62, 63 i 64) - porezno priznati" +"7041","kp_rrif7041","kp_rrif704","other","account_type_posl_rashod",,,"Prekomjerni manjkovi-porezno priznati teh.KRL i škart u proiz.(60,62,63i64 -HSFI t10.21. i MRS2,t14)","Prekomjerni manjkovi - tehnološki kalo, rastep, kvar, lom i škart u proizvodnji (60, 62, 63 i 64 - HSFI t. 10.21. i MRS 2, t. 14.) a porezno dopušteni po očevidu i sl. - porezno priznati" +"7042","kp_rrif7042","kp_rrif704","other","account_type_posl_rashod",,,"Prekomjerni manjkovi proizvoda (HSFI t. 10.2. i MRS 2, t. 16.) - porezno nepriznati","Prekomjerni manjkovi proizvoda (HSFI t. 10.2. i MRS 2, t. 16.) - porezno nepriznati" +"7043","kp_rrif7043","kp_rrif704","other","account_type_posl_rashod",,,"Razlika višeg troška proizvodnje od neto-vrij. koja se može realizirati (HSFIt.10.35. i MRS2t.28.-33.)","Razlika višeg troška proizvodnje od neto-vrijednosti koja se može realizirati (HSFI t. 10.35. i MRS 2, t. 28. do 33.)" +"7044","kp_rrif7044","kp_rrif704","other","account_type_posl_rashod",,,"Troškovi isporučenih proizvoda u jamstvenom roku (zamjena)","Troškovi isporučenih proizvoda u jamstvenom roku (zamjena)" +"705","kp_rrif705","kp_rrif70","view","account_type_view",,,"Greškom neiskazani rashodi proteklih razdoblja","Greškom neiskazani rashodi proteklih razdoblja" +"7050","kp_rrif7050","kp_rrif705","other","account_type_posl_rashod",,,"Greškom neiskazani rashodi proteklih razdoblja-a1","Greškom neiskazani rashodi proteklih razdoblja-Analitika 1" +"706","kp_rrif706","kp_rrif70","view","account_type_view",,,"Gubitci iz ugovora o izgradnj (MRS 11, t. 36.)","Gubitci iz ugovora o izgradnj (MRS 11, t. 36.)" +"7060","kp_rrif7060","kp_rrif706","other","account_type_posl_rashod",,,"Gubitci iz ugovora o izgradnj (MRS 11, t. 36.)-a1","Gubitci iz ugovora o izgradnj (MRS 11, t. 36.)-Analitika 1" +"707","kp_rrif707","kp_rrif70","view","account_type_view",,,"Troškovi iz ugovora o ortaštvu","Troškovi iz ugovora o ortaštvu" +"7070","kp_rrif7070","kp_rrif707","other","account_type_posl_rashod",,,"Troškovi iz ugovora o ortaštvu-a1","Troškovi iz ugovora o ortaštvu-Analitika 1" +"708","kp_rrif708","kp_rrif70","view","account_type_view",,,"Troškovi vrijed. uskl. proizvod. u tijeku(609), poluproizvoda(629) i zaliha got. proizvoda (639 i 649)","Troškovi vrijednosnog usklađenja proizvodnje u tijeku (609), poluproizvoda (629) i zaliha gotovih proizvoda (639 i 649)" +"7080","kp_rrif7080","kp_rrif708","other","account_type_posl_rashod",,,"Troškovi vrijed. uskl. proizvod. u tijeku(609), poluproizvoda(629) i zaliha got. proizvoda (639 i 649)-a1","Troškovi vrijednosnog usklađenja proizvodnje u tijeku (609), poluproizvoda (629) i zaliha gotovih proizvoda (639 i 649)-Analitika 1" +"71","kp_rrif71","kp_rrif7","view","account_type_view",,,"TROŠKOVI PRODANE ROBE","TROŠKOVI PRODANE ROBE" +"710","kp_rrif710","kp_rrif71","view","account_type_view",,,"Nabavna vrijednost prodane robe","Nabavna vrijednost prodane robe" +"7100","kp_rrif7100","kp_rrif710","other","account_type_posl_rashod",,,"Trošak prodane robe u tuzemstvu","Trošak prodane robe u tuzemstvu" +"7101","kp_rrif7101","kp_rrif710","other","account_type_posl_rashod",,,"Trošak prodane robe u inozemstvu","Trošak prodane robe u inozemstvu" +"7102","kp_rrif7102","kp_rrif710","other","account_type_posl_rashod",,,"Troškovi prodane robe u tranzitu","Troškovi prodane robe u tranzitu" +"7103","kp_rrif7103","kp_rrif710","other","account_type_posl_rashod",,,"Trošak prodane robe u poslov. jed.","Trošak prodane robe u poslov. jed." +"711","kp_rrif711","kp_rrif71","view","account_type_view",,,"Nabavna vrijednost prodanih nekretnina i umjetnina","Nabavna vrijednost prodanih nekretnina i umjetnina" +"7110","kp_rrif7110","kp_rrif711","other","account_type_posl_rashod",,,"Nabavna vrijednost prodanih nekretnina i umjetnina-a1","Nabavna vrijednost prodanih nekretnina i umjetnina-Analitika 1" +"712","kp_rrif712","kp_rrif71","view","account_type_view",,,"Troškovi dugotr. imov. namijenjeni prodaji","Troškovi dugotr. imov. namijenjeni prodaji" +"7120","kp_rrif7120","kp_rrif712","other","account_type_posl_rashod",,,"Troškovi dugotr. imov. namijenjeni prodaji-a1","Troškovi dugotr. imov. namijenjeni prodaji-Analitika 1" +"713","kp_rrif713","kp_rrif71","view","account_type_view",,,"Troškovi kala, rastepa, kvara i loma na robi i otpisi robe","Troškovi kala, rastepa, kvara i loma na robi i otpisi robe" +"7130","kp_rrif7130","kp_rrif713","other","account_type_posl_rashod",,,"Kalo, rastep, kvar i lom u dopuštenoj visini prema Pravilniku HGK - porezno priznati","Kalo, rastep, kvar i lom u dopuštenoj visini prema Pravilniku HGK - porezno priznati" +"7131","kp_rrif7131","kp_rrif713","other","account_type_posl_rashod",,,"Manjkovi uslijed više sile (provalne krađe, poplava, požar, potres i sl.) - porezno priznati","Manjkovi uslijed više sile (provalne krađe, poplava, požar, potres i sl.) - porezno priznati" +"7132","kp_rrif7132","kp_rrif713","other","account_type_posl_rashod",,,"Manjkovi i otpisi trgovačke robe po očevidu PU i sl. - porezno priznati","Manjkovi i otpisi trgovačke robe po očevidu PU i sl. - porezno priznati" +"7133","kp_rrif7133","kp_rrif713","other","account_type_posl_rashod",,,"Prekomjerni kalo, rastep, kvar i lom + PDV - porezno nepriznati","Prekomjerni kalo, rastep, kvar i lom + PDV - porezno nepriznati" +"7134","kp_rrif7134","kp_rrif713","other","account_type_posl_rashod",,,"Manjak robe na teret odgovorne osobe","Manjak robe na teret odgovorne osobe" +"714","kp_rrif714","kp_rrif71","view","account_type_view",,,"Troškovi zamjene robe u jamstvenom roku","Troškovi zamjene robe u jamstvenom roku" +"7140","kp_rrif7140","kp_rrif714","other","account_type_posl_rashod",,,"Troškovi zamjene robe u jamstvenom roku-a1","Troškovi zamjene robe u jamstvenom roku-Analitika 1" +"715","kp_rrif715","kp_rrif71","view","account_type_view",,,"Greškom neiskazani rashodi prodane robe u proteklim razdobljima u trgovini","Greškom neiskazani rashodi prodane robe u proteklim razdobljima u trgovini" +"7150","kp_rrif7150","kp_rrif715","other","account_type_posl_rashod",,,"Greškom neiskazani rashodi prodane robe u proteklim razdobljima u trgovini-a1","Greškom neiskazani rashodi prodane robe u proteklim razdobljima u trgovini-Analitika 1" +"718","kp_rrif718","kp_rrif71","view","account_type_view",,,"Troškovi vrijednosnog usklađenja trgovačke robe i predujmova (669, 679, 689)","Troškovi vrijednosnog usklađenja trgovačke robe i predujmova (669, 679, 689)" +"7180","kp_rrif7180","kp_rrif718","other","account_type_posl_rashod",,,"Troškovi vrijednosnog usklađenja trgovačke robe i predujmova (669, 679, 689)-a1","Troškovi vrijednosnog usklađenja trgovačke robe i predujmova (669, 679, 689)-Analitika 1" +"719","kp_rrif719","kp_rrif71","view","account_type_view",,,"Troškovi vrijednosnog usklađenja dugotrajne imovine namijenjene prodaji (699)","Troškovi vrijednosnog usklađenja dugotrajne imovine namijenjene prodaji (699)" +"7190","kp_rrif7190","kp_rrif719","other","account_type_posl_rashod",,,"Troškovi vrijednosnog usklađenja dugotrajne imovine namijenjene prodaji (699)-a1","Troškovi vrijednosnog usklađenja dugotrajne imovine namijenjene prodaji (699)-Analitika 1" +"72","kp_rrif72","kp_rrif7","view","account_type_view",,,"TROŠKOVI ADMINISTRACIJE I OSTALI RASHODI","TROŠKOVI ADMINISTRACIJE I OSTALI RASHODI" +"720","kp_rrif720","kp_rrif72","view","account_type_view",,,"Troškovi uprave, prodaje, administracije (491)","Troškovi uprave, prodaje, administracije (491)" +"7200","kp_rrif7200","kp_rrif720","other","account_type_posl_rashod",,,"Troškovi uprave, prodaje, administracije (491)-a1","Troškovi uprave, prodaje, administracije (491)-Analitika 1" +"721","kp_rrif721","kp_rrif72","view","account_type_view",,,"Ostali poslovni rashodi - nespomenuti","Ostali poslovni rashodi - nespomenuti" +"7210","kp_rrif7210","kp_rrif721","other","account_type_posl_rashod",,,"Ostali poslovni rashodi - nespomenuti-a1","Ostali poslovni rashodi - nespomenuti-Analitika 1" +"73","kp_rrif73","kp_rrif7","view","account_type_view",,,"IZVANREDNI - OSTALI RASHODI","IZVANREDNI - OSTALI RASHODI" +"730","kp_rrif730","kp_rrif73","view","account_type_view",,,"Izvanredni rashodi od prodaje dugotrajne imovine (HSFI t. 8.35.)","Izvanredni rashodi od prodaje dugotrajne imovine (HSFI t. 8.35.)" +"7300","kp_rrif7300","kp_rrif730","other","account_type_posl_rashod",,,"Izvanredni rashodi od prodaje dugotrajne imovine (HSFI t. 8.35.)-a1","Izvanredni rashodi od prodaje dugotrajne imovine (HSFI t. 8.35.)-Analitika 1" +"731","kp_rrif731","kp_rrif73","view","account_type_view",,,"Izvanredni otpisi od otuđenja imovine, nastali neočekivano i u visokoj vrijednosti (HSFt4.7. i MRS10t9)","Izvanredni otpisi od otuđenja imovine koji su nastali neočekivano i u visokoj vrijednosti (HSFI t. 4.7. i MRS 10. t. 9.)" +"7310","kp_rrif7310","kp_rrif731","other","account_type_posl_rashod",,,"Izvanredni otpisi od otuđenja imovine, nastali neočekivano i u visokoj vrijednosti (HSFt4.7. i MRS10t9)-a1","Izvanredni otpisi od otuđenja imovine koji su nastali neočekivano i u visokoj vrijednosti (HSFI t. 4.7. i MRS 10. t. 9.)-Analitika 1" +"732","kp_rrif732","kp_rrif73","view","account_type_view",,,"Gubitci zbog izvlaštenja ili zbog prirodnih katastrofa na važnom dijelu imovine","Gubitci zbog izvlaštenja ili zbog prirodnih katastrofa na važnom dijelu imovine" +"7320","kp_rrif7320","kp_rrif732","other","account_type_posl_rashod",,,"Gubitci zbog izvlaštenja ili zbog prirodnih katastrofa na važnom dijelu imovine-a1","Gubitci zbog izvlaštenja ili zbog prirodnih katastrofa na važnom dijelu imovine-Analitika 1" +"733","kp_rrif733","kp_rrif73","view","account_type_view",,,"Izvanredni rashodi iz ostalih rijetkih i neobičnih događaja ili transakcija","Izvanredni rashodi iz ostalih rijetkih i neobičnih događaja ili transakcija" +"7330","kp_rrif7330","kp_rrif733","other","account_type_posl_rashod",,,"Izvanredni rashodi iz ostalih rijetkih i neobičnih događaja ili transakcija-a1","Izvanredni rashodi iz ostalih rijetkih i neobičnih događaja ili transakcija-Analitika 1" +"734","kp_rrif734","kp_rrif73","view","account_type_view",,,"Izvanredne kazne, penali, odštete, naknadno utvrđ. obveze i sl.","Izvanredne kazne, penali, odštete, naknadno utvrđ. obveze i sl." +"7340","kp_rrif7340","kp_rrif734","other","account_type_posl_rashod",,,"Izvanredne kazne, penali, odštete, naknadno utvrđ. obveze i sl.-a1","Izvanredne kazne, penali, odštete, naknadno utvrđ. obveze i sl.-Analitika 1" +"735","kp_rrif735","kp_rrif73","view","account_type_view",,,"Nerealizirani gubitci","Nerealizirani gubitci" +"7350","kp_rrif7350","kp_rrif735","other","account_type_posl_rashod",,,"Nerealizirani gubitci-a1","Nerealizirani gubitci-Analitika 1" +"737","kp_rrif737","kp_rrif73","view","account_type_view",,,"Gubitci od procjene biološke imovine","Gubitci od procjene biološke imovine" +"7370","kp_rrif7370","kp_rrif737","other","account_type_posl_rashod",,,"Gubitci od procjene biološke imovine-a1","Gubitci od procjene biološke imovine-Analitika 1" +"74","kp_rrif74","kp_rrif7","view","account_type_view",,,"UDIO U GUBITKU I DOBITKU PRIDRUŽENIH PODUZETNIKA","UDIO U GUBITKU I DOBITKU PRIDRUŽENIH PODUZETNIKA" +"740","kp_rrif740","kp_rrif74","view","account_type_view",,,"Udio u gubitku pridruženih poduzetnika","Udio u gubitku pridruženih poduzetnika" +"7400","kp_rrif7400","kp_rrif740","other","account_type_posl_rashod",,,"Udio u gubitku povezanih društava","Udio u gubitku povezanih društava" +"7401","kp_rrif7401","kp_rrif740","other","account_type_posl_rashod",,,"Udio u gubitku ortaka","Udio u gubitku ortaka" +"745","kp_rrif745","kp_rrif74","view","account_type_view",,,"Udio u dobitku od pridruženih poduzetnika","Udio u dobitku od pridruženih poduzetnika" +"7450","kp_rrif7450","kp_rrif745","other","account_type_posl_prihod",,,"Udio u dobitku povezanih društava","Udio u dobitku povezanih društava" +"7451","kp_rrif7451","kp_rrif745","other","account_type_posl_prihod",,,"Udio u dobitku ortaštva","Udio u dobitku ortaštva" +"75","kp_rrif75","kp_rrif7","view","account_type_view",,,"PRIHODI OD PRODAJE PROIZVODA I USLUGA","PRIHODI OD PRODAJE PROIZVODA I USLUGA" +"750","kp_rrif750","kp_rrif75","view","account_type_view",,,"Prihodi od prodaje proizvoda (analitika po proizvodima ili profitnim centrima)","Prihodi od prodaje proizvoda (analitika po proizvodima ili profitnim centrima)" +"7500","kp_rrif7500","kp_rrif750","other","account_type_posl_prihod",,,"Prihodi od prodaje proizvoda od redovne prodaje","Prihodi od prodaje proizvoda od redovne prodaje" +"7501","kp_rrif7501","kp_rrif750","other","account_type_posl_prihod",,,"Prihodi od prodaje proizvoda na kredit ili otplatu","Prihodi od prodaje proizvoda na kredit ili otplatu" +"7502","kp_rrif7502","kp_rrif750","other","account_type_posl_prihod",,,"Prihodi ostvareni u slobodnoj zoni","Prihodi ostvareni u slobodnoj zoni" +"7503","kp_rrif7503","kp_rrif750","other","account_type_posl_prihod",,,"Prodaja u vlastitim prodavaonicama","Prodaja u vlastitim prodavaonicama" +"7504","kp_rrif7504","kp_rrif750","other","account_type_posl_prihod",,,"Prihodi od prodaje stanova i dr. građevina","Prihodi od prodaje stanova i dr. građevina" +"7505","kp_rrif7505","kp_rrif750","other","account_type_posl_prihod",,,"Prihodi od prodaje poluproizvoda i nedovršenih proizvoda","Prihodi od prodaje poluproizvoda i nedovršenih proizvoda" +"7506","kp_rrif7506","kp_rrif750","other","account_type_posl_prihod",,,"Prihodi ostvareni u posl. jed. na području posebne držav. skrbi i u Vukovaru","Prihodi ostvareni u posl. jed. na području posebne držav. skrbi i u Vukovaru" +"7507","kp_rrif7507","kp_rrif750","other","account_type_posl_prihod",,,"Prihod od povratne naknade za ambalažu (bez PDV-a)","Prihod od povratne naknade za ambalažu (bez PDV-a)" +"7508","kp_rrif7508","kp_rrif750","other","account_type_posl_prihod",,,"Prihod od prodaje otpadaka iz proizvodnje","Prihod od prodaje otpadaka iz proizvodnje" +"7509","kp_rrif7509","kp_rrif750","other","account_type_posl_prihod",,,"Prihodi od prodaje poluproizvoda i nedovršenih proizvoda","Prihodi od prodaje poluproizvoda i nedovršenih proizvoda" +"751","kp_rrif751","kp_rrif75","view","account_type_view",,,"Prihodi od prodaje usluga","Prihodi od prodaje usluga" +"7510","kp_rrif7510","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od servisnih usluga, usluga popravaka i sl. usluga","Prihodi od servisnih usluga, usluga popravaka i sl. usluga" +"7511","kp_rrif7511","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od restorana i gostionica","Prihodi od restorana i gostionica" +"7512","kp_rrif7512","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od hotela i noćenja","Prihodi od hotela i noćenja" +"7513","kp_rrif7513","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od knjigovodstvenih, usluga poreznog savjetovanja, revizorskih, konzultantskih i dr. usluga","Prihodi od knjigovodstvenih, usluga poreznog savjetovanja, revizorskih, konzultantskih i dr. usluga" +"7514","kp_rrif7514","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od usluga prijevoza","Prihodi od usluga prijevoza" +"7515","kp_rrif7515","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od komunalnih usluga","Prihodi od komunalnih usluga" +"7516","kp_rrif7516","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od promidžbenih usluga","Prihodi od promidžbenih usluga" +"7517","kp_rrif7517","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od usluga zaštite i istraživanja","Prihodi od usluga zaštite i istraživanja" +"7518","kp_rrif7518","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od programskih usluga","Prihodi od programskih usluga" +"7519","kp_rrif7519","kp_rrif751","other","account_type_posl_prihod",,,"Prihodi od prodaje ostalih usluga","Prihodi od prodaje ostalih usluga" +"752","kp_rrif752","kp_rrif75","view","account_type_view",,,"Prihodi od graditeljskih usluga - iz ugovora o izgradnji (građevina, postrojenja, brodova i sl.)","Prihodi od graditeljskih usluga - iz ugovora o izgradnji (građevina, postrojenja, brodova i sl.)" +"7520","kp_rrif7520","kp_rrif752","other","account_type_posl_prihod",,,"Prihodi od graditeljskih usluga - iz ugovora o izgradnji (građevina, postrojenja, brodova i sl.)-a1","Prihodi od graditeljskih usluga - iz ugovora o izgradnji (građevina, postrojenja, brodova i sl.)-Analitika 1" +"753","kp_rrif753","kp_rrif75","view","account_type_view",,,"Prihodi od prodaje dobara u inozemstvo (moguća analitika po vrstama proizvoda i zemljama)","Prihodi od prodaje dobara u inozemstvo (moguća analitika po vrstama proizvoda i zemljama)" +"7530","kp_rrif7530","kp_rrif753","other","account_type_posl_prihod",,,"Prihodi od prodaje dobara u inozemstvo (moguća analitika po vrstama proizvoda i zemljama)-a1","Prihodi od prodaje dobara u inozemstvo (moguća analitika po vrstama proizvoda i zemljama)-Analitika 1" +"754","kp_rrif754","kp_rrif75","view","account_type_view",,,"Prihodi od prodaje usluga u inozemstvo (moguća analitika po vrstama usluga i zemljama kupcima)","Prihodi od prodaje usluga u inozemstvo (moguća analitika po vrstama usluga i zemljama kupcima)" +"7540","kp_rrif7540","kp_rrif754","other","account_type_posl_prihod",,,"Prihodi iz međunarodne plovidbe brodovima (čl. 26., st. 10. ZoPD)","Prihodi iz međunarodne plovidbe brodovima (čl. 26., st. 10. ZoPD)" +"7541","kp_rrif7541","kp_rrif754","other","account_type_posl_prihod",,,"Prihodi od internetskih usluga za inozemstvo","Prihodi od internetskih usluga za inozemstvo" +"7542","kp_rrif7542","kp_rrif754","other","account_type_posl_prihod",,,"Prihodi od poslovnih jedinica u inozemstvu","Prihodi od poslovnih jedinica u inozemstvu" +"7543","kp_rrif7543","kp_rrif754","other","account_type_posl_prihod",,,"Prihodi od prodaje turističkih usluga u inozem.","Prihodi od prodaje turističkih usluga u inozem." +"755","kp_rrif755","kp_rrif75","view","account_type_view",,,"Prihodi od prodaje proizvoda i usluga poduzet. u kojima postoje sudjelujući interesi (do 20% udjela)","Prihodi od prodaje proizvoda i usluga poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)" +"7550","kp_rrif7550","kp_rrif755","other","account_type_posl_prihod",,,"Prihodi od prodaje proizvoda i usluga poduzet. u kojima postoje sudjelujući interesi (do 20% udjela)-a1","Prihodi od prodaje proizvoda i usluga poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)-Analitika 1" +"756","kp_rrif756","kp_rrif75","view","account_type_view",,,"Prihodi od prodaje proizvoda i usluga ovisnim društvima (analitika po društvima)","Prihodi od prodaje proizvoda i usluga ovisnim društvima (analitika po društvima)" +"7560","kp_rrif7560","kp_rrif756","other","account_type_posl_prihod",,,"Prihodi od prodaje proizvoda i usluga ovisnim društvima (analitika po društvima)-a1","Prihodi od prodaje proizvoda i usluga ovisnim društvima (analitika po društvima)-Analitika 1" +"757","kp_rrif757","kp_rrif75","view","account_type_view",,,"Prihodi od najmova i zakupa","Prihodi od najmova i zakupa" +"7570","kp_rrif7570","kp_rrif757","other","account_type_posl_prihod",,,"Prihodi od najmova i zakupa-a1","Prihodi od najmova i zakupa-Analitika 1" +"758","kp_rrif758","kp_rrif75","view","account_type_view",,,"Prihodi iz ortaštva","Prihodi iz ortaštva" +"7580","kp_rrif7580","kp_rrif758","other","account_type_posl_prihod",,,"Prihodi iz ortaštva-a1","Prihodi iz ortaštva-Analitika 1" +"759","kp_rrif759","kp_rrif75","view","account_type_view",,,"Ostali prihodi od prodaje učinaka","Ostali prihodi od prodaje učinaka" +"7590","kp_rrif7590","kp_rrif759","other","account_type_posl_prihod",,,"Ostali prihodi od prodaje učinaka-a1","Ostali prihodi od prodaje učinaka-Analitika 1" +"76","kp_rrif76","kp_rrif7","view","account_type_view",,,"PRIHODI OD PRODAJE TRGOVAČKE ROBE","PRIHODI OD PRODAJE TRGOVAČKE ROBE" +"760","kp_rrif760","kp_rrif76","view","account_type_view",,,"Prihodi od prodaje robe","Prihodi od prodaje robe" +"7600","kp_rrif7600","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prodaje robe na veliko (analitika po prodajnim mjestima)","Prihodi od prodaje robe na veliko (analitika po prodajnim mjestima)" +"7601","kp_rrif7601","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prodaje uvezene robe na veliko","Prihodi od prodaje uvezene robe na veliko" +"7602","kp_rrif7602","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prodaje robe u tranzitu","Prihodi od prodaje robe u tranzitu" +"7603","kp_rrif7603","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prodaje robe na malo (analitika po prodav.)","Prihodi od prodaje robe na malo (analitika po prodav.)" +"7604","kp_rrif7604","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prodaje robe u povezanim društvima","Prihodi od prodaje robe u povezanim društvima" +"7605","kp_rrif7605","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prodaje robe dane u komisiju ili konsignaciju","Prihodi od prodaje robe dane u komisiju ili konsignaciju" +"7606","kp_rrif7606","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prodaje u poslov. jed. na području posebne držav. skrbi i Vukovaru","Prihodi od prodaje u poslov. jed. na području posebne držav. skrbi i Vukovaru" +"7607","kp_rrif7607","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od povratne naknade za ambalažu (bez PDV-a)","Prihodi od povratne naknade za ambalažu (bez PDV-a)" +"7608","kp_rrif7608","kp_rrif760","other","account_type_posl_prihod",,,"Prihodi od prometa nekretnina","Prihodi od prometa nekretnina" +"761","kp_rrif761","kp_rrif76","view","account_type_view",,,"Prihodi od prodaje robe na inozemnom tržištu","Prihodi od prodaje robe na inozemnom tržištu" +"7610","kp_rrif7610","kp_rrif761","other","account_type_posl_prihod",,,"Prihodi od prodaje robe na inozemnom tržištu-a1","Prihodi od prodaje robe na inozemnom tržištu-Analitika 1" +"762","kp_rrif762","kp_rrif76","view","account_type_view",,,"Prihodi od trgovačkih usluga","Prihodi od trgovačkih usluga" +"7620","kp_rrif7620","kp_rrif762","other","account_type_posl_prihod",,,"Prihodi od provizija","Prihodi od provizija" +"7621","kp_rrif7621","kp_rrif762","other","account_type_posl_prihod",,,"Prihodi od franšiza i robnih znakova","Prihodi od franšiza i robnih znakova" +"7622","kp_rrif7622","kp_rrif762","other","account_type_posl_prihod",,,"Prihodi od usluge posredovanja","Prihodi od usluge posredovanja" +"7623","kp_rrif7623","kp_rrif762","other","account_type_posl_prihod",,,"Prihodi od davanja mišljenja","Prihodi od davanja mišljenja" +"763","kp_rrif763","kp_rrif76","view","account_type_view",,,"Prihodi od prodaje nekurentne robe (robe u kvaru, ošte-ćenju, demodirana i sl.)","Prihodi od prodaje nekurentne robe (robe u kvaru, ošte-ćenju, demodirana i sl.)" +"7630","kp_rrif7630","kp_rrif763","other","account_type_posl_prihod",,,"Prihodi od prodaje nekurentne robe (robe u kvaru, ošte-ćenju, demodirana i sl.)-a1","Prihodi od prodaje nekurentne robe (robe u kvaru, ošte-ćenju, demodirana i sl.)-Analitika 1" +"764","kp_rrif764","kp_rrif76","view","account_type_view",,,"Prihodi od prodaje robe na kredit","Prihodi od prodaje robe na kredit" +"7640","kp_rrif7640","kp_rrif764","other","account_type_posl_prihod",,,"Prihodi od prodaje robe na robni kredit","Prihodi od prodaje robe na robni kredit" +"7641","kp_rrif7641","kp_rrif764","other","account_type_posl_prihod",,,"Prihodi od prodaje robe na potrošački kredit","Prihodi od prodaje robe na potrošački kredit" +"765","kp_rrif765","kp_rrif76","view","account_type_view",,,"Prihodi od prodaje robe poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)","Prihodi od prodaje robe poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)" +"7650","kp_rrif7650","kp_rrif765","other","account_type_posl_prihod",,,"Prihodi od prodaje robe poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)-a1","Prihodi od prodaje robe poduzetnicima u kojima postoje sudjelujući interesi (do 20% udjela)-Analitika 1" +"766","kp_rrif766","kp_rrif76","view","account_type_view",,,"Prihodi od prodaje robe ovisnim društvima","Prihodi od prodaje robe ovisnim društvima" +"7660","kp_rrif7660","kp_rrif766","other","account_type_posl_prihod",,,"Prihodi od prodaje robe ovisnim društvima-a1","Prihodi od prodaje robe ovisnim društvima-Analitika 1" +"767","kp_rrif767","kp_rrif76","view","account_type_view",,,"Prihodi od dane (prodane) robe u financijski lizing (najam)","Prihodi od dane (prodane) robe u financijski lizing (najam)" +"7670","kp_rrif7670","kp_rrif767","other","account_type_posl_prihod",,,"Prihodi od dane (prodane) robe u financijski lizing (najam)-a1","Prihodi od dane (prodane) robe u financijski lizing (najam)-Analitika 1" +"768","kp_rrif768","kp_rrif76","view","account_type_view",,,"Prihodi od preprodaje nekretnina i umjetnina","Prihodi od preprodaje nekretnina i umjetnina" +"7680","kp_rrif7680","kp_rrif768","other","account_type_posl_prihod",,,"Prihodi od preprodaje nekretnina i umjetnina-a1","Prihodi od preprodaje nekretnina i umjetnina-Analitika 1" +"769","kp_rrif769","kp_rrif76","view","account_type_view",,,"Ostali prihodi od prodaje roba i trgovačkih usluga","Ostali prihodi od prodaje roba i trgovačkih usluga" +"7690","kp_rrif7690","kp_rrif769","other","account_type_posl_prihod",,,"Prihodi od prikupljanja ambalaže","Prihodi od prikupljanja ambalaže" +"7691","kp_rrif7691","kp_rrif769","other","account_type_posl_prihod",,,"Prihodi od zbrinjavanja otpada","Prihodi od zbrinjavanja otpada" +"7692","kp_rrif7692","kp_rrif769","other","account_type_posl_prihod",,,"Prihodi od prodaje korisnog otpada","Prihodi od prodaje korisnog otpada" +"77","kp_rrif77","kp_rrif7","view","account_type_view",,,"FINANCIJSKI PRIHODI","FINANCIJSKI PRIHODI" +"770","kp_rrif770","kp_rrif77","view","account_type_view",,,"Kamate, tečajne razlike, dividende i sl. prihodi iz odnosa s povezanim poduzetnicima","Kamate, tečajne razlike, dividende i sl. prihodi iz odnosa s povezanim poduzetnicima" +"7700","kp_rrif7700","kp_rrif770","other","account_type_posl_prihod",,,"Prihodi od kamata od povezanih poduzetnika","Prihodi od kamata od povezanih poduzetnika" +"7701","kp_rrif7701","kp_rrif770","other","account_type_posl_prihod",,,"Prihodi od tečajnih razlika od povez. poduzet.","Prihodi od tečajnih razlika od povez. poduzet." +"7702","kp_rrif7702","kp_rrif770","other","account_type_posl_prihod",,,"Prihodi od dividende (dobitka) iz udjela u povezanim poduzetnicima","Prihodi od dividende (dobitka) iz udjela u povezanim poduzetnicima" +"7703","kp_rrif7703","kp_rrif770","other","account_type_posl_prihod",,,"Prihodi od valutne (indeksne) klauzule iz odnosa s povezanim poduzetnicima","Prihodi od valutne (indeksne) klauzule iz odnosa s povezanim poduzetnicima" +"7704","kp_rrif7704","kp_rrif770","other","account_type_posl_prihod",,,"Ostali financijski prihodi od povezanih poduzet","Ostali financijski prihodi od povezanih poduzet" +"7705","kp_rrif7705","kp_rrif770","other","account_type_posl_prihod",,,"Ostali financijski prihodi od povez. poduzetnika","Ostali financijski prihodi od povez. poduzetnika" +"7706","kp_rrif7706","kp_rrif770","other","account_type_posl_prihod",,,"Dobitci od prodaje udjela i dionica od povezanih poduzetnika","Dobitci od prodaje udjela i dionica od povezanih poduzetnika" +"771","kp_rrif771","kp_rrif77","view","account_type_view",,,"Prihodi od kamata","Prihodi od kamata" +"7710","kp_rrif7710","kp_rrif771","other","account_type_posl_prihod",,,"Prihodi od redovnih kamata","Prihodi od redovnih kamata" +"7711","kp_rrif7711","kp_rrif771","other","account_type_posl_prihod",,,"Prihodi od zateznih kamata","Prihodi od zateznih kamata" +"7712","kp_rrif7712","kp_rrif771","other","account_type_posl_prihod",,,"Prihodi od kamata iz financijske imovine i dr.","Prihodi od kamata iz financijske imovine i dr." +"7713","kp_rrif7713","kp_rrif771","other","account_type_posl_prihod",,,"Kamate na depozite i jamčevine","Kamate na depozite i jamčevine" +"772","kp_rrif772","kp_rrif77","view","account_type_view",,,"Prihodi od tečajnih razlika","Prihodi od tečajnih razlika" +"7720","kp_rrif7720","kp_rrif772","other","account_type_posl_prihod",,,"Pozitivne tečajne razlike iz tražbina i stanja deviza na računu","Pozitivne tečajne razlike iz tražbina i stanja deviza na računu" +"7721","kp_rrif7721","kp_rrif772","other","account_type_posl_prihod",,,"Pozitivne tečajne razlike iz nižih obveza prema inozemstvu","Pozitivne tečajne razlike iz nižih obveza prema inozemstvu" +"7722","kp_rrif7722","kp_rrif772","other","account_type_posl_prihod",,,"Prihodi od ostalih tečajnih razlika","Prihodi od ostalih tečajnih razlika" +"773","kp_rrif773","kp_rrif77","view","account_type_view",,,"Prihodi od dividende i dobitaka iz udjela","Prihodi od dividende i dobitaka iz udjela" +"7730","kp_rrif7730","kp_rrif773","other","account_type_posl_prihod",,,"Prihodi od dividendi","Prihodi od dividendi" +"7731","kp_rrif7731","kp_rrif773","other","account_type_posl_prihod",,,"Prihodi od udjela u dobitku u d.o.o. i dr.","Prihodi od udjela u dobitku u d.o.o. i dr." +"774","kp_rrif774","kp_rrif77","view","account_type_view",,,"Ostali financijski prihodi","Ostali financijski prihodi" +"7740","kp_rrif7740","kp_rrif774","other","account_type_posl_prihod",,,"Prihodi iz udjela u investicijskim i dr. fondovima","Prihodi iz udjela u investicijskim i dr. fondovima" +"7741","kp_rrif7741","kp_rrif774","other","account_type_posl_prihod",,,"Dobitci od prodaje dionica i udjela (s nepovez. društvima) i dr. vrijed. papira","Dobitci od prodaje dionica i udjela (s nepovez. društvima) i dr. vrijed. papira" +"7742","kp_rrif7742","kp_rrif774","other","account_type_posl_prihod",,,"Prihodi od primjene valutne (indeksne) klauzule","Prihodi od primjene valutne (indeksne) klauzule" +"7743","kp_rrif7743","kp_rrif774","other","account_type_posl_prihod",,,"Ostali financijski prihodi iz odnosa s nepovezanim poduzetnicima i dr. osobama","Ostali financijski prihodi iz odnosa s nepovezanim poduzetnicima i dr. osobama" +"7744","kp_rrif7744","kp_rrif774","other","account_type_posl_prihod",,,"Prihodi od prodaje ostale financijske imovine","Prihodi od prodaje ostale financijske imovine" +"775","kp_rrif775","kp_rrif77","view","account_type_view",,,"Dio prihoda od pridruženih poduzetnika i sudjelujućih interesa","Dio prihoda od pridruženih poduzetnika i sudjelujućih interesa" +"7750","kp_rrif7750","kp_rrif775","other","account_type_posl_prihod",,,"Financijski prihodi (dividende, dobitci) iz udjela u društvima do 20%","Financijski prihodi (dividende, dobitci) iz udjela u društvima do 20%" +"7751","kp_rrif7751","kp_rrif775","other","account_type_posl_prihod",,,"Prihodi od kamata, teč. razlika i dr. fin. prihoda iz odnosa s pridruženim poduz. i od udjela do 20%","Prihodi od kamata, tečajnih razlika i dr. fin. prihoda iz odnosa s pridruženim poduzetnicima i od društava u kojima se drži udio do 20%" +"776","kp_rrif776","kp_rrif77","view","account_type_view",,,"Nerealizirani dobitci (prihodi) od financijske imovine","Nerealizirani dobitci (prihodi) od financijske imovine" +"7760","kp_rrif7760","kp_rrif776","other","account_type_posl_prihod",,,"Prihodi iz procjene fin. imovine namijenjene za trgovanje (HSFI 15. t. 15.52. i MRS 39. t. 55a. i dr.)","Prihodi iz procjene fin. imovine namijenjene za trgovanje (HSFI 15. t. 15.52. i MRS 39. t. 55a. i dr.)" +"7761","kp_rrif7761","kp_rrif776","other","account_type_posl_prihod",,,"Dobitci iz promjene fer vrijednosti ulaganja u nekretnine (HSFI 7. i MRS 40)","Dobitci iz promjene fer vrijednosti ulaganja u nekretnine (HSFI 7. i MRS 40)" +"7762","kp_rrif7762","kp_rrif776","other","account_type_posl_prihod",,,"Dobitci iz promjene vrijednosti ostale imovine","Dobitci iz promjene vrijednosti ostale imovine" +"777","kp_rrif777","kp_rrif77","view","account_type_view",,,"Prihodi negativnog goodwilla","Prihodi negativnog goodwilla" +"7770","kp_rrif7770","kp_rrif777","other","account_type_posl_prihod",,,"Prihodi negativnog goodwilla-a1","Prihodi negativnog goodwilla-Analitika 1" +"778","kp_rrif778","kp_rrif77","view","account_type_view",,,"Ostali financijski prihodi","Ostali financijski prihodi" +"7780","kp_rrif7780","kp_rrif778","other","account_type_posl_prihod",,,"Prihodi iz burzovnih transakcija","Prihodi iz burzovnih transakcija" +"7781","kp_rrif7781","kp_rrif778","other","account_type_posl_prihod",,,"Prihodi iz faktoringa, forwarda, opcija i sl.","Prihodi iz faktoringa i sl." +"7782","kp_rrif7782","kp_rrif778","other","account_type_posl_prihod",,,"Prihodi od neplaćenih obveza - davanja (za šume, poreze, članarine, naknade i dr.)","Prihodi od neplaćenih obveza - davanja (za šume, poreze, članarine, naknade i dr.)" +"7783","kp_rrif7783","kp_rrif778","other","account_type_posl_prihod",,,"Prihodi iz fin. leasinga","Prihodi iz fin. leasinga" +"7784","kp_rrif7784","kp_rrif778","other","account_type_posl_prihod",,,"Prihodi od naplate životnog osiguranja","Prihodi od naplate životnog osiguranja" +"78","kp_rrif78","kp_rrif7","view","account_type_view",,,"OSTALI POSLOVNI I IZVANREDNI PRIHODI","OSTALI POSLOVNI I IZVANREDNI PRIHODI" +"780","kp_rrif780","kp_rrif78","view","account_type_view",,,"Prihodi od otpisa obveza i popusta","Prihodi od otpisa obveza i popusta" +"7800","kp_rrif7800","kp_rrif780","other","account_type_izv_prihod",,,"Otpisi obveza prema dobavljačima, obveza za primljene predujmove i sl.","Otpisi obveza prema dobavljačima, obveza za primljene predujmove i sl." +"7801","kp_rrif7801","kp_rrif780","other","account_type_izv_prihod",,,"Otpis obveza prema kreditorima","Otpis obveza prema kreditorima" +"7802","kp_rrif7802","kp_rrif780","other","account_type_izv_prihod",,,"Otpis obveza prema zaposlenicima","Otpis obveza prema zaposlenicima" +"7803","kp_rrif7803","kp_rrif780","other","account_type_izv_prihod",,,"Prihodi od zastare obveza","Prihodi od zastare obveza" +"7805","kp_rrif7805","kp_rrif780","other","account_type_izv_prihod",,,"Otpis ostalih obveza","Otpis ostalih obveza" +"7807","kp_rrif7807","kp_rrif780","other","account_type_izv_prihod",,,"Prihodi od naknadnih odobrenja - sniženja i popusta od dobavljača i dr.","Prihodi od naknadnih odobrenja - sniženja i popusta od dobavljača i dr." +"781","kp_rrif781","kp_rrif78","view","account_type_view",,,"Prihodi od rezidualnih imovinskih stavki, viškova i procjena","Prihodi od rezidualnih imovinskih stavki, viškova i procjena" +"7810","kp_rrif7810","kp_rrif781","other","account_type_izv_prihod",,,"Prihodi od prodaje otpisanih i rashodovanih sredstava rada (alata, opreme i sl.)","Prihodi od prodaje otpisanih i rashodovanih sredstava rada (alata, opreme i sl.)" +"7811","kp_rrif7811","kp_rrif781","other","account_type_izv_prihod",,,"Prihodi od prodaje dugotrajne materijalne imovine (iz uporabe a amortizirane)","Prihodi od prodaje dugotrajne materijalne imovine (iz uporabe i amortiz.)" +"7812","kp_rrif7812","kp_rrif781","other","account_type_izv_prihod",,,"Prihodi od prodaje dugotr. nemater. imovine (trgov. znak, patent i dr.) - iz uporabe","Prihodi od prodaje dugotr. nemater. imovine (trgov. znak, patent i dr.) - iz uporabe" +"7813","kp_rrif7813","kp_rrif781","other","account_type_izv_prihod",,,"Prihodi od ranije otpisanih zaliha po novoj procjeni (HSFI t. 10.38. i MRS 2, t. 33.)","Prihodi od ranije otpisanih zaliha po novoj procjeni (HSFI t. 10.38. i MRS 2, t. 33.)" +"7814","kp_rrif7814","kp_rrif781","other","account_type_izv_prihod",,,"Inventurni viškovi na robi, proizvodima i zalihama sirovina, materijala, dijelova i dugotrajne imovine","Inventurni viškovi na robi, proizvodima i zalihama sirovina, materijala, dijelova i dugotrajne imovine" +"7815","kp_rrif7815","kp_rrif781","other","account_type_izv_prihod",,,"Viškovi u blagajni (novac, vrijed. papiri i dr.)","Viškovi u blagajni (novac, vrijed. papiri i dr.)" +"7816","kp_rrif7816","kp_rrif781","other","account_type_izv_prihod",,,"Viškovi iz neidentificiranih novčanih doznaka u tekućem poslovanju","Viškovi iz neidentificiranih novčanih doznaka u tekućem poslovanju" +"7817","kp_rrif7817","kp_rrif781","other","account_type_izv_prihod",,,"Prihodi od prodaje ulaganja u nekretnine (MRS 40. t. 69.)","Prihodi od ulaganja u nekretnine (MRS 40. t. 69.)" +"7818","kp_rrif7818","kp_rrif781","other","account_type_izv_prihod",,,"Prihodi od procjene prometa (utrška) po nalazu poreznog nadzora","Prihodi od procjene prometa (utrška) po nalazu poreznog nadzora" +"7819","kp_rrif7819","kp_rrif781","other","account_type_izv_prihod",,,"Prihodi od ostalih primitaka bez nadoknade","Prihodi od ostalih primitaka bez nadoknade" +"782","kp_rrif782","kp_rrif78","view","account_type_view",,,"Prihodi od ukidanja rezerviranja i naknadno naplaćeni prihodi","Prihodi od ukidanja rezerviranja i naknadno naplaćeni prihodi" +"7820","kp_rrif7820","kp_rrif782","other","account_type_izv_prihod",,,"Prihodovanje dugoročnih rezerviranja","Prihodovanje dugoročnih rezerviranja" +"7821","kp_rrif7821","kp_rrif782","other","account_type_izv_prihod",,,"Naknadno utvrđeni prihodi","Naknadno utvrđeni prihodi" +"7822","kp_rrif7822","kp_rrif782","other","account_type_izv_prihod",,,"Ukidanje pasiv. vrem. razgraničenja","Ukidanje pasiv. vrem. razgraničenja" +"7824","kp_rrif7824","kp_rrif782","other","account_type_izv_prihod",,,"Prihodi od ukidanja troškova od kojih se odustalo","Prihodi od ukidanja troškova od kojih se odustalo" +"7825","kp_rrif7825","kp_rrif782","other","account_type_izv_prihod",,,"Prihodi od naknadno naplaćenih jamstava - garancija","Prihodi od naknadno naplaćenih jamstava - garancija" +"7826","kp_rrif7826","kp_rrif782","other","account_type_izv_prihod",,,"Prihodi od naknadno naplaćenih potraživanja iz prethodnih godina","Prihodi od naknadno naplaćenih potraživanja iz prethodnih godina" +"7827","kp_rrif7827","kp_rrif782","other","account_type_izv_prihod",,,"Prihodi od naplate iz ugovora po naknadnim priznanjima iz prošlih godina","Prihodi od naplate iz ugovora po naknadnim priznanjima iz prošlih godina" +"7828","kp_rrif7828","kp_rrif782","other","account_type_izv_prihod",,,"Prihodi od naknadno naplaćenih reklamacija","Prihodi od naknadno naplaćenih reklamacija" +"7829","kp_rrif7829","kp_rrif782","other","account_type_izv_prihod",,,"Prihodi od zaprimanja dobara koja su prodana u prethodnom obrač. razdoblju","Prihodi od zaprimanja dobara koja su prodana u prethodnom obrač. razdoblju" +"783","kp_rrif783","kp_rrif78","view","account_type_view",,,"Prihodi od refundac., dotacija, subvencija i nadoknada","Prihodi od refundac., dotacija, subvencija i nadoknada" +"7830","kp_rrif7830","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi od refundacije za rad radnika","Prihodi od refundacije za rad radnika" +"7831","kp_rrif7831","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi od naknada šteta iz tekućeg poslovanja","Prihodi od naknada šteta iz tekućeg poslovanja" +"7832","kp_rrif7832","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi od subvencija","Prihodi od subvencija" +"7833","kp_rrif7833","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi od dotacija i pomoći","Prihodi od dotacija i pomoći" +"7834","kp_rrif7834","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi s osnove basplatnog primitka opreme, nekretnina, zaliha i potraživanja","Prihodi s osnove basplatnog primitka opreme, nekretnina, zaliha i potraživanja" +"7835","kp_rrif7835","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi od naknada za jamstva","Prihodi od naknada za jamstva" +"7836","kp_rrif7836","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi od prefakturiranih troškova (npr. komunalnih, premija osiguranja i dr.)","Prihodi od prefakturiranih troškova (npr. komunalnih, premija osiguranja i dr.)" +"7837","kp_rrif7837","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi za pokriće gubitka","Prihodi za pokriće gubitka" +"7838","kp_rrif7838","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi za manjkove od odgovornih osoba","Prihodi za manjkove od odgovornih osoba" +"7839","kp_rrif7839","kp_rrif783","other","account_type_izv_prihod",,,"Prihodi od ostalih nadoknada iz poslovanja","Prihodi od ostalih nadoknada iz poslovanja" +"784","kp_rrif784","kp_rrif78","view","account_type_view",,,"Prihodi od revalorizacije - procjene","Prihodi od revalorizacije - procjene" +"7840","kp_rrif7840","kp_rrif784","other","account_type_izv_prihod",,,"Prihodi od revalorizacije zaliha","Prihodi od revalorizacije zaliha" +"7841","kp_rrif7841","kp_rrif784","other","account_type_izv_prihod",,,"Prihodi od revalorizacije financijske imovine raspoložive za prodaju","Prihodi od revalorizacije financijske imovine raspoložive za prodaju" +"7842","kp_rrif7842","kp_rrif784","other","account_type_izv_prihod",,,"Prihodi od ukidanja gubitka (MRS 36)","Prihodi od ukidanja gubitka (MRS 36)" +"7843","kp_rrif7843","kp_rrif784","other","account_type_izv_prihod",,,"Prihodi od procjene zaliha i dr. imovine","Prihodi od procjene zaliha i dr. imovine" +"7844","kp_rrif7844","kp_rrif784","other","account_type_izv_prihod",,,"Prihodi od procjene ostale imovine","Prihodi od procjene ostale imovine" +"785","kp_rrif785","kp_rrif78","view","account_type_view",,,"Ostali poslovni prihodi","Ostali poslovni prihodi" +"7850","kp_rrif7850","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi s osnove povrata poreza na promet","Prihodi s osnove povrata poreza na promet" +"7851","kp_rrif7851","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od ugovorenih i naplaćenih penala zbog neizvršenja roka u isporuci","Prihodi od ugovorenih i naplaćenih penala zbog neizvršenja roka u isporuci" +"7852","kp_rrif7852","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od nagrada za proizvod, uslugu, oblik i sl.","Prihodi od nagrada za proizvod, uslugu, oblik i sl." +"7853","kp_rrif7853","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od (nevraćenih) kaucija i depozita","Prihodi od (nevraćenih) kaucija i depozita" +"7854","kp_rrif7854","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od kapara, odustatnina i sl.","Prihodi od kapara, odustatnina i sl." +"7855","kp_rrif7855","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od vraćenih premija osiguranja","Prihodi od vraćenih premija osiguranja" +"7856","kp_rrif7856","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od financ. inženjeringa(projekt., financ. i izgr., kupoprodaja poduzeća i sl.) i provizija","Prihodi od financijskog inženjeringa (npr. projektiranje, financiranje i izgr. objekata, kupnja i prodaja poduzeća i sl.) i provizija" +"7857","kp_rrif7857","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od prodaje prava (patenata, licencija, koncesija, rente, imena, znaka i sl.)","Prihodi od prodaje prava (patenata, licencija, koncesija, rente, imena, znaka i sl.)" +"7858","kp_rrif7858","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od naplate šteta uništene imovine (požarom, poplavom i dr. višom silom)","Prihodi od naplate šteta uništene imovine (požarom, poplavom i dr. višom silom)" +"7859","kp_rrif7859","kp_rrif785","other","account_type_izv_prihod",,,"Prihodi od naplate šteta po sudskim procesima (zbog oduzete imovine,zlouporabe znaka,imena,prava i dr.)","Prihodi od naplate šteta po sudskim procesima (npr. zbog oduzete imovine, zlouporabe znaka, imena, prava i dr.)" +"786","kp_rrif786","kp_rrif78","view","account_type_view",,,"Prihodi od državnih potpora (HSFI 15 i MRS 20)","Prihodi od državnih potpora (HSFI 15 i MRS 20)" +"7860","kp_rrif7860","kp_rrif786","other","account_type_izv_prihod",,,"Prihodi od državnih potpora za pokriće troškova","Prihodi od državnih potpora za pokriće troškova" +"7861","kp_rrif7861","kp_rrif786","other","account_type_izv_prihod",,,"Prihodi (odgođeni) od državnih potpora za investicije (sredstva)","Prihodi od državnih potpora za investicije (sredstva)" +"7862","kp_rrif7862","kp_rrif786","other","account_type_izv_prihod",,,"Prihodi od državnih potpora za ostale određene namjene","Prihodi od državnih potpora za ostale određene namjene" +"787","kp_rrif787","kp_rrif78","view","account_type_view",,,"Dobitci od procjene poljoprivrednih proizvoda i biološke imovine (HSFI 17, t. 17.12 i MRS 41)","Dobitci od procjene poljoprivrednih proizvoda i biološke imovine (HSFI 17, t. 17.12 i MRS 41)" +"7870","kp_rrif7870","kp_rrif787","other","account_type_izv_prihod",,,"Dobitci od prirasta biološke imovine","Dobitci od prirasta biološke imovine" +"7871","kp_rrif7871","kp_rrif787","other","account_type_izv_prihod",,,"Dobitci od procjene biološke imovine","Dobitci od procjene biološke imovine" +"7872","kp_rrif7872","kp_rrif787","other","account_type_izv_prihod",,,"Dobitci od procjene poljoprivrednih proizvoda","Dobitci od procjene poljoprivrednih proizvoda" +"788","kp_rrif788","kp_rrif78","view","account_type_view",,,"Prihodi uporabe vlastitih proizvoda","Prihodi od uporabe vlastitih proizvoda" +"7880","kp_rrif7880","kp_rrif788","other","account_type_izv_prihod",,,"Prihodi uporabe vlastitih proizvoda i usluga za troškove","Prihodi uporabe vlastitih proizvoda i usluga za troškove" +"7881","kp_rrif7881","kp_rrif788","other","account_type_izv_prihod",,,"Prihodi od uporabe vlastitih proizvoda i usluga za dugotrajnu imovinu","Prihodi od uporabe vlastitih proizvoda i usluga za dugotrajnu imovinu" +"789","kp_rrif789","kp_rrif78","view","account_type_view",,,"Izvanredni - ostali prihodi (npr. veliki besplatni primitak, prihod koji nije proizašao iz redovitog poslovanja)","Izvanredni - ostali prihodi (npr. veliki besplatni primitak, prihod koji nije proizašao iz redovitog poslovanja)" +"7890","kp_rrif7890","kp_rrif789","other","account_type_izv_prihod",,,"Prihod od izvanredne prodaje značajnog dijela imovine","Prihod od izvanredne prodaje značajnog dijela imovine" +"7891","kp_rrif7891","kp_rrif789","other","account_type_izv_prihod",,,"Prihod od dugotrajne materijalne imovine namijenjene prodaji","Prihod od dugotrajne materijalne imovine namijenjene prodaji" +"7892","kp_rrif7892","kp_rrif789","other","account_type_izv_prihod",,,"Prihod od izvansudskih nagodbi","Prihod od izvansudskih nagodbi" +"7899","kp_rrif7899","kp_rrif789","other","account_type_izv_prihod",,,"Ostali nepredviđeni prihodi","Ostali nepredviđeni prihodi" +"79","kp_rrif79","kp_rrif7","view","account_type_view",,,"RAZLIKA PRIHODA I RASHODA FINANCIJSKE GODINE","RAZLIKA PRIHODA I RASHODA FINANCIJSKE GODINE" +"790","kp_rrif790","kp_rrif79","view","account_type_view",,,"Razlika prihoda i rashoda (iz cjelokupnog poslovanja)","Razlika prihoda i rashoda (iz cjelokupnog poslovanja)" +"7900","kp_rrif7900","kp_rrif790","other","account_type_other",,,"Razlika prihoda i rashoda (iz cjelokupnog poslovanja)-a1","Razlika prihoda i rashoda (iz cjelokupnog poslovanja)-Analitika 1" +"8","kp_rrif8","kp_rrif","view","account_type_view",,,"FINANCIJSKI REZULTAT POSLOVANJA","FINANCIJSKI REZULTAT POSLOVANJA" +"80","kp_rrif80","kp_rrif8","view","account_type_view",,,"DOBITAK ILI GUBITAK RAZDOBLJA","DOBITAK ILI GUBITAK RAZDOBLJA" +"800","kp_rrif800","kp_rrif80","view","account_type_view",,,"Dobitak prije oporezivanja","Dobitak prije oporezivanja" +"8000","kp_rrif8000","kp_rrif800","other","account_type_other",,,"Dobitak prije oporezivanja-a1","Dobitak prije oporezivanja-Analitika 1" +"801","kp_rrif801","kp_rrif80","view","account_type_view",,,"Gubitak prije oporezivanja","Gubitak prije oporezivanja" +"8010","kp_rrif8010","kp_rrif801","other","account_type_other",,,"Gubitak prije oporezivanja-a1","Gubitak prije oporezivanja-Analitika 1" +"803","kp_rrif803","kp_rrif80","view","account_type_view",,,"Porez na dobitak (gubitak)","Porez na dobitak (gubitak)" +"8030","kp_rrif8030","kp_rrif803","other","account_type_other",,,"Porez na dobitak (gubitak)-a1","Porez na dobitak (gubitak)-Analitika 1" +"804","kp_rrif804","kp_rrif80","view","account_type_view",,,"Dobitak ili gubitak razdoblja","Dobitak ili gubitak razdoblja" +"8040","kp_rrif8040","kp_rrif804","other","account_type_other",,,"Dobitak razdoblja (poslije poreza)","Dobitak razdoblja (poslije poreza)" +"8041","kp_rrif8041","kp_rrif804","other","account_type_other",,,"Gubitak razdoblja","Gubitak razdoblja" +"81","kp_rrif81","kp_rrif8","view","account_type_view",,,"DOBITAK ILI GUBITAK RAZDOBLJA KOJI PRIPADA DRUGIMA","DOBITAK ILI GUBITAK RAZDOBLJA KOJI PRIPADA DRUGIMA" +"810","kp_rrif810","kp_rrif81","view","account_type_view",,,"Dobitak pripisan imateljima kapitala matice","Dobitak pripisan imateljima kapitala matice" +"8100","kp_rrif8100","kp_rrif810","other","account_type_other",,,"Dobitak pripisan imateljima kapitala matice-a1","Dobitak pripisan imateljima kapitala matice-Analitika 1" +"811","kp_rrif811","kp_rrif81","view","account_type_view",,,"Gubitak koji tereti imatelje kapitala matice","Gubitak koji tereti imatelje kapitala matice" +"8110","kp_rrif8110","kp_rrif811","other","account_type_other",,,"Gubitak koji tereti imatelje kapitala matice-a1","Gubitak koji tereti imatelje kapitala matice-Analitika 1" +"813","kp_rrif813","kp_rrif81","view","account_type_view",,,"Dobitak pripisan manjinskom interesu","Dobitak pripisan manjinskom interesu" +"8130","kp_rrif8130","kp_rrif813","other","account_type_other",,,"Dobitak pripisan manjinskom interesu-a1","Dobitak pripisan manjinskom interesu-Analitika 1" +"814","kp_rrif814","kp_rrif81","view","account_type_view",,,"Gubitak koji tereti manjinski interes","Gubitak koji tereti manjinski interes" +"8140","kp_rrif8140","kp_rrif814","other","account_type_other",,,"Gubitak koji tereti manjinski interes-a1","Gubitak koji tereti manjinski interes-Analitika 1" +"9","kp_rrif9","kp_rrif","view","account_type_view",,,"KAPITAL I PRIČUVE TE IZVANBILANČNI ZAPISI","KAPITAL I PRIČUVE TE IZVANBILANČNI ZAPISI" +"90","kp_rrif90","kp_rrif9","view","account_type_view",,,"TEMELJNI - (UPISANI) KAPITAL","TEMELJNI - (UPISANI) KAPITAL" +"900","kp_rrif900","kp_rrif90","view","account_type_view",,,"Upisani temeljni kapital koji je plaćen","Upisani temeljni kapital koji je plaćen" +"9000","kp_rrif9000","kp_rrif900","other","account_type_kapital",,,"Upisani temeljni kapital članova d.o.o. (analitika po članovima)","Upisani temeljni kapital članova d.o.o. (analitika po članovima)" +"9001","kp_rrif9001","kp_rrif900","other","account_type_kapital",,,"Temeljni dionički kapital (obične dionice)","Temeljni dionički kapital (obične dionice)" +"9002","kp_rrif9002","kp_rrif900","other","account_type_kapital",,,"Temeljni dionički kapital (povlaštene dionice)","Temeljni dionički kapital (povlaštene dionice)" +"901","kp_rrif901","kp_rrif90","view","account_type_view",,,"Upisani temeljni kapital manjinskih članova","Upisani temeljni kapital manjinskih članova" +"9010","kp_rrif9010","kp_rrif901","other","account_type_kapital",,,"Upisani temeljni kapital manjinskih članova-a1","Upisani temeljni kapital manjinskih članova-Analitika 1" +"902","kp_rrif902","kp_rrif90","view","account_type_view",,,"Upisani kapital koji nije plaćen","Upisani kapital koji nije plaćen" +"9020","kp_rrif9020","kp_rrif902","other","account_type_kapital",,,"Upisani temeljni kapital koji je pozvan za uplatu (analitika po upisnicima)","Upisani temeljni kapital koji je pozvan za uplatu (analitika po upisnicima)" +"903","kp_rrif903","kp_rrif90","view","account_type_view",,,"Kapital (ulozi) članova javnog trgovačkog društva","Kapital (ulozi) članova javnog trgovačkog društva" +"9030","kp_rrif9030","kp_rrif903","other","account_type_kapital",,,"Kapital (ulozi) članova javnog trgovačkog društva-a1","Kapital (ulozi) članova javnog trgovačkog društva-Analitika 1" +"904","kp_rrif904","kp_rrif90","view","account_type_view",,,"Kapital (ulozi) komanditora komanditnog društva","Kapital (ulozi) komanditora komanditnog društva" +"9040","kp_rrif9040","kp_rrif904","other","account_type_kapital",,,"Kapital (ulozi) komanditora komanditnog društva-a1","Kapital (ulozi) komanditora komanditnog društva-Analitika 1" +"905","kp_rrif905","kp_rrif90","view","account_type_view",,,"Državni kapital u udjelima","Državni kapital u udjelima" +"9050","kp_rrif9050","kp_rrif905","other","account_type_kapital",,,"Državni kapital u udjelima-a1","Državni kapital u udjelima-Analitika 1" +"906","kp_rrif906","kp_rrif90","view","account_type_view",,,"Kapital članova zadruge","Kapital članova zadruge" +"9060","kp_rrif9060","kp_rrif906","other","account_type_kapital",,,"Kapital članova zadruge-a1","Kapital članova zadruge-Analitika 1" +"91","kp_rrif91","kp_rrif9","view","account_type_view",,,"KAPITALNE PRIČUVE","KAPITALNE PRIČUVE" +"910","kp_rrif910","kp_rrif91","view","account_type_view",,,"Uplaćeni udjeli - dionice iznad svote temeljnog kapitala","Uplaćeni udjeli - dionice iznad svote temeljnog kapitala" +"9100","kp_rrif9100","kp_rrif910","other","account_type_kapital",,,"Uplaćeni udjeli - dionice iznad svote temeljnog kapitala-a1","Uplaćeni udjeli - dionice iznad svote temeljnog kapitala-Analitika 1" +"911","kp_rrif911","kp_rrif91","view","account_type_view",,,"Kapitalne pričuve iz dodatnih uplata radi stjecanja posebnih prava u društvu(ili zamjenjivih obveznica)","Kapitalne pričuve iz dodatnih uplata radi stjecanja posebnih prava u društvu (ili zamjenjivih obveznica)" +"9110","kp_rrif9110","kp_rrif911","other","account_type_kapital",,,"Kapitalne pričuve iz dodatnih uplata radi stjecanja posebnih prava u društvu(ili zamjenjivih obveznica)-a1","Kapitalne pričuve iz dodatnih uplata radi stjecanja posebnih prava u društvu (ili zamjenjivih obveznica)-Analitika 1" +"912","kp_rrif912","kp_rrif91","view","account_type_view",,,"Kapitalne pričuve iz uplata dodatnih činidbi","Kapitalne pričuve iz uplata dodatnih činidbi" +"9120","kp_rrif9120","kp_rrif912","other","account_type_kapital",,,"Kapitalne pričuve iz uplata dodatnih činidbi-a1","Kapitalne pričuve iz uplata dodatnih činidbi-Analitika 1" +"913","kp_rrif913","kp_rrif91","view","account_type_view",,,"Kapitalne pričuve iz ostatka pri smanjenju temeljnog kapitala","Kapitalne pričuve iz ostatka pri smanjenju temeljnog kapitala" +"9130","kp_rrif9130","kp_rrif913","other","account_type_kapital",,,"Kapitalne pričuve iz ostatka pri smanjenju temeljnog kapitala-a1","Kapitalne pričuve iz ostatka pri smanjenju temeljnog kapitala-Analitika 1" +"914","kp_rrif914","kp_rrif91","view","account_type_view",,,"Kapitalne pričuve iz drugih izvora","Kapitalne pričuve iz drugih izvora" +"9140","kp_rrif9140","kp_rrif914","other","account_type_kapital",,,"Kapitalne pričuve iz drugih izvora-a1","Kapitalne pričuve iz drugih izvora-Analitika 1" +"915","kp_rrif915","kp_rrif91","view","account_type_view",,,"Kapitalni dobitak iz prodaje vlastitih udjela - dionica","Kapitalni dobitak iz prodaje vlastitih udjela - dionica" +"9150","kp_rrif9150","kp_rrif915","other","account_type_kapital",,,"Kapitalni dobitak iz prodaje vlastitih udjela - dionica-a1","Kapitalni dobitak iz prodaje vlastitih udjela - dionica-Analitika 1" +"916","kp_rrif916","kp_rrif91","view","account_type_view",,,"Kapitalni dobitak na prodane emitirane dionice","Kapitalni dobitak na prodane emitirane dionice" +"9160","kp_rrif9160","kp_rrif916","other","account_type_kapital",,,"Kapitalni dobitak na prodane emitirane dionice-a1","Kapitalni dobitak na prodane emitirane dionice-Analitika 1" +"917","kp_rrif917","kp_rrif91","view","account_type_view",,,"Kapitalne pričuve iz ulaganja tajnog člana društva (čl. 148. ZTD-a)","Kapitalne pričuve iz ulaganja tajnog člana društva (čl. 148. ZTD-a)" +"9170","kp_rrif9170","kp_rrif917","other","account_type_kapital",,,"Kapitalne pričuve iz ulaganja tajnog člana društva (čl. 148. ZTD-a)-a1","Kapitalne pričuve iz ulaganja tajnog člana društva (čl. 148. ZTD-a)-Analitika 1" +"919","kp_rrif919","kp_rrif91","view","account_type_view",,,"Kapital iz ulaganja obrtnika dobitaša","Kapital iz ulaganja obrtnika dobitaša" +"9190","kp_rrif9190","kp_rrif919","other","account_type_kapital",,,"Kapital iz ulaganja obrtnika dobitaša-a1","Kapital iz ulaganja obrtnika dobitaša-Analitika 1" +"92","kp_rrif92","kp_rrif9","view","account_type_view",,,"PRIČUVE IZ DOBITKA","PRIČUVE IZ DOBITKA" +"920","kp_rrif920","kp_rrif92","view","account_type_view",,,"Zakonske pričuve (u d.d.)","Zakonske pričuve (u d.d.)" +"9200","kp_rrif9200","kp_rrif920","other","account_type_kapital",,,"Pričuve prema ZTD","Pričuve prema ZTD" +"9201","kp_rrif9201","kp_rrif920","other","account_type_kapital",,,"Pričuve za povećanje temeljnog kapitala","Pričuve za povećanje temeljnog kapitala" +"9202","kp_rrif9202","kp_rrif920","other","account_type_kapital",,,"Pričuve za pokriće gubitka","Pričuve za pokriće gubitka" +"921","kp_rrif921","kp_rrif92","view","account_type_view",,,"Pričuve za vlastite dionice i udjele (čl. 233. i 406.a ZTD-a)","Pričuve za vlastite dionice i udjele (čl. 233. i 406.a ZTD-a)" +"9210","kp_rrif9210","kp_rrif921","other","account_type_kapital",,,"Pričuve za opcijske dionice za zaposlenike","Pričuve za opcijske dionice za zaposlenike" +"9211","kp_rrif9211","kp_rrif921","other","account_type_kapital",,,"Pričuve za otkupljene dionice radi obeštećenja dioničara","Pričuve za otkupljene dionice radi obeštećenja dioničara" +"9212","kp_rrif9212","kp_rrif921","other","account_type_kapital",,,"Pričuve za otkup dionica da bi se spriječila šteta i dr.","Pričuve za otkup dionica da bi se spriječila šteta i dr." +"9213","kp_rrif9213","kp_rrif921","other","account_type_kapital",,,"Pričuve za vlastite (trezorske) dionice i udjele","Pričuve za vlastite (trezorske) dionice i udjele" +"922","kp_rrif922","kp_rrif92","view","account_type_view",,,"Vlastite dionice i udjeli (odbitna- dugovna stavka)","Vlastite dionice i udjeli (odbitna- dugovna stavka)" +"9220","kp_rrif9220","kp_rrif922","other","account_type_kapital",,,"Otkupljene vlastite dionice","Otkupljene vlastite dionice" +"9221","kp_rrif9221","kp_rrif922","other","account_type_kapital",,,"Otkupljeni vlastiti udjeli","Otkupljeni vlastiti udjeli" +"9222","kp_rrif9222","kp_rrif922","other","account_type_kapital",,,"Vlastite dionice za opcijsku namjenu","Vlastite dionice za opcijsku namjenu" +"923","kp_rrif923","kp_rrif92","view","account_type_view",,,"Statutarne pričuve","Statutarne pričuve" +"9230","kp_rrif9230","kp_rrif923","other","account_type_kapital",,,"Pričuve za održavanje financijske stabilnosti društva, za razvojne aktivnosti i sl.","Pričuve za održavanje financijske stabilnosti društva, za razvojne aktivnosti i sl." +"9231","kp_rrif9231","kp_rrif923","other","account_type_kapital",,,"Pričuve za restrukturiranje","Pričuve za restrukturiranje" +"9232","kp_rrif9232","kp_rrif923","other","account_type_kapital",,,"Pričuve radi održavanja boniteta strukture izvora financiranja","Pričuve radi održavanja boniteta strukture izvora financiranja" +"924","kp_rrif924","kp_rrif92","view","account_type_view",,,"Ostale pričuve","Ostale pričuve" +"9240","kp_rrif9240","kp_rrif924","other","account_type_kapital",,,"Pričuve za pokriće gubitka u poslovanju","Pričuve za pokriće gubitka u poslovanju" +"9241","kp_rrif9241","kp_rrif924","other","account_type_kapital",,,"Pričuve za nagrade i sl.","Pričuve za nagrade i sl." +"9242","kp_rrif9242","kp_rrif924","other","account_type_kapital",,,"Slobodne pričuve iz neraspoređenog dobitka","Slobodne pričuve iz neraspoređenog dobitka" +"9243","kp_rrif9243","kp_rrif924","other","account_type_kapital",,,"Pričuve za nerealizirane dobitke iz udjela","Pričuve za nerealizirane dobitke iz udjela" +"93","kp_rrif93","kp_rrif9","view","account_type_view",,,"REVALORIZACIJSKE PRIČUVE","REVALORIZACIJSKE PRIČUVE" +"930","kp_rrif930","kp_rrif93","view","account_type_view",,,"Revalorizacijske pričuve","Revalorizacijske pričuve" +"9300","kp_rrif9300","kp_rrif930","other","account_type_kapital",,,"Revalorizacijske pričuve iz procjene dug. nemat. i mat. imovine (HSFIt.6.36.iMRS16,t.39.iMRS38,t.85)","Revalorizacijske pričuve iz procjene dugotrajne nematerijalne i materijalne imovine (HSFI t. 6.36. i MRS 16, t. 39. i MRS 38, t. 85.) (analitika prema revaloriziranim imovinskim stavkama)" +"9301","kp_rrif9301","kp_rrif930","other","account_type_kapital",,,"Pričuve iz revalorizacije financijske imovine","Pričuve iz revalorizacije financijske imovine" +"9303","kp_rrif9303","kp_rrif930","other","account_type_kapital",,,"Ostale revalorizacijske pričuve","Ostale revalorizacijske pričuve" +"931","kp_rrif931","kp_rrif93","view","account_type_view",,,"Revalorizacijske pričuve ranijih godina","Revalorizacijske pričuve ranijih godina" +"9310","kp_rrif9310","kp_rrif931","other","account_type_kapital",,,"Revalorizacijske pričuve iz razdoblja od 2001. do 2004.","Revalorizacijske pričuve iz razdoblja od 2001. do 2004." +"9311","kp_rrif9311","kp_rrif931","other","account_type_kapital",,,"Revalorizacijske pričuve nastale do kraja 2000.","Revalorizacijske pričuve nastale do kraja 2000." +"932","kp_rrif932","kp_rrif93","view","account_type_view",,,"Pričuve iz tečajnih razlika od ulaganja u inozemno poslovanje (MRS 21. t. 39.)","Pričuve iz tečajnih razlika od ulaganja u inozemno poslovanje (MRS 21. t. 39.)" +"9320","kp_rrif9320","kp_rrif932","other","account_type_kapital",,,"Pričuve iz tečajnih razlika od ulaganja u inozemno poslovanje (MRS 21. t. 39.)-a1","Pričuve iz tečajnih razlika od ulaganja u inozemno poslovanje (MRS 21. t. 39.)-Analitika 1" +"933","kp_rrif933","kp_rrif93","view","account_type_view",,,"Dobitci/gubitci od udjela u kapitalu do prestanka priznavanja (MRS 1. t. 95. i MRS 39. 55.b)","Dobitci/gubitci od udjela u kapitalu do prestanka priznavanja (MRS 1. t. 95. i MRS 39. 55.b)" +"9330","kp_rrif9330","kp_rrif933","other","account_type_kapital",,,"Dobitci/gubitci od udjela u kapitalu do prestanka priznavanja (MRS 1. t. 95. i MRS 39. 55.b)-a1","Dobitci/gubitci od udjela u kapitalu do prestanka priznavanja (MRS 1. t. 95. i MRS 39. 55.b)-Analitika 1" +"934","kp_rrif934","kp_rrif93","view","account_type_view",,,"Dobitci/gubitci iz zaštite novčanog toka do reklasifikacije (MRS 1. t. 95. i MRS 39. t. 100.)","Dobitci/gubitci iz zaštite novčanog toka do reklasifikacije (MRS 1. t. 95. i MRS 39. t. 100.)" +"9340","kp_rrif9340","kp_rrif934","other","account_type_kapital",,,"Dobitci/gubitci iz zaštite novčanog toka do reklasifikacije (MRS 1. t. 95. i MRS 39. t. 100.)-a1","Dobitci/gubitci iz zaštite novčanog toka do reklasifikacije (MRS 1. t. 95. i MRS 39. t. 100.)-Analitika 1" +"935","kp_rrif935","kp_rrif93","view","account_type_view",,,"Ostali akumulirani sveobuhvatni dobitci/gubitci - pričuve (MRS 1. t. 96.)","Ostali akumulirani sveobuhvatni dobitci/gubitci - pričuve (MRS 1. t. 96.)" +"9350","kp_rrif9350","kp_rrif935","other","account_type_kapital",,,"Ostali akumulirani sveobuhvatni dobitci/gubitci - pričuve (MRS 1. t. 96.)-a1","Ostali akumulirani sveobuhvatni dobitci/gubitci - pričuve (MRS 1. t. 96.)-Analitika 1" +"94","kp_rrif94","kp_rrif9","view","account_type_view",,,"ZADRŽANI DOBITAK ILI PRENESENI GUBITAK","ZADRŽANI DOBITAK ILI PRENESENI GUBITAK" +"940","kp_rrif940","kp_rrif94","view","account_type_view",,,"Zadržani dobitak (iz prethodnih godina)","Zadržani dobitak (iz prethodnih godina)" +"9400","kp_rrif9400","kp_rrif940","view","account_type_view",,,"Zadržani dobitci ostvareni do kraja 2000.","Zadržani dobitci ostvareni do kraja 2000." +"94000","kp_rrif94000","kp_rrif9400","other","account_type_kapital",,,"Zadržani dobitak članova društva (analitika po članovima)","Zadržani dobitak članova društva (analitika po članovima)" +"94001","kp_rrif94001","kp_rrif9400","other","account_type_kapital",,,"Zadržani dobitak - neisplaćena dividenda","Zadržani dobitak - neisplaćena dividenda" +"94002","kp_rrif94002","kp_rrif9400","other","account_type_kapital",,,"Zadržani dobitak koji se izuzima od isplate (npr. za investicije u imovinu)","Zadržani dobitak koji se izuzima od isplate (npr. za investicije u imovinu)" +"94003","kp_rrif94003","kp_rrif9400","other","account_type_kapital",,,"Zadržani dobitak koji čeka raspored","Zadržani dobitak koji čeka raspored" +"94004","kp_rrif94004","kp_rrif9400","other","account_type_kapital",,,"Zadržani dobitak za privatne troškove članova društva","Zadržani dobitak za privatne troškove članova društva" +"94005","kp_rrif94005","kp_rrif9400","other","account_type_kapital",,,"Zadržani dobitak za manjinske članove društva","Zadržani dobitak za manjinske članove društva" +"94006","kp_rrif94006","kp_rrif9400","other","account_type_kapital",,,"Zadržani dobitak tajnog člana društva","Zadržani dobitak tajnog člana društva" +"9401","kp_rrif9401","kp_rrif940","view","account_type_view",,,"Zadržani dobitak iz 2001. do 2004.","Zadržani dobitak iz 2001. do 2004." +"94010","kp_rrif94010","kp_rrif9401","other","account_type_kapital",,,"Zadržani dobitak članova društva (analitika po članovima)","Zadržani dobitak članova društva (analitika po članovima)" +"94011","kp_rrif94011","kp_rrif9401","other","account_type_kapital",,,"Zadržani dobitak - neispl. dividende","Zadržani dobitak - neispl. dividende" +"94012","kp_rrif94012","kp_rrif9401","other","account_type_kapital",,,"Zadržani dobitak izuzet od isplate (npr. za investicije u imovinu)","Zadržani dobitak izuzet od isplate (npr. za investicije u imovinu)" +"94013","kp_rrif94013","kp_rrif9401","other","account_type_kapital",,,"Neraspoređeni zadržani dobitak","Neraspoređeni zadržani dobitak" +"9402","kp_rrif9402","kp_rrif940","view","account_type_view",,,"Zadržani dobitak od 2005. i poslije","Zadržani dobitak od 2005. i poslije" +"94020","kp_rrif94020","kp_rrif9402","other","account_type_kapital",,,"Zadržani dobitak članova društva (analitika po članovima)","Zadržani dobitak članova društva (analitika po članovima)" +"94021","kp_rrif94021","kp_rrif9402","other","account_type_kapital",,,"Zadržani dobitak - neispl. dividenda","Zadržani dobitak - neispl. dividenda" +"94022","kp_rrif94022","kp_rrif9402","other","account_type_kapital",,,"Zadržani dobitak izuzet od isplate (npr. za investicije u imovinu)","Zadržani dobitak izuzet od isplate (npr. za investicije u imovinu)" +"94023","kp_rrif94023","kp_rrif9402","other","account_type_kapital",,,"Neraspoređeni zadržani dobitak","Neraspoređeni zadržani dobitak" +"9403","kp_rrif9403","kp_rrif940","other","account_type_kapital",,,"Zadržani dobitak oblikovan iz realizirane rev. pričuve","Zadržani dobitak oblikovan iz realizirane rev. pričuve" +"9404","kp_rrif9404","kp_rrif940","other","account_type_kapital",,,"Zadržani dobitak po prijedlogu uprave i N.O.","Zadržani dobitak po prijedlogu uprave i N.O." +"9405","kp_rrif9405","kp_rrif940","other","account_type_kapital",,,"Zadržani dobitak iz negativnog goodwilla","Zadržani dobitak iz negativnog goodwilla" +"941","kp_rrif941","kp_rrif94","view","account_type_view",,,"Preneseni gubitak (kumuliran u prethodnim godinama - analitika po članovima)","Preneseni gubitak (kumuliran u prethodnim godinama - analitika po članovima)" +"9410","kp_rrif9410","kp_rrif941","other","account_type_kapital",,,"Preneseni gubitak (iz godine 200_.)","Preneseni gubitak (iz godine 200_.)" +"9411","kp_rrif9411","kp_rrif941","other","account_type_kapital",,,"Preneseni gubitak (iz godine 201_.)","Preneseni gubitak (iz godine 201_.)" +"9417","kp_rrif9417","kp_rrif941","other","account_type_kapital",,,"Gubitak (dio) koji je iznad kapitala","Gubitak (dio) koji je iznad kapitala" +"95","kp_rrif95","kp_rrif9","view","account_type_view",,,"DOBITAK ILI GUBITAK POSLOVNE GODINE","DOBITAK ILI GUBITAK POSLOVNE GODINE" +"950","kp_rrif950","kp_rrif95","view","account_type_view",,,"Dobitak poslovne godine","Dobitak poslovne godine" +"9500","kp_rrif9500","kp_rrif950","other","account_type_kapital",,,"Dobitak financijske godine (neraspoređen)","Dobitak financijske godine (neraspoređen)" +"9501","kp_rrif9501","kp_rrif950","other","account_type_kapital",,,"Dobitak za isplate i izuzimanja u tijeku godine (analitika po članovima)","Dobitak za isplate i izuzimanja u tijeku godine (analitika po članovima)" +"9502","kp_rrif9502","kp_rrif950","other","account_type_kapital",,,"Dobitak - dividenda financijske godine (analitika prema članovima društva - dioničarima)","Dobitak - dividenda financijske godine (analitika prema članovima društva - dioničarima)" +"9504","kp_rrif9504","kp_rrif950","other","account_type_kapital",,,"Dobitak koji se privremeno ne isplaćuje po prijedlogu uprave i N.O.","Dobitak koji se privremeno ne isplaćuje po prijedlogu uprave i N.O." +"9505","kp_rrif9505","kp_rrif950","other","account_type_kapital",,,"Dobitak za manjinske članove društva","Dobitak za manjinske članove društva" +"9506","kp_rrif9506","kp_rrif950","other","account_type_kapital",,,"Dobitak za tajnog člana društva","Dobitak za tajnog člana društva" +"9507","kp_rrif9507","kp_rrif950","other","account_type_kapital",,,"Dobitak za nagrade zaposlenicima","Dobitak za nagrade zaposlenicima" +"9509","kp_rrif9509","kp_rrif950","other","account_type_kapital",,,"Dobitak iz privremenih razlika (odgođeni porezi)","Dobitak iz privremenih razlika (odgođeni porezi)" +"951","kp_rrif951","kp_rrif95","view","account_type_view",,,"Gubitak poslovne godine (analitika po članovima)","Gubitak poslovne godine (analitika po članovima)" +"9510","kp_rrif9510","kp_rrif951","other","account_type_kapital",,,"Gubitak koji se pokriva","Gubitak koji se pokriva" +"9511","kp_rrif9511","kp_rrif951","other","account_type_kapital",,,"Nepokriveni gubitak","Nepokriveni gubitak" +"9512","kp_rrif9512","kp_rrif951","other","account_type_kapital",,,"Gubitak iz privremenih razlika","Gubitak iz privremenih razlika" +"96","kp_rrif96","kp_rrif9","view","account_type_view",,,"MANJINSKI INTERES","MANJINSKI INTERES" +"960","kp_rrif960","kp_rrif96","view","account_type_view",,,"Manjinski interes","Manjinski interes" +"9600","kp_rrif9600","kp_rrif960","other","account_type_kapital",,,"Kapital manjinskog društva (privremeno u postupku konsolidacije kao dio koji nije pod kontrolom matice)","Kapital manjinskog društva (ovaj račun privremeno se rabi u postupku konsolidacije društva kao dio kapitala koji nije pod kontrolom matice)" +"99","kp_rrif99","kp_rrif9","view","account_type_view",,,"IZVANBILANČNI ZAPISI","IZVANBILANČNI ZAPISI" +"990","kp_rrif990","kp_rrif99","view","account_type_view",,,"Imovina - materijalna u optjecaju","Imovina - materijalna u optjecaju" +"9900","kp_rrif9900","kp_rrif990","other","account_type_other",,,"Primljena roba u komisiju i konsignaciju (tuđa)","Primljena roba u komisiju i konsignaciju (tuđa)" +"9901","kp_rrif9901","kp_rrif990","other","account_type_other",,,"Materijal i roba u doradi (tuđa)","Materijal i roba u doradi (tuđa)" +"9902","kp_rrif9902","kp_rrif990","other","account_type_other",,,"Pozajmica strojeva i alata","Pozajmica strojeva i alata" +"9903","kp_rrif9903","kp_rrif990","other","account_type_other",,,"Zaštitna odjeća i obuća na korištenju","Zaštitna odjeća i obuća na korištenju" +"9904","kp_rrif9904","kp_rrif990","other","account_type_other",,,"Roba u skladištu (tuđa)","Roba u skladištu (tuđa)" +"9905","kp_rrif9905","kp_rrif990","other","account_type_other",,,"Ambalaža na korištenju (tuđa)","Ambalaža na korištenju (tuđa)" +"9906","kp_rrif9906","kp_rrif990","other","account_type_other",,,"Vlasništvo ortačke zajednice","Vlasništvo ortačke zajednice" +"9907","kp_rrif9907","kp_rrif990","other","account_type_other",,,"Materijali za doradne - lohn-poslove","Materijali za doradne - lohn-poslove" +"9908","kp_rrif9908","kp_rrif990","other","account_type_other",,,"Roba u izvozu","Roba u izvozu" +"9909","kp_rrif9909","kp_rrif990","other","account_type_other",,,"Zgrade i zemljišta u zakupu","Zgrade i zemljišta u zakupu" +"991","kp_rrif991","kp_rrif99","view","account_type_view",,,"Prava","Prava" +"9910","kp_rrif9910","kp_rrif991","other","account_type_other",,,"Prava na korištenja","Prava na korištenja" +"9911","kp_rrif9911","kp_rrif991","other","account_type_other",,,"Krediti ugovoreni","Krediti ugovoreni" +"9912","kp_rrif9912","kp_rrif991","other","account_type_other",,,"Hipoteka na tuđoj imovini","Hipoteka na tuđoj imovini" +"9913","kp_rrif9913","kp_rrif991","other","account_type_other",,,"Materijalna prava","Materijalna prava" +"9914","kp_rrif9914","kp_rrif991","other","account_type_other",,,"Prava po loro akreditivima (domaći partneri)","Prava po loro akreditivima (domaći partneri)" +"9915","kp_rrif9915","kp_rrif991","other","account_type_other",,,"Prava po loro akreditivima (inozemni partneri)","Prava po loro akreditivima (inozemni partneri)" +"9916","kp_rrif9916","kp_rrif991","other","account_type_other",,,"Prava na ratne reparacije i štete od oduzete imovine","Prava na ratne reparacije i štete od oduzete imovine" +"992","kp_rrif992","kp_rrif99","view","account_type_view",,,"Vrijednosni papiri","Vrijednosni papiri" +"9920","kp_rrif9920","kp_rrif992","other","account_type_other",,,"Primljeni čekovi, mjenice za osiguranje otplate anuiteta za dobivene robne i financijske kredite","Primljeni čekovi, mjenice za osiguranje otplate anuiteta za dobivene robne i financijske kredite" +"9921","kp_rrif9921","kp_rrif992","other","account_type_other",,,"Primljena jamstva vjerovnika kao instrumenata plaćanja","Primljena jamstva vjerovnika kao instrumenata plaćanja" +"9922","kp_rrif9922","kp_rrif992","other","account_type_other",,,"Primljene zadužnice","Primljene zadužnice" +"9923","kp_rrif9923","kp_rrif992","other","account_type_other",,,"Ostali vrijednosni papiri koji nisu stavljeni u optjecaj","Ostali vrijednosni papiri koji nisu stavljeni u optjecaj" +"9924","kp_rrif9924","kp_rrif992","other","account_type_other",,,"Izdane zadužnice","Izdane zadužnice" +"9925","kp_rrif9925","kp_rrif992","other","account_type_other",,,"Izdane mjenice","Izdane mjenice" +"9926","kp_rrif9926","kp_rrif992","other","account_type_other",,,"Korištene garancije u tijeku","Korištene garancije u tijeku" +"9927","kp_rrif9927","kp_rrif992","other","account_type_other",,,"Tražbine od kupaca iz zastupničke prodaje","Tražbine od kupaca iz zastupničke prodaje" +"993","kp_rrif993","kp_rrif99","view","account_type_view",,,"Vrijednosnice u manipulaciji","Vrijednosnice u manipulaciji" +"9930","kp_rrif9930","kp_rrif993","other","account_type_other",,,"Obveznice i druge vrijednosti na skladištu (blagajni)","Obveznice i druge vrijednosti na skladištu (blagajni)" +"9931","kp_rrif9931","kp_rrif993","other","account_type_other",,,"Vrijednosni papiri na čuvanju (obveznice, dionice)","Vrijednosni papiri na čuvanju (obveznice, dionice)" +"9932","kp_rrif9932","kp_rrif993","other","account_type_other",,,"Blokovi ulaznica","Blokovi ulaznica" +"9933","kp_rrif9933","kp_rrif993","other","account_type_other",,,"Prodajna mjesta za izdane obveznice","Prodajna mjesta za izdane obveznice" +"994","kp_rrif994","kp_rrif99","view","account_type_view",,,"Obračun dobitka investicijskog pothvata","Obračun dobitka investicijskog pothvata" +"9940","kp_rrif9940","kp_rrif994","other","account_type_other",,,"Investicija - ulaganje - rashodi","Investicija - ulaganje - rashodi" +"9941","kp_rrif9941","kp_rrif994","other","account_type_other",,,"Prihod - priljev","Prihod - priljev" +"9942","kp_rrif9942","kp_rrif994","other","account_type_other",,,"Dobitak","Dobitak" +"9943","kp_rrif9943","kp_rrif994","other","account_type_other",,,"Porezi i druga davanja","Porezi i druga davanja" +"9944","kp_rrif9944","kp_rrif994","other","account_type_other",,,"Čisti dobitak","Čisti dobitak" +"9947","kp_rrif9947","kp_rrif994","other","account_type_other",,,"Trošak kamata budućeg razdoblja","Trošak kamata budućeg razdoblja" +"995","kp_rrif995","kp_rrif99","view","account_type_view",,,"Izvori materijalne imovine","Izvori materijalne imovine" +"9950","kp_rrif9950","kp_rrif995","other","account_type_other",,,"Obveze prema vlasnicima robe u komisiji i konsignaciji (tuđa sredstva)","Obveze prema vlasnicima robe u komisiji i konsignaciji (tuđa sredstva)" +"9951","kp_rrif9951","kp_rrif995","other","account_type_other",,,"Vlasnici materijala i robe u doradi","Vlasnici materijala i robe u doradi" +"9952","kp_rrif9952","kp_rrif995","other","account_type_other",,,"Vlasnici pozajmljenih strojeva i alata","Vlasnici pozajmljenih strojeva i alata" +"9953","kp_rrif9953","kp_rrif995","other","account_type_other",,,"Skladište zaštitne odjeće i obuće","Skladište zaštitne odjeće i obuće" +"9954","kp_rrif9954","kp_rrif995","other","account_type_other",,,"Vlasnici robe u našim skladištima","Vlasnici robe u našim skladištima" +"9955","kp_rrif9955","kp_rrif995","other","account_type_other",,,"Vlasnici ambalaže u korištenju","Vlasnici ambalaže u korištenju" +"9956","kp_rrif9956","kp_rrif995","other","account_type_other",,,"Ortaci - vlasništvo ortačke zajednice","Ortaci - vlasništvo ortačke zajednice" +"9957","kp_rrif9957","kp_rrif995","other","account_type_other",,,"Obveze za materijale u doradi - lohnu","Obveze za materijale u doradi - lohnu" +"9958","kp_rrif9958","kp_rrif995","other","account_type_other",,,"Obveze za robu u izvozu (tuđa roba)","Obveze za robu u izvozu (tuđa roba)" +"9959","kp_rrif9959","kp_rrif995","other","account_type_other",,,"Vlasnici zemljišta i zgrada u zakupu","Vlasnici zemljišta i zgrada u zakupu" +"996","kp_rrif996","kp_rrif99","view","account_type_view",,,"Izvori prava","Izvori prava" +"9960","kp_rrif9960","kp_rrif996","other","account_type_other",,,"Izvor prava na korištenje","Izvor prava na korištenje" +"9961","kp_rrif9961","kp_rrif996","other","account_type_other",,,"Krediti odobreni","Krediti odobreni" +"9962","kp_rrif9962","kp_rrif996","other","account_type_other",,,"Dužnici po hipoteci","Dužnici po hipoteci" +"9963","kp_rrif9963","kp_rrif996","other","account_type_other",,,"Ulagači u materijalna prava","Ulagači u materijalna prava" +"9964","kp_rrif9964","kp_rrif996","other","account_type_other",,,"Izvori prava loro-akreditiva (domaći partneri)","Izvori prava loro-akreditiva (domaći partneri)" +"9965","kp_rrif9965","kp_rrif996","other","account_type_other",,,"Izvori prava loro-akreditiva (inozemni partneri)","Izvori prava loro-akreditiva (inozemni partneri)" +"9966","kp_rrif9966","kp_rrif996","other","account_type_other",,,"Ratne reparacije i nadoknade šteta","Ratne reparacije i nadoknade šteta" +"9967","kp_rrif9967","kp_rrif996","other","account_type_other",,,"Obveze zastupnika iz prodaje prema nalogodavcu","Obveze zastupnika iz prodaje prema nalogodavcu" +"997","kp_rrif997","kp_rrif99","view","account_type_view",,,"Obveze za vrijednosne papire koji nisu stavljeni u optjecaj","Obveze za vrijednosne papire koji nisu stavljeni u optjecaj" +"9970","kp_rrif9970","kp_rrif997","other","account_type_other",,,"Obveze za čekove i mjenice za osiguranje otplate anuiteta za robne i financijske kredite","Obveze za čekove i mjenice za osiguranje otplate anuiteta za robne i financijske kredite" +"9971","kp_rrif9971","kp_rrif997","other","account_type_other",,,"Jamstva od dužnika kao instrument plaćanja","Jamstva od dužnika kao instrument plaćanja" +"9972","kp_rrif9972","kp_rrif997","other","account_type_other",,,"Obveze za primljene zadužnice","Obveze za primljene zadužnice" +"9973","kp_rrif9973","kp_rrif997","other","account_type_other",,,"Ostali vrijednosni papiri koji nisu stavljeni u optjecaj","Ostali vrijednosni papiri koji nisu stavljeni u optjecaj" +"9974","kp_rrif9974","kp_rrif997","other","account_type_other",,,"Obveze za izdane zadužnice","Obveze za izdane zadužnice" +"9975","kp_rrif9975","kp_rrif997","other","account_type_other",,,"Obveze za izdane mjenice","Obveze za izdane mjenice" +"9976","kp_rrif9976","kp_rrif997","other","account_type_other",,,"Obveze za korištene garancije u tijeku","Obveze za korištene garancije u tijeku" +"998","kp_rrif998","kp_rrif99","view","account_type_view",,,"Obveze za izdane vrijednosnice u manipulaciji","Obveze za izdane vrijednosnice u manipulaciji" +"9980","kp_rrif9980","kp_rrif998","other","account_type_other",,,"Obveznice i druge vrijednosnice","Obveznice i druge vrijednosnice" +"9981","kp_rrif9981","kp_rrif998","other","account_type_other",,,"Vrijednosni papiri (obveznice, dionice)","Vrijednosni papiri (obveznice, dionice)" +"9982","kp_rrif9982","kp_rrif998","other","account_type_other",,,"Vrijednost zalihe blokova ulaznica","Vrijednost zalihe blokova ulaznica" +"9983","kp_rrif9983","kp_rrif998","other","account_type_other",,,"Prodajna mjesta za izdane obveznice","Prodajna mjesta za izdane obveznice" +"9987","kp_rrif9987","kp_rrif998","other","account_type_other",,,"Kamate sadržane u vrijednosnicama ili obračunima","Kamate sadržane u vrijednosnicama ili obračunima" +"999","kp_rrif999","kp_rrif99","view","account_type_view",,,"Obveze s osnove investicijskog pothvata","Obveze s osnove investicijskog pothvata" +"9990","kp_rrif9990","kp_rrif999","other","account_type_other",,,"Obveze prema ulagačima","Obveze prema ulagačima" +"9991","kp_rrif9991","kp_rrif999","other","account_type_other",,,"Izvori prihoda - priljeva","Izvori prihoda - priljeva" +"9992","kp_rrif9992","kp_rrif999","other","account_type_other",,,"Ukalkulirani - planirani dobitak","Ukalkulirani - planirani dobitak" +"9993","kp_rrif9993","kp_rrif999","other","account_type_other",,,"Obveze za porez i druga javna davanja","Obveze za porez i druga javna davanja" +"9994","kp_rrif9994","kp_rrif999","other","account_type_other",,,"Obveze iz planiranog čistog dobitka","Obveze iz planiranog čistog dobitka" diff --git a/addons/l10n_hr/data/account.account.type.csv b/addons/l10n_hr/data/account.account.type.csv new file mode 100644 index 00000000000..35d55039de7 --- /dev/null +++ b/addons/l10n_hr/data/account.account.type.csv @@ -0,0 +1,26 @@ +"name","code","close_method","id","report_type" +"Obveze prema dobavljačima","obveze_dob","unreconciled","account_type_obveze_dob","liability" +"Potraživanja od kupaca","potrazivanja_kup","unreconciled","account_type_potraz_kup","asset" +"Potraživanja za upisani kapital","potraz_kapital","balance","account_type_upis_kapital","asset" +"Dugotrajna imovina","dugotrajna_imovina","balance","account_type_dug_imovina","asset" +"Kratkotrajna imovina","kratkotrajna_imovina","balance","account_type_kratk_imovina","asset" +"Aktivna vrem. Razgraničenja","aktivna_vrem_razgran","balance","account_type_aktiv_razgran","asset" +"Kapital i rezerve","kapital","balance","account_type_kapital","liability" +"Rezerviranja","rezerviranja","balance","account_type_rezervacije","liability" +"Ostalo","other","none","account_type_other","/" +"Sintetika","view","none","account_type_view","/" +"Poslovni prihodi","posl_prihodi","none","account_type_posl_prihod","income" +"Izvanredni prihodi","izv_prihodi","none","account_type_izv_prihod","income" +"Financijski prihodi","fin_prihodi","none","account_type_fin_prihod","income" +"Poslovni rashodi","posl_rashodi","none","account_type_posl_rashod","expense" +"Izvanredni rashodi","izv_rashodi","none","account_type_inv_rashod","expense" +"Financijski rashodi","fin_rashodi","none","account_type_fin_rashod","expense" +"Dugoročne obveze","dugorocne_obveze","balance","account_type_dug_obv","liability" +"Pasivna vrem. Razgraničenja","Pasivna-vrem-razgran","balance","account_type_pas_razgran","liability" +"Kratkoročne obveze","kratkorocne_obveze","balance","account_type_kratk_obveze","liability" +"Obveze za PDV","pdv","balance","account_type_pdv","liability" +"Potraživanja za pretporez","pretporez","balance","account_type_pretporez","asset" +"Aktiva","aktiva","none","account_type_aktiva","asset" +"Pasiva","pasiva","none","account_type_pasiva","liability" +"Prihod","prihod","none","account_type_prihod","income" +"Rashod","rashod","none","account_type_rashod","expense" diff --git a/addons/l10n_hr/data/account.fiscal.position.template.csv b/addons/l10n_hr/data/account.fiscal.position.template.csv new file mode 100644 index 00000000000..aa670628b38 --- /dev/null +++ b/addons/l10n_hr/data/account.fiscal.position.template.csv @@ -0,0 +1,4 @@ +".id","id","account_ids","account_ids/account_dest_id","account_ids/account_dest_id.id","account_ids/account_dest_id/id","account_ids.id","account_ids/position_id","account_ids/position_id.id","account_ids/position_id/id","account_ids/id","account_ids/account_src_id","account_ids/account_src_id.id","account_ids/account_src_id/id","tax_ids","tax_ids.id","tax_ids/position_id","tax_ids/id","tax_ids/tax_src_id","tax_ids/tax_src_id.id","tax_ids/tax_src_id/id","tax_ids/tax_dest_id","tax_ids/tax_dest_id.id","tax_ids/tax_dest_id/id","name","chart_template_id","chart_template_id.id","chart_template_id/id" +"1","__export__.account_fiscal_position_template_1","","","","","","","","","","","","","","","","","","","","","","","Domaći R1 partneri","RRIF-ov računski plan za poduzetnike","3","l10n_hr.l10n_hr_chart_template_rrif" +"2","__export__.account_fiscal_position_template_2","R2 partneri,R2 partneri","1200 Potraživanja od kupaca dobara","5026","l10n_hr.kp_rrif1200","1","R2 partneri","2","__export__.account_fiscal_position_template_2","__export__.account_fiscal_position_account_template_1","1200 Potraživanja od kupaca dobara","5026","l10n_hr.kp_rrif1200","R2 partneri,R2 partneri,R2 partneri,R2 partneri","1","R2 partneri","__export__.account_fiscal_position_tax_template_1","PDV 25%","94","l10n_hr.rrif_pdv_25","PDV 25%","94","l10n_hr.rrif_pdv_25","R2 partneri","RRIF-ov računski plan za poduzetnike","3","l10n_hr.l10n_hr_chart_template_rrif" +"3","__export__.account_fiscal_position_template_3","Inozemni,Inozemni","1210 Kupci dobara iz inozemstva","5037","l10n_hr.kp_rrif1210","3","Inozemni","3","__export__.account_fiscal_position_template_3","__export__.account_fiscal_position_account_template_3","1200 Potraživanja od kupaca dobara","5026","l10n_hr.kp_rrif1200","Inozemni,Inozemni,Inozemni,Inozemni","5","Inozemni","__export__.account_fiscal_position_tax_template_5","PDV 25%","94","l10n_hr.rrif_pdv_25","2.1. IZVOZNE - s pravom na odbit","109","l10n_hr.rrif_pdv_osl_izvoz_0","Inozemni","RRIF-ov računski plan za poduzetnike","3","l10n_hr.l10n_hr_chart_template_rrif" diff --git a/addons/l10n_hr/data/account.tax.code.template.csv b/addons/l10n_hr/data/account.tax.code.template.csv new file mode 100644 index 00000000000..aa5968b556f --- /dev/null +++ b/addons/l10n_hr/data/account.tax.code.template.csv @@ -0,0 +1,78 @@ +"id","code","sign","name","parent_id:id","info" +"pdv_code_porezi",,1,"POREZI",, +"pdv_code_nepdv","NEPDV",1,"Ostali porezi, carine, trošarine i sl.","pdv_code_porezi", +"pdv_code_pdv","PDV",0,"PDV","pdv_code_porezi", +"pdv_code_pdvob","PDVOB",0,"OBRAZAC PDV","pdv_code_pdv", +"pdv_code_opdvob","oPDVOB",0,"O S N O V I C A","pdv_code_pdvob","IV. UKUPNA POREZNA OBVEZA ZA POREZNO RAZDOBLJE:ZA UPLATU (II. - III.)" +"pdv_code_o1_2","o1+2",0,"Obračun isporuka (I+II)","pdv_code_opdvob","OBRAČUN POREZA U OBAVLJENIM ISPORUKAMA DOBARA I USLUGA U OBRAČUNSKOM RAZDOBLJU ISPORUKE – UKUPNO (I. + II.)" +"pdv_code_o1","o100",1,"I. Isporuke ne podliježu / oslobođene","pdv_code_o1_2","I. ISPORUKE KOJE NE PODLIJEŽU OPOREZIVANJU, KOJE SU OSLOBOĐENE I PO STOPI OD 0% - UKUPNO (1.+2.+3.)" +"pdv_code_o11","o110",1,"I.1. Koje ne podliježu oporezivanju","pdv_code_o1","1. KOJE NE PODLIJEŽU OPOREZIVANJU (čl. 2. u svezi s čl. 5. i čl. 8. st. 7. Zakona)" +"pdv_code_o12","o120",1,"I.2. Oslobođene ukupno","pdv_code_o1","2. OSLOBOĐENE POREZA – UKUPNO (2.1.+2.2.+2.3.+2.4.)" +"pdv_code_o121","o121",1,"I.2.1. Izvozne","pdv_code_o12","2.1. IZVOZNE – s pravom na odbitak pretporeza (čl. 13. st. 1. toč. 1. i čl. 14. Zakona )" +"pdv_code_o122","o122",1,"I.2.2. Isporuke dobara","pdv_code_o12","2.2. Isporuke dobara - za koje nije bio moguć odbitak pretporeza (čl. 11.b Zakona)" +"pdv_code_o123","o123",1,"I.2.3. Tuzemne - bez prava odbitka","pdv_code_o12","2.3. TUZEMNE – bez prava na odbitak pretporeza (čl. 11. i čl. 11.a Zakona)" +"pdv_code_o124","o124",1,"I.2.4. Ostale – s pravom odbitka","pdv_code_o12","2.4. OSTALE – s pravom na odbitak pretporeza (čl. 13. st. 1. toč. 2., čl. 13 a i čl. 13.b Zakona)" +"pdv_code_o13","o130",1,"I.3. Isporuke po stopi od 0%","pdv_code_o1","3. ISPORUKE PO STOPI OD 0% (čl. 10.a. Zakona)" +"pdv_code_o2","o200",1,"II. Oporezive isporuke","pdv_code_o1_2","II. OPOREZIVE ISPORUKE – UKUPNO (1.+2.+3.+4.)" +"pdv_code_o21","o210",1,"II.1 Izdani računi po stopi 10%","pdv_code_o2","1. ZA KOJE SU IZDANI RAČUNI I NEZARAČUNANE(čl. 2. st. 1. toč. 1a. i 1b., čl. 3. st. 5., čl. 4. st. 4., čl. 7. st. 1. i 4. i čl. 15. st. 8. Zakona) po stopi od 10%" +"pdv_code_o22","o220",1,"II.2 Izdani računi po stopi 22% i 23%","pdv_code_o2","2. ZA KOJE SU IZDANI RAČUNI I NEZARAČUNANE (čl. 2., čl. 7. st. 1. i 4. i čl. 15. st. 8. Zakona) po stopi od 22% i 23%" +"pdv_code_o23","o230",1,"II.3 Izdani računi po stopi 25%","pdv_code_o2","3. ZA KOJE SU IZDANI RAČUNI I NEZARAČUNANE(čl. 2. st. 1. toč. 1a. i 1b., čl. 3. st. 5., čl. 4. st. 4., čl. 7. st. 1. i 4.,čl. 15. st. 8., čl. 22.a i čl. 22.c Zakona) po stopi od 25%" +"pdv_code_o24","o240",1,"II.4 Nenaplaćeni izvoz","pdv_code_o2","4. NAKNADNO OSLOBOĐENJE IZVOZA U OKVIRU OSOBNOG PUTNIČKOG PROMETA (čl. 13. st. 1. toč. 4. Zakona)" +"pdv_code_o25","o250",1,"II.5 Oslobođenje izvoza – putnički promet","pdv_code_o2","4. NAKNADNO OSLOBOĐENJE IZVOZA U OKVIRU OSOBNOG PUTNIČKOG PROMETA (čl. 13. st. 1. toč. 4. Zakona)" +"pdv_code_o3","o300",0,"III. OBRAČUNANI PRETPOREZ","pdv_code_opdvob","III. OBRAČUNANI PRETPOREZ U PRIMLJENIM ISPORUKAMA DOBARA I USLUGA – UKUPNO (1.+2.+3.+4.+ 5.+6.+7.+8.)" +"pdv_code_o31","o310",1,"III.1. Pretporez 10%","pdv_code_o3","1. PRETPOREZ U PRIMLJENIM RAČUNIMA (čl. 20. st. 1., 9., 10. i 11. Zakona) po stopi od 10%" +"pdv_code_o32","o320",1,"III.2. Pretporez 22% i23%","pdv_code_o3","2. PRETPOREZ U PRIMLJENIM RAČUNIMA (čl. 20. st. 1., 9. i 10. Zakona) po stopi od 22% i 23%" +"pdv_code_o33","o330",1,"III.3. Pretporez 25%","pdv_code_o3","3. PRETPOREZ U PRIMLJENIM RAČUNIMA (čl. 20. st. 1., 9., 10., 11. i 12. Zakona) po stopi od 25%" +"pdv_code_o34","o340",1,"III.4. Plaćeni PP pri uvozu","pdv_code_o3","4. PLAĆENI PRETPOREZ PRI UVOZU (čl. 20. st. 2. odnosno čl. 7. st. 5. Zakona)" +"pdv_code_o35","o350",1,"III.5. Plaćeni PP na ino usluge 10%","pdv_code_o3","5. PLAĆENI PRETPOREZ NA USLUGE INOZEMNIH PODUZETNIKA (čl. 19. st. 2. Zakona) po stopi od 10%" +"pdv_code_o36","o360",1,"III.6. Plaćeni PP na ino usluge 22% i 23%","pdv_code_o3","6. PLAĆENI PRETPOREZ NA USLUGE INOZEMNIH PODUZETNIKA (čl. 19. st. 2. Zakona) po stopi od 22% i 23%" +"pdv_code_o37","o370",1,"III.7. Plaćeni PP na ino usluge 25%","pdv_code_o3","7. PLAĆENI PRETPOREZ NA USLUGE INOZEMNIH PODUZETNIKA (čl. 19. st. 2. Zakona) po stopi od 25%" +"pdv_code_o391","o391",1,"III.0. Pretporez 0%","pdv_code_o3","7.? PLAĆENI PRETPOREZ NA USLUGE INOZEMNIH PODUZETNIKA (čl. 19. st. 2. Zakona) po stopi od 25%" +"pdv_code_zpdv","zPDV",1,"PDV - OSTALO","pdv_code_pdv","Ostali podaci" +"pdv_code_z9","z900",1,"NEPRIZNATI PRETPOREZ ","pdv_code_zpdv", +"pdv_code_o91","o910",1,"NEPRIZNATI PRETPOREZ (osnovica 30 ili 70%)","pdv_code_z9","NP. NEPRIZNATI PRETPOREZ U PRIMLJENIM ISPORUKAMA DOBARA I USLUGA " +"pdv_code_o911","o911",1,"Nepriznati pretporez 10% (o)","pdv_code_o91","NP.1. NEPRIZNATI PRETPOREZ U PRIMLJENIM RAČUNIMA po stopi od 10%" +"pdv_code_o912","o912",1,"Nepriznati pretporez 22% i 23% (o)","pdv_code_o91","NP.2. NEPRIZNATI PRETPOREZ U PRIMLJENIM RAČUNIMA po stopi od 22% i 23%" +"pdv_code_o913","o913",1,"Nepriznati pretporez 25% (o)","pdv_code_o91","NP.3.NEPRIZNATI PRETPOREZ U PRIMLJENIM RAČUNIMA po stopi od 25%" +"pdv_code_o92","o920",1,"Pretporez koji još nije priznan (uključivo i neplaćeni R-2)","pdv_code_z9", +"pdv_code_o7","o700",1,"Ostali podaci","pdv_code_zpdv","Ostali podaci" +"pdv_code_o71","o710",1,"1. ZA ISPRAVAK PRETPOREZA","pdv_code_o7","1. ZA ISPRAVAK PRETPOREZA (UKUPNO 1.1.+1.2.+1.3.+1.4.+1.5.+1.6.)" +"pdv_code_oop11","o711",1,"1.1. NABAVA NEKRETNINA","pdv_code_o71","1.1. NABAVA NEKRETNINA – ISPORUČITELJ (PRODAVATELJ) NEKRETNINA" +"pdv_code_oop12","o712",1,"1.2. PRODAJA NEKRETNINA","pdv_code_o71","1.2. PRODAJA NEKRETNINA – PRIMATELJ (KUPAC) NEKRETNINA" +"pdv_code_oop13","o713",1,"1.3. NABAVA OSOBNIH VOZILA","pdv_code_o71","1.3. NABAVA OSOBNIH VOZILA (ZA PODUZETNIKE KOJIMA TRGOVINA AUTOMOBILIMA NIJE TEMELJNA DJELATNOST)" +"pdv_code_oop14","o714",1,"1.4. PRODAJA OSOBNIH VOZILA","pdv_code_o71","1.4. PRODAJA OSOBNIH VOZILA (ZA PODUZETNIKE KOJIMA TRGOVINA AUTOMOBILIMA NIJE TEMELJNA DJELATNOST)" +"pdv_code_oop15","o715",1,"1.5. NABAVA DUGOTRAJNE IMOVINE","pdv_code_o71","1.5. NABAVA OSTALE DUGOTRAJNE IMOVINE" +"pdv_code_oop16","o716",1,"1.6. PRODAJA DUGOTRAJNE IMOVINE","pdv_code_o71","1.6. PRODAJA OSTALE DUGOTRAJNE IMOVINE" +"pdv_code_oop2","o720",1,"2. OTUĐENJE/STJECANJE GOSPODARSKE CJELINE ILI POGONA","pdv_code_o7","2. OTUĐENJE/STJECANJE GOSPODARSKE CJELINE ILI POGONA" +"pdv_code_oop3","o730",1,"3. NABAVA DOBARA I USLUGA ZA REPREZENTACIJU","pdv_code_o7","3. NABAVA DOBARA I USLUGA ZA REPREZENTACIJU" +"pdv_code_oop4","o740",1,"4. NABAVA OSOBNIH VOZILA I DRUGIH SREDSTAVA ZA OSOBNI PRIJEVOZ ","pdv_code_o7","4. NABAVA OSOBNIH VOZILA I DRUGIH SREDSTAVA ZA OSOBNI PRIJEVOZ TE DOBARA I USLUGA POVEZANIH S TIM DOBRIMA" +"pdv_code_oop5","o750",1,"5. OSNOVICA ZA OBRAČUN VLASTITE POTROŠNJE ZA OSOBNA VOZILA NABAV","pdv_code_o7","5. OSNOVICA ZA OBRAČUN VLASTITE POTROŠNJE ZA OSOBNA VOZILA NABAVLJENA DO 31.12.2009." +"pdv_code_p6","pPDV",0,"PDV – POREZ – razlika za uplatu/preplata","pdv_code_pdvob", +"pdv_code_p5","p500",-1,"Uplaćeno u razdoblju","pdv_code_p6", +"pdv_code_p4","p400",1,"VI. POREZNA OBVEZA U RAZDOBLJU","pdv_code_p6","IV. UKUPNA POREZNA OBVEZA ZA POREZNO RAZDOBLJE:ZA UPLATU (II. - III.)" +"pdv_code_p1","p100",1,"I. Isporuke ne podliježu / oslobođene","pdv_code_p4","I. ISPORUKE KOJE NE PODLIJEŽU OPOREZIVANJU, KOJE SU OSLOBOĐENE I PO STOPI OD 0% - UKUPNO (1.+2.+3.)" +"pdv_code_p2","p200",1,"II. Oporezive isporuke","pdv_code_p4","II. OPOREZIVE ISPORUKE – UKUPNO (1.+2.+3.+4.)" +"pdv_code_p21","p210",1,"II.1 Izdani računi po stopi 10%","pdv_code_p2","1. ZA KOJE SU IZDANI RAČUNI I NEZARAČUNANE(čl. 2. st. 1. toč. 1a. i 1b., čl. 3. st. 5., čl. 4. st. 4., čl. 7. st. 1. i 4. i čl. 15. st. 8. Zakona) po stopi od 10%" +"pdv_code_p22","p220",1,"II.2 Izdani računi po stopi 22% i 23%","pdv_code_p2","2. ZA KOJE SU IZDANI RAČUNI I NEZARAČUNANE (čl. 2., čl. 7. st. 1. i 4. i čl. 15. st. 8. Zakona) po stopi od 22% i 23%" +"pdv_code_p23","p230",1,"II.3 Izdani računi po stopi 25%","pdv_code_p2","3. ZA KOJE SU IZDANI RAČUNI I NEZARAČUNANE(čl. 2. st. 1. toč. 1a. i 1b., čl. 3. st. 5., čl. 4. st. 4., čl. 7. st. 1. i 4.,čl. 15. st. 8., čl. 22.a i čl. 22.c Zakona) po stopi od 25%" +"pdv_code_p24","p240",1,"II.4 Oslobođenje izvoza – putnički promet","pdv_code_p2","4. NAKNADNO OSLOBOĐENJE IZVOZA U OKVIRU OSOBNOG PUTNIČKOG PROMETA (čl. 13. st. 1. toč. 4. Zakona)" +"pdv_code_p3","p300",-1,"III. OBRAČUNANI PRETPOREZ","pdv_code_p4","III. OBRAČUNANI PRETPOREZ U PRIMLJENIM ISPORUKAMA DOBARA I USLUGA – UKUPNO (1.+2.+3.+4.+ 5.+6.+7.+8.)" +"pdv_code_p31","p310",1,"III.1. Pretporez 10%","pdv_code_p3","1. PRETPOREZ U PRIMLJENIM RAČUNIMA (čl. 20. st. 1., 9., 10. i 11. Zakona) po stopi od 10%" +"pdv_code_p32","p320",1,"III.2. Pretporez 22% i 23%","pdv_code_p3","2. PRETPOREZ U PRIMLJENIM RAČUNIMA (čl. 20. st. 1., 9. i 10. Zakona) po stopi od 22% i 23%" +"pdv_code_p33","p330",1,"III.3. Pretporez 25%","pdv_code_p3","3. PRETPOREZ U PRIMLJENIM RAČUNIMA (čl. 20. st. 1., 9., 10., 11. i 12. Zakona) po stopi od 25%" +"pdv_code_p34","p340",1,"III.4. Plaćeni PP pri uvozu","pdv_code_p3","4. PLAĆENI PRETPOREZ PRI UVOZU (čl. 20. st. 2. odnosno čl. 7. st. 5. Zakona)" +"pdv_code_p35","p350",1,"III.5. Plaćeni PP na ino usluge 10%","pdv_code_p3","5. PLAĆENI PRETPOREZ NA USLUGE INOZEMNIH PODUZETNIKA (čl. 19. st. 2. Zakona) po stopi od 10%" +"pdv_code_p36","p360",1,"III.6. Plaćeni PP na ino usluge 22% i 23%","pdv_code_p3","6. PLAĆENI PRETPOREZ NA USLUGE INOZEMNIH PODUZETNIKA (čl. 19. st. 2. Zakona) po stopi od 22% i 23%" +"pdv_code_p37","p370",1,"III.7. Plaćeni PP na ino usluge 25%","pdv_code_p3","7. PLAĆENI PRETPOREZ NA USLUGE INOZEMNIH PODUZETNIKA (čl. 19. st. 2. Zakona) po stopi od 25%" +"pdv_code_p38","p380",1,"III.8. Ispravci pretporeza","pdv_code_p3","8. ISPRAVCI PRETPOREZA (čl. 20. st. 5. Zakona)" +"pdv_code_p9","p900",0,"NEPRIZNATI PRETPOREZ (porez)","pdv_code_z9","NP. NEPRIZNATI PRETPOREZ U PRIMLJENIM ISPORUKAMA DOBARA I USLUGA " +"pdv_code_p91","p910",1,"NEPRIZNATI PRETPOREZ (30 ili 70%)","pdv_code_p9","NP. NEPRIZNATI PRETPOREZ U PRIMLJENIM ISPORUKAMA DOBARA I USLUGA " +"pdv_code_p911","p911",1,"Nepriznati pretporez 10% (p)","pdv_code_p91","NP.1. NEPRIZNATI PRETPOREZ U PRIMLJENIM RAČUNIMA po stopi od 10%" +"pdv_code_p912","p912",1,"Nepriznati pretporez 22% i 23% (p)","pdv_code_p91","NP.2. NEPRIZNATI PRETPOREZ U PRIMLJENIM RAČUNIMA po stopi od 22% i 23%" +"pdv_code_p913","p913",1,"Nepriznati pretporez 25% (p)","pdv_code_p91","NP.3.NEPRIZNATI PRETPOREZ U PRIMLJENIM RAČUNIMA po stopi od 25%" +"pdv_code_p92","p920",1,"Pretporez koji još nije priznan (ukupno)","pdv_code_z9","Pretporez koji još nije priznan (ukupno)" +"pdv_code_p9201","p9201",1,"Pretporez koji još nije priznan (neplaćeni R2)","pdv_code_p92","Pretporez koji još nije priznan (neplaćeni R2)" +"pdv_code_p9202","p9202",1,"Pretporez koji još nije priznan (neplaćeni UVOZ dobara 25%)","pdv_code_p92","Pretporez koji još nije priznan (neplaćeni UVOZ dobara 25%)" +"pdv_code_p9203","p9203",1,"Pretporez koji još nije priznan (neplaćene INO usluge 25%)","pdv_code_p92","Pretporez koji još nije priznan (neplaćene INO usluge 25%)" +"pdv_code_p9204","p9204",1,"Pretporez koji još nije priznan (neplaćene INO usluge 10%)","pdv_code_p92","Pretporez koji još nije priznan (neplaćene INO usluge 10%)" +"pdv_code_potrosnja","POTROSNJA",1,"Porez na potrošnju","pdv_code_nepdv","Porez na potrošnju" diff --git a/addons/l10n_hr/data/account.tax.template.csv b/addons/l10n_hr/data/account.tax.template.csv new file mode 100644 index 00000000000..7289e25a5e3 --- /dev/null +++ b/addons/l10n_hr/data/account.tax.template.csv @@ -0,0 +1,62 @@ +"id","description","chart_template_id:id","name","amount","child_ids:id","parent_id:id","child_depend","type","account_collected_id:id","account_paid_id:id","type_tax_use","base_code_id:id","tax_code_id:id","ref_base_code_id:id","ref_tax_code_id:id","ref_tax_sign","tax_sign","base_sign","ref_base_sign","sequence" +"rrif_pdv_25","PDV 25%","l10n_hr_chart_template_rrif","25% PDV","0.25",,,"False","percent","kp_rrif24003","kp_rrif24003","sale","pdv_code_o23","pdv_code_p23","pdv_code_o23","pdv_code_p23","1.0","1.0","1.0","1.0","10" +"rrif_pdv_25usl","PDV 25% Usluge","l10n_hr_chart_template_rrif","25% PDV usluge","0.25",,,"False","percent","kp_rrif24003","kp_rrif24003","sale","pdv_code_o23","pdv_code_p23","pdv_code_o23","pdv_code_p23","1.0","1.0","1.0","1.0","100" +"rrif_pdv_23","PDV 23%","l10n_hr_chart_template_rrif","23% PDV","0.23",,,"False","percent","kp_rrif24002","kp_rrif24002","sale","pdv_code_o22","pdv_code_p22","pdv_code_o22","pdv_code_p22","1.0","1.0","1.0","1.0","100" +"rrif_pdv_23usl","PDV 23% Usluge","l10n_hr_chart_template_rrif","23% PDV usluge","0.23",,,"False","percent","kp_rrif24002","kp_rrif24002","sale","pdv_code_o22","pdv_code_p22","pdv_code_o22","pdv_code_p22","1.0","1.0","1.0","1.0","100" +"rrif_pdv_10","PDV 10%","l10n_hr_chart_template_rrif","10% PDV","0.10",,,"False","percent","kp_rrif24000","kp_rrif24000","sale","pdv_code_o21","pdv_code_p21","pdv_code_o21","pdv_code_p21","1.0","1.0","1.0","1.0","100" +"rrif_pdv_0","PDV 0%","l10n_hr_chart_template_rrif","0% PDV","0.00",,,"False","percent",,,"sale","pdv_code_o13",,"pdv_code_o13",,"1.0","1.0","1.0","1.0","100" +"rrif_pdv_avans_25","PDV za predujam 25%","l10n_hr_chart_template_rrif","25% PDV (za predujam)","0.25",,,"False","percent","kp_rrif24013","kp_rrif24013","sale","pdv_code_o23","pdv_code_p23","pdv_code_o23","pdv_code_p23","1.0","1.0","1.0","1.0","100" +"rrif_pdv_avans_23","PDV za predujam 23%","l10n_hr_chart_template_rrif","23% PDV (za predujam)","0.23",,,"False","percent","kp_rrif24012","kp_rrif24012","sale","pdv_code_o22","pdv_code_p22","pdv_code_o22","pdv_code_p22","1.0","1.0","1.0","1.0","100" +"rrif_pdv_avans_10","PDV za predujam 10%","l10n_hr_chart_template_rrif","10% PDV (za predujam)","0.10",,,"False","percent","kp_rrif24010","kp_rrif24010","sale","pdv_code_o21","pdv_code_p21","pdv_code_o21","pdv_code_p21","1.0","1.0","1.0","1.0","100" +"rrif_pdv_avans_0","PDV za predujam 0%","l10n_hr_chart_template_rrif","0% PDV (za predujam)","0.00",,,"False","percent",,,"sale","pdv_code_o13",,"pdv_code_o13",,"1.0","1.0","1.0","1.0","100" +"rrif_pdv_nezar_isp_25","PDV po nezaračunanim isporukama 25%","l10n_hr_chart_template_rrif","25% PDV za nezaračunane isp.","0.25",,,"False","percent","kp_rrif24033","kp_rrif24033","sale","pdv_code_o23","pdv_code_p23","pdv_code_o23","pdv_code_p23","1.0","1.0","1.0","1.0","100" +"rrif_pdv_nezar_isp_23","PDV po nezaračunanim isporukama 23%","l10n_hr_chart_template_rrif","23% PDV za nezaračunane isp.","0.23",,,"False","percent","kp_rrif24032","kp_rrif24032","sale","pdv_code_o22","pdv_code_p22","pdv_code_o22","pdv_code_p22","1.0","1.0","1.0","1.0","100" +"rrif_pdv_nezar_isp_10","PDV po nezaračunanim isporukama 10%","l10n_hr_chart_template_rrif","10% PDV za nezaračunane isp.","0.10",,,"False","percent","kp_rrif24030","kp_rrif24030","sale","pdv_code_o21","pdv_code_p21","pdv_code_o21","pdv_code_p21","1.0","1.0","1.0","1.0","100" +"rrif_pdv_nezar_isp_0","PDV po nezaračunanim isporukama 0%","l10n_hr_chart_template_rrif","0% PDV za nezaračunane isp.","0.00",,,"False","percent",,,"sale","pdv_code_o13",,"pdv_code_o13",,"1.0","1.0","1.0","1.0","100" +"rrif_pdv_nepod_0","1. KOJE NE PODLIJEŽU OPOREZIVANJU (čl. 2. u svezi s čl. 5 i čl. 8 st. 7 Zakona)","l10n_hr_chart_template_rrif","0% Ne podliježe op.","0.00",,,"False","percent",,,"sale","pdv_code_o11",,"pdv_code_o11",,"1.0","1.0","1.0","1.0","100" +"rrif_pdv_osl_izvoz_0","2.1. IZVOZNE - s pravom na odbitak pretporeza (čl. 13. st. 1. toč. 1. i čl. 14. Zakona)","l10n_hr_chart_template_rrif","0% osl. izvozne","0.00",,,"False","percent",,,"sale","pdv_code_o121",,"pdv_code_o121",,"1.0","1.0","1.0","1.0","100" +"rrif_pdv_osl_medpri_0","2.2. U VEZI S MEĐUNARODNIM PRIJEVOZOM (čl. 13.b Zakona)","l10n_hr_chart_template_rrif","0% osl. međ. prijevoz","0.00",,,"False","percent",,,"sale","pdv_code_o122",,"pdv_code_o122",,"1.0","1.0","1.0","1.0","100" +"rrif_pdv_osl_tuz_0","2.3. TUZEMNE - bez prava na odbitak pretporeza (čl. 11. i čl. 11a Zakona)","l10n_hr_chart_template_rrif","0% osl tuzemne","0.00",,,"False","percent",,,"sale","pdv_code_o123",,"pdv_code_o123",,"1.0","1.0","1.0","1.0","100" +"rrif_pdv_osl_ost_0","2.4. OSTALO (čl. 13. st. 1. toč. 2. I čl. 13a Zakona) ","l10n_hr_chart_template_rrif","0% osl. ostalo","0.00",,,"False","percent",,,"sale","pdv_code_o124",,"pdv_code_o124",,"1.0","1.0","1.0","1.0","100" +"rrif_pp_25","Pretporez 25% PDV","l10n_hr_chart_template_rrif","25% PDV pretporez","0.25",,,"False","percent","kp_rrif14003","kp_rrif14003","purchase","pdv_code_o33","pdv_code_p33","pdv_code_o33","pdv_code_p33","1.0","1.0","1.0","1.0","10" +"rrif_pp_25usl","Pretporez 25% PDV Usluge","l10n_hr_chart_template_rrif","25% PDV pretporez usluge","0.25",,,"False","percent","kp_rrif14003","kp_rrif14003","purchase","pdv_code_o33","pdv_code_p33","pdv_code_o33","pdv_code_p33","1.0","1.0","1.0","1.0","100" +"rrif_pp_23","Pretporez 23% PDV","l10n_hr_chart_template_rrif","23% PDV pretporez","0.23",,,"False","percent","kp_rrif14002","kp_rrif14002","purchase","pdv_code_o32","pdv_code_p32","pdv_code_o32","pdv_code_p32","1.0","1.0","1.0","1.0","100" +"rrif_pp_23usl","Pretporez 23% PDV Usluge","l10n_hr_chart_template_rrif","23% PDV pretporez usluge","0.23",,,"False","percent","kp_rrif14002","kp_rrif14002","purchase","pdv_code_o32","pdv_code_p32","pdv_code_o32","pdv_code_p32","1.0","1.0","1.0","1.0","100" +"rrif_pp_10","Pretporez 10% PDV","l10n_hr_chart_template_rrif","10% PDV pretporez","0.10",,,"False","percent","kp_rrif14000","kp_rrif14000","purchase","pdv_code_o31","pdv_code_p31","pdv_code_o31","pdv_code_p31","1.0","1.0","1.0","1.0","100" +"rrif_pp_0","Pretporez 0% PDV","l10n_hr_chart_template_rrif","0% PDV pretporez","0.00",,,"False","percent",,,"purchase","pdv_code_o391",,"pdv_code_o391",,"1.0","1.0","1.0","1.0","100" +"rrif_pp_avans_25","Pretporez za predujam 25% PDV","l10n_hr_chart_template_rrif","25% PDV pretporez za predujam","0.25",,,"False","percent","kp_rrif14013","kp_rrif14013","purchase","pdv_code_o33","pdv_code_p33","pdv_code_o33","pdv_code_p33","1.0","1.0","1.0","1.0","100" +"rrif_pp_avans_23","Pretporez za predujam 23% PDV","l10n_hr_chart_template_rrif","23% PDV pretporez za predujam","0.23",,,"False","percent","kp_rrif14012","kp_rrif14012","purchase","pdv_code_o32","pdv_code_p32","pdv_code_o32","pdv_code_p32","1.0","1.0","1.0","1.0","100" +"rrif_pp_avans_10","Pretporez za predujam 10% PDV","l10n_hr_chart_template_rrif","10% PDV pretporez za predujam","0.10",,,"False","percent","kp_rrif14010","kp_rrif14010","purchase","pdv_code_o31","pdv_code_p31","pdv_code_o31","pdv_code_p31","1.0","1.0","1.0","1.0","100" +"rrif_pp_avans_0","Pretporez za predujam 0% PDV","l10n_hr_chart_template_rrif","0% PDV pretporez za predujam","0.00",,,"False","percent",,,"purchase","pdv_code_o391",,"pdv_code_o391",,"1.0","1.0","1.0","1.0","100" +"rrif_pp_uvoz_25","Plaćeni PDV 25% pri uvozu dobara","l10n_hr_chart_template_rrif","25% uvoz dobara","0.25",,,"False","percent","kp_rrif14023","kp_rrif14023","purchase","pdv_code_o34","pdv_code_p34","pdv_code_o34","pdv_code_p34","1.0","1.0","1.0","1.0","100" +"rrif_pp_uvoz_23","Plaćeni PDV 23% pri uvozu dobara","l10n_hr_chart_template_rrif","23% uvoz dobara","0.23",,,"False","percent","kp_rrif14022","kp_rrif14022","purchase","pdv_code_o34","pdv_code_p34","pdv_code_o34","pdv_code_p34","1.0","1.0","1.0","1.0","100" +"rrif_pp_uvoz_10","Plaćeni PDV 10% pri uvozu dobara","l10n_hr_chart_template_rrif","10% uvoz dobara","0.10",,,"False","percent","kp_rrif14020","kp_rrif14020","purchase","pdv_code_o34","pdv_code_p34","pdv_code_o34","pdv_code_p34","1.0","1.0","1.0","1.0","100" +"rrif_pp_uvoz_0","Plaćeni PDV 0% pri uvozu dobara","l10n_hr_chart_template_rrif","0% uvoz dobara","0.00",,,"False","percent",,,"purchase","pdv_code_o34",,"pdv_code_o34",,"1.0","1.0","1.0","1.0","100" +"rrif_pp_ino_25","Plaćeni PDV 25% na usluge inozemnih poduzetnika","l10n_hr_chart_template_rrif","25% ino. usluge","0.25",,,"False","percent","kp_rrif14033","kp_rrif14033","purchase","pdv_code_o37","pdv_code_p37","pdv_code_o34","pdv_code_o37","1.0","1.0","1.0","1.0","100" +"rrif_pp_ino_23","Plaćeni PDV 23% na usluge inozemnih poduzetnika","l10n_hr_chart_template_rrif","23% ino. usluge","0.23",,,"False","percent","kp_rrif14032","kp_rrif14032","purchase","pdv_code_o36","pdv_code_p36","pdv_code_o34","pdv_code_o37","1.0","1.0","1.0","1.0","100" +"rrif_pp_ino_10","Plaćeni PDV 10% na usluge inozemnih poduzetnika","l10n_hr_chart_template_rrif","10% ino. usluge","0.10",,,"False","percent","kp_rrif14030","kp_rrif14030","purchase","pdv_code_o35","pdv_code_p35","pdv_code_o34","pdv_code_o35","1.0","1.0","1.0","1.0","100" +"rrif_pp_R2_25","25% R-2 dobavljač","l10n_hr_chart_template_rrif","25% R-2 dobavljač","0.25",,,"False","percent","kp_rrif1409","kp_rrif1409","purchase","pdv_code_o92","pdv_code_p9201","pdv_code_o92","pdv_code_p9201","1.0","1.0","1.0","1.0","100" +"rrif_pp_R2_23","23% R-2 dobavljač","l10n_hr_chart_template_rrif","23% R-2 dobavljač","0.23",,,"False","percent","kp_rrif1408","kp_rrif1408","purchase","pdv_code_o92","pdv_code_p9201","pdv_code_o92","pdv_code_p9201","1.0","1.0","1.0","1.0","100" +"rrif_pp_uvoz_samopdv_25","Samo PDV kod uvoza 25%","l10n_hr_chart_template_rrif","Samo PDV kod uvoza 25%","0.25",,,"False","percent",,,"purchase","pdv_code_o913","pdv_code_p9202","pdv_code_o913","pdv_code_p9202","-1.0","-1.0","-1.0","-1.0","100" +"rrif_pp_uvoz_samopdv_25usl","Samo PDV kod uvoza 25% usluge","l10n_hr_chart_template_rrif","Samo PDV kod uvoza 25% usluge","0.25",,,"False","percent",,,"purchase","pdv_code_o913","pdv_code_p9203","pdv_code_o913","pdv_code_p9203","-1.0","-1.0","-1.0","-1.0","100" +"rrif_pp_uvoz_samopdv_23","Samo PDV kod uvoza 23%","l10n_hr_chart_template_rrif","Samo PDV kod uvoza 23%","0.23",,,"False","percent",,,"purchase","pdv_code_o912","pdv_code_p9203","pdv_code_o912","pdv_code_p9203","-1.0","-1.0","-1.0","-1.0","100" +"rrif_ppdnp1_3070_1","pp 30% Nepriznat 70% Priznat","l10n_hr_chart_template_rrif","pp 30% Nepriznat 70% Priznat","1.0",,,"True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_30_2","pp 30% nepriznat","l10n_hr_chart_template_rrif","pp 30% nepriznat","0.30",,"rrif_ppdnp1_3070_1","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_30_3","pp 30% nep.(25%)","l10n_hr_chart_template_rrif","pp 30% nep.(25%)","0.25",,"rrif_ppdnp1_3070_30_2","False","percent",,,"purchase","pdv_code_o913","pdv_code_p913","pdv_code_o913","pdv_code_p913","1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_70_2","pp 70% priznat","l10n_hr_chart_template_rrif","Pp 70% priznat","0.70",,"rrif_ppdnp1_3070_1","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_70_3","pp 70% priz.(25%)","l10n_hr_chart_template_rrif","Pp 70% priz.(25%)","0.25",,"rrif_ppdnp1_3070_70_2","False","percent","kp_rrif14002","kp_rrif14002","purchase","pdv_code_o33","pdv_code_p33","pdv_code_o33","pdv_code_p33","1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_1","pp 70% Nepriznat 30% Priznat","l10n_hr_chart_template_rrif","pp 70% Nepriznat 30% Priznat","1.0",,,"True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_70_2","Pp 70% nepriznat","l10n_hr_chart_template_rrif","Pp 70% nepriznat","0.70",,"rrif_ppdnp1_7030_1","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_70_3","Pp 70% nep.(25%)","l10n_hr_chart_template_rrif","Pp 70% nep.(25%)","0.25",,"rrif_ppdnp1_7030_70_2","False","percent",,,"purchase","pdv_code_o913","pdv_code_p913","pdv_code_o913","pdv_code_p913","1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_30_2","Pp 30% priznat","l10n_hr_chart_template_rrif","Pp 30% priznat","0.30",,"rrif_ppdnp1_7030_1","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_30_3","Pp 30% priz.(25%)","l10n_hr_chart_template_rrif","Pp 30% priz.(25%)","0.25",,"rrif_ppdnp1_7030_30_2","False","percent","kp_rrif14002","kp_rrif14002","purchase","pdv_code_o33","pdv_code_p33","pdv_code_o33","pdv_code_p33","1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_1_r2","R2 pp 30% Nepriznat 70% Priznat","l10n_hr_chart_template_rrif","R2 pp 30% Nepriznat 70% Priznat","1.0",,,"True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_30_2_r2","R2 pp 30% nepriznat","l10n_hr_chart_template_rrif","R2 pp 30% nepriznat","0.30",,"rrif_ppdnp1_3070_1_r2","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_30_3_r2","R2 pp 30% nep.(25%)","l10n_hr_chart_template_rrif","R2 pp 30% nep.(25%)","0.25",,"rrif_ppdnp1_3070_30_2_r2","False","percent",,,"purchase","pdv_code_o913","pdv_code_p913","pdv_code_o913","pdv_code_p913","1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_70_2_r2","R2 pp 70% priznat","l10n_hr_chart_template_rrif","R2 pp 70% priznat","0.70",,"rrif_ppdnp1_3070_1_r2","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_3070_70_3_r2","R2 pp 70% priz.(25%)","l10n_hr_chart_template_rrif","R2 pp 70% priz.(25%)","0.25",,"rrif_ppdnp1_3070_70_2_r2","False","percent","kp_rrif1408","kp_rrif1408","purchase","pdv_code_o92","pdv_code_p9201","pdv_code_o92","pdv_code_p9201","1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_1_r2","R2 pp 70% Nepriznat 30% Priznat","l10n_hr_chart_template_rrif","R2 pp 70% Nepriznat 30% Priznat","1.0",,,"True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_70_2_r2","R2 Pp 70% nepriznat","l10n_hr_chart_template_rrif","R2 Pp 70% nepriznat","0.70",,"rrif_ppdnp1_7030_1_r2","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_70_3_r2","R2 Pp 70% nep.(25%)","l10n_hr_chart_template_rrif","R2 Pp 70% nep.(25%)","0.25",,"rrif_ppdnp1_7030_70_2_r2","False","percent",,,"purchase","pdv_code_o913","pdv_code_p913","pdv_code_o913","pdv_code_p913","1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_30_2_r2","R2 Pp 30% priznat","l10n_hr_chart_template_rrif","R2 Pp 30% priznat","0.30",,"rrif_ppdnp1_7030_1_r2","True","percent",,,"purchase",,,,,"1.0","1.0","1.0","1.0","100" +"rrif_ppdnp1_7030_30_3_r2","R2 Pp 30% priz.(25%)","l10n_hr_chart_template_rrif","R2 Pp 30% priz.(25%)","0.25",,"rrif_ppdnp1_7030_30_2_r2","False","percent","kp_rrif1408","kp_rrif1408","purchase","pdv_code_o92","pdv_code_p9201","pdv_code_o92","pdv_code_p9201","1.0","1.0","1.0","1.0","100" diff --git a/addons/l10n_hr/data/fiscal_position.xml b/addons/l10n_hr/data/fiscal_position.xml new file mode 100644 index 00000000000..df91a120a8b --- /dev/null +++ b/addons/l10n_hr/data/fiscal_position.xml @@ -0,0 +1,68 @@ + + + + + + R1 partneri + + + + + + + R2 partneri + + + + + + + + + + + + + + + + + + + + + + Inozemni + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/l10n_hr/data/fiscal_position.xml.backup b/addons/l10n_hr/data/fiscal_position.xml.backup new file mode 100644 index 00000000000..8386a0d9808 --- /dev/null +++ b/addons/l10n_hr/data/fiscal_position.xml.backup @@ -0,0 +1,139 @@ + + + + + Bescarinska zona + + + + + + + + + + + + + + + + Domaći partneri R2 + + + + + + + + + + + Domaći partneri R1 + + + + + Strani partneri + + + + + + + + + + + + + + + + + + + + + + + + + Domaći partneri izvan sustava PDV-a + + + + + + + + + + + + + Carinska uprava + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/addons/l10n_hr/i18n/hr.po b/addons/l10n_hr/i18n/hr.po new file mode 100644 index 00000000000..9f7c1848ee1 --- /dev/null +++ b/addons/l10n_hr/i18n/hr.po @@ -0,0 +1,149 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * l10n_hr +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 6.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-03-20 18:16+0000\n" +"PO-Revision-Date: 2012-03-20 18:16+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pasiva +msgid "Pasiva" +msgstr "Pasiva" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_aktiva +msgid "Aktiva" +msgstr "Aktiva" + +#. module: l10n_hr +#: model:ir.actions.todo,note:l10n_hr.config_call_account_template_hr_rrif +msgid "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" +" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" +msgstr "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" +" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_view +msgid "Sintetika" +msgstr "Sintetika" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_inv_rashod +msgid "Izvanredni rashodi" +msgstr "Izvanredni rashodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pdv +msgid "Obveze za PDV" +msgstr "Obveze za PDV" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_other +msgid "Ostalo" +msgstr "Ostalo" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pas_razgran +msgid "Pasivna vrem. Razgraničenja" +msgstr "Pasivna vrem. Razgraničenja" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_kratk_imovina +msgid "Kratkotrajna imovina" +msgstr "Kratkotrajna imovina" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_upis_kapital +msgid "Potraživanja za upisani kapital" +msgstr "Potraživanja za upisani kapital" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_obveze_dob +msgid "Obveze prema dobavljačima" +msgstr "Obveze prema dobavljačima" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_kapital +msgid "Kapital i rezerve" +msgstr "Kapital i rezerve" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_rezervacije +msgid "Rezerviranja" +msgstr "Rezerviranja" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_potraz_kup +msgid "Potraživanja od kupaca" +msgstr "Potraživanja od kupaca" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_dug_imovina +msgid "Dugotrajna imovina" +msgstr "Dugotrajna imovina" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pretporez +msgid "Potraživanja za pretporez" +msgstr "Potraživanja za pretporez" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_prihod +msgid "Prihod" +msgstr "Prihod" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_fin_prihod +msgid "Financijski prihodi" +msgstr "Financijski prihodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_posl_rashod +msgid "Poslovni rashodi" +msgstr "Poslovni rashodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_dug_obv +msgid "Dugoročne obveze" +msgstr "Dugoročne obveze" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_rashod +msgid "Rashod" +msgstr "Rashod" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_posl_prihod +msgid "Poslovni prihodi" +msgstr "Poslovni prihodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_kratk_obveze +msgid "Kratkoročne obveze" +msgstr "Kratkoročne obveze" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_fin_rashod +msgid "Financijski rashodi" +msgstr "Financijski rashodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_izv_prihod +msgid "Izvanredni prihodi" +msgstr "Izvanredni prihodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_aktiv_razgran +msgid "Aktivna vrem. Razgraničenja" +msgstr "Aktivna vrem. Razgraničenja" + diff --git a/addons/l10n_hr/i18n/l10n_hr.pot b/addons/l10n_hr/i18n/l10n_hr.pot new file mode 100644 index 00000000000..9f7c1848ee1 --- /dev/null +++ b/addons/l10n_hr/i18n/l10n_hr.pot @@ -0,0 +1,149 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * l10n_hr +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 6.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-03-20 18:16+0000\n" +"PO-Revision-Date: 2012-03-20 18:16+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pasiva +msgid "Pasiva" +msgstr "Pasiva" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_aktiva +msgid "Aktiva" +msgstr "Aktiva" + +#. module: l10n_hr +#: model:ir.actions.todo,note:l10n_hr.config_call_account_template_hr_rrif +msgid "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" +" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" +msgstr "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" +" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_view +msgid "Sintetika" +msgstr "Sintetika" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_inv_rashod +msgid "Izvanredni rashodi" +msgstr "Izvanredni rashodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pdv +msgid "Obveze za PDV" +msgstr "Obveze za PDV" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_other +msgid "Ostalo" +msgstr "Ostalo" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pas_razgran +msgid "Pasivna vrem. Razgraničenja" +msgstr "Pasivna vrem. Razgraničenja" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_kratk_imovina +msgid "Kratkotrajna imovina" +msgstr "Kratkotrajna imovina" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_upis_kapital +msgid "Potraživanja za upisani kapital" +msgstr "Potraživanja za upisani kapital" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_obveze_dob +msgid "Obveze prema dobavljačima" +msgstr "Obveze prema dobavljačima" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_kapital +msgid "Kapital i rezerve" +msgstr "Kapital i rezerve" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_rezervacije +msgid "Rezerviranja" +msgstr "Rezerviranja" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_potraz_kup +msgid "Potraživanja od kupaca" +msgstr "Potraživanja od kupaca" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_dug_imovina +msgid "Dugotrajna imovina" +msgstr "Dugotrajna imovina" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_pretporez +msgid "Potraživanja za pretporez" +msgstr "Potraživanja za pretporez" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_prihod +msgid "Prihod" +msgstr "Prihod" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_fin_prihod +msgid "Financijski prihodi" +msgstr "Financijski prihodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_posl_rashod +msgid "Poslovni rashodi" +msgstr "Poslovni rashodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_dug_obv +msgid "Dugoročne obveze" +msgstr "Dugoročne obveze" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_rashod +msgid "Rashod" +msgstr "Rashod" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_posl_prihod +msgid "Poslovni prihodi" +msgstr "Poslovni prihodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_kratk_obveze +msgid "Kratkoročne obveze" +msgstr "Kratkoročne obveze" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_fin_rashod +msgid "Financijski rashodi" +msgstr "Financijski rashodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_izv_prihod +msgid "Izvanredni prihodi" +msgstr "Izvanredni prihodi" + +#. module: l10n_hr +#: model:account.account.type,name:l10n_hr.account_type_aktiv_razgran +msgid "Aktivna vrem. Razgraničenja" +msgstr "Aktivna vrem. Razgraničenja" + diff --git a/addons/l10n_hr/l10n_hr_wizard.xml b/addons/l10n_hr/l10n_hr_wizard.xml new file mode 100755 index 00000000000..1f8a8763137 --- /dev/null +++ b/addons/l10n_hr/l10n_hr_wizard.xml @@ -0,0 +1,47 @@ + + + + + + RRIF-ov računski plan za poduzetnike + 0 + + + + + + + + + + + + + + + + + + + + + Generate Chart of Accounts from a Chart Template + Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku. + Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice + + automatic + + + + + + From d9c7febf49931172b76b229b84f8ce19afac172f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paulius=20Sladkevi=C4=8Dius?= Date: Wed, 24 Oct 2012 13:03:21 +0300 Subject: [PATCH 002/163] Fixed sorting for m2o bzr revid: paulius@hacbee.com-20121024100321-tqjm4pyk9y392qur --- openerp/osv/orm.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 4c3330c97b7..72c394debdb 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -4766,6 +4766,7 @@ class BaseModel(object): """ if context is None: context = {} + order = order or self._order self.check_access_rights(cr, access_rights_uid or user, 'read') # For transient models, restrict acces to the current user, except for the super-user From c5d3036674fdd4345876f85cb1009d76daaf56ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 15:29:44 +0100 Subject: [PATCH 003/163] [IMP] Needaction: couters are not counter with the menu anymore. Web-side: a call to get_needaction_data is performed to have action counters. Menus are then updated synchronously with this value. bzr revid: tde@openerp.com-20121127142944-m17zo62er5rh2lvg --- addons/web/controllers/main.py | 27 ++++++++++++++++++++++++--- addons/web/static/src/js/chrome.js | 15 +++++++++++++++ addons/web/tests/test_menu.py | 4 ++-- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index ad5dd21d0d8..99cd6711d33 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1034,6 +1034,10 @@ class Menu(openerpweb.Controller): def load(self, req): return {'data': self.do_load(req)} + @openerpweb.jsonrequest + def load_needaction(self, req, menu_ids): + return {'data': self.do_load_needaction(req, menu_ids)} + @openerpweb.jsonrequest def get_user_roots(self, req): return self.do_get_user_roots(req) @@ -1071,13 +1075,13 @@ class Menu(openerpweb.Controller): context = req.session.eval_context(req.context) Menus = req.session.model('ir.ui.menu') - menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled', 'needaction_counter'], context) - menu_root = {'id': False, 'name': 'root', 'parent_id': [-1, ''], 'children' : menu_roots} + menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled'], context) + menu_root = {'id': False, 'name': 'root', 'parent_id': [-1, ''], 'children': menu_roots} # menus are loaded fully unlike a regular tree view, cause there are a # limited number of items (752 when all 6.1 addons are installed) menu_ids = Menus.search([], 0, False, False, context) - menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled', 'needaction_counter'], context) + menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled'], context) # adds roots at the end of the sequence, so that they will overwrite # equivalent menu items from full menu read when put into id:item # mapping, resulting in children being correctly set on the roots. @@ -1101,6 +1105,23 @@ class Menu(openerpweb.Controller): return menu_root + def do_load_needaction(self, req, menu_ids=False): + """ Loads needaction counters for all or some specific menu ids. + + :param req: A request object, with an OpenERP session attribute + :type req: < session -> OpenERPSession > + :return: the menu root + :rtype: dict('children': menu_nodes) + """ + context = req.session.eval_context(req.context) + Menus = req.session.model('ir.ui.menu') + + if menu_ids == False: + menu_ids = Menus.search([('needaction_enabled', '=', True)], context=context) + + menu_needaction_data = Menus.get_needaction_data(menu_ids, context) + return menu_needaction_data + @openerpweb.jsonrequest def action(self, req, menu_id): actions = load_actions_from_ir_values(req,'action', 'tree_but_open', diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 1bca6bf94cd..c1a506fd107 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -835,6 +835,21 @@ instance.web.Menu = instance.web.Widget.extend({ } this.trigger('menu_loaded', data); this.has_been_loaded.resolve(); + // Now launch the fetch of needaction counters, asynchronous + this.rpc("web/menu/load_needaction", {menu_ids: false}).done(function(r) { + self.on_needaction_loaded(r); + }); + }, + on_needaction_loaded: function(data) { + var self = this; + this.needaction_data = data; + _.each(this.needaction_data.data, function (item, menu_id) { + var $item = self.$secondary_menus.find('a[data-menu="' + menu_id + '"]'); + $item.remove('oe_menu_counter'); + if (item.needaction_counter && item.needaction_counter > 0) { + $item.append('
' + item.needaction_counter + '
'); + } + }); }, limit_entries: function() { var maximum_visible_links = this.maximum_visible_links; diff --git a/addons/web/tests/test_menu.py b/addons/web/tests/test_menu.py index c5e1b948b67..5e1d61708e1 100644 --- a/addons/web/tests/test_menu.py +++ b/addons/web/tests/test_menu.py @@ -43,7 +43,7 @@ class LoadTest(unittest2.TestCase): [], 0, False, False, self.request.session.eval_context()) self.MockMenus.read.assert_called_with( [], ['name', 'sequence', 'parent_id', - 'action', 'needaction_enabled', 'needaction_counter'], + 'action', 'needaction_enabled'], self.request.session.eval_context()) self.assertListEqual( @@ -62,7 +62,7 @@ class LoadTest(unittest2.TestCase): self.MockMenus.read.assert_called_with( [1, 2, 3], ['name', 'sequence', 'parent_id', - 'action', 'needaction_enabled', 'needaction_counter'], + 'action', 'needaction_enabled'], self.request.session.eval_context()) self.assertEqual( From 6c453fe4044d5444213ce5e65f98e375f8bf4bcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 15:31:37 +0100 Subject: [PATCH 004/163] [IMP] Needaction: couters are not counter with the menu anymore. Server-side: removed needaction_counter field on menys. Added get_needaction_data method that calculates the needaction counters. Added a limit on needaction, because this allows to limitate the search without impacting the result (having 2386 unread entries or 99+ is basically equivalent). bzr revid: tde@openerp.com-20121127143137-k152ail3m2trlobl --- openerp/addons/base/ir/ir_needaction.py | 3 ++- openerp/addons/base/ir/ir_ui_menu.py | 29 +++++++++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index db133ad9904..57b324de3b9 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -21,6 +21,7 @@ from osv import osv + class ir_needaction_mixin(osv.AbstractModel): '''Mixin class for objects using the need action feature. @@ -60,4 +61,4 @@ class ir_needaction_mixin(osv.AbstractModel): dom = self._needaction_domain_get(cr, uid, context=context) if not dom: return 0 - return self.search(cr, uid, (domain or []) +dom, context=context, count=True) + return self.search(cr, uid, (domain or []) + dom, limit=100, context=context, count=True) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index 43ece8c0868..ef9ed3b7bf3 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -249,7 +249,7 @@ class ir_ui_menu(osv.osv): icon_image = False if icon_path: try: - icon_file = tools.file_open(icon_path,'rb') + icon_file = tools.file_open(icon_path, 'rb') icon_image = base64.encodestring(icon_file.read()) finally: icon_file.close() @@ -265,17 +265,26 @@ class ir_ui_menu(osv.osv): return res - def _get_needaction(self, cr, uid, ids, field_names, args, context=None): + def _get_needaction_enabled(self, cr, uid, ids, field_names, args, context=None): + res = dict.fromkeys(ids, False) + for menu in self.browse(cr, uid, ids, context=context): + if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: + obj = self.pool.get(menu.action.res_model) + if obj and obj._needaction: + res[menu.id] = True + return res + + def get_needaction_data(self, cr, uid, ids, context=None): res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = { 'needaction_enabled': False, 'needaction_counter': False, } - if menu.action and menu.action.type in ('ir.actions.act_window','ir.actions.client') and menu.action.res_model: + if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: obj = self.pool.get(menu.action.res_model) if obj and obj._needaction: - if menu.action.type=='ir.actions.act_window': + if menu.action.type == 'ir.actions.act_window': dom = menu.action.domain and eval(menu.action.domain, {'uid': uid}) or [] else: dom = eval(menu.action.params_store or '{}', {'uid': uid}).get('domain') @@ -286,7 +295,7 @@ class ir_ui_menu(osv.osv): _columns = { 'name': fields.char('Menu', size=64, required=True, translate=True), 'sequence': fields.integer('Sequence'), - 'child_id' : fields.one2many('ir.ui.menu', 'parent_id','Child IDs'), + 'child_id': fields.one2many('ir.ui.menu', 'parent_id', 'Child IDs'), 'parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', select=True), 'groups_id': fields.many2many('res.groups', 'ir_ui_menu_group_rel', 'menu_id', 'gid', 'Groups', help="If you have groups, the visibility of this menu will be based on these groups. "\ @@ -296,11 +305,13 @@ class ir_ui_menu(osv.osv): 'icon': fields.selection(tools.icons, 'Icon', size=64), 'icon_pict': fields.function(_get_icon_pict, type='char', size=32), 'web_icon': fields.char('Web Icon File', size=128), - 'web_icon_hover':fields.char('Web Icon File (hover)', size=128), + 'web_icon_hover': fields.char('Web Icon File (hover)', size=128), 'web_icon_data': fields.function(_get_image_icon, string='Web Icon Image', type='binary', readonly=True, store=True, multi='icon'), - 'web_icon_hover_data':fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), - 'needaction_enabled': fields.function(_get_needaction, string='Target model uses the need action mechanism', type='boolean', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.', multi='_get_needaction'), - 'needaction_counter': fields.function(_get_needaction, string='Number of actions the user has to perform', type='integer', help='If the target model uses the need action mechanism, this field gives the number of actions the current user has to perform.', multi='_get_needaction'), + 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), + 'needaction_enabled': fields.function(_get_needaction_enabled, + type='boolean', store=True, + string='Target model uses the need action mechanism', + help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), 'action': fields.function(_action, fnct_inv=_action_inv, type='reference', string='Action', selection=[ From 9dc08f3d7016b9efa560b224ed6086cd8a565179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 15:32:22 +0100 Subject: [PATCH 005/163] [IMP] mail_thread: improved search function of message_unread, now directly implemented in SQL to speedup the result. bzr revid: tde@openerp.com-20121127143222-nj9i2o5byor4m7oq --- addons/mail/mail_thread.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 15bc53223ba..dce5bc861e4 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -121,18 +121,15 @@ class mail_thread(osv.AbstractModel): return res - def _search_unread(self, cr, uid, obj=None, name=None, domain=None, context=None): - partner_id = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - res = {} - notif_obj = self.pool.get('mail.notification') - notif_ids = notif_obj.search(cr, uid, [ - ('partner_id', '=', partner_id), - ('message_id.model', '=', self._name), - ('read', '=', False) - ], context=context) - for notif in notif_obj.browse(cr, uid, notif_ids, context=context): - res[notif.message_id.res_id] = True - return [('id', 'in', res.keys())] + def _search_message_unread(self, cr, uid, obj=None, name=None, domain=None, context=None): + user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] + cr.execute(""" SELECT DISTINCT m.res_id FROM mail_message m + JOIN mail_notification n + ON (n.message_id = m.id AND n.partner_id = %s AND (n.read = False or n.read IS NULL)) + WHERE m.model = %s""", + (user_pid, self._name,)) + res_ids = [result[0] for result in cr.fetchall()] + return [('id', 'in', res_ids)] def _get_followers(self, cr, uid, ids, name, arg, context=None): fol_obj = self.pool.get('mail.followers') @@ -209,8 +206,9 @@ class mail_thread(osv.AbstractModel): domain=lambda self: [('model', '=', self._name)], string='Messages', help="Messages and communication history"), - 'message_unread': fields.function(_get_message_data, fnct_search=_search_unread, - type='boolean', string='Unread Messages', multi="_get_message_data", + 'message_unread': fields.function(_get_message_data, + fnct_search=_search_message_unread, multi="_get_message_data", + type='boolean', string='Unread Messages', help="If checked new messages require your attention."), 'message_summary': fields.function(_get_message_data, method=True, type='text', string='Summary', multi="_get_message_data", From e0fa7da24fc25be4f0a83572018d900dc6ca24c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 15:35:20 +0100 Subject: [PATCH 006/163] [REM] mail_thread: removed field message_comment_ids, not really necessary. In message_summary, we display the true number of messages, not only comment number. This is more consistent with what you will see in Chatter, aka all messages. bzr revid: tde@openerp.com-20121127143520-cv4os3dosrqo01wb --- addons/mail/mail_thread.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index dce5bc861e4..096d7d71045 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -88,7 +88,7 @@ class mail_thread(osv.AbstractModel): for thread in self.browse(cr, uid, ids, context=context): cls = res[thread.id]['message_unread'] and ' class="oe_kanban_mail_new"' or '' - res[thread.id]['message_summary'] = "9 %d + %d" % (cls, len(thread.message_comment_ids), len(thread.message_follower_ids)) + res[thread.id]['message_summary'] = "9 %d + %d" % (cls, len(thread.message_ids), len(thread.message_follower_ids)) return res @@ -198,10 +198,6 @@ class mail_thread(osv.AbstractModel): 'message_follower_ids': fields.function(_get_followers, fnct_inv=_set_followers, fnct_search=_search_followers, type='many2many', obj='res.partner', string='Followers', multi='_get_followers'), - 'message_comment_ids': fields.one2many('mail.message', 'res_id', - domain=lambda self: [('model', '=', self._name), ('type', 'in', ('comment', 'email'))], - string='Comments and emails', - help="Comments and emails"), 'message_ids': fields.one2many('mail.message', 'res_id', domain=lambda self: [('model', '=', self._name)], string='Messages', @@ -243,7 +239,6 @@ class mail_thread(osv.AbstractModel): def copy(self, cr, uid, id, default=None, context=None): default = default or {} default['message_ids'] = [] - default['message_comment_ids'] = [] default['message_follower_ids'] = [] return super(mail_thread, self).copy(cr, uid, id, default=default, context=context) From c1c5a852312df8bd34836cc91bff90c42d2ad296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 16:01:59 +0100 Subject: [PATCH 007/163] [CLEAN] expression.py: renamed some variables of expression; cleaned a bit the coding style (mainly spaces after commas). bzr revid: tde@openerp.com-20121127150159-su9x00m7tc8tc6dj --- openerp/osv/expression.py | 93 ++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 41 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 2b2d33a496e..bb2fce62b21 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -362,11 +362,24 @@ class expression(object): """ def __init__(self, cr, uid, exp, table, context): + """ Initialize expression object and automatically parse the expression + right after initialization. + + :param exp: expression (using domain ('foo', '=', 'bar' format)) + :param table: root table object + + :attr dict leaf_to_table: used to store the table to use for the + sql generation, according to the domain leaf. + structure: { [leaf index]: table object } + :attr set table_aliases: set of aliases. + :attr list joins: list of join conditions, such as (res_country_state."id" = res_partner."state_id") + :attr root_table: root table, set by parse() + """ self.has_unaccent = openerp.modules.registry.RegistryManager.get(cr.dbname).has_unaccent - self.__field_tables = {} # used to store the table to use for the sql generation. key = index of the leaf - self.__all_tables = set() - self.__joins = [] - self.__main_table = None # 'root' table. set by parse() + self.leaf_to_table = {} + self.table_aliases = set() + self.joins = [] + self.root_table = None # assign self.__exp with the normalized, parsed domain. self.parse(cr, uid, distribute_not(normalize(exp)), table, context) @@ -378,8 +391,8 @@ class expression(object): def parse(self, cr, uid, exp, table, context): """ transform the leaves of the expression """ self.__exp = exp - self.__main_table = table - self.__all_tables.add(table) + self.root_table = table + self.table_aliases.add(table) def child_of_domain(left, ids, left_model, parent=None, prefix=''): """Returns a domain implementing the child_of operator for [(left,child_of,ids)], @@ -419,7 +432,7 @@ class expression(object): return list(value) i = -1 - while i + 1','<=','>='] ) and 'in' or operator + operator = (operator in ['<', '>', '<=', '>=']) and 'in' or operator - dict_op = {'not in':'!=','in':'=','=':'in','!=':'not in'} + dict_op = {'not in': '!=', 'in': '=', '=': 'in', '!=': 'not in'} if isinstance(right, tuple): right = list(right) - if (not isinstance(right, list)) and operator in ['not in','in']: + if (not isinstance(right, list)) and operator in ['not in', 'in']: operator = dict_op[operator] - elif isinstance(right, list) and operator in ['!=','=']: #for domain (FIELD,'=',['value1','value2']) + elif isinstance(right, list) and operator in ['!=', '=']: # for domain (FIELD,'=',['value1','value2']) operator = dict_op[operator] res_ids = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, limit=None, context=c)] if operator in NEGATIVE_TERM_OPERATORS: - res_ids.append(False) # TODO this should not be appended if False was in 'right' + res_ids.append(False) # TODO this should not be appended if False was in 'right' return (left, 'in', res_ids) # resolve string-based m2o criterion into IDs if isinstance(right, basestring) or \ - right and isinstance(right, (tuple,list)) and all(isinstance(item, basestring) for item in right): + right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): self.__exp[i] = _get_expression(field_obj, cr, uid, left, right, operator, context=context) - else: + else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() pass @@ -640,7 +653,7 @@ class expression(object): if field.translate: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') - sql_operator = {'=like':'like','=ilike':'ilike'}.get(operator,operator) + sql_operator = {'=like': 'like', '=ilike': 'ilike'}.get(operator, operator) if need_wildcard: right = '%%%s%%' % right @@ -651,13 +664,13 @@ class expression(object): ' AND type = %s' instr = ' %s' #Covering in,not in operators with operands (%s,%s) ,etc. - if sql_operator in ['in','not in']: + if sql_operator in ['in', 'not in']: instr = ','.join(['%s'] * len(right)) - subselect += ' AND value ' + sql_operator + ' ' +" (" + instr + ")" \ + subselect += ' AND value ' + sql_operator + ' ' + " (" + instr + ")" \ ') UNION (' \ ' SELECT id' \ ' FROM "' + working_table._table + '"' \ - ' WHERE "' + left + '" ' + sql_operator + ' ' +" (" + instr + "))" + ' WHERE "' + left + '" ' + sql_operator + ' ' + " (" + instr + "))" else: subselect += ' AND value ' + sql_operator + instr + \ ') UNION (' \ @@ -729,11 +742,11 @@ class expression(object): elif not check_nulls and operator == 'not in': query = '(%s OR %s."%s" IS NULL)' % (query, table._table, left) elif check_nulls and operator == 'not in': - query = '(%s AND %s."%s" IS NOT NULL)' % (query, table._table, left) # needed only for TRUE. - else: # Must not happen + query = '(%s AND %s."%s" IS NOT NULL)' % (query, table._table, left) # needed only for TRUE. + else: # Must not happen raise ValueError("Invalid domain term %r" % (leaf,)) - elif right == False and (left in table._columns) and table._columns[left]._type=="boolean" and (operator == '='): + elif right == False and (left in table._columns) and table._columns[left]._type == "boolean" and (operator == '='): query = '(%s."%s" IS NULL or %s."%s" = false )' % (table._table, left, table._table, left) params = [] @@ -741,7 +754,7 @@ class expression(object): query = '%s."%s" IS NULL ' % (table._table, left) params = [] - elif right == False and (left in table._columns) and table._columns[left]._type=="boolean" and (operator == '!='): + elif right == False and (left in table._columns) and table._columns[left]._type == "boolean" and (operator == '!='): query = '(%s."%s" IS NOT NULL and %s."%s" != false)' % (table._table, left, table._table, left) params = [] @@ -764,7 +777,7 @@ class expression(object): else: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') - sql_operator = {'=like':'like','=ilike':'ilike'}.get(operator,operator) + sql_operator = {'=like': 'like', '=ilike': 'ilike'}.get(operator, operator) if left in table._columns: format = need_wildcard and '%s' or table._columns[left]._symbol_set[0] @@ -775,7 +788,7 @@ class expression(object): elif left in MAGIC_COLUMNS: query = "(%s.\"%s\" %s %%s)" % (table._table, left, sql_operator) params = right - else: # Must not happen + else: # Must not happen raise ValueError("Invalid field %r in domain term %r" % (left, leaf)) add_null = False @@ -798,14 +811,13 @@ class expression(object): params = [params] return (query, params) - def to_sql(self): stack = [] params = [] # Process the domain from right to left, using a stack, to generate a SQL expression. for i, e in reverse_enumerate(self.__exp): if is_leaf(e, internal=True): - table = self.__field_tables.get(i, self.__main_table) + table = self.leaf_to_table.get(i, self.root_table) q, p = self.__leaf_to_sql(e, table) params.insert(0, p) stack.append(q) @@ -819,13 +831,12 @@ class expression(object): assert len(stack) == 1 query = stack[0] - joins = ' AND '.join(self.__joins) + joins = ' AND '.join(self.joins) if joins: query = '(%s) AND %s' % (joins, query) return (query, flatten(params)) def get_tables(self): - return ['"%s"' % t._table for t in self.__all_tables] + return ['"%s"' % t._table for t in self.table_aliases] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - From e147a5483f378eaa53f148017e289801897e8f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 16:11:13 +0100 Subject: [PATCH 008/163] [CLEAN] expression.py: table_aliases now holds a list of aliases (names), and table_aliases_mapping does the mapping between a name and a table. The parsing algorithm now uses some accessors instead of directly accessing the data structures. bzr revid: tde@openerp.com-20121127151113-zregov1i2isoll9z --- openerp/osv/expression.py | 47 ++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index bb2fce62b21..58f9defccd4 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -371,28 +371,56 @@ class expression(object): :attr dict leaf_to_table: used to store the table to use for the sql generation, according to the domain leaf. structure: { [leaf index]: table object } - :attr set table_aliases: set of aliases. + :attr set table_aliases: set of aliases. Previously this attribute + was a set of table objects; now that joins generation is included + into the expression parsing, it holds aliases, and a mapping + exist linking aliases to tables. + :attr dict table_aliases_mapping: mapping alias -> table object :attr list joins: list of join conditions, such as (res_country_state."id" = res_partner."state_id") :attr root_table: root table, set by parse() """ self.has_unaccent = openerp.modules.registry.RegistryManager.get(cr.dbname).has_unaccent self.leaf_to_table = {} self.table_aliases = set() + self.table_aliases_mapping = {} self.joins = [] self.root_table = None # assign self.__exp with the normalized, parsed domain. self.parse(cr, uid, distribute_not(normalize(exp)), table, context) - # TODO used only for osv_memory - @property - def exp(self): - return self.__exp[:] + # TDE note: this seems not to be used anymore, commenting + # # TODO used only for osv_memory + # @property + # def exp(self): + # return self.__exp[:] + + def _has_table_alias(self, alias): + return alias in self.table_aliases + + def _get_table_from_alias(self, alias): + return self.table_aliases_mapping.get(alias) + + def _get_full_alias(self, alias): + if not self._get_table_from_alias(alias): + return False + return '%s as %s' % (self._get_table_from_alias(alias)._table, alias) + + def _add_table_alias(self, alias, table): + if not self._has_table_alias(alias): + self.table_aliases.add(alias) + self.table_aliases_mapping[alias] = table + else: + raise ValueError("Already existing alias %s for table %s, trying to set it for table %s" % (alias, self._get_table_from_alias(alias)._table, table._table)) + + def get_tables(self): + """ Returns the list of tables for SQL queries, like select from ... """ + return ['"%s"' % item for item in self.table_aliases] def parse(self, cr, uid, exp, table, context): """ transform the leaves of the expression """ self.__exp = exp self.root_table = table - self.table_aliases.add(table) + self._add_table_alias(table._table, table) def child_of_domain(left, ids, left_model, parent=None, prefix=''): """Returns a domain implementing the child_of operator for [(left,child_of,ids)], @@ -460,9 +488,9 @@ class expression(object): self.leaf_to_table[i] = working_table break next_table = working_table.pool.get(working_table._inherit_fields[field_path[0]][0]) - if next_table not in self.table_aliases: + if not self._has_table_alias(next_table._table): self.joins.append('%s."%s"=%s."%s"' % (next_table._table, 'id', working_table._table, working_table._inherits[next_table._name])) - self.table_aliases.add(next_table) + self._add_table_alias(next_table._table, next_table) working_table = next_table # Or (try to) directly extract the field. else: @@ -836,7 +864,4 @@ class expression(object): query = '(%s) AND %s' % (joins, query) return (query, flatten(params)) - def get_tables(self): - return ['"%s"' % t._table for t in self.table_aliases] - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 1bda6f44db6895f9ce6264c400066c0a1f0caa2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 16:34:32 +0100 Subject: [PATCH 009/163] [ADD] fields.py: added _auto_join attribute. This attribute will be used to automatically generate join queries, instead of doing sub-queries returning an 'id in' domain. bzr revid: tde@openerp.com-20121127153432-3ttqm8pmgk3l7a77 --- openerp/osv/fields.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index c8cf5909ecc..41a15b757e3 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -67,6 +67,7 @@ class _column(object): """ _classic_read = True _classic_write = True + _auto_join = False _prefetch = True _properties = False _type = 'unknown' From 8163c0027b5935e5d1903a78be901a3c519e42f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 17:06:27 +0100 Subject: [PATCH 010/163] [IMP] [TEST] orm: updated order_by generation by adding the root table name to the order by condition generated based on self._order. Added a mockup of where_calc in test_expression, to be able to track generated Query objects. Added a first test on a one2many query, to track current behavior. bzr revid: tde@openerp.com-20121127160627-qs1tupvgr8ypexoo --- openerp/addons/base/tests/test_expression.py | 81 +++++++++++++++++++- openerp/osv/orm.py | 12 ++- 2 files changed, 90 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/tests/test_expression.py b/openerp/addons/base/tests/test_expression.py index 5690cff443a..0f9241bce86 100644 --- a/openerp/addons/base/tests/test_expression.py +++ b/openerp/addons/base/tests/test_expression.py @@ -1,10 +1,21 @@ import unittest2 - +from openerp.osv.orm import BaseModel import openerp.tests.common as common + class test_expression(common.TransactionCase): - def test_in_not_in_m2m(self): + def _reinit_mock(self): + self.query_list = list() + + def _mock_base_model_where_calc(self, model, *args, **kwargs): + """ Mock build_email to be able to test its values. Store them into + some internal variable for latter processing. """ + self.query_list.append(self._base_model_where_calc(model, *args, **kwargs)) + # return the lastly stored query, the one the ORM wants to perform + return self.query_list[-1] + + def test_00_in_not_in_m2m(self): registry, cr, uid = self.registry, self.cr, self.uid @@ -70,3 +81,69 @@ class test_expression(common.TransactionCase): # self.assertTrue(a not in with_any_other_than_a, "Search for category_id with any other than cat_a failed (1).") # self.assertTrue(ab in with_any_other_than_a, "Search for category_id with any other than cat_a failed (2).") + def test_10_auto_join(self): + registry, cr, uid = self.registry, self.cr, self.uid + + # Mock BaseModel._where_calc(), to be able to proceed to some tests about generated expression + self._reinit_mock() + self._base_model_where_calc = BaseModel._where_calc + BaseModel._where_calc = lambda model, cr, uid, args, context: self._mock_base_model_where_calc(model, cr, uid, args, context) + + # Get models + partner_obj = registry('res.partner') + state_obj = registry('res.country.state') + bank_obj = registry('res.partner.bank') + + # Get test columns + state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state + child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner + bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank + country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country + + # Get the first bank account type to be able to create a res.partner.bank + bank_type = bank_obj._bank_type_get(cr, uid)[0] + + # Create demo data: partners and bank object + p_a = partner_obj.create(cr, uid, {'name': 'test__A'}) + p_b = partner_obj.create(cr, uid, {'name': 'test__B'}) + p_aa = partner_obj.create(cr, uid, {'name': 'test__AA', 'parent_id': p_a}) + p_ab = partner_obj.create(cr, uid, {'name': 'test__AB', 'parent_id': p_a}) + b_a = bank_obj.create(cr, uid, {'name': '__bank_test_a', 'state': bank_type[0], 'partner_id': p_a, 'acc_number': '1234'}) + + # ---------------------------------------- + # Test2: one2many + # ---------------------------------------- + + name_test = 'test_a' + + # Do: one2many without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', name_test)]) + # Test result + self.assertEqual(set(partner_ids), set([p_a]), 'one2many without join failed') + # Test produced queries + self.assertEqual(len(self.query_list), 3, + "_auto_join off: ('bank_ids.name', 'like', '..') should produce 3 queries (1 in res_partner_bank, 1 on res_partner with active, 1 on res_partner)") + sql_query = self.query_list[0].get_sql() + self.assertIn('res_partner_bank', sql_query[0], "_auto_join off: ('bank_ids.name', 'like', '..') first query should be done in res_partner_bank") + self.assertIn('(res_partner_bank."name" like %s)', sql_query[1], "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect where condition") + self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect parameter") + sql_query = self.query_list[2].get_sql() + self.assertIn('res_partner', sql_query[0], "_auto_join off: ('bank_ids.name', 'like', '..') third query should be done in res_partner") + self.assertIn('(res_partner."id" in (%s))', sql_query[1], "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect where condition") + self.assertEqual(set([p_a]), set(sql_query[2]), "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect parameter") + + # ---------------------------------------- + # Test2: many2one + # ---------------------------------------- + + # ---------------------------------------- + # Test2: more complex tests + # ---------------------------------------- + + # Remove mocks and modifications + bank_ids_col._auto_join = False + BaseModel._where_calc = self._base_model_where_calc + +if __name__ == '__main__': + unittest2.main() diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 6a1f917caa1..4120168cc41 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -4712,7 +4712,17 @@ class BaseModel(object): :raise" except_orm in case order_spec is malformed """ - order_by_clause = self._order + def _split_order(order, table): + """ from name, id asc make "table"."id", "table."."name" asc """ + order_list = [] + for elem in order.split(','): + subelems = elem.strip().split(' ') + if len(subelems) == 1: + subelems.append(' ') + order_list.append('"%s"."%s" %s' % (table, subelems[0], subelems[1])) + return order_list + + order_by_clause = ','.join(_split_order(self._order, self._table)) if order_spec: order_by_elements = [] self._check_qorder(order_spec) From 53efed664d44560ce9ba507eb08622594622164b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 17:13:54 +0100 Subject: [PATCH 011/163] [IMP] expression.py: _leaf_to_sql now uses a table_alias instead of table._table for query generation. Currently table_alias equals table._table, so the behavior has not changed. bzr revid: tde@openerp.com-20121127161354-fskwsmfvx3j8nto6 --- openerp/osv/expression.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 58f9defccd4..31a10d508f9 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -724,6 +724,8 @@ class expression(object): assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in table._all_columns \ or left in MAGIC_COLUMNS, "Invalid field %r in domain term %r" % (left, leaf) + table_alias = table._table + if leaf == TRUE_LEAF: query = 'TRUE' params = [] @@ -733,7 +735,7 @@ class expression(object): params = [] elif operator == 'inselect': - query = '(%s."%s" in (%s))' % (table._table, left, right[0]) + query = '(%s."%s" in (%s))' % (table_alias, left, right[0]) params = right[1] elif operator in ['in', 'not in']: @@ -745,7 +747,7 @@ class expression(object): r = 'NOT NULL' if right else 'NULL' else: r = 'NULL' if right else 'NOT NULL' - query = '(%s."%s" IS %s)' % (table._table, left, r) + query = '(%s."%s" IS %s)' % (table_alias, left, r) params = [] elif isinstance(right, (list, tuple)): params = right[:] @@ -760,34 +762,34 @@ class expression(object): instr = ','.join(['%s'] * len(params)) else: instr = ','.join([table._columns[left]._symbol_set[0]] * len(params)) - query = '(%s."%s" %s (%s))' % (table._table, left, operator, instr) + query = '(%s."%s" %s (%s))' % (table_alias, left, operator, instr) else: # The case for (left, 'in', []) or (left, 'not in', []). query = 'FALSE' if operator == 'in' else 'TRUE' if check_nulls and operator == 'in': - query = '(%s OR %s."%s" IS NULL)' % (query, table._table, left) + query = '(%s OR %s."%s" IS NULL)' % (query, table_alias, left) elif not check_nulls and operator == 'not in': - query = '(%s OR %s."%s" IS NULL)' % (query, table._table, left) + query = '(%s OR %s."%s" IS NULL)' % (query, table_alias, left) elif check_nulls and operator == 'not in': - query = '(%s AND %s."%s" IS NOT NULL)' % (query, table._table, left) # needed only for TRUE. + query = '(%s AND %s."%s" IS NOT NULL)' % (query, table_alias, left) # needed only for TRUE. else: # Must not happen raise ValueError("Invalid domain term %r" % (leaf,)) elif right == False and (left in table._columns) and table._columns[left]._type == "boolean" and (operator == '='): - query = '(%s."%s" IS NULL or %s."%s" = false )' % (table._table, left, table._table, left) + query = '(%s."%s" IS NULL or %s."%s" = false )' % (table_alias, left, table_alias, left) params = [] elif (right is False or right is None) and (operator == '='): - query = '%s."%s" IS NULL ' % (table._table, left) + query = '%s."%s" IS NULL ' % (table_alias, left) params = [] elif right == False and (left in table._columns) and table._columns[left]._type == "boolean" and (operator == '!='): - query = '(%s."%s" IS NOT NULL and %s."%s" != false)' % (table._table, left, table._table, left) + query = '(%s."%s" IS NOT NULL and %s."%s" != false)' % (table_alias, left, table_alias, left) params = [] elif (right is False or right is None) and (operator == '!='): - query = '%s."%s" IS NOT NULL' % (table._table, left) + query = '%s."%s" IS NOT NULL' % (table_alias, left) params = [] elif (operator == '=?'): @@ -800,7 +802,7 @@ class expression(object): query, params = self.__leaf_to_sql((left, '=', right), table) elif left == 'id': - query = '%s.id %s %%s' % (table._table, operator) + query = '%s.id %s %%s' % (table_alias, operator) params = right else: @@ -810,11 +812,11 @@ class expression(object): if left in table._columns: format = need_wildcard and '%s' or table._columns[left]._symbol_set[0] if self.has_unaccent and sql_operator in ('ilike', 'not ilike'): - query = '(unaccent(%s."%s") %s unaccent(%s))' % (table._table, left, sql_operator, format) + query = '(unaccent(%s."%s") %s unaccent(%s))' % (table_alias, left, sql_operator, format) else: - query = '(%s."%s" %s %s)' % (table._table, left, sql_operator, format) + query = '(%s."%s" %s %s)' % (table_alias, left, sql_operator, format) elif left in MAGIC_COLUMNS: - query = "(%s.\"%s\" %s %%s)" % (table._table, left, sql_operator) + query = "(%s.\"%s\" %s %%s)" % (table_alias, left, sql_operator) params = right else: # Must not happen raise ValueError("Invalid field %r in domain term %r" % (left, leaf)) @@ -833,7 +835,7 @@ class expression(object): params = table._columns[left]._symbol_set[1](right) if add_null: - query = '(%s OR %s."%s" IS NULL)' % (query, table._table, left) + query = '(%s OR %s."%s" IS NULL)' % (query, table_alias, left) if isinstance(params, basestring): params = [params] From 48138c9d26a535bce3100b2d595177e437b75a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 17:30:14 +0100 Subject: [PATCH 012/163] [IMP] [DOC] expression.py: renamed field_obj to relational_table, that make more sens to me. Added comments in the code to understand the algorithm. Please note that currently, no logic has been altered. bzr revid: tde@openerp.com-20121127163014-5ww5mre6j7opmzp1 --- openerp/osv/expression.py | 93 ++++++++++++++++++++++++++++----------- 1 file changed, 68 insertions(+), 25 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 31a10d508f9..22e49d42b8a 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -417,7 +417,23 @@ class expression(object): return ['"%s"' % item for item in self.table_aliases] def parse(self, cr, uid, exp, table, context): - """ transform the leaves of the expression """ + """ Transform the leaves of the expression + + For each element in the expression + 1. validity check: operator or True / False or a valid leaf + 2. TDE FIXME: TO COMPLETE + + Some var explanation for those who have 2 bytes of brain cache memory like me and that cannot remember 32^16 similar variable names. + :var obj working_table: table object, table containing the field (the name provided in the left operand) + :var list field_path: left operand seen as a path (foo.bar -> [foo, bar]) + :var string field_table: working_table._table + :var obj relational_table: relational table of a field (field._obj) + ex: res_partner.bank_ids -> res_partner_bank + :var obj field_obj: deleted var, now renamed to relational_table + + :param exp: expression (domain) + :param table: table object + """ self.__exp = exp self.root_table = table self._add_table_alias(table._table, table) @@ -445,7 +461,7 @@ class expression(object): return ids + recursive_children(ids2, model, parent_field) return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] - def to_ids(value, field_obj): + def to_ids(value, relational_table): """Normalize a single id or name, or a list of those, into a list of ids""" names = [] if isinstance(value, basestring): @@ -453,7 +469,7 @@ class expression(object): if value and isinstance(value, (tuple, list)) and isinstance(value[0], basestring): names = value if names: - return flatten([[x[0] for x in field_obj.name_search(cr, uid, n, [], 'ilike', context=context, limit=None)] \ + return flatten([[x[0] for x in relational_table.name_search(cr, uid, n, [], 'ilike', context=context, limit=None)] \ for n in names]) elif isinstance(value, (int, long)): return [value] @@ -462,11 +478,16 @@ class expression(object): i = -1 while i + 1 < len(self.__exp): i += 1 + + # 0 Preparation + # - Check validity of current element of expression (operator OR True/False leaf OR leaf) + # - Normalize the leaf's operator + # - Set working variables + + # check validity e = self.__exp[i] if is_operator(e) or e == TRUE_LEAF or e == FALSE_LEAF: continue - - # check if the expression is valid if not is_leaf(e): raise ValueError("Invalid term %r in domain expression %r" % (e, exp)) @@ -475,11 +496,13 @@ class expression(object): self.__exp[i] = e left, operator, right = e + # working variables working_table = table # The table containing the field (the name provided in the left operand) field_path = left.split('.', 1) - # If the field is _inherits'd, search for the working_table, - # and extract the field. + # 1 Handle inherits fields: replace by a join + # - Search for the working_table and extract the field + field = None if field_path[0] in table._inherit_fields: while True: @@ -496,6 +519,11 @@ class expression(object): else: field = working_table._columns.get(field_path[0]) + # 2 Field not found + # - ('id', 'child_of', ids) and continue the processing OR + # - field in magic columns (ex: id) and continue the processing OR + # - raise an error + if not field: if left == 'id' and operator == 'child_of': ids2 = to_ids(right, table) @@ -509,14 +537,29 @@ class expression(object): raise ValueError("Invalid field %r in domain expression %r" % (left, exp)) continue - field_obj = table.pool.get(field._obj) + # 3 Field found + # - get relational table, existing for relational fields + # - if domain is a path (ex: ('partner_id.name', '=', 'foo')): + # replace all the expression by a normalized equivalent domain + # - find the related ids: partner_id.name='foo' -> res_partner.search(('name', '=', 'foo'))) + # - many2one: leaf becomes directly ('partner_id', 'in', 'partner_ids') + # - one2many: + # - search on current table where partner_id is in partner_ids + # - leaf becomes ('id', 'in', ids) + # - get out of current leaf is field is not a property field + # - if domain is not a path + # - handle function fields + # - handle one2many, many2many and many2one fields + # - other fields: handle datetime and translatable fields + + relational_table = table.pool.get(field._obj) if len(field_path) > 1: if field._type == 'many2one': - right = field_obj.search(cr, uid, [(field_path[1], operator, right)], context=context) + right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) self.__exp[i] = (field_path[0], 'in', right) # Making search easier when there is a left operand as field.o2m or field.m2m if field._type in ['many2many', 'one2many']: - right = field_obj.search(cr, uid, [(field_path[1], operator, right)], context=context) + right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) right1 = table.search(cr, uid, [(field_path[0], 'in', right)], context=dict(context, active_test=False)) self.__exp[i] = ('id', 'in', right1) @@ -552,9 +595,9 @@ class expression(object): elif field._type == 'one2many': # Applying recursivity on field(one2many) if operator == 'child_of': - ids2 = to_ids(right, field_obj) + ids2 = to_ids(right, relational_table) if field._obj != working_table._name: - dom = child_of_domain(left, ids2, field_obj, prefix=field._obj) + dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) else: dom = child_of_domain('id', ids2, working_table, parent=left) self.__exp = self.__exp[:i] + dom + self.__exp[i + 1:] @@ -564,7 +607,7 @@ class expression(object): if right is not False: if isinstance(right, basestring): - ids2 = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, context=context, limit=None)] + ids2 = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, context=context, limit=None)] if ids2: operator = 'in' else: @@ -578,7 +621,7 @@ class expression(object): call_null = False self.__exp[i] = FALSE_LEAF else: - ids2 = select_from_where(cr, field._fields_id, field_obj._table, 'id', ids2, operator) + ids2 = select_from_where(cr, field._fields_id, relational_table._table, 'id', ids2, operator) if ids2: call_null = False o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' @@ -586,26 +629,26 @@ class expression(object): if call_null: o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - self.__exp[i] = ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, field_obj._table)) + self.__exp[i] = ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)) elif field._type == 'many2many': rel_table, rel_id1, rel_id2 = field._sql_names(working_table) #FIXME if operator == 'child_of': def _rec_convert(ids): - if field_obj == table: + if relational_table == table: return ids return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator) - ids2 = to_ids(right, field_obj) - dom = child_of_domain('id', ids2, field_obj) - ids2 = field_obj.search(cr, uid, dom, context=context) + ids2 = to_ids(right, relational_table) + dom = child_of_domain('id', ids2, relational_table) + ids2 = relational_table.search(cr, uid, dom, context=context) self.__exp[i] = ('id', 'in', _rec_convert(ids2)) else: call_null_m2m = True if right is not False: if isinstance(right, basestring): - res_ids = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, context=context)] + res_ids = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, context=context)] if res_ids: operator = 'in' else: @@ -631,14 +674,14 @@ class expression(object): elif field._type == 'many2one': if operator == 'child_of': - ids2 = to_ids(right, field_obj) + ids2 = to_ids(right, relational_table) if field._obj != working_table._name: - dom = child_of_domain(left, ids2, field_obj, prefix=field._obj) + dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) else: dom = child_of_domain('id', ids2, working_table, parent=left) self.__exp = self.__exp[:i] + dom + self.__exp[i + 1:] else: - def _get_expression(field_obj, cr, uid, left, right, operator, context=None): + def _get_expression(relational_table, cr, uid, left, right, operator, context=None): if context is None: context = {} c = context.copy() @@ -653,14 +696,14 @@ class expression(object): operator = dict_op[operator] elif isinstance(right, list) and operator in ['!=', '=']: # for domain (FIELD,'=',['value1','value2']) operator = dict_op[operator] - res_ids = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, limit=None, context=c)] + res_ids = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, limit=None, context=c)] if operator in NEGATIVE_TERM_OPERATORS: res_ids.append(False) # TODO this should not be appended if False was in 'right' return (left, 'in', res_ids) # resolve string-based m2o criterion into IDs if isinstance(right, basestring) or \ right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): - self.__exp[i] = _get_expression(field_obj, cr, uid, left, right, operator, context=context) + self.__exp[i] = _get_expression(relational_table, cr, uid, left, right, operator, context=context) else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() pass From 07f26441bbce36885de14fadf893f03ce7736dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 17:37:58 +0100 Subject: [PATCH 013/163] [IMP] expression.parse: improved code about extracting inherits\'d fields. I do not like while True statements, I prefer having a clear condition. Behavior should still be the same as before. bzr revid: tde@openerp.com-20121127163758-tddhbglygcbkvzed --- openerp/osv/expression.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 22e49d42b8a..d2de370a459 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -500,24 +500,21 @@ class expression(object): working_table = table # The table containing the field (the name provided in the left operand) field_path = left.split('.', 1) - # 1 Handle inherits fields: replace by a join - # - Search for the working_table and extract the field + # 1 Extract field + # - Try to directly extract the field + # - Handle inherits fields: replace by a join, find the final new + # working table and extract the field - field = None + field = working_table._columns.get(field_path[0]) if field_path[0] in table._inherit_fields: - while True: - field = working_table._columns.get(field_path[0]) - if field: - self.leaf_to_table[i] = working_table - break + while not field: next_table = working_table.pool.get(working_table._inherit_fields[field_path[0]][0]) if not self._has_table_alias(next_table._table): self.joins.append('%s."%s"=%s."%s"' % (next_table._table, 'id', working_table._table, working_table._inherits[next_table._name])) self._add_table_alias(next_table._table, next_table) working_table = next_table - # Or (try to) directly extract the field. - else: - field = working_table._columns.get(field_path[0]) + field = working_table._columns.get(field_path[0]) + self.leaf_to_table[i] = working_table # 2 Field not found # - ('id', 'child_of', ids) and continue the processing OR From 873d6cd5b13118a6ebc7c1e1906d8c79ca196ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 17:45:31 +0100 Subject: [PATCH 014/163] [CLEAN] expression.py: self.__exp -> self.exp, because too much underscores kill my eyes. Added a bit of comments. Please note that the behavior has still not changed. bzr revid: tde@openerp.com-20121127164531-hbsyhshmefdw0f93 --- openerp/osv/expression.py | 69 ++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index d2de370a459..1a2fd0cc0ca 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -385,14 +385,14 @@ class expression(object): self.table_aliases_mapping = {} self.joins = [] self.root_table = None - # assign self.__exp with the normalized, parsed domain. + # assign self.exp with the normalized, parsed domain. self.parse(cr, uid, distribute_not(normalize(exp)), table, context) # TDE note: this seems not to be used anymore, commenting # # TODO used only for osv_memory # @property # def exp(self): - # return self.__exp[:] + # return self.exp[:] def _has_table_alias(self, alias): return alias in self.table_aliases @@ -434,7 +434,7 @@ class expression(object): :param exp: expression (domain) :param table: table object """ - self.__exp = exp + self.exp = exp self.root_table = table self._add_table_alias(table._table, table) @@ -476,7 +476,7 @@ class expression(object): return list(value) i = -1 - while i + 1 < len(self.__exp): + while i + 1 < len(self.exp): i += 1 # 0 Preparation @@ -485,7 +485,7 @@ class expression(object): # - Set working variables # check validity - e = self.__exp[i] + e = self.exp[i] if is_operator(e) or e == TRUE_LEAF or e == FALSE_LEAF: continue if not is_leaf(e): @@ -493,7 +493,7 @@ class expression(object): # normalize the leaf's operator e = normalize_leaf(*e) - self.__exp[i] = e + self.exp[i] = e left, operator, right = e # working variables @@ -517,15 +517,16 @@ class expression(object): self.leaf_to_table[i] = working_table # 2 Field not found - # - ('id', 'child_of', ids) and continue the processing OR - # - field in magic columns (ex: id) and continue the processing OR + # - ('id', 'child_of', ids): replace the leaf by a computed domain + # after searching and continue the processing OR + # - field in magic columns (ex: id): continue the processing OR # - raise an error if not field: if left == 'id' and operator == 'child_of': ids2 = to_ids(right, table) dom = child_of_domain(left, ids2, working_table) - self.__exp = self.__exp[:i] + dom + self.__exp[i + 1:] + self.exp = self.exp[:i] + dom + self.exp[i + 1:] else: # field could not be found in model columns, it's probably invalid, unless # it's one of the _log_access special fields @@ -553,12 +554,12 @@ class expression(object): if len(field_path) > 1: if field._type == 'many2one': right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) - self.__exp[i] = (field_path[0], 'in', right) + self.exp[i] = (field_path[0], 'in', right) # Making search easier when there is a left operand as field.o2m or field.m2m if field._type in ['many2many', 'one2many']: right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) right1 = table.search(cr, uid, [(field_path[0], 'in', right)], context=dict(context, active_test=False)) - self.__exp[i] = ('id', 'in', right1) + self.exp[i] = ('id', 'in', right1) if not isinstance(field, fields.property): continue @@ -568,7 +569,7 @@ class expression(object): if not field._fnct_search: # the function field doesn't provide a search function and doesn't store # values in the database, so we must ignore it : we generate a dummy leaf - self.__exp[i] = TRUE_LEAF + self.exp[i] = TRUE_LEAF _logger.error( "The field '%s' (%s) can not be searched: non-stored " "function field without fnct_search", @@ -577,16 +578,16 @@ class expression(object): if _logger.isEnabledFor(logging.DEBUG): _logger.debug(''.join(traceback.format_stack())) else: - subexp = field.search(cr, uid, table, left, [self.__exp[i]], context=context) + subexp = field.search(cr, uid, table, left, [self.exp[i]], context=context) if not subexp: - self.__exp[i] = TRUE_LEAF + self.exp[i] = TRUE_LEAF else: # we assume that the expression is valid # we create a dummy leaf for forcing the parsing of the resulting expression - self.__exp[i] = AND_OPERATOR - self.__exp.insert(i + 1, TRUE_LEAF) + self.exp[i] = AND_OPERATOR + self.exp.insert(i + 1, TRUE_LEAF) for j, se in enumerate(subexp): - self.__exp.insert(i + 2 + j, se) + self.exp.insert(i + 2 + j, se) # else, the value of the field is store in the database, so we search on it elif field._type == 'one2many': @@ -597,7 +598,7 @@ class expression(object): dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) else: dom = child_of_domain('id', ids2, working_table, parent=left) - self.__exp = self.__exp[:i] + dom + self.__exp[i + 1:] + self.exp = self.exp[:i] + dom + self.exp[i + 1:] else: call_null = True @@ -616,17 +617,17 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null = False - self.__exp[i] = FALSE_LEAF + self.exp[i] = FALSE_LEAF else: ids2 = select_from_where(cr, field._fields_id, relational_table._table, 'id', ids2, operator) if ids2: call_null = False o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - self.__exp[i] = ('id', o2m_op, ids2) + self.exp[i] = ('id', o2m_op, ids2) if call_null: o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - self.__exp[i] = ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)) + self.exp[i] = ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)) elif field._type == 'many2many': rel_table, rel_id1, rel_id2 = field._sql_names(working_table) @@ -640,7 +641,7 @@ class expression(object): ids2 = to_ids(right, relational_table) dom = child_of_domain('id', ids2, relational_table) ids2 = relational_table.search(cr, uid, dom, context=context) - self.__exp[i] = ('id', 'in', _rec_convert(ids2)) + self.exp[i] = ('id', 'in', _rec_convert(ids2)) else: call_null_m2m = True if right is not False: @@ -657,17 +658,17 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null_m2m = False - self.__exp[i] = FALSE_LEAF + self.exp[i] = FALSE_LEAF else: operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - self.__exp[i] = ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]) + self.exp[i] = ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]) if call_null_m2m: m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - self.__exp[i] = ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)) + self.exp[i] = ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)) elif field._type == 'many2one': if operator == 'child_of': @@ -676,7 +677,7 @@ class expression(object): dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) else: dom = child_of_domain('id', ids2, working_table, parent=left) - self.__exp = self.__exp[:i] + dom + self.__exp[i + 1:] + self.exp = self.exp[:i] + dom + self.exp[i + 1:] else: def _get_expression(relational_table, cr, uid, left, right, operator, context=None): if context is None: @@ -700,7 +701,7 @@ class expression(object): # resolve string-based m2o criterion into IDs if isinstance(right, basestring) or \ right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): - self.__exp[i] = _get_expression(relational_table, cr, uid, left, right, operator, context=context) + self.exp[i] = _get_expression(relational_table, cr, uid, left, right, operator, context=context) else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() pass @@ -708,16 +709,16 @@ class expression(object): else: # other field type # add the time part to datetime field when it's not there: - if field._type == 'datetime' and self.__exp[i][2] and len(self.__exp[i][2]) == 10: + if field._type == 'datetime' and self.exp[i][2] and len(self.exp[i][2]) == 10: - self.__exp[i] = list(self.__exp[i]) + self.exp[i] = list(self.exp[i]) if operator in ('>', '>='): - self.__exp[i][2] += ' 00:00:00' + self.exp[i][2] += ' 00:00:00' elif operator in ('<', '<='): - self.__exp[i][2] += ' 23:59:59' + self.exp[i][2] += ' 23:59:59' - self.__exp[i] = tuple(self.__exp[i]) + self.exp[i] = tuple(self.exp[i]) if field.translate: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') @@ -753,7 +754,7 @@ class expression(object): right, ] - self.__exp[i] = ('id', 'inselect', (subselect, params)) + self.exp[i] = ('id', 'inselect', (subselect, params)) def __leaf_to_sql(self, leaf, table): left, operator, right = leaf @@ -885,7 +886,7 @@ class expression(object): stack = [] params = [] # Process the domain from right to left, using a stack, to generate a SQL expression. - for i, e in reverse_enumerate(self.__exp): + for i, e in reverse_enumerate(self.exp): if is_leaf(e, internal=True): table = self.leaf_to_table.get(i, self.root_table) q, p = self.__leaf_to_sql(e, table) From 9b196638cb22a1b7d4e2a9a91b5ce1f1f2380e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 18:01:17 +0100 Subject: [PATCH 015/163] [IMP] expression: replaced field paths now use an alias.field leaf style to prepare the inclusion of joins. In leaf_to_sql, handle this case accordingly. bzr revid: tde@openerp.com-20121127170117-qlhfs0r1ned5uz3c --- openerp/osv/expression.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 1a2fd0cc0ca..947d392065e 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -536,7 +536,9 @@ class expression(object): continue # 3 Field found - # - get relational table, existing for relational fields + # - update working variables + # - get relational table that exists for relational fields + # - prepare the alias for tables, that can be the table name if only one-level # - if domain is a path (ex: ('partner_id.name', '=', 'foo')): # replace all the expression by a normalized equivalent domain # - find the related ids: partner_id.name='foo' -> res_partner.search(('name', '=', 'foo'))) @@ -545,21 +547,23 @@ class expression(object): # - search on current table where partner_id is in partner_ids # - leaf becomes ('id', 'in', ids) # - get out of current leaf is field is not a property field - # - if domain is not a path + # - if domain is not a path: handle some leaf replacement / tweaking # - handle function fields # - handle one2many, many2many and many2one fields # - other fields: handle datetime and translatable fields relational_table = table.pool.get(field._obj) + alias = working_table._table + if len(field_path) > 1: if field._type == 'many2one': right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) - self.exp[i] = (field_path[0], 'in', right) + self.exp[i] = (alias + '.' + field_path[0], 'in', right) # Making search easier when there is a left operand as field.o2m or field.m2m if field._type in ['many2many', 'one2many']: right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) right1 = table.search(cr, uid, [(field_path[0], 'in', right)], context=dict(context, active_test=False)) - self.exp[i] = ('id', 'in', right1) + self.exp[i] = (alias + '.id', 'in', right1) if not isinstance(field, fields.property): continue @@ -763,9 +767,20 @@ class expression(object): assert operator in (TERM_OPERATORS + ('inselect',)), \ "Invalid operator %r in domain term %r" % (operator, leaf) assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in table._all_columns \ - or left in MAGIC_COLUMNS, "Invalid field %r in domain term %r" % (left, leaf) + or left in MAGIC_COLUMNS \ + or ('.' in left and self._has_table_alias(left.split('.')[0])), \ + "Invalid field %r in domain term %r" % (left, leaf) - table_alias = table._table + if not leaf in (TRUE_LEAF, FALSE_LEAF) and '.' in left: + # leaf still contains '.' -> should be aliases (alias.field) + # update table with alias, and left with field + leaf_path = left.split('.') + assert len(leaf_path) == 2, "Invalid leaf with alias %r in leaf %r" % (left, leaf) + table_alias = leaf_path[0] + table = self._get_table_from_alias(table_alias) + left = leaf_path[1] + else: + table_alias = table._table if leaf == TRUE_LEAF: query = 'TRUE' From 2fcaf2252cb5c815f29489828e7d536f1f8d425c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Nov 2012 19:11:38 +0100 Subject: [PATCH 016/163] [IMP] mail_message model: now uses _auto_join. bzr revid: tde@openerp.com-20121127181138-1mdebb6ehal2r973 --- addons/mail/mail_message.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index ba6d101541c..4b2878a6bcd 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -63,7 +63,7 @@ class mail_message(osv.Model): # protection for `default_type` values leaking from menu action context (e.g. for invoices) if context and context.get('default_type') and context.get('default_type') not in self._columns['type'].selection: context = dict(context, default_type=None) - return super(mail_message, self).default_get(cr, uid, fields, context=context) + return super(mail_message, self).default_get(cr, uid, fields, context=context) def _shorten_name(self, name): if len(name) <= (self._message_record_name_length + 3): @@ -146,7 +146,7 @@ class mail_message(osv.Model): store=True, string='Message Record Name', help="Name get of the related document."), 'notification_ids': fields.one2many('mail.notification', 'message_id', - string='Notifications', + string='Notifications', _auto_join=True, help='Technical field holding the message notifications. Use notified_partner_ids to access notified partners.'), 'subject': fields.char('Subject'), 'date': fields.datetime('Date'), From 0544565a57db056005bb098ffc92513e5b084159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 Nov 2012 10:42:34 +0100 Subject: [PATCH 017/163] [REV] ir_ui_menu: temporarily set needaction_enabled column back to non-stored, to be able to use the branch on internal test database with needaction, without requiring too many hand-made modifications. bzr revid: tde@openerp.com-20121128094234-ux06ludum7ub59u5 --- openerp/addons/base/ir/ir_ui_menu.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index ef9ed3b7bf3..f236845dfc7 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -309,7 +309,8 @@ class ir_ui_menu(osv.osv): 'web_icon_data': fields.function(_get_image_icon, string='Web Icon Image', type='binary', readonly=True, store=True, multi='icon'), 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), 'needaction_enabled': fields.function(_get_needaction_enabled, - type='boolean', store=True, + type='boolean', + # store=True, string='Target model uses the need action mechanism', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), 'action': fields.function(_action, fnct_inv=_action_inv, From ac587f68fec384730e4fbb748cd3662659037660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 Nov 2012 10:50:42 +0100 Subject: [PATCH 018/163] [IMP] expression.py: added support of _auto_join in parse. The purpose is to add join clauses to queries instead of replacing many2one or one2many fields by id in ... equivalent leafs. This should lessen the number of executed queries, as well as the time required for some queries like mailboxes queries. Updated the generation of full table aliases when generating SQL, to avoid having a table having it own name as alias. bzr revid: tde@openerp.com-20121128095042-x5rzgwydv0g9uy0m --- openerp/osv/expression.py | 47 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 947d392065e..4f2ae3989b9 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -403,7 +403,11 @@ class expression(object): def _get_full_alias(self, alias): if not self._get_table_from_alias(alias): return False - return '%s as %s' % (self._get_table_from_alias(alias)._table, alias) + table_name = self._get_table_from_alias(alias)._table + if table_name == alias: + return '"%s"' % alias + else: + return '"%s" as %s' % (table_name, alias) def _add_table_alias(self, alias, table): if not self._has_table_alias(alias): @@ -414,7 +418,7 @@ class expression(object): def get_tables(self): """ Returns the list of tables for SQL queries, like select from ... """ - return ['"%s"' % item for item in self.table_aliases] + return [self._get_full_alias(item) for item in self.table_aliases] def parse(self, cr, uid, exp, table, context): """ Transform the leaves of the expression @@ -540,6 +544,7 @@ class expression(object): # - get relational table that exists for relational fields # - prepare the alias for tables, that can be the table name if only one-level # - if domain is a path (ex: ('partner_id.name', '=', 'foo')): + # TDE TO ADD: once fully implemented, explain auto_join # replace all the expression by a normalized equivalent domain # - find the related ids: partner_id.name='foo' -> res_partner.search(('name', '=', 'foo'))) # - many2one: leaf becomes directly ('partner_id', 'in', 'partner_ids') @@ -555,6 +560,44 @@ class expression(object): relational_table = table.pool.get(field._obj) alias = working_table._table + while len(field_path) > 1 and field._auto_join: + if not field._type in ['many2one', 'one2many']: + raise '_auto_join attribute on something else than a many2one or one2many is currently not implemented... crashing' + + previous_alias = alias + alias = alias + '__' + field_path[0] + if not self._get_table_from_alias(alias): + self._add_table_alias(alias, relational_table) + if field._type == 'many2one': + self.joins.append('%s."%s"=%s."%s"' % (alias, 'id', previous_alias, field_path[0])) + elif field._type == 'one2many': + self.joins.append('%s."%s"=%s."%s"' % (alias, field._fields_id, previous_alias, 'id')) + self.exp[i] = (alias + '.' + field_path[1], self.exp[i][1], self.exp[i][2]) + + # udpate working variables + field_path = field_path[1].split('.', 1) + working_table = relational_table + field = working_table._columns.get(field_path[0]) + + if not field: + if left == 'id' and operator == 'child_of': + ids2 = to_ids(right, table) + dom = child_of_domain(left, ids2, working_table) + self.exp = self.exp[:i] + dom + self.exp[i + 1:] + else: + # field could not be found in model columns, it's probably invalid, unless + # it's one of the _log_access special fields + # TODO: make these fields explicitly available in self.columns instead! + if field_path[0] not in MAGIC_COLUMNS: + raise ValueError("Invalid field %r in domain expression %r" % (left, exp)) + break + + # moved on top + relational_table = table.pool.get(field._obj) + + if not field: + continue + if len(field_path) > 1: if field._type == 'many2one': right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) From 4be660369d6c00e53f5c0a102d13399916851a50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 Nov 2012 12:04:28 +0100 Subject: [PATCH 019/163] [DOC] ir_ui_menu: added some comments to the methods related to needaction. bzr revid: tde@openerp.com-20121128110428-lebsx4s3zlmgdhxj --- openerp/addons/base/ir/ir_ui_menu.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index f236845dfc7..fa4e5b2b540 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -266,6 +266,8 @@ class ir_ui_menu(osv.osv): return res def _get_needaction_enabled(self, cr, uid, ids, field_names, args, context=None): + """ needaction_enabled: tell whether the menu has a related action + that uses the needaction mechanism. """ res = dict.fromkeys(ids, False) for menu in self.browse(cr, uid, ids, context=context): if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: @@ -275,6 +277,11 @@ class ir_ui_menu(osv.osv): return res def get_needaction_data(self, cr, uid, ids, context=None): + """ Return for each menu entry of ids : + - if it uses the needaction mechanism (needaction_enabled) + - the needaction counter of the related action, taking into account + the action domain + """ res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = { @@ -310,7 +317,7 @@ class ir_ui_menu(osv.osv): 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), 'needaction_enabled': fields.function(_get_needaction_enabled, type='boolean', - # store=True, + # store=True, TDE TODO: uncomment after internal tests string='Target model uses the need action mechanism', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), 'action': fields.function(_action, fnct_inv=_action_inv, From 10ba4e5e606ace471ad8b43e9224c78cfcf033e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 Nov 2012 12:05:20 +0100 Subject: [PATCH 020/163] [IMP] [TMP] controller: search for all menus to have their needaction info, because currently needaction_enabled is not searchable (non stored function field). Revert this revision when the column is back as stored. bzr revid: tde@openerp.com-20121128110520-wijh1sr5qvsch7b8 --- addons/web/controllers/main.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 517ef242684..7658d3de0b8 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1117,7 +1117,9 @@ class Menu(openerpweb.Controller): Menus = req.session.model('ir.ui.menu') if menu_ids == False: - menu_ids = Menus.search([('needaction_enabled', '=', True)], context=context) + menu_ids = Menus.search([], context=context) + # TDE FIXME: set needaction_enabled column to store, to enable this more limited search + # menu_ids = Menus.search([('needaction_enabled', '=', True)], context=context) menu_needaction_data = Menus.get_needaction_data(menu_ids, context) return menu_needaction_data From a853b9f2ad72136780d02402b01e107d2ece77dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 Nov 2012 15:00:42 +0100 Subject: [PATCH 021/163] [TEST] Added some tests about the _auto_join feature. bzr revid: tde@openerp.com-20121128140042-4r58wnzahk0io3lw --- openerp/addons/base/tests/test_expression.py | 277 +++++++++++++++++-- 1 file changed, 252 insertions(+), 25 deletions(-) diff --git a/openerp/addons/base/tests/test_expression.py b/openerp/addons/base/tests/test_expression.py index 0f9241bce86..1eb22ccba43 100644 --- a/openerp/addons/base/tests/test_expression.py +++ b/openerp/addons/base/tests/test_expression.py @@ -15,8 +15,19 @@ class test_expression(common.TransactionCase): # return the lastly stored query, the one the ORM wants to perform return self.query_list[-1] - def test_00_in_not_in_m2m(self): + def setUp(self): + super(test_expression, self).setUp() + # Mock BaseModel._where_calc(), to be able to proceed to some tests about generated expression + self._reinit_mock() + self._base_model_where_calc = BaseModel._where_calc + BaseModel._where_calc = lambda model, cr, uid, args, context: self._mock_base_model_where_calc(model, cr, uid, args, context) + def tearDown(self): + # Remove mocks + BaseModel._where_calc = self._base_model_where_calc + super(test_expression, self).tearDown() + + def test_00_in_not_in_m2m(self): registry, cr, uid = self.registry, self.cr, self.uid # Create 4 partners with no category, or one or two categories (out of two categories). @@ -84,34 +95,36 @@ class test_expression(common.TransactionCase): def test_10_auto_join(self): registry, cr, uid = self.registry, self.cr, self.uid - # Mock BaseModel._where_calc(), to be able to proceed to some tests about generated expression - self._reinit_mock() - self._base_model_where_calc = BaseModel._where_calc - BaseModel._where_calc = lambda model, cr, uid, args, context: self._mock_base_model_where_calc(model, cr, uid, args, context) - # Get models partner_obj = registry('res.partner') state_obj = registry('res.country.state') bank_obj = registry('res.partner.bank') # Get test columns - state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state - child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner - bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank - country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country + partner_state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state + partner_parent_id_col = partner_obj._columns.get('parent_id') # many2one on res.partner to res.partner + partner_child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner + partner_bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank + state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country # Get the first bank account type to be able to create a res.partner.bank bank_type = bank_obj._bank_type_get(cr, uid)[0] + # Get country/state data + country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] + state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) # Create demo data: partners and bank object - p_a = partner_obj.create(cr, uid, {'name': 'test__A'}) - p_b = partner_obj.create(cr, uid, {'name': 'test__B'}) - p_aa = partner_obj.create(cr, uid, {'name': 'test__AA', 'parent_id': p_a}) - p_ab = partner_obj.create(cr, uid, {'name': 'test__AB', 'parent_id': p_a}) - b_a = bank_obj.create(cr, uid, {'name': '__bank_test_a', 'state': bank_type[0], 'partner_id': p_a, 'acc_number': '1234'}) + p_a = partner_obj.create(cr, uid, {'name': 'test__A', 'state_id': state_ids[0]}) + p_b = partner_obj.create(cr, uid, {'name': 'test__B', 'state_id': state_ids[1]}) + p_aa = partner_obj.create(cr, uid, {'name': 'test__AA', 'parent_id': p_a, 'state_id': state_ids[0]}) + p_ab = partner_obj.create(cr, uid, {'name': 'test__AB', 'parent_id': p_a, 'state_id': state_ids[1]}) + p_ba = partner_obj.create(cr, uid, {'name': 'test__BA', 'parent_id': p_b, 'state_id': state_ids[0]}) + b_aa = bank_obj.create(cr, uid, {'name': '__bank_test_a', 'state': bank_type[0], 'partner_id': p_aa, 'acc_number': '1234'}) + b_ab = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ab, 'acc_number': '5678'}) + b_ba = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ba, 'acc_number': '9876'}) # ---------------------------------------- - # Test2: one2many + # Test1: one2many # ---------------------------------------- name_test = 'test_a' @@ -120,29 +133,243 @@ class test_expression(common.TransactionCase): self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', name_test)]) # Test result - self.assertEqual(set(partner_ids), set([p_a]), 'one2many without join failed') + self.assertEqual(set(partner_ids), set([p_aa]), + "_auto_join off: ('bank_ids.name', 'like', '..'): incorrect result") # Test produced queries self.assertEqual(len(self.query_list), 3, "_auto_join off: ('bank_ids.name', 'like', '..') should produce 3 queries (1 in res_partner_bank, 1 on res_partner with active, 1 on res_partner)") sql_query = self.query_list[0].get_sql() - self.assertIn('res_partner_bank', sql_query[0], "_auto_join off: ('bank_ids.name', 'like', '..') first query should be done in res_partner_bank") - self.assertIn('(res_partner_bank."name" like %s)', sql_query[1], "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect where condition") - self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect parameter") + self.assertIn('res_partner_bank', sql_query[0], + "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect main table") + self.assertIn('res_partner_bank."name" like %s', sql_query[1], + "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect where condition") + self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), + "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect parameter") sql_query = self.query_list[2].get_sql() - self.assertIn('res_partner', sql_query[0], "_auto_join off: ('bank_ids.name', 'like', '..') third query should be done in res_partner") - self.assertIn('(res_partner."id" in (%s))', sql_query[1], "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect where condition") - self.assertEqual(set([p_a]), set(sql_query[2]), "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect parameter") + self.assertIn('res_partner', sql_query[0], + "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect main table") + self.assertIn('res_partner."id" in (%s)', sql_query[1], + "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect where condition") + self.assertEqual(set([p_aa]), set(sql_query[2]), + "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect parameter") + + # Do: cascaded one2many without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + # Test result + self.assertEqual(set(partner_ids), set([p_a, p_b]), + "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]): incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 5, + "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]) should produce 5 queries (1 in res_partner_bank, 2 on res_partner with active, 2 on res_partner, childs then parents)") + + # Do: one2many with _auto_join + partner_bank_ids_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', 'test_a')]) + # Test result + self.assertEqual(set(partner_ids), set([p_aa]), + "_auto_join on: ('bank_ids.name', 'like', '..') incorrect result") + # # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('bank_ids.name', 'like', '..') should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect main table") + self.assertIn('"res_partner_bank" as res_partner__bank_ids', sql_query[0], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join") + self.assertIn('res_partner__bank_ids."name" like %s', sql_query[1], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect where condition") + self.assertIn('res_partner__bank_ids."partner_id"=res_partner."id"', sql_query[1], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join condition") + self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect parameter") + + # Do: one2many with _auto_join, test final leaf is an id + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('bank_ids.id', 'in', [b_aa, b_ab])]) + # Test result + self.assertEqual(set(partner_ids), set([p_aa, p_ab]), + "_auto_join on: ('bank_ids.id', 'in', [..]) incorrect result") + # # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('bank_ids.id', 'in', [..]) should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect main table") + self.assertIn('"res_partner_bank" as res_partner__bank_ids', sql_query[0], + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect join") + self.assertIn('res_partner__bank_ids."id" in (%s,%s)', sql_query[1], + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect where condition") + self.assertIn('res_partner__bank_ids."partner_id"=res_partner."id"', sql_query[1], + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect join condition") + self.assertEqual(set([b_aa, b_ab]), set(sql_query[2]), + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect parameter") + + # Do: 2 cascaded one2many with _auto_join, test final leaf is an id + partner_child_ids_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + # Test result + self.assertEqual(set(partner_ids), set([p_a, p_b]), + "_auto_join on: ('child_ids.bank_ids.id', 'not in', [..]): incorrect result") + # # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) incorrect main table") + self.assertIn('"res_partner" as res_partner__child_ids', sql_query[0], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") + self.assertIn('"res_partner_bank" as res_partner__child_ids__bank_ids', sql_query[0], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") + self.assertIn('res_partner__child_ids__bank_ids."id" in (%s,%s)', sql_query[1], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect where condition") + self.assertIn('res_partner__child_ids."parent_id"=res_partner."id"', sql_query[1], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") + self.assertIn('res_partner__child_ids__bank_ids."partner_id"=res_partner__child_ids."id"', sql_query[1], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") + self.assertEqual(set([b_aa, b_ba]), set(sql_query[2]), + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect parameter") # ---------------------------------------- # Test2: many2one # ---------------------------------------- + name_test = 'US' + + # Do: many2one without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join off: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 3, + "_auto_join off: ('state_id.country_id.code', 'like', '..') should produce 3 queries (1 on res_country, 1 on res_country_state, 1 on res_partner)") + + # Do: many2one with 1 _auto_join on the first many2one + partner_state_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 2, + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') should produce 2 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_country"', sql_query[0], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") + self.assertIn('res_country."code" like %s', sql_query[1], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") + self.assertEqual(['%' + name_test + '%'], sql_query[2], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") + sql_query = self.query_list[1].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") + self.assertIn('"res_country_state" as res_partner__state_id', sql_query[0], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join") + self.assertIn('res_partner__state_id."country_id" in (%s)', sql_query[1], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") + self.assertIn('(res_partner__state_id."id"=res_partner."state_id"', sql_query[1], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join condition") + + # Do: many2one with 1 _auto_join on the second many2one + partner_state_id_col._auto_join = False + state_country_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 2, + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') should produce 2 query") + # -- first query + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_country_state"', sql_query[0], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") + self.assertIn('"res_country" as res_country_state__country_id', sql_query[0], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join") + self.assertIn('res_country_state__country_id."code" like %s', sql_query[1], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") + self.assertIn('res_country_state__country_id."id"=res_country_state."country_id"', sql_query[1], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join condition") + self.assertEqual(['%' + name_test + '%'], sql_query[2], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") + # -- second query + sql_query = self.query_list[1].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") + self.assertIn('res_partner."state_id" in', sql_query[1], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") + + # Do: many2one with 2 _auto_join + partner_state_id_col._auto_join = True + state_country_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join on: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('state_id.country_id.code', 'like', '..') should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect main table") + self.assertIn('"res_country_state" as res_partner__state_id', sql_query[0], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") + self.assertIn('"res_country" as res_partner__state_id__country_id', sql_query[0], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") + self.assertIn('res_partner__state_id__country_id."code" like %s', sql_query[1], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect where condition") + self.assertIn('res_partner__state_id."id"=res_partner."state_id"', sql_query[1], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") + self.assertIn('res_partner__state_id__country_id."id"=res_partner__state_id."country_id"', sql_query[1], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") + self.assertEqual(['%' + name_test + '%'], sql_query[2], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect parameter") + # ---------------------------------------- - # Test2: more complex tests + # Test3: result-based tests # ---------------------------------------- + partner_bank_ids_col._auto_join = False + partner_child_ids_col._auto_join = False + partner_state_id_col._auto_join = False + partner_parent_id_col._auto_join = False + state_country_id_col._auto_join = False + + # Do: ('child_ids.state_id.country_id.code', 'like', '..') without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), + "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 5, + "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") + + # Do: ('child_ids.state_id.country_id.code', 'like', '..') with _auto_join + partner_child_ids_col._auto_join = True + partner_state_id_col._auto_join = True + state_country_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), + "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") + # Remove mocks and modifications - bank_ids_col._auto_join = False + partner_bank_ids_col._auto_join = False + partner_child_ids_col._auto_join = False + partner_state_id_col._auto_join = False + state_country_id_col._auto_join = False BaseModel._where_calc = self._base_model_where_calc if __name__ == '__main__': From 47fda8226445590d604a2899457a25e290eda8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 Nov 2012 19:12:58 +0100 Subject: [PATCH 022/163] [FIX] expression.parse: fixed indentation error preventing leafs to be correctly replaced in auto_join. bzr revid: tde@openerp.com-20121128181258-cgmm7wqgv657iptb --- openerp/osv/expression.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 4f2ae3989b9..5fb18fb8cc1 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -572,7 +572,7 @@ class expression(object): self.joins.append('%s."%s"=%s."%s"' % (alias, 'id', previous_alias, field_path[0])) elif field._type == 'one2many': self.joins.append('%s."%s"=%s."%s"' % (alias, field._fields_id, previous_alias, 'id')) - self.exp[i] = (alias + '.' + field_path[1], self.exp[i][1], self.exp[i][2]) + self.exp[i] = (alias + '.' + field_path[1], self.exp[i][1], self.exp[i][2]) # udpate working variables field_path = field_path[1].split('.', 1) From a123d95dcadfdceeddf1f9cb91629b61c0dd1c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 29 Nov 2012 12:30:25 +0100 Subject: [PATCH 023/163] [IMP] mail_message: star feature is now on mail.notification. A starred message has a notification with starred=True. favorite_user_ids many2many field disappear. _search_to_read and _search_starred replaced by returning a domain on the notifications. Using auto_join, this should speedup chatter a lot. Updated tests accordingly (should be updated a bit more than that, though). Updated JS. Updated mailboxes domains, as to_read and starred already contain a reference to the pid. bzr revid: tde@openerp.com-20121129113025-rizon3eaf14vrla2 --- addons/mail/mail_followers.py | 29 +------- addons/mail/mail_message.py | 107 ++++++++++++++++++++++-------- addons/mail/mail_thread_view.xml | 19 ++++-- addons/mail/static/src/js/mail.js | 4 +- addons/mail/tests/test_mail.py | 15 +++-- 5 files changed, 107 insertions(+), 67 deletions(-) diff --git a/addons/mail/mail_followers.py b/addons/mail/mail_followers.py index 8d3876ec91f..f02835e5b3b 100644 --- a/addons/mail/mail_followers.py +++ b/addons/mail/mail_followers.py @@ -19,7 +19,6 @@ # ############################################################################## -from openerp import SUPERUSER_ID from osv import osv from osv import fields import tools @@ -63,12 +62,15 @@ class mail_notification(osv.Model): 'partner_id': fields.many2one('res.partner', string='Contact', ondelete='cascade', required=True, select=1), 'read': fields.boolean('Read', select=1), + 'starred': fields.boolean('Starred', select=1, + help='Starred message that goes into the todo mailbox'), 'message_id': fields.many2one('mail.message', string='Message', ondelete='cascade', required=True, select=1), } _defaults = { 'read': False, + 'starred': False, } def init(self, cr): @@ -83,31 +85,6 @@ class mail_notification(osv.Model): return super(mail_notification, self).create(cr, uid, vals, context=context) return False - def set_message_read(self, cr, uid, msg_ids, read=None, context=None): - """ Set messages as (un)read. Technically, the notifications related - to uid are set to (un)read. If for some msg_ids there are missing - notifications (i.e. due to load more or thread parent fetching), - they are created. - - :param bool read: (un)read notification - """ - user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - notif_ids = self.search(cr, uid, [ - ('partner_id', '=', user_pid), - ('message_id', 'in', msg_ids) - ], context=context) - - # all message have notifications: already set them as (un)read - if len(notif_ids) == len(msg_ids): - return self.write(cr, uid, notif_ids, {'read': read}, context=context) - - # some messages do not have notifications: find which one, create notification, update read status - notified_msg_ids = [notification.message_id.id for notification in self.browse(cr, uid, notif_ids, context=context)] - to_create_msg_ids = list(set(msg_ids) - set(notified_msg_ids)) - for msg_id in to_create_msg_ids: - self.create(cr, uid, {'partner_id': user_pid, 'read': read, 'message_id': msg_id}, context=context) - return self.write(cr, uid, notif_ids, {'read': read}, context=context) - def get_partners_to_notify(self, cr, uid, message, context=None): """ Return the list of partners to notify, based on their preferences. diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 4b2878a6bcd..c1df5edf906 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -55,7 +55,7 @@ class mail_message(osv.Model): _message_read_limit = 30 _message_read_fields = ['id', 'parent_id', 'model', 'res_id', 'body', 'subject', 'date', 'to_read', 'email_from', - 'type', 'vote_user_ids', 'attachment_ids', 'author_id', 'partner_ids', 'record_name', 'favorite_user_ids'] + 'type', 'vote_user_ids', 'attachment_ids', 'author_id', 'partner_ids', 'record_name'] _message_record_name_length = 18 _message_read_more_limit = 1024 @@ -98,15 +98,28 @@ class mail_message(osv.Model): def _search_to_read(self, cr, uid, obj, name, domain, context=None): """ Search for messages to read by the current user. Condition is inversed because we search unread message on a read column. """ - if domain[0][2]: - read_cond = "(read = False OR read IS NULL)" - else: - read_cond = "read = True" + pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] + return ['&', ('notification_ids.partner_id', '=', pid), ('notification_ids.read', '=', not domain[0][2])] + + def _get_starred(self, cr, uid, ids, name, arg, context=None): + """ Compute if the message is unread by the current user. """ + res = dict((id, False) for id in ids) partner_id = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - cr.execute("SELECT message_id FROM mail_notification "\ - "WHERE partner_id = %%s AND %s" % read_cond, - (partner_id,)) - return [('id', 'in', [r[0] for r in cr.fetchall()])] + notif_obj = self.pool.get('mail.notification') + notif_ids = notif_obj.search(cr, uid, [ + ('partner_id', 'in', [partner_id]), + ('message_id', 'in', ids), + ('starred', '=', True), + ], context=context) + for notif in notif_obj.browse(cr, uid, notif_ids, context=context): + res[notif.message_id.id] = True + return res + + def _search_starred(self, cr, uid, obj, name, domain, context=None): + """ Search for messages to read by the current user. Condition is + inversed because we search unread message on a read column. """ + pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] + return ['&', ('notification_ids.partner_id', '=', pid), ('notification_ids.starred', '=', domain[0][2])] def name_get(self, cr, uid, ids, context=None): # name_get may receive int id instead of an id list @@ -154,15 +167,15 @@ class mail_message(osv.Model): 'body': fields.html('Contents', help='Automatically sanitized HTML contents'), 'to_read': fields.function(_get_to_read, fnct_search=_search_to_read, type='boolean', string='To read', - help='Functional field to search for messages the current user has to read'), + help='Current user has an unread notification linked to this message'), + 'starred': fields.function(_get_starred, fnct_search=_search_starred, + type='boolean', string='Starred', + help='Current user has a starred notification linked to this message'), 'subtype_id': fields.many2one('mail.message.subtype', 'Subtype', ondelete='set null', select=1,), 'vote_user_ids': fields.many2many('res.users', 'mail_vote', 'message_id', 'user_id', string='Votes', help='Users that voted for this message'), - 'favorite_user_ids': fields.many2many('res.users', 'mail_favorite', - 'message_id', 'user_id', string='Favorite', - help='Users that set this message in their favorites'), } def _needaction_domain_get(self, cr, uid, context=None): @@ -196,19 +209,62 @@ class mail_message(osv.Model): return new_has_voted or False #------------------------------------------------------ - # Favorite + # Notification API #------------------------------------------------------ - def favorite_toggle(self, cr, uid, ids, context=None): - ''' Toggles favorite. Performed using read to avoid access rights issues. - Done as SUPERUSER_ID because uid may star a message he cannot modify. ''' - for message in self.read(cr, uid, ids, ['favorite_user_ids'], context=context): - new_is_favorite = not (uid in message.get('favorite_user_ids')) - if new_is_favorite: - self.write(cr, SUPERUSER_ID, message.get('id'), {'favorite_user_ids': [(4, uid)]}, context=context) - else: - self.write(cr, SUPERUSER_ID, message.get('id'), {'favorite_user_ids': [(3, uid)]}, context=context) - return new_is_favorite or False + def set_message_read(self, cr, uid, msg_ids, read, context=None): + """ Set messages as (un)read. Technically, the notifications related + to uid are set to (un)read. If for some msg_ids there are missing + notifications (i.e. due to load more or thread parent fetching), + they are created. + + :param bool read: set notification as (un)read + """ + notification_obj = self.pool.get('mail.notification') + user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] + notif_ids = notification_obj.search(cr, uid, [ + ('partner_id', '=', user_pid), + ('message_id', 'in', msg_ids) + ], context=context) + + # all message have notifications: already set them as (un)read + if len(notif_ids) == len(msg_ids): + return notification_obj.write(cr, uid, notif_ids, {'read': read}, context=context) + + # some messages do not have notifications: find which one, create notification, update read status + notified_msg_ids = [notification.message_id.id for notification in notification_obj.browse(cr, uid, notif_ids, context=context)] + to_create_msg_ids = list(set(msg_ids) - set(notified_msg_ids)) + for msg_id in to_create_msg_ids: + notification_obj.create(cr, uid, {'partner_id': user_pid, 'read': read, 'message_id': msg_id}, context=context) + return notification_obj.write(cr, uid, notif_ids, {'read': read}, context=context) + + def set_message_starred(self, cr, uid, msg_ids, starred, context=None): + """ Set messages as (un)starred. Technically, the notifications related + to uid are set to (un)starred. If for some msg_ids there are missing + notifications (i.e. due to load more or thread parent fetching), + they are created. + + :param bool starred: set notification as (un)starred + """ + notification_obj = self.pool.get('mail.notification') + user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] + notif_ids = notification_obj.search(cr, uid, [ + ('partner_id', '=', user_pid), + ('message_id', 'in', msg_ids) + ], context=context) + + # all message have notifications: already set them as (un)starred + if len(notif_ids) == len(msg_ids): + notification_obj.write(cr, uid, notif_ids, {'starred': starred}, context=context) + return starred + + # some messages do not have notifications: find which one, create notification, update starred status + notified_msg_ids = [notification.message_id.id for notification in notification_obj.browse(cr, uid, notif_ids, context=context)] + to_create_msg_ids = list(set(msg_ids) - set(notified_msg_ids)) + for msg_id in to_create_msg_ids: + notification_obj.create(cr, uid, {'partner_id': user_pid, 'starred': starred, 'message_id': msg_id}, context=context) + notification_obj.write(cr, uid, notif_ids, {'starred': starred}, context=context) + return starred #------------------------------------------------------ # Message loading for web interface @@ -283,7 +339,6 @@ class mail_message(osv.Model): # votes and favorites: res.users ids, no prefetching should be done vote_nb = len(message.vote_user_ids) has_voted = uid in [user.id for user in message.vote_user_ids] - is_favorite = uid in [user.id for user in message.favorite_user_ids] return {'id': message.id, 'type': message.type, @@ -301,7 +356,7 @@ class mail_message(osv.Model): 'partner_ids': [], 'vote_nb': vote_nb, 'has_voted': has_voted, - 'is_favorite': is_favorite, + 'is_favorite': message.starred, 'attachment_ids': [], } diff --git a/addons/mail/mail_thread_view.xml b/addons/mail/mail_thread_view.xml index a232aa12642..fedcef36fda 100644 --- a/addons/mail/mail_thread_view.xml +++ b/addons/mail/mail_thread_view.xml @@ -11,9 +11,8 @@ } @@ -62,7 +63,9 @@ 'search_default_message_unread': True } @@ -83,7 +86,11 @@ 'default_res_id': uid }

diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 44bb4e9ae09..3b521678fe8 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -851,7 +851,7 @@ openerp.mail = function (session) { } var message_ids = _.map(messages, function (val) { return val.id; }); - this.ds_notification.call('set_message_read', [message_ids, read_value, this.context]) + this.ds_message.call('set_message_read', [message_ids, read_value, this.context]) .then(function () { // apply modification _.each(messages, function (msg) { @@ -900,7 +900,7 @@ openerp.mail = function (session) { var self=this; var button = self.$('.oe_star:first'); - this.ds_message.call('favorite_toggle', [[self.id]]) + this.ds_message.call('set_message_starred', [[self.id], !self.is_favorite]) .then(function (star) { self.is_favorite=star; if (self.is_favorite) { diff --git a/addons/mail/tests/test_mail.py b/addons/mail/tests/test_mail.py index bc6df813ef7..c18dea46452 100644 --- a/addons/mail/tests/test_mail.py +++ b/addons/mail/tests/test_mail.py @@ -795,7 +795,7 @@ class test_mail(test_mail_mockup.TestMailMockups): # Test: msg has Bert as voter self.assertEqual(set(msg.vote_user_ids), set([user_raoul]), 'mail_message vote: after unvoting, Bert should be in the voter') - def test_70_message_favorite(self): + def test_70_message_star(self): """ Tests for favorites. """ cr, uid, user_admin, user_raoul, group_pigs = self.cr, self.uid, self.user_admin, self.user_raoul, self.group_pigs # Data: post a message on Pigs @@ -803,17 +803,18 @@ class test_mail(test_mail_mockup.TestMailMockups): msg = self.mail_message.browse(cr, uid, msg_id) # Do: Admin stars msg - self.mail_message.favorite_toggle(cr, uid, [msg.id]) + self.mail_message.set_message_starred(cr, uid, [msg.id], True) msg.refresh() # Test: msg starred by Admin - self.assertEqual(set(msg.favorite_user_ids), set([user_admin]), 'mail_message favorite: after starring, Admin should be in favorite_user_ids') + self.assertTrue(msg.starred, 'mail_message starred failed') # Do: Bert stars msg - self.mail_message.favorite_toggle(cr, user_raoul.id, [msg.id]) + self.mail_message.set_message_starred(cr, user_raoul.id, [msg.id], True) msg.refresh() # Test: msg starred by Admin and Raoul - self.assertEqual(set(msg.favorite_user_ids), set([user_admin, user_raoul]), 'mail_message favorite: after starring, Admin and Raoul should be in favorite_user_ids') + # self.assertTrue(msg.starred, set([user_admin, user_raoul]), 'mail_message favorite: after starring, Admin and Raoul should be in favorite_user_ids') # Do: Admin unvote for msg - self.mail_message.favorite_toggle(cr, uid, [msg.id]) + self.mail_message.set_message_starred(cr, uid, [msg.id], False) msg.refresh() # Test: msg starred by Raoul - self.assertEqual(set(msg.favorite_user_ids), set([user_raoul]), 'mail_message favorite: after unstarring, Raoul should be in favorite_user_ids') + self.assertFalse(msg.starred, 'mail_message starred failed') + # self.assertEqual(set(msg.favorite_user_ids), set([user_raoul]), 'mail_message favorite: after unstarring, Raoul should be in favorite_user_ids') From 9f84bbddfb3abfc69cdb6b3dc126b7e2381cc452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 29 Nov 2012 15:42:53 +0100 Subject: [PATCH 024/163] [IMP] mail: message_unread searchable field now returns a domain. This domain is quite complex, because it bypasses limitations of the _auto_join feature used on message_ids. It should be: message_ids.read = False. However, it takes into account the one2many model, as well as to_read being a function field also searchable. Ths parsing is not capable to handle this kind of thing correctly now without using an ugly hack. Updated _search_to_read and _search_starred. bzr revid: tde@openerp.com-20121129144253-i9e7m2kqjteq8ajr --- addons/mail/mail_message.py | 19 +++---------------- addons/mail/mail_thread.py | 19 +++++++++++-------- addons/mail/mail_thread_view.xml | 2 +- 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index c1df5edf906..28ac087edc0 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -98,8 +98,7 @@ class mail_message(osv.Model): def _search_to_read(self, cr, uid, obj, name, domain, context=None): """ Search for messages to read by the current user. Condition is inversed because we search unread message on a read column. """ - pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - return ['&', ('notification_ids.partner_id', '=', pid), ('notification_ids.read', '=', not domain[0][2])] + return ['&', ('notification_ids.partner_id.user_ids', 'in', [uid]), ('notification_ids.read', '=', not domain[0][2])] def _get_starred(self, cr, uid, ids, name, arg, context=None): """ Compute if the message is unread by the current user. """ @@ -118,8 +117,7 @@ class mail_message(osv.Model): def _search_starred(self, cr, uid, obj, name, domain, context=None): """ Search for messages to read by the current user. Condition is inversed because we search unread message on a read column. """ - pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - return ['&', ('notification_ids.partner_id', '=', pid), ('notification_ids.starred', '=', domain[0][2])] + return ['&', ('notification_ids.partner_id.user_ids', 'in', [uid]), ('notification_ids.starred', '=', domain[0][2])] def name_get(self, cr, uid, ids, context=None): # name_get may receive int id instead of an id list @@ -179,9 +177,7 @@ class mail_message(osv.Model): } def _needaction_domain_get(self, cr, uid, context=None): - if self._needaction: - return [('to_read', '=', True)] - return [] + return [('to_read', '=', True)] def _get_default_author(self, cr, uid, context=None): return self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] @@ -529,15 +525,6 @@ class mail_message(osv.Model): thread_level=thread_level, message_unload_ids=message_unload_ids, domain=domain, parent_id=parent_id, context=context) return message_list - # TDE Note: do we need this ? - # def user_free_attachment(self, cr, uid, context=None): - # attachment = self.pool.get('ir.attachment') - # attachment_list = [] - # attachment_ids = attachment.search(cr, uid, [('res_model', '=', 'mail.message'), ('create_uid', '=', uid)]) - # if len(attachment_ids): - # attachment_list = [{'id': attach.id, 'name': attach.name, 'date': attach.create_date} for attach in attachment.browse(cr, uid, attachment_ids, context=context)] - # return attachment_list - #------------------------------------------------------ # mail_message internals #------------------------------------------------------ diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 2240c91e4fa..40f13434717 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -122,14 +122,16 @@ class mail_thread(osv.AbstractModel): return res def _search_message_unread(self, cr, uid, obj=None, name=None, domain=None, context=None): - user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - cr.execute(""" SELECT DISTINCT m.res_id FROM mail_message m - JOIN mail_notification n - ON (n.message_id = m.id AND n.partner_id = %s AND (n.read = False or n.read IS NULL)) - WHERE m.model = %s""", - (user_pid, self._name,)) - res_ids = [result[0] for result in cr.fetchall()] - return [('id', 'in', res_ids)] + """ TDE FIXME in 7.1: searching unread messages + _auto_join is currently a very limited feature; therefore the returned + domain to search for unread messages take into acount the following + limitations of this feature : + - does not take into account the domain on the one2many field + (i.e. message_ids.model = self._name is needed) + - does not correctly handle function field on relational table + (i.e. message_ids.read crashes) + """ + return ['&', '&', ('message_ids.model', '=', self._name), ('message_ids.notification_ids.partner_id.user_ids', 'in', [uid]), ('message_ids.notification_ids.read', '=', False)] def _get_followers(self, cr, uid, ids, name, arg, context=None): fol_obj = self.pool.get('mail.followers') @@ -200,6 +202,7 @@ class mail_thread(osv.AbstractModel): obj='res.partner', string='Followers', multi='_get_followers'), 'message_ids': fields.one2many('mail.message', 'res_id', domain=lambda self: [('model', '=', self._name)], + _auto_join=True, string='Messages', help="Messages and communication history"), 'message_unread': fields.function(_get_message_data, diff --git a/addons/mail/mail_thread_view.xml b/addons/mail/mail_thread_view.xml index 80b9800f7ec..d5c111573ea 100644 --- a/addons/mail/mail_thread_view.xml +++ b/addons/mail/mail_thread_view.xml @@ -11,7 +11,7 @@ } Date: Thu, 29 Nov 2012 16:57:31 +0100 Subject: [PATCH 027/163] [IMP] ir_ui_menu: needaction_enabled is back to store True. bzr revid: tde@openerp.com-20121129155731-xk5cm9yvzbuyxpdc --- openerp/addons/base/ir/ir_ui_menu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index fa4e5b2b540..7d5915c89a8 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -317,7 +317,7 @@ class ir_ui_menu(osv.osv): 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), 'needaction_enabled': fields.function(_get_needaction_enabled, type='boolean', - # store=True, TDE TODO: uncomment after internal tests + store=True, string='Target model uses the need action mechanism', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), 'action': fields.function(_action, fnct_inv=_action_inv, From f0087538ac10b05126fd158c29f4b2132ca9edc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 29 Nov 2012 16:58:01 +0100 Subject: [PATCH 028/163] [IMP] as ir_ui_menu.needaction_enabled is back as store=True, we can filter the initial search for needaction_counters. bzr revid: tde@openerp.com-20121129155801-0wxdogo9o9emk6i4 --- addons/web/controllers/main.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 23dd42e32e1..9da87631fe1 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1013,9 +1013,7 @@ class Menu(openerpweb.Controller): Menus = req.session.model('ir.ui.menu') if menu_ids == False: - menu_ids = Menus.search([], context=req.context) - # TDE FIXME: set needaction_enabled column to store, to enable this more limited search - # menu_ids = Menus.search([('needaction_enabled', '=', True)], context=req.context) + menu_ids = Menus.search([('needaction_enabled', '=', True)], context=req.context) menu_needaction_data = Menus.get_needaction_data(menu_ids, req.context) return menu_needaction_data From 0de15c9bbf84e86cafa84c7ab025f853e4d987d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 29 Nov 2012 17:14:28 +0100 Subject: [PATCH 029/163] [CLEAN] Moved needaction html into a dedicated template. bzr revid: tde@openerp.com-20121129161428-usvgdoykg0g0etr7 --- addons/web/static/src/js/chrome.js | 2 +- addons/web/static/src/xml/base.xml | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 072d3582159..68493b36701 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -847,7 +847,7 @@ instance.web.Menu = instance.web.Widget.extend({ var $item = self.$secondary_menus.find('a[data-menu="' + menu_id + '"]'); $item.remove('oe_menu_counter'); if (item.needaction_counter && item.needaction_counter > 0) { - $item.append('

' + item.needaction_counter + '
'); + $item.append(QWeb.render("Menu.needaction_counter", { widget : item })); } }); }, diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 62d8a872f25..7421027315b 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -388,14 +388,16 @@ t-att-data-action-model="menu.action ? menu.action.split(',')[0] : ''" t-att-data-action-id="menu.action ? menu.action.split(',')[1] : ''"> - -
- 99+ -
-
+ +
+ 99+ + +
+
+ From a5ca416f055871fb2765567c2cf2f06445c1d2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 29 Nov 2012 17:42:53 +0100 Subject: [PATCH 030/163] [IMP] needaction counters: moved rpc call on the trigger menu_loaded, to be able to reload the needaction counters through this trigger. bzr revid: tde@openerp.com-20121129164253-j2vol27w0libpdsd --- addons/web/static/src/js/chrome.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 68493b36701..c6d216d128c 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -799,10 +799,18 @@ instance.web.client_actions.add("change_password", "instance.web.ChangePassword" instance.web.Menu = instance.web.Widget.extend({ template: 'Menu', init: function() { + var self = this; this._super.apply(this, arguments); this.has_been_loaded = $.Deferred(); this.maximum_visible_links = 'auto'; // # of menu to show. 0 = do not crop, 'auto' = algo this.data = {data:{children:[]}}; + this.on("menu_loaded", this, function (e) { + // launch the fetch of needaction counters, asynchronous + this.rpc("/web/menu/load_needaction", {menu_ids: false}).done(function(r) { + self.on_needaction_loaded(r); + }); + }); + }, start: function() { this._super.apply(this, arguments); @@ -835,10 +843,6 @@ instance.web.Menu = instance.web.Widget.extend({ } this.trigger('menu_loaded', data); this.has_been_loaded.resolve(); - // Now launch the fetch of needaction counters, asynchronous - this.rpc("web/menu/load_needaction", {menu_ids: false}).done(function(r) { - self.on_needaction_loaded(r); - }); }, on_needaction_loaded: function(data) { var self = this; From 681d7832341c4b39fb331455bf4fd53be9746cbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 29 Nov 2012 17:50:32 +0100 Subject: [PATCH 031/163] [IMP] expression.parse: added some asserts about non supported cases. bzr revid: tde@openerp.com-20121129165032-nnlnf1k0iwal24ny --- openerp/osv/expression.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 5fb18fb8cc1..b13586f5311 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -561,8 +561,8 @@ class expression(object): alias = working_table._table while len(field_path) > 1 and field._auto_join: - if not field._type in ['many2one', 'one2many']: - raise '_auto_join attribute on something else than a many2one or one2many is currently not implemented... crashing' + assert field._type in ['many2one', 'one2many'], \ + '_auto_join attribute on something else than a many2one or one2many is currently not supported' previous_alias = alias alias = alias + '__' + field_path[0] @@ -625,6 +625,8 @@ class expression(object): if _logger.isEnabledFor(logging.DEBUG): _logger.debug(''.join(traceback.format_stack())) else: + assert working_table == table, \ + 'function fields can not be contained in paths using _auto_join' subexp = field.search(cr, uid, table, left, [self.exp[i]], context=context) if not subexp: self.exp[i] = TRUE_LEAF From 989c308694105065d604e6ff9d0ed5bdf727ad59 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 30 Nov 2012 10:03:47 +0100 Subject: [PATCH 032/163] [FIX] web form : catch and display error when there are an error in an attachment upload bzr revid: chm@openerp.com-20121130090347-xfwiwnktagbvyoqz --- addons/web/static/src/js/view_form.js | 28 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index ac76354b571..3703503d029 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -5134,6 +5134,8 @@ instance.web.form.FieldMany2ManyBinaryMultiFiles = instance.web.form.AbstractFie } }, on_file_loaded: function (event, result) { + var files = this.get('value'); + // unblock UI if(this.node.attrs.blockui>0) { instance.web.unblockUI(); @@ -5141,16 +5143,24 @@ instance.web.form.FieldMany2ManyBinaryMultiFiles = instance.web.form.AbstractFie // TODO : activate send on wizard and form - var files = this.get('value'); - for(var i in files){ - if(files[i].filename == result.filename && files[i].upload) { - files[i] = { - 'id': result.id, - 'name': result.name, - 'filename': result.filename, - 'url': this.get_file_url(result) - }; + if (result.erorr || !result.id ) { + + this.do_warn(result.title, result.erorr); + files = _.filter(files, function (val) { return !val.upload; }); + + } else { + + for(var i in files){ + if(files[i].filename == result.filename && files[i].upload) { + files[i] = { + 'id': result.id, + 'name': result.name, + 'filename': result.filename, + 'url': this.get_file_url(result) + }; + } } + } this.set({'value': files}); From 48c6ea72ff94a156995aeb08089dab9bfec4e11c Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 30 Nov 2012 10:06:55 +0100 Subject: [PATCH 033/163] [FIX] web form : catch and display error when there are an error in an attachment upload bzr revid: chm@openerp.com-20121130090655-gmymwe1z1ofl7wn9 --- addons/mail/static/src/js/mail.js | 56 ++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index a5beaac229f..e08f828d272 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -422,15 +422,25 @@ openerp.mail = function (session) { /* when the file is uploaded */ on_attachment_loaded: function (event, result) { - for (var i in this.attachment_ids) { - if (this.attachment_ids[i].filename == result.filename && this.attachment_ids[i].upload) { - this.attachment_ids[i]={ - 'id': result.id, - 'name': result.name, - 'filename': result.filename, - 'url': mail.ChatterUtils.get_attachment_url(this.session, result) - }; + + if (result.erorr || !result.id ) { + + this.do_warn(result.title, result.erorr); + this.attachment_ids = _.filter(this.attachment_ids, function (val) { return !val.upload; }); + + } else { + + for (var i in this.attachment_ids) { + if (this.attachment_ids[i].filename == result.filename && this.attachment_ids[i].upload) { + this.attachment_ids[i]={ + 'id': result.id, + 'name': result.name, + 'filename': result.filename, + 'url': mail.ChatterUtils.get_attachment_url(this.session, result) + }; + } } + } this.display_attachments(); @@ -486,6 +496,11 @@ openerp.mail = function (session) { }, on_compose_fullmail: function (default_composition_mode) { + + if(!this.do_check_attachment_upload()) { + return false; + } + if (default_composition_mode == 'reply') { var context = { 'default_composition_mode': default_composition_mode, @@ -536,31 +551,32 @@ openerp.mail = function (session) { this.reinit(); }, + /* return true if all file are complete else return false and make an alert */ + do_check_attachment_upload: function () { + if (_.find(this.attachment_ids, function (file) {return file.upload;})) { + this.do_warn(session.web._t('Attachment error :'), session.web._t('Please, wait while the file is uploading.')); + return false; + } else { + return true; + } + }, + /*post a message and fetch the message*/ on_message_post: function (event) { var self = this; var comment_node = this.$('textarea'); var body = comment_node.val(); - comment_node.val(''); - var attachments=[]; - for (var i in this.attachment_ids) { - if (this.attachment_ids[i].upload) { - session.web.dialog($('
' + session.web.qweb.render('CrashManager.warning', {message: 'Please, wait while the file is uploading.'}) + '
')); - return false; - } - attachments.push(this.attachment_ids[i].id); - } - - if (body.match(/\S+/)) { + if (this.do_check_attachment_upload() && (this.attachment_ids.length || body.match(/\S+/))) { + comment_node.val(''); //session.web.blockUI(); this.parent_thread.ds_thread.call('message_post_user_api', [ this.context.default_res_id, body, false, this.context.default_parent_id, - attachments, + _.map(this.attachment_ids, function (file) {return file.id;}), this.parent_thread.context ]).done(function (record) { var thread = self.parent_thread; From 91cb411e803fd095c69066fb79eb6bcd8ffcdae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 30 Nov 2012 11:40:38 +0100 Subject: [PATCH 034/163] [FIX] mail: default_starred key is recognized when creating a mail_message, handled in mail_messgae.create() to avoid issues with notifications if using an invert function on starred function field. bzr revid: tde@openerp.com-20121130104038-3nivz6kvdyi22f3l --- addons/crm/crm_lead_demo.xml | 5 +++-- addons/mail/mail_message.py | 11 +++++++++++ addons/mail/static/src/js/mail.js | 3 +-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml index 913ce9fc612..465c876fae1 100644 --- a/addons/crm/crm_lead_demo.xml +++ b/addons/crm/crm_lead_demo.xml @@ -641,7 +641,6 @@ Andrew
comment - crm.lead @@ -651,7 +650,6 @@ Andrew - Inquiry @@ -669,6 +667,9 @@ Andrew Want to know features and benefits to use the new software. comment + diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 28ac087edc0..cf691cceecf 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -682,12 +682,23 @@ class mail_message(osv.Model): (self._description, operation)) def create(self, cr, uid, values, context=None): + if context is None: + context = {} + default_starred = context.pop('default_starred', False) if not values.get('message_id') and values.get('res_id') and values.get('model'): values['message_id'] = tools.generate_tracking_message_id('%(res_id)s-%(model)s' % values) elif not values.get('message_id'): values['message_id'] = tools.generate_tracking_message_id('private') newid = super(mail_message, self).create(cr, uid, values, context) self._notify(cr, SUPERUSER_ID, newid, context=context) + # TDE FIXME: handle default_starred. Why not setting an inv on starred ? + # Because starred will call set_message_starred, that looks for notifications. + # When creating a new mail_message, it will create a notification to a message + # that does not exist, leading to an error (key not existing). Also this + # this means unread notifications will be created, yet we can not assure + # this is what we want. + if default_starred: + self.set_message_starred(cr, uid, [newid], True, context=context) return newid def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'): diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 453b464a409..31e77a6ec7d 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -990,8 +990,7 @@ openerp.mail = function (session) { // add message composition form view if (!this.compose_message) { this.compose_message = new mail.ThreadComposeMessage(this, this, { - // TDE FIXME: default_favorite_user_ids does not exist anymore -> you should create the message, set starred then update - 'context': this.options.compose_as_todo && !this.thread_level ? this.context : this.context, + 'context': this.options.compose_as_todo && !this.thread_level ? _.extend(this.context, { 'default_starred': true }) : this.context, 'options': this.options, }); if (!this.thread_level || this.thread_level > this.options.display_indented_thread) { From 61065b6d04248aa496765e1035c4c90cbdc38de7 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 30 Nov 2012 12:09:02 +0100 Subject: [PATCH 035/163] [IMP] mail: change access for create message for the attachments bzr revid: chm@openerp.com-20121130110902-1qzmgvinhc0q0i3j --- addons/mail/mail_message.py | 4 ++-- addons/mail/static/src/js/mail.js | 3 +-- addons/portal/security/ir.model.access.csv | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 3273870f5e0..8bb33df6d20 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -631,8 +631,8 @@ class mail_message(osv.Model): model_obj = self.pool.get(model) mids = model_obj.exists(cr, uid, mids) if operation in ['create', 'write', 'unlink']: - model_obj.check_access_rights(cr, uid, 'write') - model_obj.check_access_rule(cr, uid, mids, 'write', context=context) + model_obj.check_access_rights(cr, uid, 'read') + model_obj.check_access_rule(cr, uid, mids, 'read', context=context) else: model_obj.check_access_rights(cr, uid, operation) model_obj.check_access_rule(cr, uid, mids, operation, context=context) diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index e08f828d272..3f424eebce7 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -569,7 +569,6 @@ openerp.mail = function (session) { var body = comment_node.val(); if (this.do_check_attachment_upload() && (this.attachment_ids.length || body.match(/\S+/))) { - comment_node.val(''); //session.web.blockUI(); this.parent_thread.ds_thread.call('message_post_user_api', [ this.context.default_res_id, @@ -589,8 +588,8 @@ openerp.mail = function (session) { var message = thread.create_message_object( data[0] ); // insert the message on dom thread.insert_message( message, root ? undefined : self.$el, root ); - self.on_cancel(); }); + self.on_cancel(); //session.web.unblockUI(); }); return true; diff --git a/addons/portal/security/ir.model.access.csv b/addons/portal/security/ir.model.access.csv index b9f98f81fd7..59ca37e213d 100644 --- a/addons/portal/security/ir.model.access.csv +++ b/addons/portal/security/ir.model.access.csv @@ -7,3 +7,4 @@ access_res_partner_category,res.partner_category,base.model_res_partner_category access_res_partner_title,res.partner_title,base.model_res_partner_title,portal.group_portal,1,0,0,0 access_acquirer,portal.payment.acquirer,portal.model_portal_payment_acquirer,,1,0,0,0 access_acquirer_all,portal.payment.acquirer,portal.model_portal_payment_acquirer,base.group_system,1,1,1,1 +access_ir_attachment_group_portal,ir.attachment group_portal,base.model_ir_attachment,portal.group_portal,1,0,1,0 \ No newline at end of file From c82bc229c634fa93a5f4c47028b8674a12a1c953 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 30 Nov 2012 12:41:23 +0100 Subject: [PATCH 036/163] [IMP] web view: Add title with creator and date for attachments on the sidebar. bzr revid: chm@openerp.com-20121130114123-nwer85s4y6vs6438 --- addons/web/static/src/js/views.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index d7dcd590218..d0ac65302e4 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1136,7 +1136,7 @@ instance.web.Sidebar = instance.web.Widget.extend({ } else { var dom = [ ['res_model', '=', dataset.model], ['res_id', '=', model_id], ['type', 'in', ['binary', 'url']] ]; var ds = new instance.web.DataSetSearch(this, 'ir.attachment', dataset.get_context(), dom); - ds.read_slice(['name', 'url', 'type'], {}).done(this.on_attachments_loaded); + ds.read_slice(['name', 'url', 'type', 'create_uid', 'create_date', 'write_uid', 'write_date'], {}).done(this.on_attachments_loaded); } }, on_attachments_loaded: function(attachments) { @@ -1148,6 +1148,8 @@ instance.web.Sidebar = instance.web.Widget.extend({ if(a.type === "binary") { a.url = prefix + '&id=' + a.id + '&t=' + (new Date().getTime()); } + a.title = _t("Create by :") + '\n' + a.create_uid[1] + ' ' + instance.web.format_value(a.create_date, {type:"datetime"}) + + (a.create_uid[0] != a.write_uid[0] ? '\n' + _t("Modify by :") + '\n' + a.write_uid[1] + ' ' + instance.web.format_value(a.write_date, {type:"datetime"}) : ''); }); self.items['files'] = attachments; self.redraw(); From ae74e57d84e595e236d0dd114177023408c29d8f Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 30 Nov 2012 12:56:25 +0100 Subject: [PATCH 037/163] [IMP] web view: add complete name file in the title and cut label after 25 chars, for Sidebar bzr revid: chm@openerp.com-20121130115625-i776h334c3ym1mw9 --- addons/web/static/src/js/views.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index d0ac65302e4..5a05d2a3e72 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1144,12 +1144,13 @@ instance.web.Sidebar = instance.web.Widget.extend({ var items = []; var prefix = this.session.url('/web/binary/saveas', {model: 'ir.attachment', field: 'datas', filename_field: 'name'}); _.each(attachments,function(a) { - a.label = a.name; + a.label = a.name.length > 25 ? a.name.substr(0,25) + '...' : a.name; if(a.type === "binary") { a.url = prefix + '&id=' + a.id + '&t=' + (new Date().getTime()); } - a.title = _t("Create by :") + '\n' + a.create_uid[1] + ' ' + instance.web.format_value(a.create_date, {type:"datetime"}) + - (a.create_uid[0] != a.write_uid[0] ? '\n' + _t("Modify by :") + '\n' + a.write_uid[1] + ' ' + instance.web.format_value(a.write_date, {type:"datetime"}) : ''); + a.title = _t("Attachment :") + '\n ' + a.name + '\n' + + _t("Created by :") + '\n ' + a.create_uid[1] + ' ' + instance.web.format_value(a.create_date, {type:"datetime"}) + + (a.create_uid[0] != a.write_uid[0] ? '\n' + _t("Modified by :") + '\n ' + a.write_uid[1] + ' ' + instance.web.format_value(a.write_date, {type:"datetime"}) : ''); }); self.items['files'] = attachments; self.redraw(); From 759416678b33a0caa5377f89b04b8acfc449c0b0 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 30 Nov 2012 15:57:14 +0100 Subject: [PATCH 038/163] [FIX]Currency constraint bzr revid: dle@openerp.com-20121130145714-d5k3cn95vh7nlc10 --- addons/l10n_be_coda/l10n_be_coda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py index 1dab4ab1964..289e757a80d 100644 --- a/addons/l10n_be_coda/l10n_be_coda.py +++ b/addons/l10n_be_coda/l10n_be_coda.py @@ -30,7 +30,7 @@ class coda_bank_account(osv.osv): def _check_currency(self, cr, uid, ids, context=None): obj_cba = self.browse(cr, uid, ids[0], context=context) - if (obj_cba.state == 'normal') and obj_cba.journal and (obj_cba.currency != obj_cba.journal.currency): + if (obj_cba.state == 'normal') and obj_cba.journal and (obj_cba.currency != obj_cba.journal.currency and (not obj_cba.journal.currency and obj_cba.currency != obj_cba.company_id.currency_id)): return False return True From a96ef73523d41dbbcdcaf5765da794ae1d9e8439 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 30 Nov 2012 17:14:54 +0100 Subject: [PATCH 039/163] [FIX] view: Sidebar attachment, check if empty create or modify bzr revid: chm@openerp.com-20121130161454-4pujkohpzvvb1zmg --- addons/web/static/src/js/views.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 5a05d2a3e72..4e46df5ccd6 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1149,8 +1149,8 @@ instance.web.Sidebar = instance.web.Widget.extend({ a.url = prefix + '&id=' + a.id + '&t=' + (new Date().getTime()); } a.title = _t("Attachment :") + '\n ' + a.name + '\n' + - _t("Created by :") + '\n ' + a.create_uid[1] + ' ' + instance.web.format_value(a.create_date, {type:"datetime"}) + - (a.create_uid[0] != a.write_uid[0] ? '\n' + _t("Modified by :") + '\n ' + a.write_uid[1] + ' ' + instance.web.format_value(a.write_date, {type:"datetime"}) : ''); + (a.create_uid && a.create_uid[0] ? _t("Created by :") + '\n ' + a.create_uid[1] + ' ' + instance.web.format_value(a.create_date, {type:"datetime"}) : '') + + (a.create_uid && a.write_uid && a.create_uid[0] != a.write_uid[0] ? '\n' + _t("Modified by :") + '\n ' + a.write_uid[1] + ' ' + instance.web.format_value(a.write_date, {type:"datetime"}) : ''); }); self.items['files'] = attachments; self.redraw(); From 6f3f1d4217abc1f14adb1e4dffd00da04516e5ab Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 30 Nov 2012 18:20:33 +0100 Subject: [PATCH 040/163] [MERGE](Sort of :D)From Luc De Meyer Zip from apps.openerp.com bzr revid: dle@openerp.com-20121130172033-dinqyw8arg79eh31 --- addons/l10n_be_coda/l10n_be_coda.py | 269 +-- addons/l10n_be_coda/l10n_be_coda_view.xml | 169 +- addons/l10n_be_coda/res_bank.py | 33 + addons/l10n_be_coda/res_bank_view.xml | 31 + .../wizard/account_coda_import.py | 1545 +++++++++++++---- 5 files changed, 1577 insertions(+), 470 deletions(-) create mode 100755 addons/l10n_be_coda/res_bank.py create mode 100755 addons/l10n_be_coda/res_bank_view.xml diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py index 289e757a80d..f9dfa3a686a 100644 --- a/addons/l10n_be_coda/l10n_be_coda.py +++ b/addons/l10n_be_coda/l10n_be_coda.py @@ -2,9 +2,9 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# -# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved. -# +# +# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. +# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the @@ -23,20 +23,29 @@ from osv import osv, fields import decimal_precision as dp from tools.translate import _ +import logging +_logger = logging.getLogger(__name__) class coda_bank_account(osv.osv): _name= 'coda.bank.account' _description= 'CODA Bank Account Configuration' + def _check_account_pain(self, cr, uid, context=None): + res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_pain'), ('state','=','installed')]) + return res and True or False + def _check_currency(self, cr, uid, ids, context=None): obj_cba = self.browse(cr, uid, ids[0], context=context) - if (obj_cba.state == 'normal') and obj_cba.journal and (obj_cba.currency != obj_cba.journal.currency and (not obj_cba.journal.currency and obj_cba.currency != obj_cba.company_id.currency_id)): - return False + if (obj_cba.state == 'normal') and obj_cba.journal: + if obj_cba.journal.currency and (obj_cba.currency != obj_cba.journal.currency): + return False + if not obj_cba.journal.currency and (obj_cba.currency != obj_cba.company_id.currency_id): + return False return True _columns = { 'name': fields.char('Name', size=64, required=True), - 'bank_id': fields.many2one('res.partner.bank', 'Bank Account', required=True, + 'bank_id': fields.many2one('res.partner.bank', 'Bank Account', required=True, help='Bank Account Number.\nThe CODA import function will find its CODA processing parameters on this number.'), 'description1': fields.char('Primary Account Description', size=35, help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'), @@ -44,34 +53,47 @@ class coda_bank_account(osv.osv): help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'), 'state': fields.selection([ ('normal', 'Normal'), - ('info', 'Info')], + ('info', 'Info')], 'Type', required=True, select=1, help='No Bank Statements will be generated for CODA Bank Statements from Bank Accounts of type \'Info\'.'), - 'journal': fields.many2one('account.journal', 'Journal', - domain=[('type', '=', 'bank')], + 'journal': fields.many2one('account.journal', 'Journal', + domain=[('type', '=', 'bank')], states={'normal':[('required',True)],'info':[('required',False)]}, help='Bank Journal for the Bank Statement'), 'currency': fields.many2one('res.currency', 'Currency', required=True, - help='The currency of the CODA Bank Statement'), + help='The currency of the CODA Bank Statement'), 'coda_st_naming': fields.char('Bank Statement Naming Policy', size=64, help="Define the rules to create the name of the Bank Statements generated by the CODA processing." \ - "\nE.g. %(code)s%(y)s/%(paper)s" + "\nE.g. %(code)s%(y)s/%(paper)s" \ "\n\nVariables:" \ "\nBank Journal Code: %(code)s" \ - "\nCurrent Year with Century: %(year)s" \ - "\nCurrent Year without Century: %(y)s" \ + "\nYear (of CODA 'New Balance Date') with Century: %(year)s" \ + "\nYear (of CODA 'New Balance Date') without Century: %(y)s" \ "\nCODA sequence number: %(coda)s" \ - "\nPaper Statement sequence number: %(paper)s"), - 'def_payable': fields.many2one('account.account', 'Default Payable Account', domain=[('type', '=', 'payable')], required=True, - help= 'Set here the payable account that will be used, by default, if the partner is not found.'), - 'def_receivable': fields.many2one('account.account', 'Default Receivable Account', domain=[('type', '=', 'receivable')], required=True, - help= 'Set here the receivable account that will be used, by default, if the partner is not found.',), + "\nPaper Statement sequence number (as specified on 'Old Balance' record): %(paper_ob)s" \ + "\nPaper Statement sequence number (as specified on 'New Balance' record): %(paper)s"), 'awaiting_account': fields.many2one('account.account', 'Default Account for Unrecognized Movement', domain=[('type', '!=', 'view')], required=True, help= 'Set here the default account that will be used if the partner cannot be unambiguously identified.'), 'transfer_account': fields.many2one('account.account', 'Default Internal Transfer Account', domain=[('code', 'like', '58%'), ('type', '!=', 'view')], required=True, help= 'Set here the default account that will be used for internal transfer between own bank accounts (e.g. transfer between current and deposit bank accounts).'), - 'find_bbacom': fields.boolean('Lookup Invoice', required=True, help='Partner lookup via the \'BBA\' Structured Communication field of the Invoice.'), - 'find_partner': fields.boolean('Lookup Partner', required=True, help='Partner lookup via Bank Account Number.'), + 'account_mapping_ids': fields.one2many('coda.account.mapping.rule', 'coda_bank_account_id', 'Account Mapping Rules'), + 'find_payment': fields.boolean('Lookup Payment Reference', + help='Invoice lookup and reconciliation via the SEPA EndToEndReference.' \ + '\nInstall the \'account_pain\' module if you want to take advantage of this feature.'), + 'find_bbacom': fields.boolean('Lookup Structured Communication of type \'BBA\'', + help='Partner lookup and reconciliation via the \'BBA\' Structured Communication.' \ + '\nA partial reconciliation will be created when there is no exact match between the Invoice and Bank Transaction amounts.'), + 'find_inv_number': fields.boolean('Lookup Invoice Number', + help='Partner lookup and reconciliation via the Invoice Number when a communication in free format is used.' \ + '\nA reconciliation will only be created in case of exact match between the Invoice and Bank Transaction amounts.'), + 'find_partner': fields.boolean('Lookup Partner', + help='Partner lookup via Bank Account Number in order to facilitate the reconciliation.'), + 'update_partner': fields.boolean('Update Partner Bank Accounts', + help='Update Partner record when the Counterparty\'s Bank Account has not been registered yet.'), + 'balance_start_enforce': fields.boolean('Prevent invalid Opening Balances', + help="Do not process Statements with an Opening Balance that doesn't match the previous Closing Balance."), + 'discard_dup': fields.boolean('Discard Duplicates', + help="Duplicate Bank Statements will be discarded. Select the corresponding 'CODA Bank Statement' in order to view the contents of such duplicates."), 'active': fields.boolean('Active', help='If the active field is set to False, it will allow you to hide the Bank Account without removing it.'), 'company_id': fields.many2one('res.company', 'Company', required=True), } @@ -79,9 +101,13 @@ class coda_bank_account(osv.osv): 'currency': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, 'state': 'normal', 'coda_st_naming': '%(code)s/%(y)s/%(coda)s', - 'active': True, + 'active': True, + 'find_payment': _check_account_pain, 'find_bbacom': True, - 'find_partner': True, + 'find_inv_number': True, + 'find_partner': True, + 'update_partner': True, + 'balance_start_enforce': True, 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, } _sql_constraints = [ @@ -107,19 +133,20 @@ class coda_bank_account(osv.osv): if not default: default = {} default = default.copy() - default.update( - journal_id=None, - description1=cba['description1'] or '', - description2=cba['description2'] or '', - name=_("%s (copy)") % (cba['name'] or ''), - state=cba['state']) - return super(coda_bank_account, self).copy(cr, uid, id, default, context) + default.update({'journal_id': None}) + default['description1'] = cba['description1'] or '' + default['description2'] = cba['description2'] or '' + default['name'] = (cba['name'] or '') + ' (copy)' + default['state'] = cba['state'] + return super(coda_bank_account, self).copy(cr, uid, id, default, context) def onchange_state(self, cr, uid, ids, state): return state =='info' and {'value': {'journal': None}} or {} coda_bank_account() + + class account_coda(osv.osv): _name = 'account.coda' _description = 'Object to store CODA Data Files' @@ -138,10 +165,10 @@ class account_coda(osv.osv): 'date': fields.date.context_today, 'user_id': lambda self,cr,uid,context: uid, 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.coda', context=c), - } + } _sql_constraints = [ ('coda_uniq', 'unique (name, coda_creation_date)', 'This CODA has already been imported !') - ] + ] def unlink(self, cr, uid, ids, context=None): if context is None: @@ -150,79 +177,73 @@ class account_coda(osv.osv): coda_st_obj = self.pool.get('coda.bank.statement') bank_st_obj = self.pool.get('account.bank.statement') for coda in self.browse(cr, uid, ids, context=context): - for coda_statement in coda.statement_ids: + for coda_statement in coda.statement_ids: if not context.get('coda_statement_unlink', False): if coda_st_obj.exists(cr, uid, coda_statement.id, context=context): - coda_st_obj.unlink(cr, uid, [coda_statement.id], context=context) + coda_st_obj.unlink(cr, uid, [coda_statement.id], context=context) if not context.get('bank_statement_unlink', False): if coda_st_obj.exists(cr, uid, coda_statement.id, context=context) and (coda_statement.type == 'normal') and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context): - bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) + bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) context.update({'coda_unlink': False}) return super(account_coda, self).unlink(cr, uid, ids, context=context) - + account_coda() -class account_coda_trans_type(osv.osv): +class account_coda_trans_type(osv.osv): _name = 'account.coda.trans.type' _description = 'CODA transaction type' - _rec_name = 'type' + _rec_name = 'type' _columns = { 'type': fields.char('Transaction Type', size=1, required=True), 'parent_id': fields.many2one('account.coda.trans.type', 'Parent'), 'description': fields.text('Description', translate=True), } - account_coda_trans_type() -class account_coda_trans_code(osv.osv): +class account_coda_trans_code(osv.osv): _name = 'account.coda.trans.code' _description = 'CODA transaction code' - _rec_name = 'code' + _rec_name = 'code' _columns = { 'code': fields.char('Code', size=2, required=True, select=1), 'type': fields.selection([ ('code', 'Transaction Code'), - ('family', 'Transaction Family')], - 'Type', required=True, select=1), + ('family', 'Transaction Family')], + 'Type', required=True, select=1), 'parent_id': fields.many2one('account.coda.trans.code', 'Family', select=1), 'description': fields.char('Description', size=128, translate=True, select=2), 'comment': fields.text('Comment', translate=True), } - account_coda_trans_code() -class account_coda_trans_category(osv.osv): +class account_coda_trans_category(osv.osv): _name = 'account.coda.trans.category' _description = 'CODA transaction category' - _rec_name = 'category' + _rec_name = 'category' _columns = { 'category': fields.char('Transaction Category', size=3, required=True), 'description': fields.char('Description', size=256, translate=True), } - account_coda_trans_category() -class account_coda_comm_type(osv.osv): +class account_coda_comm_type(osv.osv): _name = 'account.coda.comm.type' _description = 'CODA structured communication type' - _rec_name = 'code' + _rec_name = 'code' _columns = { 'code': fields.char('Structured Communication Type', size=3, required=True, select=1), 'description': fields.char('Description', size=128, translate=True), } _sql_constraints = [ ('code_uniq', 'unique (code)','The Structured Communication Code must be unique !') - ] - + ] account_coda_comm_type() class coda_bank_statement(osv.osv): - _name = 'coda.bank.statement' - _description = 'CODA Bank Statement' - - def _default_journal_id(self, cr, uid, context=None): - if context is None: - context = {} + _name = 'coda.bank.statement' + _description = 'CODA Bank Statement' + + def _default_journal_id(self, cr, uid, context={}): if context.get('journal_id', False): return context['journal_id'] return False @@ -238,7 +259,7 @@ class coda_bank_statement(osv.osv): res[r] = round(res[r], 2) return res - def _get_period(self, cr, uid, context=None): + def _get_period(self, cr, uid, context={}): periods = self.pool.get('account.period').find(cr, uid) if periods: return periods[0] @@ -249,19 +270,22 @@ class coda_bank_statement(osv.osv): _columns = { 'name': fields.char('Name', size=64, required=True, readonly=True), 'date': fields.date('Date', required=True, readonly=True), + 'coda_creation_date': fields.date('CODA Creation Date', readonly=True), + 'old_balance_date': fields.date('Old Balance Date', readonly=True), + 'new_balance_date': fields.date('New Balance Date', readonly=True), 'coda_id': fields.many2one('account.coda', 'CODA Data File', ondelete='cascade'), 'type': fields.selection([ ('normal', 'Normal'), - ('info', 'Info')], + ('info', 'Info')], 'Type', required=True, readonly=True, help='No Bank Statements are associated with CODA Bank Statements of type \'Info\'.'), - 'statement_id': fields.many2one('account.bank.statement', 'Associated Bank Statement'), + 'statement_id': fields.many2one('account.bank.statement', 'Associated Bank Statement'), 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True, domain=[('type', '=', 'bank')]), - 'coda_bank_account_id': fields.many2one('coda.bank.account', 'Bank Account', readonly=True), + 'coda_bank_account_id': fields.many2one('coda.bank.account', 'Bank Account', readonly=True), 'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True), 'balance_start': fields.float('Starting Balance', digits_compute=dp.get_precision('Account'), readonly=True), 'balance_end_real': fields.float('Ending Balance', digits_compute=dp.get_precision('Account'), readonly=True), - 'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance'), + 'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance'), 'line_ids': fields.one2many('coda.bank.statement.line', 'statement_id', 'CODA Bank Statement lines', readonly=True), 'currency': fields.many2one('res.currency', 'Currency', required=True, readonly=True, @@ -269,14 +293,14 @@ class coda_bank_statement(osv.osv): 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), } _defaults = { - 'type': 'normal', + 'type': 'normal', 'currency': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, 'journal_id': _default_journal_id, 'period_id': _get_period, } def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): - if context is None: + if context is None: context = {} res = super(coda_bank_statement, self).search(cr, uid, args=args, offset=offset, limit=limit, order=order, context=context, count=count) @@ -290,20 +314,20 @@ class coda_bank_statement(osv.osv): context.update({'coda_statement_unlink': True}) coda_obj = self.pool.get('account.coda') bank_st_obj = self.pool.get('account.bank.statement') - + # find all CODA bank statements that are associated with the selected CODA bank statements via a common CODA file - new_ids = [] + new_ids = [] for coda_statement in self.browse(cr, uid, ids, context=context): if coda_obj.exists(cr, uid, coda_statement.coda_id.id, context=context): new_ids += [x.id for x in coda_obj.browse(cr, uid, coda_statement.coda_id.id, context=context).statement_ids] - # unlink CODA banks statements as well as associated bank statements and CODA files + # unlink CODA banks statements as well as associated bank statements and CODA files for coda_statement in self.browse(cr, uid, new_ids, context=context): - if coda_statement.statement_id.state == 'confirm': - raise osv.except_osv(_('Invalid Action!'), - _("Cannot delete CODA Bank Statement '%s' of journal '%s'." \ - "\nThe associated Bank Statement has already been confirmed." \ - "\nPlease undo this action first.") \ + if coda_statement.statement_id.state == 'confirm': + raise osv.except_osv(_('Invalid action !'), + _("Cannot delete CODA Bank Statement '%s' of Journal '%s'." \ + "\nThe associated Bank Statement has already been confirmed !" \ + "\nPlease undo this action first!") \ % (coda_statement.name, coda_statement.journal_id.name)) else: if not context.get('coda_unlink', False): @@ -311,11 +335,11 @@ class coda_bank_statement(osv.osv): coda_obj.unlink(cr, uid, [coda_statement.coda_id.id], context=context) if not context.get('bank_statement_unlink', False): if coda_statement.statement_id and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context): - bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) + bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) context.update({'coda_statement_unlink': False}) return super(coda_bank_statement, self).unlink(cr, uid, new_ids, context=context) - + coda_bank_statement() class account_bank_statement(osv.osv): @@ -323,7 +347,10 @@ class account_bank_statement(osv.osv): _columns = { 'coda_statement_id': fields.many2one('coda.bank.statement', 'Associated CODA Bank Statement'), } - + _sql_constraints = [ + ('name_company_uniq', 'unique (name,company_id)', 'The name of the Bank Statement must be unique per company !') + ] + def unlink(self, cr, uid, ids, context=None): if context is None: context = {} @@ -332,15 +359,15 @@ class account_bank_statement(osv.osv): coda_st_obj = self.pool.get('coda.bank.statement') # find all statements that are associated with the selected bank statements via a common CODA file - ids_plus = [] + ids_plus = [] for statement in self.browse(cr, uid, ids, context=context): if statement.coda_statement_id: for x in coda_obj.browse(cr, uid, statement.coda_statement_id.coda_id.id, context=context).statement_ids: if x.type == 'normal': ids_plus += [x.statement_id.id] - + # unlink banks statements as well as associated CODA bank statements and CODA files - for statement in self.browse(cr, uid, ids_plus, context=context): + for statement in self.browse(cr, uid, ids_plus, context=context): if not context.get('coda_statement_unlink', False): if statement.coda_statement_id and coda_st_obj.exists(cr, uid, statement.coda_statement_id.id, context=context): coda_st_obj.unlink(cr, uid, [statement.coda_statement_id.id], context=context) @@ -354,63 +381,109 @@ class account_bank_statement(osv.osv): context.update({'bank_statement_unlink': False}) new_ids = list(set(ids + ids_plus)) return super(account_bank_statement, self).unlink(cr, uid, new_ids, context=context) - + account_bank_statement() class coda_bank_statement_line(osv.osv): - _name = 'coda.bank.statement.line' - _order = 'sequence' + _name = 'coda.bank.statement.line' + _order = 'sequence' _description = 'CODA Bank Statement Line' _columns = { 'name': fields.char('Communication', size=268, required=True), 'sequence': fields.integer('Sequence'), 'date': fields.date('Entry Date', required=True), - 'val_date': fields.date('Valuta Date'), - 'account_id': fields.many2one('account.account','Account'), # remove required=True + 'val_date': fields.date('Valuta Date'), + 'account_id': fields.many2one('account.account','Account'), 'type': fields.selection([ ('supplier','Supplier'), ('customer','Customer'), ('general','General'), - ('globalisation','Globalisation'), - ('information','Information'), - ('communication','Free Communication'), + ('globalisation','Globalisation'), + ('information','Information'), + ('communication','Free Communication'), ], 'Type', required=True), - 'globalisation_level': fields.integer('Globalisation Level', - help="The value which is mentioned (1 to 9), specifies the hierarchy level" - " of the globalisation of which this record is the first." - "\nThe same code will be repeated at the end of the globalisation."), - 'globalisation_amount': fields.float('Globalisation Amount', digits_compute=dp.get_precision('Account')), + 'globalisation_level': fields.integer('Globalisation Level', + help="The value which is mentioned (1 to 9), specifies the hierarchy level" + " of the globalisation of which this record is the first." + "\nThe same code will be repeated at the end of the globalisation."), + 'globalisation_amount': fields.float('Globalisation Amount', digits_compute=dp.get_precision('Account')), 'globalisation_id': fields.many2one('account.bank.statement.line.global', 'Globalisation ID', readonly=True, - help="Code to identify transactions belonging to the same globalisation level within a batch payment"), + help="Code to identify transactions belonging to the same globalisation level within a batch payment"), 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')), 'partner_id': fields.many2one('res.partner', 'Partner'), 'counterparty_name': fields.char('Counterparty Name', size=35), - 'counterparty_bic': fields.char('Counterparty BIC', size=11), - 'counterparty_number': fields.char('Counterparty Number', size=34), - 'counterparty_currency': fields.char('Counterparty Currency', size=3), + 'counterparty_bic': fields.char('Counterparty BIC', size=11), + 'counterparty_number': fields.char('Counterparty Number', size=34), + 'counterparty_currency': fields.char('Counterparty Currency', size=3), + 'payment_reference': fields.char('Payment Reference', size=35, + help="Payment Reference. For SEPA (SCT or SDD) transactions, the PaymentInformationIdentification "\ + "is recorded in this field pertaining to a globalisation, and the EndToEndReference for " \ + "simple transactions or for the details of a globalisation."), 'statement_id': fields.many2one('coda.bank.statement', 'CODA Bank Statement', select=True, required=True, ondelete='cascade'), 'coda_bank_account_id': fields.related('statement_id', 'coda_bank_account_id', type='many2one', relation='coda.bank.account', string='Bank Account', store=True, readonly=True), 'ref': fields.char('Reference', size=32), 'note': fields.text('Notes'), - 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), + 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), } def unlink(self, cr, uid, ids, context=None): if context is None: context = {} if context.get('block_statement_line_delete', False): - raise osv.except_osv('Warning', _('Delete operation not allowed.')) + raise osv.except_osv('Warning', _('Delete operation not allowed !')) return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context) -coda_bank_statement_line() +coda_bank_statement_line() class account_bank_statement_line_global(osv.osv): _inherit = 'account.bank.statement.line.global' _columns = { 'coda_statement_line_ids': fields.one2many('coda.bank.statement.line', 'globalisation_id', 'CODA Bank Statement Lines', readonly=True), } - account_bank_statement_line_global() +class coda_account_mapping_rule(osv.osv): + _name = 'coda.account.mapping.rule' + _description = 'Rules Engine to assign accounts during CODA parsing' + _order = 'sequence' + _columns = { + 'coda_bank_account_id': fields.many2one('coda.bank.account', 'CODA Bank Account', ondelete='cascade'), + 'sequence': fields.integer('Sequence', help='Determines the order of the rules to assign accounts'), + 'name': fields.char('Rule Name', size=128, required=True), + # matching criteria + 'trans_type_id': fields.many2one('account.coda.trans.type', 'Transaction Type'), + 'trans_family_id': fields.many2one('account.coda.trans.code', 'Transaction Family', domain=[('type', '=', 'family')]), + 'trans_code_id': fields.many2one('account.coda.trans.code', 'Transaction Code', domain=[('type', '=', 'code')]), + 'trans_category_id': fields.many2one('account.coda.trans.category', 'Transaction Category'), + 'struct_comm_type_id': fields.many2one('account.coda.comm.type', 'Structured Communication Type'), + 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='cascade'), + # resulting general account + 'account_id': fields.many2one('account.account', 'Account', ondelete='cascade', required=True, domain=[('type', '!=', 'view')]), + 'active': fields.boolean('Active', help='Switch on/off this rule.'), + } + _defaults = { + 'active': True, + } + + def account_id_get(self, cr, uid, coda_bank_account_id, trans_type_id=None, trans_family_id=None, + trans_code_id=None, trans_category_id=None, struct_comm_type_id=None, partner_id=None, context=None): + cr.execute('SELECT account_id, trans_type_id, trans_family_id, trans_code_id, trans_category_id, struct_comm_type_id, partner_id ' \ + 'FROM coda_account_mapping_rule ' \ + 'WHERE active = TRUE AND coda_bank_account_id = %s ' \ + 'ORDER BY sequence' % coda_bank_account_id + ) + rules = cr.fetchall() + condition = '(not rule[1] or (trans_type_id == rule[1])) and (not rule[2] or (trans_family_id == rule[2])) ' \ + 'and (not rule[3] or (trans_code_id == rule[3])) and (not rule[4] or (trans_category_id == rule[4])) ' \ + 'and (not rule[5] or (struct_comm_type_id == rule[5])) and (not rule[6] or (partner_id == rule[6]))' + account_id = None + for rule in rules: + if eval(condition): + account_id = rule[0] + break + return account_id + +coda_account_mapping_rule() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/l10n_be_coda_view.xml b/addons/l10n_be_coda/l10n_be_coda_view.xml index 1f014400d3c..fb0a12b73fb 100644 --- a/addons/l10n_be_coda/l10n_be_coda_view.xml +++ b/addons/l10n_be_coda/l10n_be_coda_view.xml @@ -11,10 +11,11 @@ coda.bank.account - + + @@ -54,15 +55,52 @@ - - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
@@ -282,11 +320,12 @@ coda.bank.statement.list coda.bank.statement - + - - + + + @@ -299,61 +338,56 @@ coda.bank.statement.form coda.bank.statement -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -362,10 +396,12 @@ coda.bank.statement - - + + + + @@ -457,6 +493,7 @@ + diff --git a/addons/l10n_be_coda/res_bank.py b/addons/l10n_be_coda/res_bank.py new file mode 100755 index 00000000000..6a3581539e9 --- /dev/null +++ b/addons/l10n_be_coda/res_bank.py @@ -0,0 +1,33 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import fields, osv + +class res_bank(osv.osv): + _inherit = 'res.bank' + _columns = { + 'code': fields.char('Code', size=3, + help='Country specific Bank Code (used for bban to iban conversion).'), + } +res_bank() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/res_bank_view.xml b/addons/l10n_be_coda/res_bank_view.xml new file mode 100755 index 00000000000..fe4a71d2bdb --- /dev/null +++ b/addons/l10n_be_coda/res_bank_view.xml @@ -0,0 +1,31 @@ + + + + + + res.bank.form.add.code + res.bank + + form + + + + + + + + + res.bank.tree.add.code + res.bank + + form + + + + + + + + + + diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 46c545f0f48..6f055ca3d92 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -2,9 +2,9 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# -# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved. -# +# +# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. +# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the @@ -24,11 +24,11 @@ import time import base64 from osv import fields,osv from tools.translate import _ -import logging +import netsvc import re from traceback import format_exception from sys import exc_info -from base_iban import base_iban +import logging _logger = logging.getLogger(__name__) class account_coda_import(osv.osv_memory): @@ -43,6 +43,10 @@ class account_coda_import(osv.osv_memory): 'coda_fname': lambda *a: '', } + def _check_account_payment(self, cr, uid, context=None): + res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_payment'), ('state','=','installed')]) + return res and True or False + def coda_parsing(self, cr, uid, ids, context=None, batch=False, codafile=None, codafilename=None): if context is None: context = {} @@ -53,12 +57,12 @@ class account_coda_import(osv.osv_memory): data=self.browse(cr,uid,ids)[0] try: codafile = data.coda_data - codafilename = data.coda_fname + codafilename = data.coda_fname except: - raise osv.except_osv(_('Error!'), _('Wizard in incorrect state. Please hit the Cancel button.')) + raise osv.except_osv(_('Error!'), _('Wizard in incorrect state. Please hit the Cancel button!')) return {} - currency_obj = self.pool.get('res.currency') + currency_obj = self.pool.get('res.currency') coda_bank_account_obj = self.pool.get('coda.bank.account') trans_type_obj = self.pool.get('account.coda.trans.type') trans_code_obj = self.pool.get('account.coda.trans.code') @@ -80,13 +84,23 @@ class account_coda_import(osv.osv_memory): voucher_line_obj = self.pool.get('account.voucher.line') seq_obj = self.pool.get('ir.sequence') mod_obj = self.pool.get('ir.model.data') + partner_obj = self.pool.get('res.partner') + account_mapping_obj = self.pool.get('coda.account.mapping.rule') + + if self._check_account_payment(cr, uid): + payment_line_obj = self.pool.get('payment.line') + else: + payment_line_obj = False + + wf_service = netsvc.LocalService('workflow') + be_country_id = self.pool.get('res.country').search(cr, uid, [('code', '=', 'BE')])[0] coda_bank_table = coda_bank_account_obj.read(cr, uid, coda_bank_account_obj.search(cr, uid, []), context=context) for coda_bank in coda_bank_table: coda_bank.update({'journal_code': coda_bank['journal'] and journal_obj.browse(cr, uid, coda_bank['journal'][0], context=context).code or ''}) coda_bank.update({'iban': partner_bank_obj.browse(cr, uid, coda_bank['bank_id'][0], context=context).iban}) coda_bank.update({'acc_number': partner_bank_obj.browse(cr, uid, coda_bank['bank_id'][0], context=context).acc_number}) - coda_bank.update({'currency_name': currency_obj.browse(cr, uid, coda_bank['currency'][0], context=context).name}) + coda_bank.update({'currency_name': currency_obj.browse(cr, uid, coda_bank['currency'][0], context=context).name}) trans_type_table = trans_type_obj.read(cr, uid, trans_type_obj.search(cr, uid, []), context=context) trans_code_table = trans_code_obj.read(cr, uid, trans_code_obj.search(cr, uid, []), context=context) trans_category_table = trans_category_obj.read(cr, uid, trans_category_obj.search(cr, uid, []), context=context) @@ -97,9 +111,10 @@ class account_coda_import(osv.osv_memory): err_log = '' coda_statements = [] recordlist = unicode(base64.decodestring(codafile), 'windows-1252', 'strict').split('\n') - + digits = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account') + for line in recordlist: - + if not line: pass elif line[0] == '0': @@ -108,42 +123,35 @@ class account_coda_import(osv.osv_memory): coda_parsing_note = '' coda_statement_lines = {} st_line_seq = 0 - glob_lvl_stack = [0] # header data - coda_statement['currency'] = 'EUR' # default currency + coda_statement['currency'] = 'EUR' # default currency coda_statement['version'] = line[127] coda_version = line[127] if coda_version not in ['1','2']: - err_string = _('\nCODA V%s statements are not supported, please contact your bank.') % coda_version + err_string = _('\nCODA V%s statements are not supported, please contact your bank!') % coda_version err_code = 'R0001' if batch: return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) coda_statement['coda_statement_lines'] = {} coda_statement['date'] = str2date(line[5:11]) - period_id = period_obj.search(cr , uid, [('date_start' ,'<=', coda_statement['date']), ('date_stop','>=',coda_statement['date'])]) - if not period_id: - err_string = _("\nThe CODA creation date doesn't fall within a defined Accounting Period." \ - "\nPlease create the Accounting Period for date %s.") % coda_statement['date'] - err_code = 'R0002' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - coda_statement['period_id'] = period_id[0] + coda_statement['coda_creation_date'] = str2date(line[5:11]) + coda_statement['separate_application'] = line[83:88] + coda_statement['first_transaction_date'] = False coda_statement['state'] = 'draft' - + coda_id = coda_obj.search(cr, uid,[ ('name', '=', codafilename), ('coda_creation_date', '=', coda_statement['date']), ]) if coda_id: - err_string = _("\nCODA File with Filename '%s' and Creation Date '%s' has already been imported.") \ + err_string = _("\nCODA File with Filename '%s' and Creation Date '%s' has already been imported !") \ % (codafilename, coda_statement['date']) err_code = 'W0001' if batch: return (err_code, err_string) - raise osv.except_osv(_('Warning!'), err_string) - + raise osv.except_osv(_('Warning !'), err_string) + elif line[0] == '1': if coda_version == '1': coda_statement['acc_number'] = line[5:17] @@ -151,47 +159,56 @@ class account_coda_import(osv.osv_memory): coda_statement['currency'] = line[18:21] elif line[1] == '0': # Belgian bank account BBAN structure coda_statement['acc_number'] = line[5:17] - coda_statement['currency'] = line[18:21] + coda_statement['currency'] = line[18:21] elif line[1] == '1': # foreign bank account BBAN structure - err_string = _('\nForeign bank accounts with BBAN structure are not supported.') + err_string = _('\nForeign bank accounts with BBAN structure are not supported !') err_code = 'R1001' if batch: return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) elif line[1] == '2': # Belgian bank account IBAN structure - coda_statement['acc_number']=line[5:21] + coda_statement['acc_number']=line[5:21] coda_statement['currency'] = line[39:42] elif line[1] == '3': # foreign bank account IBAN structure - err_string = _('\nForeign bank accounts with IBAN structure are not supported.') + err_string = _('\nForeign bank accounts with IBAN structure are not supported !') err_code = 'R1002' if batch: return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) else: - err_string = _('\nUnsupported bank account structure.') + err_string = _('\nUnsupported bank account structure !') err_code = 'R1003' if batch: return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) coda_statement['description'] = line[90:125].strip() - cba_filter = lambda x: ((coda_statement['acc_number'] in (x['iban'] or '')) or (coda_statement['acc_number'] == x['acc_number'])) \ - and (coda_statement['currency'] == x['currency_name']) and (coda_statement['description'] == (x['description1'] or x['description2'] or '')) + cba_filter = lambda x: (coda_statement['acc_number'] in _get_acc_numbers(x['acc_number'])) \ + and (coda_statement['currency'] == x['currency_name']) and (coda_statement['description'] in [x['description1'] or '', x['description2'] or '']) coda_bank = filter(cba_filter, coda_bank_table) if coda_bank: - coda_bank = coda_bank[0] + coda_bank = coda_bank[0] coda_statement['type'] = coda_bank['state'] coda_statement['journal_id'] = coda_bank['journal'] and coda_bank['journal'][0] coda_statement['currency_id'] = coda_bank['currency'][0] - coda_statement['coda_bank_account_id'] = coda_bank['id'] - def_pay_acc = coda_bank['def_payable'][0] - def_rec_acc = coda_bank['def_receivable'][0] + coda_statement['coda_bank_account_id'] = coda_bank['id'] + coda_statement['account_mapping_ids'] = coda_bank['account_mapping_ids'] + coda_statement['coda_bank_params'] = coda_bank awaiting_acc = coda_bank['awaiting_account'][0] transfer_acc = coda_bank['transfer_account'][0] + find_payment = coda_bank['find_payment'] find_bbacom = coda_bank['find_bbacom'] + find_inv_number = coda_bank['find_inv_number'] find_partner = coda_bank['find_partner'] + update_partner = coda_bank['update_partner'] + coda_statement['balance_start_enforce'] = coda_bank['balance_start_enforce'] + coda_statement['discard_dup'] = coda_bank['discard_dup'] + company_id = coda_bank['company_id'][0] + company_bank_ids = partner_bank_obj.search(cr, uid, [('company_id', '=', company_id)]) + company_bank_accounts = partner_bank_obj.read(cr, uid, company_bank_ids, ['acc_number']) + company_bank_accounts = [x['acc_number'].replace(' ', '') for x in company_bank_accounts] else: - err_string = _("\nNo matching CODA Bank Account Configuration record found.") + \ - _("\nPlease check if the 'Bank Account Number', 'Currency' and 'Account Description' fields of your configuration record match with '%s', '%s' and '%s'.") \ + err_string = _("\nNo matching CODA Bank Account Configuration record found !") + \ + _("\nPlease check if the 'Bank Account Number', 'Currency' and 'Account Description' fields of your configuration record match with '%s', '%s' and '%s' !") \ % (coda_statement['acc_number'], coda_statement['currency'], coda_statement['description']) err_code = 'R1004' if batch: @@ -200,56 +217,72 @@ class account_coda_import(osv.osv_memory): bal_start = list2float(line[43:58]) # old balance data if line[42] == '1': # 1= Debit bal_start = - bal_start - coda_statement['balance_start'] = bal_start + coda_statement['balance_start'] = bal_start + coda_statement['old_balance_date'] = str2date(line[58:64]) coda_statement['acc_holder'] = line[64:90] - coda_statement['paper_seq_number'] = line[2:5] + coda_statement['paper_ob_seq_number'] = line[2:5] coda_statement['coda_seq_number'] = line[125:128] - if coda_bank['coda_st_naming']: - coda_statement['name'] = coda_bank['coda_st_naming'] % { - 'code': coda_bank['journal_code'] or '', - 'year': time.strftime('%Y'), - 'y': time.strftime('%y'), - 'coda': line[125:128], - 'paper': line[2:5], - } - else: - coda_statement['name'] = '/' elif line[0] == '2': # movement data record 2 + if line[1] == '1': # movement data record 2.1 st_line = {} st_line_seq = st_line_seq + 1 st_line['sequence'] = st_line_seq st_line['type'] = 'general' - st_line['reconcile'] = False + st_line['reconcile'] = False + st_line['trans_family'] = False st_line['struct_comm_type'] = '' + st_line['struct_comm_type_id'] = 0 st_line['struct_comm_type_desc'] = '' - st_line['struct_comm_101'] = '' + st_line['struct_comm_bba'] = '' st_line['communication'] = '' + st_line['payment_reference'] = '' st_line['partner_id'] = 0 st_line['account_id'] = 0 st_line['counterparty_name'] = '' - st_line['counterparty_bic'] = '' + st_line['counterparty_bic'] = '' st_line['counterparty_number'] = '' - st_line['counterparty_currency'] = '' + st_line['counterparty_currency'] = '' st_line['glob_lvl_flag'] = False st_line['globalisation_id'] = 0 st_line['globalisation_code'] = '' st_line['globalisation_amount'] = False st_line['amount'] = False - + st_line['ref'] = line[2:10] + st_line['ref_move'] = line[2:6] + st_line['ref_move_detail'] = line[6:10] + + if st_line_seq == 1: + main_move_stack = [st_line] # initialise main_move_stack (used to link 2.1 detail records to 2.1 main record + glob_lvl_stack = [0] # initialise globalisation stack + elif st_line['ref_move_detail'] == '0000': + glob_lvl_stack = [0] # re-initialise globalisation stack + st_line['trans_ref'] = line[10:31] st_line_amt = list2float(line[32:47]) if line[31] == '1': # 1=debit st_line_amt = - st_line_amt - # processing of amount depending on globalisation code + + st_line['trans_type'] = line[53] + trans_type = filter(lambda x: st_line['trans_type'] == x['type'], trans_type_table) + if not trans_type: + err_string = _('\nThe File contains an invalid CODA Transaction Type : %s!') % st_line['trans_type'] + err_code = 'R2001' + if batch: + return (err_code, err_string) + raise osv.except_osv(_('Data Error!'), err_string) + st_line['trans_type_id'] = trans_type[0]['id'] + st_line['trans_type_desc'] = trans_type[0]['description'] + + # processing of amount depending on globalisation code glob_lvl_flag = int(line[124]) - if glob_lvl_flag > 0: - if glob_lvl_stack[-1] == glob_lvl_flag: - st_line['glob_lvl_flag'] = glob_lvl_flag + if glob_lvl_flag > 0: + if glob_lvl_stack[-1] == glob_lvl_flag: + st_line['glob_lvl_flag'] = glob_lvl_flag st_line['amount'] = st_line_amt glob_lvl_stack.pop() else: @@ -257,199 +290,388 @@ class account_coda_import(osv.osv_memory): st_line['type'] = 'globalisation' st_line['glob_lvl_flag'] = glob_lvl_flag st_line['globalisation_amount'] = st_line_amt - st_line['account_id'] = None else: st_line['amount'] = st_line_amt - # positions 48-53 : Value date or 000000 if not known (DDMMYY) + + # The 'globalisation' concept can also be implemented without the globalisation level flag. + # This is e.g. used by Europabank to give the details of Card Payments. + if st_line['ref_move'] == main_move_stack[-1]['ref_move']: + if st_line['ref_move_detail'] == '9999': + # Current CODA parsing logic doesn't support > 9999 detail lines + err_string = _('\nTransaction Detail Limit reached!') + err_code = 'R2010' + if batch: + return (err_code, err_string) + raise osv.except_osv(_('Data Error!'), err_string) + elif st_line['ref_move_detail'] != '0000': + if glob_lvl_stack[-1] == 0: + # promote associated move record into a globalisation + glob_lvl_flag = 1 + glob_lvl_stack.append(glob_lvl_flag) + main_st_line_seq = main_move_stack[-1]['sequence'] + to_promote = coda_statement['coda_statement_lines'][main_st_line_seq] + if not main_move_stack[-1].get('detail_cnt'): + to_promote.update({ + 'type': 'globalisation', + 'glob_lvl_flag': glob_lvl_flag, + 'globalisation_amount': main_move_stack[-1]['amount'], + 'amount': False, + 'account_id': 0, + }) + main_move_stack[-1]['promoted'] = True + if not main_move_stack[-1].get('detail_cnt'): + main_move_stack[-1]['detail_cnt'] = 1 + else: + main_move_stack[-1]['detail_cnt'] += 1 + + # positions 48-53 : Valuta date or 000000 if not known (DDMMYY) st_line['val_date'] = str2date(line[47:53]) # positions 54-61 : transaction code - st_line['trans_type'] = line[53] - trans_type = filter(lambda x: st_line['trans_type'] == x['type'], trans_type_table) - if not trans_type: - err_string = _('\nThe File contains an invalid CODA Transaction Type : %s.') % st_line['trans_type'] - err_code = 'R2001' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - st_line['trans_type_desc'] = trans_type[0]['description'] st_line['trans_family'] = line[54:56] trans_family = filter(lambda x: (x['type'] == 'family') and (st_line['trans_family'] == x['code']), trans_code_table) if not trans_family: - err_string = _('\nThe File contains an invalid CODA Transaction Family : %s.') % st_line['trans_family'] + err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] err_code = 'R2002' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) + raise osv.except_osv(_('Data Error!'), err_string) + st_line['trans_family_id'] = trans_family[0]['id'] st_line['trans_family_desc'] = trans_family[0]['description'] st_line['trans_code'] = line[56:58] - trans_code = filter(lambda x: (x['type'] == 'code') and (st_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), + trans_code = filter(lambda x: (x['type'] == 'code') and (st_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), trans_code_table) if trans_code: + st_line['trans_code_id'] = trans_code[0]['id'] st_line['trans_code_desc'] = trans_code[0]['description'] else: + st_line['trans_code_id'] = None st_line['trans_code_desc'] = _('Transaction Code unknown, please consult your bank.') st_line['trans_category'] = line[58:61] trans_category = filter(lambda x: st_line['trans_category'] == x['category'], trans_category_table) if trans_category: + st_line['trans_category_id'] = trans_category[0]['id'] st_line['trans_category_desc'] = trans_category[0]['description'] else: - st_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') - # positions 61-115 : communication + st_line['trans_category_id'] = None + st_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') + # positions 61-115 : communication if line[61] == '1': st_line['struct_comm_type'] = line[62:65] comm_type = filter(lambda x: st_line['struct_comm_type'] == x['code'], comm_type_table) if not comm_type: - err_string = _('\nThe File contains an invalid Structured Communication Type : %s.') % st_line['struct_comm_type'] + err_string = _('\nThe File contains an invalid Structured Communication Type : %s!') % st_line['struct_comm_type'] err_code = 'R2003' if batch: return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) + st_line['struct_comm_type_id'] = comm_type[0]['id'] st_line['struct_comm_type_desc'] = comm_type[0]['description'] st_line['communication'] = st_line['name'] = line[65:115] - if st_line['struct_comm_type'] == '101': - bbacomm = line[65:77] - st_line['struct_comm_101'] = st_line['name'] = '+++' + bbacomm[0:3] + '/' + bbacomm[3:7] + '/' + bbacomm[7:] + '+++' + if st_line['struct_comm_type'] in ['101', '102']: + bbacomm = line[65:77] + st_line['struct_comm_bba'] = st_line['name'] = '+++' + bbacomm[0:3] + '/' + bbacomm[3:7] + '/' + bbacomm[7:] + '+++' else: st_line['communication'] = st_line['name'] = line[62:115] st_line['entry_date'] = str2date(line[115:121]) - # positions 122-124 not processed - coda_statement_lines[st_line_seq] = st_line + if st_line['sequence'] == 1: + coda_statement['first_transaction_date'] = st_line['entry_date'] + # positions 122-124 not processed + coda_statement_lines[st_line_seq] = st_line # store transaction + + if st_line['ref_move'] != main_move_stack[-1]['ref_move']: + if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): + # add closing globalisation level on previous detail record in order to correctly close + # moves that have been 'promoted' to globalisation + closeglobalise = coda_statement['coda_statement_lines'][st_line_seq-1] + closeglobalise.update({ + 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], + }) + else: + # demote record with globalisation code from 'globalisation' to 'general' when no detail records + # the same logic is repeated on the New Balance Record ('8 Record') in order to cope with CODA files + # containing a single 2.1 record that needs to be 'demoted'. + if main_move_stack[-1]['type'] == 'globalisation' and not main_move_stack[-1].get('detail_cnt'): + # demote record with globalisation code from 'globalisation' to 'general' when no detail records + main_st_line_seq = main_move_stack[-1]['sequence'] + to_demote = coda_statement['coda_statement_lines'][main_st_line_seq] + to_demote.update({ + 'type': 'general', + 'glob_lvl_flag': 0, + 'globalisation_amount': False, + 'amount': main_move_stack[-1]['globalisation_amount'], + }) + main_move_stack.pop() + main_move_stack.append(st_line) coda_statement['coda_statement_lines'] = coda_statement_lines + elif line[1] == '2': # movement data record 2.2 - if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: - err_string = _('\nCODA parsing error on movement data record 2.2, seq nr %s.' \ + if coda_statement['coda_statement_lines'][st_line_seq]['ref'][0:4] != line[2:6]: + err_string = _('\nCODA parsing error on movement data record 2.2, seq nr %s!' \ '\nPlease report this issue via your OpenERP support channel.') % line[2:10] err_code = 'R2004' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) + raise osv.except_osv(_('Error!'), err_string) coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:63] coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:63] + coda_statement['coda_statement_lines'][st_line_seq]['payment_reference'] = line[63:98].strip() coda_statement['coda_statement_lines'][st_line_seq]['counterparty_bic'] = line[98:109].strip() + elif line[1] == '3': # movement data record 2.3 - if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: - err_string = _('\nCODA parsing error on movement data record 2.3, seq nr %s.' \ + if coda_statement['coda_statement_lines'][st_line_seq]['ref'][0:4] != line[2:6]: + err_string = _('\nCODA parsing error on movement data record 2.3, seq nr %s!' \ '\nPlease report this issue via your OpenERP support channel.') % line[2:10] err_code = 'R2005' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) + raise osv.except_osv(_('Error!'), err_string) st_line = coda_statement_lines[st_line_seq] if coda_version == '1': - counterparty_number = line[10:22] + counterparty_number = line[10:22].strip() counterparty_name = line[47:125].strip() counterparty_currency = '' else: if line[22] == ' ': - counterparty_number = line[10:22] + counterparty_number = line[10:22].strip() counterparty_currency = line[23:26].strip() else: counterparty_number = line[10:44].strip() - counterparty_currency = line[44:47].strip() + counterparty_currency = line[44:47].strip() counterparty_name = line[47:82].strip() st_line['name'] += line[82:125] st_line['communication'] += line[82:125] st_line['counterparty_number'] = counterparty_number st_line['counterparty_currency'] = counterparty_currency st_line['counterparty_name'] = counterparty_name + """ + TO DO: + + replace code infra by check on flag 128 and copy info in Notes Field. + if counterparty_currency not in [coda_bank['currency_name'], '']: - err_string = _('\nCODA parsing error on movement data record 2.3, seq nr %s.' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] + err_string = _('\nCODA parsing error on movement data record 2.3, seq nr %s!' \ + '\nPlease report this issue via your OpenERP support channel.') % line[2:10] err_code = 'R2006' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) + raise osv.except_osv(_('Error!'), err_string) + """ - # partner matching and reconciliation - if st_line['type'] == 'general': + # invoice matching and reconciliation + if st_line['type'] == 'general': match = False - bank_ids = False - # prepare reconciliation for bba scor - reference = st_line['struct_comm_101'] - if reference and find_bbacom: - inv_ids = inv_obj.search(cr , uid, [('reference' ,'=', reference), ('reference_type' ,'=', 'bba')]) - if inv_ids: - invoice = inv_obj.browse(cr, uid, inv_ids[0]) - partner = invoice.partner_id - st_line['partner_id'] = partner.id - if invoice.type in ['in_invoice', 'in_refund']: - st_line['account_id'] = partner.property_account_payable.id or def_pay_acc - st_line['type'] = 'supplier' + payment_reference_match = False + inv_ids = None + partner_bank_ids = False + + # check payment reference in bank statement line against payment order lines + payment_reference = st_line['payment_reference'] + if payment_reference and find_payment and st_line['amount'] < 0: + payline_ids = payment_line_obj and payment_line_obj.search(cr, uid, [('name', '=', payment_reference)]) + if payline_ids: + if len(payline_ids) == 1: + payline = payment_line_obj.browse(cr, uid, payline_ids[0]) + match = True + payment_reference_match = True + st_line['partner_id'] = payline.partner_id.id + if payline.move_line_id: + st_line['reconcile'] = payline.move_line_id.id + st_line['account_id'] = payline.move_line_id.account_id.id + if payline._get_ml_inv_ref: + inv_type = payline.ml_inv_ref.type + st_line['type'] = inv_type == 'in_invoice' and 'supplier' or 'customer' + else: + st_line['type'] = 'general' else: - st_line['account_id'] = partner.property_account_receivable.id or def_rec_acc - st_line['type'] = 'customer' - if invoice.type in ['in_invoice', 'out_invoice']: - iml_ids = move_line_obj.search(cr, uid, [('move_id', '=', invoice.move_id.id), ('reconcile_id', '=', False), ('account_id.reconcile', '=', True)]) - if iml_ids: - st_line['reconcile'] = iml_ids[0] - match = True + err_string = _('\nThe CODA parsing detected a payment reference ambiguity while processing movement data record 2.3, seq nr %s!' \ + '\nPlease check your Payment Gateway configuration or contact your OpenERP support channel.') % line[2:10] + err_code = 'R2007' + if batch: + return (err_code, err_string) + raise osv.except_osv(_('Error!'), err_string) + + # check bba scor in bank statement line against open invoices + if st_line['struct_comm_bba'] and find_bbacom: + if st_line['amount'] > 0: + domain = [('type', 'in', ['out_invoice', 'in_refund'])] else: - coda_parsing_note += _("\n Bank Statement '%s' line '%s':" \ - "\n There is no invoice matching the Structured Communication '%s'." \ + domain = [('type', 'in', ['in_invoice', 'out_refund'])] + inv_ids = inv_obj.search(cr , uid, + domain + [('state', '=', 'open'), ('reference' ,'=', st_line['struct_comm_bba']), ('reference_type' ,'=', 'bba')]) + if not inv_ids: + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ + "\n There is no invoice matching the Structured Communication '%s'!" \ "\n Please verify and adjust the invoice and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ - % (coda_statement['name'], st_line['ref'], reference) - # lookup partner via counterparty_number + % (st_line['ref'], st_line['struct_comm_bba']) + elif len(inv_ids) == 1: + match = True + elif len(inv_ids) > 1: + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ + "\n There are multiple invoices matching the Structured Communication '%s'!" \ + "\n A manual reconciliation is required.") \ + % (st_line['ref'], st_line['struct_comm_bba']) + + # use free comm in bank statement line for lookup against open invoices + if not match and find_bbacom: + # extract possible bba scor from free form communication and try to find matching invoice + free_comm_digits = re.sub('\D', '', st_line['communication'] or '') + select = "SELECT id FROM (SELECT id, type, state, amount_total, number, reference_type, reference, " \ + "'%s'::text AS free_comm_digits FROM account_invoice) sq " \ + "WHERE state = 'open' AND reference_type = 'bba' " \ + "AND free_comm_digits LIKE '%%'||regexp_replace(reference, '\\\D', '', 'g')||'%%'" \ + % (free_comm_digits) + if st_line['amount'] > 0: + select2 = " AND type IN ('out_invoice', 'in_refund')" + else: + select2 = " AND type IN ('in_invoice', 'out_refund')" + cr.execute(select + select2) + res=cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + if len(inv_ids) == 1: + match = True + if not match and st_line['communication'] and find_inv_number: + # check matching invoice number in free form communication combined with matching amount + free_comm = repl_special(st_line['communication'].strip()) + amount_fmt = '%.' + str(digits) + 'f' + if st_line['amount'] > 0: + amount_rounded = amount_fmt % round(st_line['amount'], digits) + else: + amount_rounded = amount_fmt % round(-st_line['amount'], digits) + select = "SELECT id FROM (SELECT id, type, state, amount_total, number, reference_type, reference, " \ + "'%s'::text AS free_comm FROM account_invoice) sq " \ + "WHERE state = 'open' AND amount_total = %s" \ + % (free_comm, amount_rounded) + # 'out_invoice', 'in_refund' + if st_line['amount'] > 0: + select2 = " AND type = 'out_invoice' AND free_comm ilike '%'||number||'%'" + cr.execute(select + select2) + res=cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + else: + select2 = " AND type = 'in_refund' AND free_comm ilike '%'||reference||'%'" + cr.execute(select + select2) + res=cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + # 'in_invoice', 'out_refund' + else: + select2 = " AND type = 'in_invoice' AND free_comm ilike '%'||reference||'%'" + cr.execute(select + select2) + res=cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + else: + select2 = " AND type = 'out_refund' AND free_comm ilike '%'||number||'%'" + cr.execute(select + select2) + res=cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + if inv_ids: + if len(inv_ids) == 1: + match = True + elif len(inv_ids) > 1: + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ + "\n There are multiple invoices matching the Invoice Amount and Reference." \ + "\n A manual reconciliation is required.") \ + % (st_line['ref']) + + if not payment_reference_match and match and inv_ids and len(inv_ids) == 1: + invoice = inv_obj.browse(cr, uid, inv_ids[0]) + partner = invoice.partner_id + st_line['partner_id'] = partner.id + if invoice.type in ['in_invoice', 'in_refund']: + st_line['account_id'] = partner.property_account_payable.id + st_line['type'] = 'supplier' + else: + st_line['account_id'] = partner.property_account_receivable.id + st_line['type'] = 'customer' + iml_ids = move_line_obj.search(cr, uid, [('move_id', '=', invoice.move_id.id), ('reconcile_id', '=', False), ('account_id.reconcile', '=', True)]) + if iml_ids: + st_line['reconcile'] = iml_ids[0] + else: + err_string = _('\nThe CODA parsing detected a database inconsistency while processing movement data record 2.3, seq nr %s!' \ + '\nPlease report this issue via your OpenERP support channel.') % line[2:10] + err_code = 'R2008' + if batch: + return (err_code, err_string) + raise osv.except_osv(_('Error!'), err_string) + + # lookup partner via counterparty_number when invoice lookup failed if not match and counterparty_number: - cba_filter = lambda x: ((counterparty_number in (x['iban'] or '')) or (counterparty_number == x['acc_number'])) \ - and (x['state'] == 'normal') - transfer_account = filter(cba_filter, coda_bank_table) + transfer_account = filter(lambda x: counterparty_number in x, company_bank_accounts) if transfer_account: st_line['account_id'] = transfer_acc match = True elif find_partner: - counterparty_number = base_iban._pretty_iban(base_iban._format_iban(counterparty_number)) - bank_ids = partner_bank_obj.search(cr,uid,[('acc_number','=', counterparty_number)]) - if not match and find_partner and bank_ids: - if len(bank_ids) > 1: - coda_parsing_note += _("\n Bank Statement '%s' line '%s':" \ - "\n No partner record assigned: There are multiple partners with the same Bank Account Number '%s'." \ + partner_bank_ids = partner_bank_obj.search(cr,uid,[('acc_number','=', counterparty_number)]) + if not match and find_partner and partner_bank_ids: + if len(partner_bank_ids) > 1: + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ + "\n No partner record assigned: There are multiple partners with the same Bank Account Number '%s'!" \ "\n Please correct the configuration and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ - % (coda_statement['name'], st_line['ref'], counterparty_number) - else: - bank = partner_bank_obj.browse(cr, uid, bank_ids[0], context) - st_line['partner_id'] = bank.partner_id.id + % (st_line['ref'], counterparty_number) + else: + partner_bank = partner_bank_obj.browse(cr, uid, partner_bank_ids[0], context) + st_line['partner_id'] = partner_bank.partner_id.id match = True if st_line['amount'] < 0: - st_line['account_id'] = bank.partner_id.property_account_payable.id or def_pay_acc + st_line['account_id'] = partner_bank.partner_id.property_account_payable.id st_line['type'] = 'supplier' else: - st_line['account_id'] = bank.partner_id.property_account_receivable.id or def_rec_acc + st_line['account_id'] = partner_bank.partner_id.property_account_receivable.id st_line['type'] = 'customer' elif not match and find_partner: if counterparty_number: - coda_parsing_note += _("\n Bank Statement '%s' line '%s':" \ - "\n The bank account '%s' is not defined for the partner '%s'." \ + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ + "\n The bank account '%s' is not defined for the partner '%s'!" \ "\n Please correct the configuration and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ - % (coda_statement['name'], st_line['ref'], - counterparty_number, counterparty_name) + % (st_line['ref'], counterparty_number, counterparty_name) else: - coda_parsing_note += _("\n Bank Statement '%s' line '%s':" \ - "\n No matching partner record found." \ + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ + "\n No matching partner record found!" \ "\n Please adjust the corresponding entry manually in the generated Bank Statement.") \ - % (coda_statement['name'], st_line['ref']) + % (st_line['ref']) st_line['account_id'] = awaiting_acc - # end of partner record lookup + + # add bank account to partner record + if match and st_line['account_id'] != transfer_acc and counterparty_number and update_partner: + partner_bank_ids = partner_bank_obj.search(cr,uid,[('acc_number','=', counterparty_number), ('partner_id', '=', st_line['partner_id'])], order='id') + if len(partner_bank_ids) > 1: + # clean up partner bank duplicates, keep most recently created + _logger.warn('Duplicate Bank Accounts for partner_id %s have been removed, ids = %s', + st_line['partner_id'], partner_bank_ids[:-1]) + partner_bank_obj.unlink(cr,uid, partner_bank_ids[:-1]) + if not partner_bank_ids: + feedback = update_partner_bank(self, cr, uid, st_line['counterparty_bic'], counterparty_number, st_line['partner_id'], counterparty_name) + if feedback: + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':") % st_line['ref'] + feedback + coda_statement_lines[st_line_seq] = st_line coda_statement['coda_statement_lines'] = coda_statement_lines + # end of processing movement data record 2.3 + else: # movement data record 2.x (x <> 1,2,3) - err_string = _('\nMovement data records of type 2.%s are not supported.') % line[1] - err_code = 'R2007' + err_string = _('\nMovement data records of type 2.%s are not supported !') % line[1] + err_code = 'R2009' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) + raise osv.except_osv(_('Data Error!'), err_string) elif line[0] == '3': # information data record 3 + if line[1] == '1': # information data record 3.1 info_line = {} info_line['entry_date'] = st_line['entry_date'] info_line['type'] = 'information' st_line_seq = st_line_seq + 1 - info_line['sequence'] = st_line_seq + info_line['sequence'] = st_line_seq info_line['struct_comm_type'] = '' info_line['struct_comm_type_desc'] = '' info_line['communication'] = '' @@ -463,19 +685,19 @@ class account_coda_import(osv.osv_memory): err_code = 'R3001' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - info_line['trans_type_desc'] = trans_type[0]['description'] + raise osv.except_osv(_('Data Error!'), err_string) + info_line['trans_type_desc'] = trans_type[0]['description'] info_line['trans_family'] = line[32:34] trans_family = filter(lambda x: (x['type'] == 'family') and (info_line['trans_family'] == x['code']), trans_code_table) if not trans_family: - err_string = _('\nThe File contains an invalid CODA Transaction Family : %s.') % st_line['trans_family'] + err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] err_code = 'R3002' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) + raise osv.except_osv(_('Data Error!'), err_string) info_line['trans_family_desc'] = trans_family[0]['description'] info_line['trans_code'] = line[34:36] - trans_code = filter(lambda x: (x['type'] == 'code') and (info_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id']), + trans_code = filter(lambda x: (x['type'] == 'code') and (info_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), trans_code_table) if trans_code: info_line['trans_code_desc'] = trans_code[0]['description'] @@ -486,13 +708,13 @@ class account_coda_import(osv.osv_memory): if trans_category: info_line['trans_category_desc'] = trans_category[0]['description'] else: - info_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') - # positions 40-113 : communication + info_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') + # positions 40-113 : communication if line[39] == '1': info_line['struct_comm_type'] = line[40:43] comm_type = filter(lambda x: info_line['struct_comm_type'] == x['code'], comm_type_table) if not comm_type: - err_string = _('\nThe File contains an invalid Structured Communication Type : %s.') % info_line['struct_comm_type'] + err_string = _('\nThe File contains an invalid Structured Communication Type : %s!') % info_line['struct_comm_type'] err_code = 'R3003' if batch: return (err_code, err_string) @@ -504,21 +726,23 @@ class account_coda_import(osv.osv_memory): # positions 114-128 not processed coda_statement_lines[st_line_seq] = info_line coda_statement['coda_statement_lines'] = coda_statement_lines + elif line[1] == '2': # information data record 3.2 if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: - err_string = _('\nCODA parsing error on information data record 3.2, seq nr %s.' \ + err_string = _('\nCODA parsing error on information data record 3.2, seq nr %s!' \ '\nPlease report this issue via your OpenERP support channel.') % line[2:10] err_code = 'R3004' if batch: return (err_code, err_string) raise osv.except_osv(_('Error!'), err_string) - coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:115] + coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:115] coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:115] + elif line[1] == '3': # information data record 3.3 if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: - err_string = _('\nCODA parsing error on information data record 3.3, seq nr %s.' \ + err_string = _('\nCODA parsing error on information data record 3.3, seq nr %s!' \ '\nPlease report this issue via your OpenERP support channel.') % line[2:10] err_code = 'R3005' if batch: @@ -526,7 +750,7 @@ class account_coda_import(osv.osv_memory): raise osv.except_osv(_('Error!'), err_string) coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:100] coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:100] - + elif line[0] == '4': # free communication data record 4 comm_line = {} @@ -537,21 +761,64 @@ class account_coda_import(osv.osv_memory): comm_line['communication'] = comm_line['name'] = line[32:112] coda_statement_lines[st_line_seq] = comm_line coda_statement['coda_statement_lines'] = coda_statement_lines - + elif line[0] == '8': # new balance record + last_transaction = main_move_stack[-1] + if last_transaction['type'] == 'globalisation' and not last_transaction.get('detail_cnt'): + # demote record with globalisation code from 'globalisation' to 'general' when no detail records + main_st_line_seq = main_move_stack[-1]['sequence'] + to_demote = coda_statement['coda_statement_lines'][main_st_line_seq] + to_demote.update({ + 'type': 'general', + 'glob_lvl_flag': 0, + 'globalisation_amount': False, + 'amount': main_move_stack[-1]['globalisation_amount'], + }) + # add closing globalisation level on previous detail record in order to correctly close + # moves that have been 'promoted' to globalisation + if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): + closeglobalise = coda_statement['coda_statement_lines'][st_line_seq-1] + closeglobalise.update({ + 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], + }) + coda_statement['paper_nb_seq_number'] = line[1:4] bal_end = list2float(line[42:57]) + coda_statement['new_balance_date'] = str2date(line[57:63]) if line[41] == '1': # 1=Debit bal_end = - bal_end coda_statement['balance_end_real'] = bal_end - + if coda_statement['new_balance_date']: + period_id = period_obj.search(cr , uid, [('date_start' ,'<=', coda_statement['new_balance_date']), ('date_stop','>=',coda_statement['new_balance_date'])]) + else: + period_id = period_obj.search(cr , uid, [('date_start' ,'<=', coda_statement['date']), ('date_stop','>=',coda_statement['date'])]) + if not period_id: + err_string = _("\nThe CODA Statement New Balance date doesn't fall within a defined Accounting Period!" \ + "\nPlease create the Accounting Period for date %s.") % coda_statement['new_balance_date'] + err_code = 'R0002' + if batch: + return (err_code, err_string) + raise osv.except_osv(_('Data Error!'), err_string) + coda_statement['period_id'] = period_id[0] + if coda_bank['coda_st_naming']: + coda_statement['name'] = coda_bank['coda_st_naming'] % { + 'code': coda_bank['journal_code'] or '', + 'year': coda_statement['new_balance_date'] and coda_statement['new_balance_date'][:4] or coda_statement['date'][:4], + 'y': coda_statement['new_balance_date'] and coda_statement['new_balance_date'][2:4] or coda_statement['date'][2:4], + 'coda': coda_statement['coda_seq_number'], + 'paper_ob': coda_statement['paper_ob_seq_number'], + 'paper': coda_statement['paper_nb_seq_number'], + } + else: + coda_statement['name'] = '/' + elif line[0] == '9': # footer record - coda_statement['balance_min'] = list2float(line[22:37]) + coda_statement['balance_min'] = list2float(line[22:37]) coda_statement['balance_plus'] = list2float(line[37:52]) if not bal_end: coda_statement['balance_end_real'] = coda_statement['balance_start'] + coda_statement['balance_plus'] - coda_statement['balance_min'] - if coda_parsing_note: + if coda_parsing_note: coda_statement['coda_parsing_note'] = '\nStatement Line matching results:' + coda_parsing_note else: coda_statement['coda_parsing_note'] = '' @@ -559,11 +826,11 @@ class account_coda_import(osv.osv_memory): #end for err_string = '' - err_code = '' + err_code = '' coda_id = 0 coda_note = '' line_note = '' - + try: coda_id = coda_obj.create(cr, uid,{ 'name' : codafilename, @@ -573,7 +840,7 @@ class account_coda_import(osv.osv_memory): 'user_id': uid, }) context.update({'coda_id': coda_id}) - + except osv.except_osv, e: cr.rollback() err_string = _('\nApplication Error : ') + str(e) @@ -587,78 +854,127 @@ class account_coda_import(osv.osv_memory): err_code = 'G0001' if batch: return (err_code, err_string) - raise osv.except_osv(_('CODA Import failed.'), err_string) + raise osv.except_osv(_('CODA Import failed !'), err_string) nb_err = 0 err_string = '' coda_st_ids = [] - bk_st_ids = [] - + bk_st_ids = [] + for statement in coda_statements: - + # The CODA Statement info is written to two objects: 'coda.bank.statement' and 'account.bank.statement' try: - + normal2info = False + lines = statement['coda_statement_lines'] + if not statement['first_transaction_date']: + normal2info = True # don't create a bank statement for CODA's without transactions + else: + line_vals = [x for x in lines.itervalues()] + transactions = filter(lambda x: (x['type'] in ['globalisation', 'general', 'supplier', 'customer']) and x['amount'], line_vals) + if not transactions: + normal2info = True # don't create a bank statement for CODA's without transactions + if normal2info: + statement['type'] = 'info' # don't create a bank statement for CODA's without transactions + statement['coda_parsing_note'] += _("\n\nThe CODA Statement %s does not contain transactions, hence no Bank Statement has been created." \ + "\nSelect the 'CODA Bank Statement' to check the contents of %s.") \ + %(statement['name'], statement['name']) + coda_st_id = coda_st_obj.create(cr, uid, { 'name': statement['name'], 'type': statement['type'], 'coda_bank_account_id': statement['coda_bank_account_id'], - 'currency': statement['currency_id'], + 'currency': statement['currency_id'], 'journal_id': statement['journal_id'], 'coda_id': coda_id, 'date': statement['date'], + 'coda_creation_date': statement['coda_creation_date'], 'period_id': statement['period_id'], + 'old_balance_date': statement['old_balance_date'], + 'new_balance_date': statement['new_balance_date'], 'balance_start': statement['balance_start'], 'balance_end_real': statement['balance_end_real'], - 'state':'draft', }) coda_st_ids.append(coda_st_id) - if statement['type'] == 'normal': + # check duplicates for CODA's of type 'normal' + discard = False + if statement['type'] == 'normal' and statement['discard_dup']: + dup_ids = bank_st_obj.search(cr, uid, [('name', '=', statement['name']), ('company_id', '=', company_id)]) + if dup_ids: + discard = True + statement['type'] = 'info' # don't create a bank statement for duplicates + statement['coda_parsing_note'] += _("\n\nThe Bank Statement %s already exists, hence no duplicate Bank Statement has been created." \ + "\nSelect the 'CODA Bank Statement' to check the contents of %s.") \ + %(statement['name'], statement['name']) + + # create only bank statement for CODA's of type 'normal' + if statement['type'] == 'normal' and not discard: context.update({'ebanking_import': 1}) journal = journal_obj.browse(cr, uid, statement['journal_id'], context=context) + balance_start_check_date = statement['first_transaction_date'] or statement['date'] cr.execute('SELECT balance_end_real \ FROM account_bank_statement \ WHERE journal_id = %s and date < %s \ - ORDER BY date DESC,id DESC LIMIT 1', (statement['journal_id'], statement['date'])) + ORDER BY date DESC,id DESC LIMIT 1', (statement['journal_id'], balance_start_check_date)) res = cr.fetchone() balance_start_check = res and res[0] if balance_start_check == None: if journal.default_debit_account_id and (journal.default_credit_account_id == journal.default_debit_account_id): balance_start_check = journal.default_debit_account_id.balance else: - nb_err += 1 - err_string += _('\nConfiguration Error!\nPlease verify the Default Debit and Credit Account settings in journal %s.') % journal.name + nb_err += 1 + err_string += _('\nConfiguration Error in journal %s!' \ + '\nPlease verify the Default Debit and Credit Account settings.') % journal.name break - if balance_start_check <> statement['balance_start']: - nb_err += 1 - err_string += _('\nThe CODA Statement %s Starting Balance (%.2f) does not correspond with the previous Closing Balance (%.2f) in journal %s.') \ - % (statement['name'], statement['balance_start'], balance_start_check, journal.name) + if balance_start_check <> statement['balance_start']: + balance_start_err_string = _('\nThe CODA Statement %s Starting Balance (%.2f) does not correspond with the previous Closing Balance (%.2f) in journal %s!') \ + % (statement['name'], statement['balance_start'], balance_start_check, journal.name) + if statement['balance_start_enforce']: + nb_err += 1 + err_string += balance_start_err_string break + else: + statement['coda_parsing_note'] += '\n' + balance_start_err_string - bk_st_id = bank_st_obj.create(cr, uid, { + st_vals = { 'name': statement['name'], 'journal_id': statement['journal_id'], 'coda_statement_id': coda_st_id, - 'date': statement['date'], + 'date': statement['new_balance_date'], 'period_id': statement['period_id'], 'balance_start': statement['balance_start'], 'balance_end_real': statement['balance_end_real'], 'state': 'draft', - }) + } + st_hook_error, st_vals = self._statement_hook(cr, uid, statement['coda_bank_params'], st_vals, context=context) + if st_hook_error: + nb_err += 1 + err_string += st_hook_error + break + bk_st_id = bank_st_obj.create(cr, uid, st_vals, context=context) bk_st_ids.append(bk_st_id) coda_st_obj.write(cr, uid, [coda_st_id], {'statement_id': bk_st_id}, context=context) - - glob_id_stack = [(0, '', 0, '')] # stack with tuples (glob_lvl_flag, glob_code, glob_id, glob_name) - lines = statement['coda_statement_lines'] + st_line_seq = 0 for x in lines: line = lines[x] + + if not line['type'] == 'communication': + if line['trans_family'] in st_line_name_families: + line['name'] = get_st_line_name(line, context) + if line['type'] == 'information': + if line['struct_comm_type'] in parse_comms_info: + line['name'], line['communication'] = parse_comm_info(self, cr, uid, line, comm_type_table, context) + elif line['struct_comm_type'] in parse_comms_move: + line['name'], line['communication'] = parse_comm_move(self, cr, uid, line, comm_type_table, context) + elif line['struct_comm_type'] in parse_comms_move: + line['name'], line['communication'] = parse_comm_move(self, cr, uid, line, comm_type_table, context) # handling non-transactional records : line['type'] in ['information', 'communication'] - + if line['type'] == 'information': line['globalisation_id'] = glob_id_stack[-1][2] @@ -674,25 +990,25 @@ class account_coda_import(osv.osv_memory): line['trans_category'], line['trans_category_desc'], line['struct_comm_type'], line['struct_comm_type_desc'], line['communication']) - + coda_st_line_id = coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], + 'ref': line['ref'], 'name': line['name'].strip() or '/', - 'type' : 'information', - 'date': line['entry_date'], + 'type' : 'information', + 'date': line['entry_date'], 'statement_id': coda_st_id, 'note': line_note, }) - + elif line['type'] == 'communication': line_note = _('Free Communication:\n %s') \ %(line['communication']) - + coda_st_line_id = coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], + 'ref': line['ref'], 'name': line['name'].strip() or '/', 'type' : 'communication', 'date': statement['date'], @@ -700,34 +1016,39 @@ class account_coda_import(osv.osv_memory): 'note': line_note, }) - # handling transactional records, # line['type'] in ['globalisation', 'general', 'supplier', 'customer'] + # handling transactional records, # line['type'] in ['globalisation', 'general', 'supplier', 'customer'] else: - + + if line['ref_move_detail'] == '0000': + glob_id_stack = [(0, '', 0, '')] # initialise stack with tuples (glob_lvl_flag, glob_code, glob_id, glob_name) + glob_lvl_flag = line['glob_lvl_flag'] - if glob_lvl_flag: - if glob_id_stack[-1][0] == glob_lvl_flag: + if glob_lvl_flag: + if glob_id_stack[-1][0] == glob_lvl_flag: line['globalisation_id'] = glob_id_stack[-1][2] glob_id_stack.pop() else: glob_name = line['name'].strip() or '/' glob_code = seq_obj.get(cr, uid, 'statement.line.global') glob_id = glob_obj.create(cr, uid, { - 'code': glob_code, + 'code': glob_code, 'name': glob_name, 'type': 'coda', 'parent_id': glob_id_stack[-1][2], 'amount': line['globalisation_amount'], + 'payment_reference': line['payment_reference'] }) line['globalisation_id'] = glob_id glob_id_stack.append((glob_lvl_flag, glob_code, glob_id, glob_name)) - - line_note = _('Partner name: %s \nPartner Account Number: %s' \ + + line_note = _('Partner Name: %s \nPartner Account Number: %s' \ '\nTransaction Type: %s - %s' \ '\nTransaction Family: %s - %s' \ '\nTransaction Code: %s - %s' \ '\nTransaction Category: %s - %s' \ '\nStructured Communication Type: %s - %s' \ + '\nPayment Reference: %s' \ '\nCommunication: %s') \ %(line['counterparty_name'], line['counterparty_number'], line['trans_type'], line['trans_type_desc'], @@ -735,135 +1056,208 @@ class account_coda_import(osv.osv_memory): line['trans_code'], line['trans_code_desc'], line['trans_category'], line['trans_category_desc'], line['struct_comm_type'], line['struct_comm_type_desc'], + line['payment_reference'], line['communication']) - + if line['type'] == 'globalisation': - + coda_st_line_id = coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], + 'ref': line['ref'], 'name': line['name'].strip() or '/', 'type' : 'globalisation', - 'val_date' : line['val_date'], + 'val_date' : line['val_date'], 'date': line['entry_date'], - 'globalisation_level': line['glob_lvl_flag'], - 'globalisation_amount': line['globalisation_amount'], - 'globalisation_id': line['globalisation_id'], + 'globalisation_level': line['glob_lvl_flag'], + 'globalisation_amount': line['globalisation_amount'], + 'globalisation_id': line['globalisation_id'], 'partner_id': line['partner_id'] or 0, 'account_id': line['account_id'], + 'payment_reference': line['payment_reference'], 'statement_id': coda_st_id, 'note': line_note, }) - else: # line['type'] in ['general', 'supplier', 'customer'] + else: # line['type'] in ['general', 'supplier', 'customer'] - if glob_lvl_flag == 0: + if glob_lvl_flag == 0: line['globalisation_id'] = glob_id_stack[-1][2] - if not line['account_id']: + if not line['account_id']: line['account_id'] = awaiting_acc - + coda_st_line_id = coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], - 'name': line['name'] or '/', + 'ref': line['ref'], + 'name': line['name'].strip() or '/', 'type' : line['type'], - 'val_date' : line['val_date'], + 'val_date' : line['val_date'], 'date': line['entry_date'], 'amount': line['amount'], 'partner_id': line['partner_id'] or 0, 'counterparty_name': line['counterparty_name'], - 'counterparty_bic': line['counterparty_bic'], - 'counterparty_number': line['counterparty_number'], - 'counterparty_currency': line['counterparty_currency'], + 'counterparty_bic': line['counterparty_bic'], + 'counterparty_number': line['counterparty_number'], + 'counterparty_currency': line['counterparty_currency'], 'account_id': line['account_id'], - 'globalisation_level': line['glob_lvl_flag'], - 'globalisation_id': line['globalisation_id'], + 'globalisation_level': line['glob_lvl_flag'], + 'globalisation_id': line['globalisation_id'], + 'payment_reference': line['payment_reference'], 'statement_id': coda_st_id, 'note': line_note, }) if statement['type'] == 'normal': - - st_line_seq += 1 - voucher_id = False - line_name = line['name'].strip() - if not line_name: - if line['globalisation_id']: - line_name = glob_id_stack[-1][3] - else: - line_name = '/' - - if line['reconcile']: - voucher_vals = { - 'type': line['type'] == 'supplier' and 'payment' or 'receipt', - 'name': line_name, - 'partner_id': line['partner_id'], - 'journal_id': statement['journal_id'], - 'account_id': journal.default_credit_account_id.id, - 'company_id': journal.company_id.id, - 'currency_id': journal.company_id.currency_id.id, - 'date': line['entry_date'], - 'amount': abs(line['amount']), - 'period_id': statement['period_id'], - } - voucher_id = voucher_obj.create(cr, uid, voucher_vals, context=context) - - move_line = move_line_obj.browse(cr, uid, line['reconcile'], context=context) - voucher_dict = voucher_obj.onchange_partner_id(cr, uid, [], - partner_id = line['partner_id'], - journal_id = statement['journal_id'], - price = abs(line['amount']), - currency_id = journal.company_id.currency_id.id, - ttype = line['type'] == 'supplier' and 'payment' or 'receipt', - date = line['val_date'], - context = context) - #_logger.warning('voucher_dict = %s' % voucher_dict) - voucher_line_vals = False - if voucher_dict['value']['line_ids']: - for line_dict in voucher_dict['value']['line_ids']: - if line_dict['move_line_id'] == move_line.id: - voucher_line_vals = line_dict - if voucher_line_vals: - voucher_line_vals.update({ - 'voucher_id': voucher_id, + if line['amount'] != 0.0: + st_line_seq += 1 + voucher_id = False + line_name = line['name'].strip() + if not line_name: + if line['globalisation_id']: + line_name = glob_id_stack[-1][3] or '/' + else: + line_name = '/' + + if line['reconcile']: + + move_line = move_line_obj.browse(cr, uid, line['reconcile'], context=context) + company_currency_id = journal.company_id.currency_id.id + currency_id = journal.currency.id + if currency_id and currency_id != company_currency_id: + multi_currency = True + else: + multi_currency = False + context_multi_currency = context.copy() + context_multi_currency.update({'date': line['entry_date']}) + + line_cr_ids = [] + line_dr_ids = [] + amount_remaining = abs(line['amount']) + + #for entry in entries: + if move_line.reconcile_partial_id: + amount_original = abs(move_line.amount_residual_currency) + else: + amount_original = move_line.credit or move_line.debit + if multi_currency: + if move_line.currency_id and move_line.amount_currency: + amount_original = abs(move_line.amount_currency) + else: + amount_original = currency_obj.compute(cr, uid, company_currency_id, currency_id, original_amount, context=context_multi_currency) + if amount_remaining > 0: + amount_voucher_line = min(amount_original, abs(amount_remaining)) + amount_remaining -= amount_voucher_line + else: + amount_voucher_line = 0.0 + voucher_line_vals = { + 'name': move_line.name, + 'account_id': move_line.account_id.id, + 'amount': amount_voucher_line, + 'reconcile': amount_voucher_line == amount_original, + 'type': move_line.credit and 'dr' or 'cr', + 'move_line_id': move_line.id, + } + if voucher_line_vals['type'] == 'cr': + line_cr_ids += [(0, 0, voucher_line_vals)] + else: + line_dr_ids += [(0, 0, voucher_line_vals)] + + voucher_vals = { + 'type': line['type'] == 'supplier' and 'payment' or 'receipt', + 'name': line_name, + 'date': line['val_date'], + 'journal_id': statement['journal_id'], + 'account_id': journal.default_credit_account_id.id, + 'line_cr_ids': line_cr_ids, + 'line_dr_ids': line_dr_ids, + 'pre_line': len(line_dr_ids) > 0 and True or False, + 'period_id': statement['period_id'], + 'currency_id': journal.currency and journal.currency.id or journal.company_id.currency_id.id, + 'company_id': journal.company_id.id, + 'state': 'draft', 'amount': abs(line['amount']), - }) - voucher_line_obj.create(cr, uid, voucher_line_vals, context=context) + 'reference': line['ref'], + 'number': statement['name'] + '/' + str(st_line_seq), + 'partner_id': line['partner_id'], + } + + #_logger.warn('voucher_vals=%s, context=%s', voucher_vals, context) + context['journal_id'] = journal.id # add journal to context for __get_payment_rate_currency method + if line_cr_ids or line_dr_ids: + voucher_id = voucher_obj.create(cr, uid, voucher_vals, context=context) + else: + raise osv.except_osv(_('Error!'), _("Reconcile error while processing line with ref '%s' ! " \ + "\nPlease report this issue via your OpenERP support channel.") % line['ref']) + + # override default account mapping by mappings defined in rules engine + if statement['account_mapping_ids']: + kwargs = { + 'coda_bank_account_id': statement['coda_bank_account_id'], + 'trans_type_id': line['trans_type_id'], + 'trans_family_id': line['trans_family_id'], + 'trans_code_id': line['trans_code_id'], + 'trans_category_id': line['trans_category_id'], + 'struct_comm_type_id': line['struct_comm_type_id'], + 'partner_id': line['partner_id'], + 'context': context, + } + account_id = account_mapping_obj.account_id_get(cr, uid, **kwargs) + if account_id: + line['account_id'] = account_id + + st_line_vals = { + 'ref': line['ref'], + 'name': line_name, + 'type' : line['type'], + 'val_date' : line['val_date'], + 'date': line['entry_date'], + 'amount': line['amount'], + 'partner_id': line['partner_id'] or 0, + 'counterparty_name': line['counterparty_name'], + 'counterparty_bic': line['counterparty_bic'], + 'counterparty_number': line['counterparty_number'], + 'counterparty_currency': line['counterparty_currency'], + 'account_id': line['account_id'], + 'globalisation_id': line['globalisation_id'], + 'payment_reference': line['payment_reference'], + 'statement_id': bk_st_id, + 'voucher_id': voucher_id, + 'note': line_note, + } + + st_lines_vals = self._st_line_hook(cr, uid, statement['coda_bank_params'], st_line_vals, context=context) + if not st_lines_vals: + # removal of lines by the _coda_parsing_hook currently not supported : + # this qould require resequencing/renaming of linked vouchers & moves as well as removal of associated voucher/moves + err_string += _('\nError in _st_line_hook while processing CODA Statement %s for Bank Account %s!') \ + % (statement['coda_seq_number'], (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description'])) + nb_err += 1 + for st_line_vals in st_lines_vals: + # To DO : update sequence of statement lines and naming of associated vouchers/moves when the hook returns multiple lines + st_line_vals.update({'sequence': st_line_seq}) + bank_st_line_id = bank_st_line_obj.create(cr, uid, st_line_vals, context=context) + if st_line_vals['voucher_id']: + voucher = voucher_obj.browse(cr, uid, st_line_vals['voucher_id'], context=context) + move_line = move_line_obj.browse(cr, uid, line['reconcile'], context=context) + if line['amount'] == (line['amount'] > 0 and move_line.debit or -move_line.credit): + wf_service.trg_validate(uid, 'account.voucher', st_line_vals['voucher_id'], 'proforma_voucher', cr) + if voucher.move_id: + move_line_obj.write(cr, uid, [x.id for x in voucher.move_ids], {'statement_id': bk_st_id}, context=context) - bank_st_line_id = bank_st_line_obj.create(cr, uid, { - 'sequence': st_line_seq, - 'ref': line['ref'], - 'name': line_name, - 'type' : line['type'], - 'val_date' : line['val_date'], - 'date': line['entry_date'], - 'amount': line['amount'], - 'partner_id': line['partner_id'] or 0, - 'counterparty_name': line['counterparty_name'], - 'counterparty_bic': line['counterparty_bic'], - 'counterparty_number': line['counterparty_number'], - 'counterparty_currency': line['counterparty_currency'], - 'account_id': line['account_id'], - 'globalisation_id': line['globalisation_id'], - 'statement_id': bk_st_id, - 'voucher_id': voucher_id, - 'note': line_note, - }) # end 'for x in lines' coda_st_obj.write(cr, uid, [coda_st_id], {}, context=context) # calculate balance st_balance = coda_st_obj.read(cr, uid, coda_st_id, ['balance_end', 'balance_end_real'], context=context) if st_balance['balance_end'] <> st_balance['balance_end_real']: - err_string += _('\nIncorrect ending Balance in CODA Statement %s for Bank Account %s.') \ + err_string += _('\nIncorrect ending Balance in CODA Statement %s for Bank Account %s!') \ % (statement['coda_seq_number'], (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description'])) if statement['type'] == 'normal': nb_err += 1 break else: statement['coda_parsing_note'] += '\n' + err_string - - if statement['type'] == 'normal': - bank_st_obj.button_dummy(cr, uid, [bk_st_id], context=context) # calculate balance + + if statement['type'] == 'normal': + bank_st_obj.button_dummy(cr, uid, [bk_st_id], context=context) # calculate balance journal_name = journal.name else: journal_name = _('None') @@ -879,33 +1273,38 @@ class account_coda_import(osv.osv_memory): %(journal_name, coda_version, statement['coda_seq_number'], - statement['paper_seq_number'], + statement['paper_nb_seq_number'], (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description']), statement['acc_holder'], statement['date'], float(statement['balance_start']), float(statement['balance_end_real']), - statement['coda_parsing_note']) + statement['coda_parsing_note'] % {'name':coda_statement['name']}) + if statement.get('separate_application') != '00000': + coda_note += _('\nCode Separate Application: %s') %statement['separate_application'] \ except osv.except_osv, e: cr.rollback() nb_err += 1 err_string += _('\nError ! ') + str(e) tb = ''.join(format_exception(*exc_info())) - _logger.error('Application Error while processing Statement %s\n%s' % (statement.get('name', '/'),tb)) + _logger.error('Application Error while processing Statement %s\n%s', + statement.get('name', '/'), tb) except Exception, e: cr.rollback() nb_err += 1 err_string += _('\nSystem Error : ') + str(e) tb = ''.join(format_exception(*exc_info())) - _logger.error('System Error while processing Statement %s\n%s' % (statement.get('name', '/'),tb)) + _logger.error('System Error while processing Statement %s\n%s', + statement.get('name', '/'),tb) except : cr.rollback() nb_err += 1 err_string = _('\nUnknown Error : ') + str(e) tb = ''.join(format_exception(*exc_info())) - _logger.error('Unknown Error while processing Statement %s\n%s' % (statement.get('name', '/'),tb)) + _logger.error('Unknown Error while processing Statement %s\n%s', + statement.get('name', '/'),tb) # end 'for statement in coda_statements' - + coda_note_header = _('CODA File is Imported :') coda_note_footer = _('\n\nNumber of statements : ') + str(len(coda_st_ids)) err_log = err_log + _('\nNumber of errors : ') + str(nb_err) + '\n' @@ -921,13 +1320,13 @@ class account_coda_import(osv.osv_memory): if batch: err_code = 'G0002' return (err_code, err_string) - raise osv.except_osv(_('CODA Import failed.'), err_string) - + raise osv.except_osv(_('CODA Import failed !'), err_string) + context.update({ 'bk_st_ids': bk_st_ids}) model_data_ids = mod_obj.search(cr, uid, [('model', '=', 'ir.ui.view'), ('name', '=', 'account_coda_import_result_view')], context=context) resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id'] self.write(cr, uid, ids, {'note': note}, context=context) - + return { 'name': _('Import CODA File result'), 'res_id': ids[0], @@ -941,10 +1340,26 @@ class account_coda_import(osv.osv_memory): 'type': 'ir.actions.act_window', } + def _statement_hook(self, cr, uid, coda_bank_params, st_vals, context=None): + """ + Use this method to take customer specific actions based upon the bank statement data. + Returns: + st_hook_error : False or string with error message + st_vals + """ + return False, st_vals + + def _st_line_hook(self, cr, uid, coda_bank_params, st_line_vals, context=None): + """ + Use this method to adapt the statement line created by the + CODA parsing to customer specific needs. + """ + return [st_line_vals] + def action_open_coda_statements(self, cr, uid, ids, context=None): if context is None: context = {} - module, xml_id = 'l10n_be_coda', 'action_coda_bank_statements' + module, xml_id = 'account_coda', 'action_coda_bank_statements' res_model, res_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, module, xml_id) action = self.pool.get('ir.actions.act_window').read(cr, uid, res_id, context=context) domain = eval(action.get('domain') or '[]') @@ -962,11 +1377,21 @@ class account_coda_import(osv.osv_memory): domain += [('id','in', context.get('bk_st_ids', False))] action.update({'domain': domain}) return action - + account_coda_import() +def repl_special(s): + s = s.replace("\'", "\'" + "'") + return s + def str2date(date_str): - return time.strftime('%Y-%m-%d', time.strptime(date_str,'%d%m%y')) + try: + return time.strftime('%Y-%m-%d', time.strptime(date_str,'%d%m%y')) + except: + return False + +def str2time(time_str): + return time_str[:2] + ':' + time_str[2:] def str2float(str): try: @@ -975,9 +1400,517 @@ def str2float(str): return 0.0 def list2float(lst): - try: - return str2float((lambda s : s[:-3] + '.' + s[-3:])(lst)) - except: - return 0.0 + try: + return str2float((lambda s : s[:-3] + '.' + s[-3:])(lst)) + except: + return 0.0 -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +def number2float(s, d): + try: + return float(s[:len(s)-d] + '.' + s[len(s)-d:]) + except: + return False + +def _get_acc_numbers(acc_number): + #TODO this method is needed because the iban and bank account fields have been merged together. But sometimes we + # need to retrieve the normal bank account from the IBAN. This should be globalized and defined as a method on the + # bank account class. Each country part of the IBAN area should define its own code to do so. + acc_number = acc_number.replace(' ', '') + if acc_number.lower().startswith('be'): + return [acc_number[4:], acc_number] + return [acc_number] + +from base_iban.base_iban import _ref_iban, _format_iban + +def calc_iban_checksum(country, bban): + bban = bban.replace(' ', '').upper() + country.upper() + '00' + base = '' + for c in bban: + if c.isdigit(): + base += c + else: + base += str(ord(c) - ord('A') + 10) + kk = 98 - int(base) % 97 + return str(kk).rjust(2, '0') + +def check_bban(country, bban): + if country == 'BE': + try: + int(bban) + except: + return False + if len(bban) != 12: + return False + return True + +def check_iban(iban): + """ + Check the IBAN number (logic partially based upon base_iban module, cf. is_iban_valid method) + """ + iban = _format_iban(iban).lower() + if iban[:2] not in _ref_iban: + return False + if len(iban) != len(_format_iban(_ref_iban[iban[:2]])): + return False + #the four first digits have to be shifted to the end + iban = iban[4:] + iban[:4] + #letters have to be transformed into numbers (a = 10, b = 11, ...) + iban2 = "" + for char in iban: + if char.isalpha(): + iban2 += str(ord(char)-87) + else: + iban2 += char + #iban is correct if modulo 97 == 1 + return int(iban2) % 97 == 1 + +def get_bank(self, cr, uid, bic, iban): + + country_obj = self.pool.get('res.country') + bank_obj = self.pool.get('res.bank') + + bank_id = False + bank_name = False + feedback = False + bank_country = iban[:2] + try: + bank_country_id = country_obj.search(cr, uid, [('code', '=', bank_country)])[0] + except: + feedback = _("\n Bank lookup failed due to missing Country definition for Country Code '%s' !") \ + % (bank_country) + else: + if iban[:2] == 'BE' and 'code' in bank_obj.fields_get_keys(cr, uid): + # To DO : extend for other countries + bank_code = iban[4:7] + if bic: + bank_ids = bank_obj.search(cr, uid, [('bic', '=', bic), ('code', '=', bank_code), ('country', '=', bank_country_id)]) + if bank_ids: + bank_id = bank_ids[0] + else: + bank_id = bank_obj.create(cr, uid, { + 'name': bic, + 'code': bank_code, + 'bic': bic, + 'country': bank_country_id, + }) + else: + bank_ids = bank_obj.search(cr, uid, [('code', '=', bank_code), ('country', '=', bank_country_id)]) + if bank_ids: + bank_id = bank_ids[0] + bank_data = bank_obj.read(cr, uid, bank_id, fields=['bic', 'name']) + bic = bank_data['bic'] + bank_name = bank_data['name'] + else: + country = country_obj.browse(cr, uid, bank_country_id) + feedback = _("\n Bank lookup failed. Please define a Bank with Code '%s' and Country '%s' !") \ + % (bank_code, country.name) + else: + if not bic: + feedback = _("\n Bank lookup failed due to missing BIC in Bank Statement for IBAN '%s' !") \ + % (iban) + else: + bank_ids = bank_obj.search(cr, uid, [('bic', '=', bic), ('country', '=', bank_country_id)]) + if not bank_ids: + bank_name = bic + bank_id = bank_obj.create(cr, uid, { + 'name': bank_name, + 'bic': bic, + 'country': bank_country_id, + }) + else: + bank_id = bank_ids[0] + + return bank_id, bic, bank_name, feedback + +def update_partner_bank(self, cr, uid, bic, iban, partner_id, counterparty_name): + partner_bank_obj = self.pool.get('res.partner.bank') + bank_id = False + feedback = False + if check_iban(iban): + bank_id, bic, bank_name, feedback = get_bank(self, cr, uid, bic, iban) + if not bank_id: + return feedback + else: + bban = iban + #convert belgian BBAN numbers to IBAN + if check_bban('BE', iban): + kk = calc_iban_checksum('BE', iban) + iban = 'BE' + kk + iban + bank_id, bic, bank_name, feedback = get_bank(self, cr, uid, bic, iban) + if not bank_id: + return feedback + + if bank_id: + partner_bank_id = partner_bank_obj.create(cr, uid, { + 'partner_id': partner_id, + 'name': counterparty_name, + 'bank': bank_id, + 'state': 'iban', + 'bank_bic': bic, + 'bank_name': bank_name, + 'acc_number': iban, + }) + return feedback + +indent = '\n' + 8*' ' +st_line_name_families = ['13', '35', '41', '80'] +parse_comms_move = ['100', '101', '102', '103', '105', '106', '107', '108', '111', '113', '114', '115', '121', '122', '123', '124', '125', '126', '127'] +parse_comms_info = ['001', '002', '004', '005', '006', '007', '107', '008', '009', '010', '011'] + +def get_st_line_name(line, context): + #_logger.warn('get_st_line_name - entry').warn('ref = %s, family = %s, code = %s, categ = %s', line['ref'], line['trans_family'], line['trans_code'], line['trans_category']) + st_line_name = line['name'] + + if line['trans_family'] == '35' and line['trans_code'] in ['01', '37']: + st_line_name = ', '.join([_('Closing'), line['trans_code_desc'], line['trans_category_desc']]) + + if line['trans_family'] in ['13', '41']: + st_line_name = ', '.join([line['trans_family_desc'], line['trans_code_desc'], line['trans_category_desc']]) + + if line['trans_family'] in ['80']: + st_line_name = ', '.join([line['trans_code_desc'], line['trans_category_desc']]) + + return st_line_name + +def parse_comm_move(self, cr, uid, line, comm_type_table, context): + #_logger.warn('parse_comm_move - entry, ref = %s, family = %s, code = %s, categ = %s, comm_type = %s, name = %s', line['ref'], line['trans_family'], line['trans_code'], line['trans_category'], line['struct_comm_type'], line['name']) + comm_type = line['struct_comm_type'] + comm = st_line_comm = line['communication'] + st_line_name = line['name'] + + if comm_type in ['115', '121', '122', '126']: + _logger.warn('The parsing of Structured Commmunication Type %s has not yet been implemented. ' \ + 'Please contact Noviat (info@noviat.be) for more information about the development roadmap', comm_type) + + if comm_type == '100': + st_line_name = _('Payment with ISO 11649 structured format communication') + st_line_comm = '\n' + indent + _('Payment with a structured format communication applying the ISO standard 11649') + ':' + st_line_comm += indent + _('Structured creditor reference to remittance information') + st_line_comm += indent + comm + + if comm_type in ['101', '102']: + st_line_name = st_line_comm = '+++' + comm[0:3] + '/' + comm[3:7] + '/' + comm[7:12] + '+++' + + if comm_type == '103': + st_line_name = ', '.join([line['trans_family_desc'], _('Number')]) + st_line_comm = comm + + if comm_type == '105': + st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] + amount_1 = list2float(comm[0:15]) + amount_2 = list2float(comm[15:30]) + rate = number2float(comm[30:42], 8) + currency = comm[42:45] + struct_format_comm = comm[45:57].strip() + country_code = comm[57:59] + amount_3 = list2float(comm[59:74]) + st_line_comm = '\n' + indent + st_line_name + indent + _('Gross amount in the currency of the account') + ': %.2f' % amount_1 + st_line_comm += indent + _('Gross amount in the original currency') + ': %.2f' % amount_2 + st_line_comm += indent + _('Rate') + ': %.4f' % rate + st_line_comm += indent + _('Currency') + ': %s' % currency + st_line_comm += indent + _('Structured format communication') + ': %s' % struct_format_comm + st_line_comm += indent + _('Country code of the principal') + ': %s' % country_code + st_line_comm += indent + _('Equivalent in EUR') + ': %.2f' % amount_3 + + if comm_type == '106': + if not st_line_name and line['trans_family'] not in st_line_name_families: + st_line_name = _('VAT, withholding tax on income, commission, etc.') + interest = comm[30:42].strip('0') + st_line_comm = '\n' + indent + st_line_name + indent + _('Equivalent in the currency of the account') + ': %.2f' % list2float(comm[0:15]) + st_line_comm += indent + _('Amount on which % is calculated') + ': %.2f' % list2float(comm[15:30]) + st_line_comm += indent + _('Percent') + ': %.4f' % number2float(comm[30:42], 8) + st_line_comm += indent + (comm[42] == 1 and _('Minimum applicable') or _('Minimum not applicable')) + st_line_comm += indent + _('Equivalent in EUR') + ': %.2f' % list2float(comm[43:58]) + + if comm_type == '107': + paid_refusals = { + '0': _('paid'), + '1': _('direct debit cancelled or nonexistent'), + '2': _('refusal - other reason'), + 'D': _('payer disagrees'), + 'E': _('direct debit number linked to another identification number of the creditor')} + st_line_name = _('Direct debit - DOM\'80') + direct_debit_number = comm[0:12].strip() + pivot_date = str2date(comm[12:18]) + comm_zone = comm[18:48] + paid_refusal = paid_refusals.get(comm[48], '') + creditor_number = comm[49:60].strip() + st_line_comm = '\n' + indent + st_line_name + indent + _('Direct Debit Number') + ': %s' % direct_debit_number + st_line_comm += indent + _('Central (Pivot) Date') + ': %s' % pivot_date + st_line_comm += indent + _('Communication Zone') + ': %s' % comm_zone + st_line_comm += indent + _('Paid or reason for refusal') + ': %s' % paid_refusal + st_line_comm += indent + _("Creditor's Number") + ': %s' % creditor_number + + if comm_type == '108': + st_line_name = _('Closing, period from %s to %s') % (str2date(comm[42:48]), str2date(comm[48:54])) + interest = comm[30:42].strip('0') + st_line_comm = '\n' + indent + st_line_name + indent + _('Equivalent in the currency of the account') + ': %.2f' % list2float(comm[0:15]) + if interest: + st_line_comm += indent + _('Interest rates, calculation basis') + ': %.2f' % list2float(comm[15:30]) + \ + indent + _('Interest') + ': %.2f' % list2float(comm[30:42]) + + if comm_type =='111': + card_schemes = { + '1': 'Bancontact/Mister Cash', + '2': _('Private'), + '3': 'Maestro', + '5': 'TINA', + '9': _('Other')} + trans_types = { + '1': _('Withdrawal'), + '2': _('Cumulative on network'), + '7': _('Distribution sector'), + '8': _('Teledata'), + '9': _('Fuel')} + st_line_name = _('POS credit - globalisation') + card_scheme = card_schemes.get(comm[0], '') + pos_number = comm[1:7].strip() + period_number = comm[7:10].strip() + first_sequence_number = comm[10:16].strip() + trans_first_date = str2date(comm[16:22]) + last_sequence_number = comm[22:28].strip() + trans_last_date = str2date(comm[28:34]) + trans_type = trans_types.get(comm[34], '') + terminal_name = comm[35:50].strip() + terminal_city = comm[51:60].strip() + st_line_comm = '\n' + indent + st_line_name + indent + _('Card Scheme') + ': %s' % card_scheme + st_line_comm += indent + _('POS Number') + ': %s' % pos_number + st_line_comm += indent + _('Period Number') + ': %s' % period_number + st_line_comm += indent + _('First Transaction Sequence Number') + ': %s' % first_sequence_number + st_line_comm += indent + _('Date of first transaction') + ': %s' % trans_first_date + st_line_comm += indent + _('Last Transaction Sequence Number') + ': %s' % last_sequence_number + st_line_comm += indent + _('Date of last transaction') + ': %s' % trans_last_date + st_line_comm += indent + _('Transaction Type') + ': %s' % trans_type + st_line_comm += indent + _('Terminal Identification') + ': %s' % terminal_name + ', ' + terminal_city + + if comm_type == '113': + card_schemes = { + '1': 'Bancontact/Mister Cash', + '2': 'Maestro', + '3': _('Private'), + '9': _('Other')} + trans_types = { + '1': _('Withdrawal'), + '2': _('Proton loading'), + '3': _('Reimbursement Proton balance'), + '4': _('Reversal of purchases'), + '7': _('Distribution sector'), + '8': _('Teledata'), + '9': _('Fuel')} + product_codes = { + '01': _('premium with lead substitute'), + '02': _('europremium'), + '03': _('diesel'), + '04': _('LPG'), + '06': _('premium plus 98 oct'), + '07': _('regular unleaded'), + '08': _('domestic fuel oil'), + '09': _('lubricants'), + '10': _('petrol'), + '11': _('premium 99+'), + '12': _('Avgas'), + '16': _('other types'), + } + st_line_name = _('ATM/POS debit') + card_number = comm[0:16].strip() + card_scheme = card_schemes.get(comm[16], '') + terminal_number = comm[17:23].strip() + sequence_number = comm[23:29].strip() + trans_date = comm[29:35].strip() and str2date(comm[29:35]) or '' + trans_hour = comm[35:39].strip() and str2time(comm[35:39]) or '' + trans_type = trans_types.get(comm[39], '') + terminal_name = comm[40:56].strip() + terminal_city = comm[56:66].strip() + orig_amount = comm[66:81].strip() and list2float(comm[66:81]) + rate = number2float(comm[81:93], 8) + currency = comm[93:96] + volume = number2float(comm[96:101], 2) + product_code = product_codes.get(comm[101:103], '') + unit_price = number2float(comm[103:108], 2) + st_line_comm = '\n' + indent + st_line_name + indent + _('Card Number') + ': %s' % card_number + st_line_comm += indent + _('Card Scheme') + ': %s' % card_scheme + if terminal_number: + st_line_comm += indent + _('Terminal Number') + ': %s' % terminal_number + st_line_comm += indent + _('Transaction Sequence Number') + ': %s' % sequence_number + st_line_comm += indent + _('Time') + ': %s' % trans_date + ' ' + trans_hour + st_line_comm += indent + _('Transaction Type') + ': %s' % trans_type + st_line_comm += indent + _('Terminal Identification') + ': %s' % terminal_name + ', ' + terminal_city + if orig_amount: + st_line_comm += indent + _('Original Amount') + ': %.2f' % orig_amount + st_line_comm += indent + _('Rate') + ': %.4f' % rate + st_line_comm += indent + _('Currency') + ': %s' % currency + if volume: + st_line_comm += indent + _('Volume') + ': %.2f' % volume + if product_code: + st_line_comm += indent + _('Product Code') + ': %s' % product_code + if unit_price: + st_line_comm += indent + _('Unit Price') + ': %.2f' % unit_price + + if comm_type == '114': + card_schemes = { + '1': 'Bancontact/Mister Cash', + '2': 'Maestro', + '3': _('Private'), + '5': 'TINA', + '9': _('Other')} + trans_types = { + '1': _('Withdrawal'), + '7': _('Distribution sector'), + '8': _('Teledata'), + '9': _('Fuel')} + st_line_name = _('POS credit - individual transaction') + card_scheme = card_schemes.get(comm[0], '') + pos_number = comm[1:7].strip() + period_number = comm[7:10].strip() + sequence_number = comm[10:16].strip() + trans_date = str2date(comm[16:22]) + trans_hour = str2time(comm[22:26]) + trans_type = trans_types.get(comm[26], '') + terminal_name = comm[27:43].strip() + terminal_city = comm[43:53].strip() + trans_reference = comm[53:69].strip() + st_line_comm = '\n' + indent + st_line_name + indent + _('Card Scheme') + ': %s' % card_scheme + st_line_comm += indent + _('POS Number') + ': %s' % pos_number + st_line_comm += indent + _('Period Number') + ': %s' % period_number + st_line_comm += indent + _('Transaction Sequence Number') + ': %s' % sequence_number + st_line_comm += indent + _('Time') + ': %s' % trans_date + ' ' + trans_hour + st_line_comm += indent + _('Transaction Type') + ': %s' % trans_type + st_line_comm += indent + _('Terminal Identification') + ': %s' % terminal_name + ', ' + terminal_city + st_line_comm += indent + _('Transaction Reference') + ': %s' % trans_reference + + if comm_type == '123': + starting_date = str2date(comm[0:6]) + maturity_date = comm[6:12] == '999999' and _('guarantee without fixed term') or str2date(comm[0:6]) + basic_amount = list2float(comm[12:27]) + percent = number2float(comm[27:39], 8) + term = comm[39:43].lstrip('0') + minimum = comm[43] == '1' and True or False + guarantee_number = comm[44:57].strip() + st_line_comm = '\n' + indent + st_line_name + indent + _('Starting Date') + ': %s' % starting_date + st_line_comm += indent + _('Maturity Date') + ': %s' % maturity_date + st_line_comm += indent + _('Basic Amount') + ': %.2f' % basic_amount + st_line_comm += indent + _('Percentage') + ': %.4f' % percent + st_line_comm += indent + _('Term in days') + ': %s' % term + st_line_comm += indent + (minimum and _('Minimum applicable') or _('Minimum not applicable')) + st_line_comm += indent + _('Guarantee Number') + ': %s' % guarantee_number + + if comm_type == '124': + card_issuers = { + '1': 'Mastercard', + '2': 'Visa', + '3': 'American Express', + '4': 'Diners Club', + '9': _('Other')} + st_line_name = _('Settlement credit cards') + card_number = comm[0:20].strip() + card_issuer = card_issuers.get(comm[20], '') + invoice_number = comm[21:33].strip() + identification_number = comm[33:48].strip() + date = comm[48:54].strip() and str2date(comm[48:54]) or '' + st_line_comm = '\n' + indent + st_line_name + indent + _('Card Number') + ': %s' % card_number + st_line_comm += indent + _('Issuing Institution') + ': %s' % card_issuer + st_line_comm += indent + _('Invoice Number') + ': %s' % invoice_number + st_line_comm += indent + _('Identification Number') + ': %s' % identification_number + st_line_comm += indent + _('Date') + ': %s' % date + + if comm_type == '125': + if line['trans_family'] not in st_line_name_families: + st_line_name = _('Credit') + credit_account = comm[0:27].strip() + if check_bban('BE', credit_account): + credit_account = '-'.join([credit_account[:3], credit_account[3:10], credit_account[10:]]) + old_balance = list2float(comm[27:42]) + new_balance = list2float(comm[42:57]) + amount = list2float(comm[57:72]) + currency = comm[72:75] + start_date = str2date(comm[75:81]) + end_date = str2date(comm[81:87]) + rate = number2float(comm[87:99], 8) + trans_reference = comm[99:112].strip() + st_line_comm = '\n' + indent + st_line_name + indent + _('Credit Account Number') + ': %s' % credit_account + st_line_comm += indent + _('Old Balance') + ': %.2f' % old_balance + st_line_comm += indent + _('New Balance') + ': %.2f' % new_balance + st_line_comm += indent + _('Amount') + ': %.2f' % amount + st_line_comm += indent + _('Currency') + ': %s' % currency + st_line_comm += indent + _('Starting Date') + ': %s' % start_date + st_line_comm += indent + _('End Date') + ': %s' % end_date + st_line_comm += indent + _('Nominal Interest Rate or Rate of Charge') + ': %.4f' % rate + st_line_comm += indent + _('Transaction Reference') + ': %s' % trans_reference + + if comm_type == '127': + direct_debit_types = { + '0': _('unspecified'), + '1': _('recurrent'), + '2': _('one-off'), + '3': _('1-st (recurrent)'), + '4': _('last (recurrent)')} + direct_debit_schemes = { + '0': _('unspecified'), + '1': _('SEPA core'), + '2': _('SEPA B2B')} + paid_refusals = { + '0': _('paid'), + '1': _('technical problem'), + '2': _('refusal - reason not specified'), + '3': _('debtor disagrees'), + '4': _('debtor\'s account problem')} + R_types = { + '0': _('paid'), + '1': _('reject'), + '2': _('return'), + '3': _('refund'), + '4': _('reversal'), + '5': _('cancellation')} + st_line_name = _('European direct debit (SEPA)') + settlement_date = str2date(comm[0:6]) + direct_debit_type = direct_debit_types.get(comm[6], '') + direct_debit_scheme = direct_debit_schemes.get(comm[7], '') + paid_refusal = paid_refusals.get(comm[8], '') + creditor_id = comm[9:44].strip() + mandate_ref = comm[44:79].strip() + comm_zone = comm[79:141] + R_type = R_types.get(comm[141], '') + reason = comm[142:146].strip() + st_line_comm = '\n' + indent + st_line_name + indent + _('Settlement_Date') + ': %s' % settlement_date + st_line_comm += indent + _('Direct Debit Type') + ': %s' % direct_debit_type + st_line_comm += indent + _('Direct Debit Scheme') + ': %s' % direct_debit_scheme + st_line_comm += indent + _('Paid or reason for refusal') + ': %s' % paid_refusal + st_line_comm += indent + _('Creditor\'s Identification Code') + ': %s' % creditor_id + st_line_comm += indent + _('Mandate Reference') + ': %s' % mandate_ref + st_line_comm += indent + _('Communication') + ': %s' % comm_zone + st_line_comm += indent + _('R transaction Type') + ': %s' % R_type + st_line_comm += indent + _('Reason') + ': %s' % reason + + return st_line_name, st_line_comm + +def parse_comm_info(self, cr, uid, line, comm_type_table, context): + comm_type = line['struct_comm_type'] + comm = st_line_comm = line['communication'] + st_line_name = line['name'] + + if comm_type == '001': + st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] + st_line_comm = '\n' + indent + st_line_name + indent + _('Name') + ': %s' % comm[0:70].strip() + st_line_comm += indent + _('Street') + ': %s' % comm[70:105].strip() + st_line_comm += indent + _('Locality') + ': %s' % comm[105:140].strip() + st_line_comm += indent + _('Identification Code') + ': %s' % comm[140:175].strip() + + if comm_type in ['002', '004', '005']: + st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] + st_line_comm = comm.strip() + + if comm_type == '006': + amount_sign = comm[48] + amount = (comm[48] == '1' and '-' or '') + ('%.2f' % list2float(comm[33:48])) + ' ' + comm[30:33] + st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] + st_line_comm = '\n' + indent + st_line_name + indent + _('Description of the detail') + ': %s' % comm[0:30].strip() + st_line_comm += indent + _('Amount') + ': %s' % amount + st_line_comm += indent + _('Category') + ': %s' % comm[49:52].strip() + + if comm_type not in ['001', '002', '004', '005', '006']: + _logger.warn('The parsing of Structured Commmunication Type %s has not yet been implemented. ' \ + 'Please contact Noviat (info@noviat.be) for more information about the development roadmap', comm_type) + + return st_line_name, st_line_comm + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file From d963fb81869b60044c69bb56b0511accbc249b86 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 30 Nov 2012 20:29:38 +0100 Subject: [PATCH 041/163] [FIX]Delete name_company_uniq constraint in bank statement bzr revid: dle@openerp.com-20121130192938-qj9wu6iztkg7helz --- addons/l10n_be_coda/l10n_be_coda.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py index f9dfa3a686a..f24536ab59f 100644 --- a/addons/l10n_be_coda/l10n_be_coda.py +++ b/addons/l10n_be_coda/l10n_be_coda.py @@ -347,9 +347,9 @@ class account_bank_statement(osv.osv): _columns = { 'coda_statement_id': fields.many2one('coda.bank.statement', 'Associated CODA Bank Statement'), } - _sql_constraints = [ - ('name_company_uniq', 'unique (name,company_id)', 'The name of the Bank Statement must be unique per company !') - ] + # _sql_constraints = [ + # ('name_company_uniq', 'unique (name,company_id)', 'The name of the Bank Statement must be unique per company !') + # ] def unlink(self, cr, uid, ids, context=None): if context is None: From 2bfd5ecdf750dfa4bcc1912ed9723e4228bc3ff5 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Mon, 3 Dec 2012 11:21:12 +0100 Subject: [PATCH 042/163] [FIX]Syntax according to sublime-linter, remove of unused variables bzr revid: dle@openerp.com-20121203102112-jsxy7th8v0bfolv4 --- addons/l10n_be_coda/l10n_be_coda.py | 200 +++--- addons/l10n_be_coda/res_bank.py | 5 +- .../wizard/account_coda_import.py | 586 +++++++++--------- 3 files changed, 406 insertions(+), 385 deletions(-) diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py index f24536ab59f..cc11c72cf06 100644 --- a/addons/l10n_be_coda/l10n_be_coda.py +++ b/addons/l10n_be_coda/l10n_be_coda.py @@ -2,9 +2,9 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# +# # Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. -# +# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the @@ -26,12 +26,13 @@ from tools.translate import _ import logging _logger = logging.getLogger(__name__) + class coda_bank_account(osv.osv): - _name= 'coda.bank.account' - _description= 'CODA Bank Account Configuration' + _name = 'coda.bank.account' + _description = 'CODA Bank Account Configuration' def _check_account_pain(self, cr, uid, context=None): - res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_pain'), ('state','=','installed')]) + res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_pain'), ('state', '=', 'installed')]) return res and True or False def _check_currency(self, cr, uid, ids, context=None): @@ -45,7 +46,7 @@ class coda_bank_account(osv.osv): _columns = { 'name': fields.char('Name', size=64, required=True), - 'bank_id': fields.many2one('res.partner.bank', 'Bank Account', required=True, + 'bank_id': fields.many2one('res.partner.bank', 'Bank Account', required=True, help='Bank Account Number.\nThe CODA import function will find its CODA processing parameters on this number.'), 'description1': fields.char('Primary Account Description', size=35, help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'), @@ -53,15 +54,15 @@ class coda_bank_account(osv.osv): help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'), 'state': fields.selection([ ('normal', 'Normal'), - ('info', 'Info')], + ('info', 'Info')], 'Type', required=True, select=1, help='No Bank Statements will be generated for CODA Bank Statements from Bank Accounts of type \'Info\'.'), - 'journal': fields.many2one('account.journal', 'Journal', - domain=[('type', '=', 'bank')], - states={'normal':[('required',True)],'info':[('required',False)]}, + 'journal': fields.many2one('account.journal', 'Journal', + domain=[('type', '=', 'bank')], + states={'normal': [('required', True)], 'info': [('required', False)]}, help='Bank Journal for the Bank Statement'), 'currency': fields.many2one('res.currency', 'Currency', required=True, - help='The currency of the CODA Bank Statement'), + help='The currency of the CODA Bank Statement'), 'coda_st_naming': fields.char('Bank Statement Naming Policy', size=64, help="Define the rules to create the name of the Bank Statements generated by the CODA processing." \ "\nE.g. %(code)s%(y)s/%(paper)s" \ @@ -73,14 +74,14 @@ class coda_bank_account(osv.osv): "\nPaper Statement sequence number (as specified on 'Old Balance' record): %(paper_ob)s" \ "\nPaper Statement sequence number (as specified on 'New Balance' record): %(paper)s"), 'awaiting_account': fields.many2one('account.account', 'Default Account for Unrecognized Movement', domain=[('type', '!=', 'view')], required=True, - help= 'Set here the default account that will be used if the partner cannot be unambiguously identified.'), + help='Set here the default account that will be used if the partner cannot be unambiguously identified.'), 'transfer_account': fields.many2one('account.account', 'Default Internal Transfer Account', domain=[('code', 'like', '58%'), ('type', '!=', 'view')], required=True, - help= 'Set here the default account that will be used for internal transfer between own bank accounts (e.g. transfer between current and deposit bank accounts).'), + help='Set here the default account that will be used for internal transfer between own bank accounts (e.g. transfer between current and deposit bank accounts).'), 'account_mapping_ids': fields.one2many('coda.account.mapping.rule', 'coda_bank_account_id', 'Account Mapping Rules'), - 'find_payment': fields.boolean('Lookup Payment Reference', + 'find_payment': fields.boolean('Lookup Payment Reference', help='Invoice lookup and reconciliation via the SEPA EndToEndReference.' \ '\nInstall the \'account_pain\' module if you want to take advantage of this feature.'), - 'find_bbacom': fields.boolean('Lookup Structured Communication of type \'BBA\'', + 'find_bbacom': fields.boolean('Lookup Structured Communication of type \'BBA\'', help='Partner lookup and reconciliation via the \'BBA\' Structured Communication.' \ '\nA partial reconciliation will be created when there is no exact match between the Invoice and Bank Transaction amounts.'), 'find_inv_number': fields.boolean('Lookup Invoice Number', @@ -93,22 +94,22 @@ class coda_bank_account(osv.osv): 'balance_start_enforce': fields.boolean('Prevent invalid Opening Balances', help="Do not process Statements with an Opening Balance that doesn't match the previous Closing Balance."), 'discard_dup': fields.boolean('Discard Duplicates', - help="Duplicate Bank Statements will be discarded. Select the corresponding 'CODA Bank Statement' in order to view the contents of such duplicates."), + help="Duplicate Bank Statements will be discarded. Select the corresponding 'CODA Bank Statement' in order to view the contents of such duplicates."), 'active': fields.boolean('Active', help='If the active field is set to False, it will allow you to hide the Bank Account without removing it.'), 'company_id': fields.many2one('res.company', 'Company', required=True), } _defaults = { - 'currency': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, + 'currency': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, 'state': 'normal', 'coda_st_naming': '%(code)s/%(y)s/%(coda)s', - 'active': True, + 'active': True, 'find_payment': _check_account_pain, 'find_bbacom': True, - 'find_inv_number': True, - 'find_partner': True, - 'update_partner': True, + 'find_inv_number': True, + 'find_partner': True, + 'update_partner': True, 'balance_start_enforce': True, - 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, + 'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, } _sql_constraints = [ ('account_uniq_1', 'unique (bank_id, description1, currency)', 'The combination of Bank Account, Account Description and Currency must be unique !'), @@ -133,42 +134,41 @@ class coda_bank_account(osv.osv): if not default: default = {} default = default.copy() - default.update({'journal_id': None}) + default.update({'journal_id': None}) default['description1'] = cba['description1'] or '' default['description2'] = cba['description2'] or '' default['name'] = (cba['name'] or '') + ' (copy)' - default['state'] = cba['state'] - return super(coda_bank_account, self).copy(cr, uid, id, default, context) + default['state'] = cba['state'] + return super(coda_bank_account, self).copy(cr, uid, id, default, context) def onchange_state(self, cr, uid, ids, state): - return state =='info' and {'value': {'journal': None}} or {} + return state == 'info' and {'value': {'journal': None}} or {} coda_bank_account() - class account_coda(osv.osv): _name = 'account.coda' _description = 'Object to store CODA Data Files' _order = 'coda_creation_date desc' _columns = { - 'name': fields.char('CODA Filename',size=128, readonly=True), + 'name': fields.char('CODA Filename', size=128, readonly=True), 'coda_data': fields.binary('CODA File', readonly=True), - 'statement_ids': fields.one2many('coda.bank.statement','coda_id','Generated CODA Bank Statements', readonly=True), + 'statement_ids': fields.one2many('coda.bank.statement', 'coda_id', 'Generated CODA Bank Statements', readonly=True), 'note': fields.text('Import Log', readonly=True), 'coda_creation_date': fields.date('CODA Creation Date', readonly=True, select=True), 'date': fields.date('Import Date', readonly=True, select=True), - 'user_id': fields.many2one('res.users','User', readonly=True, select=True), + 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True) } _defaults = { 'date': fields.date.context_today, - 'user_id': lambda self,cr,uid,context: uid, - 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.coda', context=c), - } + 'user_id': lambda self, cr, uid, context: uid, + 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.coda', context=c), + } _sql_constraints = [ ('coda_uniq', 'unique (name, coda_creation_date)', 'This CODA has already been imported !') - ] + ] def unlink(self, cr, uid, ids, context=None): if context is None: @@ -177,22 +177,23 @@ class account_coda(osv.osv): coda_st_obj = self.pool.get('coda.bank.statement') bank_st_obj = self.pool.get('account.bank.statement') for coda in self.browse(cr, uid, ids, context=context): - for coda_statement in coda.statement_ids: + for coda_statement in coda.statement_ids: if not context.get('coda_statement_unlink', False): if coda_st_obj.exists(cr, uid, coda_statement.id, context=context): - coda_st_obj.unlink(cr, uid, [coda_statement.id], context=context) + coda_st_obj.unlink(cr, uid, [coda_statement.id], context=context) if not context.get('bank_statement_unlink', False): if coda_st_obj.exists(cr, uid, coda_statement.id, context=context) and (coda_statement.type == 'normal') and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context): - bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) + bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) context.update({'coda_unlink': False}) return super(account_coda, self).unlink(cr, uid, ids, context=context) - + account_coda() -class account_coda_trans_type(osv.osv): + +class account_coda_trans_type(osv.osv): _name = 'account.coda.trans.type' _description = 'CODA transaction type' - _rec_name = 'type' + _rec_name = 'type' _columns = { 'type': fields.char('Transaction Type', size=1, required=True), 'parent_id': fields.many2one('account.coda.trans.type', 'Parent'), @@ -200,49 +201,53 @@ class account_coda_trans_type(osv.osv): } account_coda_trans_type() -class account_coda_trans_code(osv.osv): + +class account_coda_trans_code(osv.osv): _name = 'account.coda.trans.code' _description = 'CODA transaction code' - _rec_name = 'code' + _rec_name = 'code' _columns = { 'code': fields.char('Code', size=2, required=True, select=1), 'type': fields.selection([ ('code', 'Transaction Code'), - ('family', 'Transaction Family')], - 'Type', required=True, select=1), + ('family', 'Transaction Family')], + 'Type', required=True, select=1), 'parent_id': fields.many2one('account.coda.trans.code', 'Family', select=1), 'description': fields.char('Description', size=128, translate=True, select=2), 'comment': fields.text('Comment', translate=True), } account_coda_trans_code() -class account_coda_trans_category(osv.osv): + +class account_coda_trans_category(osv.osv): _name = 'account.coda.trans.category' _description = 'CODA transaction category' - _rec_name = 'category' + _rec_name = 'category' _columns = { 'category': fields.char('Transaction Category', size=3, required=True), 'description': fields.char('Description', size=256, translate=True), } account_coda_trans_category() -class account_coda_comm_type(osv.osv): + +class account_coda_comm_type(osv.osv): _name = 'account.coda.comm.type' _description = 'CODA structured communication type' - _rec_name = 'code' + _rec_name = 'code' _columns = { 'code': fields.char('Structured Communication Type', size=3, required=True, select=1), 'description': fields.char('Description', size=128, translate=True), } _sql_constraints = [ - ('code_uniq', 'unique (code)','The Structured Communication Code must be unique !') + ('code_uniq', 'unique (code)', 'The Structured Communication Code must be unique !') ] account_coda_comm_type() + class coda_bank_statement(osv.osv): - _name = 'coda.bank.statement' - _description = 'CODA Bank Statement' - + _name = 'coda.bank.statement' + _description = 'CODA Bank Statement' + def _default_journal_id(self, cr, uid, context={}): if context.get('journal_id', False): return context['journal_id'] @@ -276,16 +281,16 @@ class coda_bank_statement(osv.osv): 'coda_id': fields.many2one('account.coda', 'CODA Data File', ondelete='cascade'), 'type': fields.selection([ ('normal', 'Normal'), - ('info', 'Info')], + ('info', 'Info')], 'Type', required=True, readonly=True, help='No Bank Statements are associated with CODA Bank Statements of type \'Info\'.'), - 'statement_id': fields.many2one('account.bank.statement', 'Associated Bank Statement'), + 'statement_id': fields.many2one('account.bank.statement', 'Associated Bank Statement'), 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True, domain=[('type', '=', 'bank')]), - 'coda_bank_account_id': fields.many2one('coda.bank.account', 'Bank Account', readonly=True), + 'coda_bank_account_id': fields.many2one('coda.bank.account', 'Bank Account', readonly=True), 'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True), 'balance_start': fields.float('Starting Balance', digits_compute=dp.get_precision('Account'), readonly=True), 'balance_end_real': fields.float('Ending Balance', digits_compute=dp.get_precision('Account'), readonly=True), - 'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance'), + 'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance'), 'line_ids': fields.one2many('coda.bank.statement.line', 'statement_id', 'CODA Bank Statement lines', readonly=True), 'currency': fields.many2one('res.currency', 'Currency', required=True, readonly=True, @@ -293,14 +298,14 @@ class coda_bank_statement(osv.osv): 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), } _defaults = { - 'type': 'normal', - 'currency': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, + 'type': 'normal', + 'currency': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, 'journal_id': _default_journal_id, 'period_id': _get_period, } def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): - if context is None: + if context is None: context = {} res = super(coda_bank_statement, self).search(cr, uid, args=args, offset=offset, limit=limit, order=order, context=context, count=count) @@ -314,16 +319,16 @@ class coda_bank_statement(osv.osv): context.update({'coda_statement_unlink': True}) coda_obj = self.pool.get('account.coda') bank_st_obj = self.pool.get('account.bank.statement') - + # find all CODA bank statements that are associated with the selected CODA bank statements via a common CODA file - new_ids = [] + new_ids = [] for coda_statement in self.browse(cr, uid, ids, context=context): if coda_obj.exists(cr, uid, coda_statement.coda_id.id, context=context): new_ids += [x.id for x in coda_obj.browse(cr, uid, coda_statement.coda_id.id, context=context).statement_ids] - # unlink CODA banks statements as well as associated bank statements and CODA files + # unlink CODA banks statements as well as associated bank statements and CODA files for coda_statement in self.browse(cr, uid, new_ids, context=context): - if coda_statement.statement_id.state == 'confirm': + if coda_statement.statement_id.state == 'confirm': raise osv.except_osv(_('Invalid action !'), _("Cannot delete CODA Bank Statement '%s' of Journal '%s'." \ "\nThe associated Bank Statement has already been confirmed !" \ @@ -335,13 +340,14 @@ class coda_bank_statement(osv.osv): coda_obj.unlink(cr, uid, [coda_statement.coda_id.id], context=context) if not context.get('bank_statement_unlink', False): if coda_statement.statement_id and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context): - bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) + bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) context.update({'coda_statement_unlink': False}) return super(coda_bank_statement, self).unlink(cr, uid, new_ids, context=context) - + coda_bank_statement() + class account_bank_statement(osv.osv): _inherit = 'account.bank.statement' _columns = { @@ -350,7 +356,7 @@ class account_bank_statement(osv.osv): # _sql_constraints = [ # ('name_company_uniq', 'unique (name,company_id)', 'The name of the Bank Statement must be unique per company !') # ] - + def unlink(self, cr, uid, ids, context=None): if context is None: context = {} @@ -359,15 +365,15 @@ class account_bank_statement(osv.osv): coda_st_obj = self.pool.get('coda.bank.statement') # find all statements that are associated with the selected bank statements via a common CODA file - ids_plus = [] + ids_plus = [] for statement in self.browse(cr, uid, ids, context=context): if statement.coda_statement_id: for x in coda_obj.browse(cr, uid, statement.coda_statement_id.coda_id.id, context=context).statement_ids: if x.type == 'normal': ids_plus += [x.statement_id.id] - + # unlink banks statements as well as associated CODA bank statements and CODA files - for statement in self.browse(cr, uid, ids_plus, context=context): + for statement in self.browse(cr, uid, ids_plus, context=context): if not context.get('coda_statement_unlink', False): if statement.coda_statement_id and coda_st_obj.exists(cr, uid, statement.coda_statement_id.id, context=context): coda_st_obj.unlink(cr, uid, [statement.coda_statement_id.id], context=context) @@ -381,52 +387,54 @@ class account_bank_statement(osv.osv): context.update({'bank_statement_unlink': False}) new_ids = list(set(ids + ids_plus)) return super(account_bank_statement, self).unlink(cr, uid, new_ids, context=context) - + account_bank_statement() + class coda_bank_statement_line(osv.osv): - _name = 'coda.bank.statement.line' - _order = 'sequence' + _name = 'coda.bank.statement.line' + _order = 'sequence' _description = 'CODA Bank Statement Line' _columns = { 'name': fields.char('Communication', size=268, required=True), 'sequence': fields.integer('Sequence'), 'date': fields.date('Entry Date', required=True), - 'val_date': fields.date('Valuta Date'), - 'account_id': fields.many2one('account.account','Account'), + 'val_date': fields.date('Valuta Date'), + 'account_id': fields.many2one('account.account', 'Account'), 'type': fields.selection([ - ('supplier','Supplier'), - ('customer','Customer'), - ('general','General'), - ('globalisation','Globalisation'), - ('information','Information'), - ('communication','Free Communication'), + ('supplier', 'Supplier'), + ('customer', 'Customer'), + ('general', 'General'), + ('globalisation', 'Globalisation'), + ('information', 'Information'), + ('communication', 'Free Communication'), ], 'Type', required=True), - 'globalisation_level': fields.integer('Globalisation Level', + 'globalisation_level': fields.integer('Globalisation Level', help="The value which is mentioned (1 to 9), specifies the hierarchy level" " of the globalisation of which this record is the first." "\nThe same code will be repeated at the end of the globalisation."), - 'globalisation_amount': fields.float('Globalisation Amount', digits_compute=dp.get_precision('Account')), + 'globalisation_amount': fields.float('Globalisation Amount', digits_compute=dp.get_precision('Account')), 'globalisation_id': fields.many2one('account.bank.statement.line.global', 'Globalisation ID', readonly=True, - help="Code to identify transactions belonging to the same globalisation level within a batch payment"), + help="Code to identify transactions belonging to the same globalisation level within a batch payment"), 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')), 'partner_id': fields.many2one('res.partner', 'Partner'), 'counterparty_name': fields.char('Counterparty Name', size=35), - 'counterparty_bic': fields.char('Counterparty BIC', size=11), - 'counterparty_number': fields.char('Counterparty Number', size=34), - 'counterparty_currency': fields.char('Counterparty Currency', size=3), + 'counterparty_bic': fields.char('Counterparty BIC', size=11), + 'counterparty_number': fields.char('Counterparty Number', size=34), + 'counterparty_currency': fields.char('Counterparty Currency', size=3), 'payment_reference': fields.char('Payment Reference', size=35, help="Payment Reference. For SEPA (SCT or SDD) transactions, the PaymentInformationIdentification "\ "is recorded in this field pertaining to a globalisation, and the EndToEndReference for " \ - "simple transactions or for the details of a globalisation."), + "simple transactions or for the details of a globalisation."), 'statement_id': fields.many2one('coda.bank.statement', 'CODA Bank Statement', select=True, required=True, ondelete='cascade'), 'coda_bank_account_id': fields.related('statement_id', 'coda_bank_account_id', type='many2one', relation='coda.bank.account', string='Bank Account', store=True, readonly=True), 'ref': fields.char('Reference', size=32), 'note': fields.text('Notes'), - 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), + 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), } + #TODO : Check this function. account_bank_statement_line Seems undefined : ) def unlink(self, cr, uid, ids, context=None): if context is None: context = {} @@ -434,7 +442,8 @@ class coda_bank_statement_line(osv.osv): raise osv.except_osv('Warning', _('Delete operation not allowed !')) return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context) -coda_bank_statement_line() +coda_bank_statement_line() + class account_bank_statement_line_global(osv.osv): _inherit = 'account.bank.statement.line.global' @@ -443,6 +452,7 @@ class account_bank_statement_line_global(osv.osv): } account_bank_statement_line_global() + class coda_account_mapping_rule(osv.osv): _name = 'coda.account.mapping.rule' _description = 'Rules Engine to assign accounts during CODA parsing' @@ -450,7 +460,7 @@ class coda_account_mapping_rule(osv.osv): _columns = { 'coda_bank_account_id': fields.many2one('coda.bank.account', 'CODA Bank Account', ondelete='cascade'), 'sequence': fields.integer('Sequence', help='Determines the order of the rules to assign accounts'), - 'name': fields.char('Rule Name', size=128, required=True), + 'name': fields.char('Rule Name', size=128, required=True), # matching criteria 'trans_type_id': fields.many2one('account.coda.trans.type', 'Transaction Type'), 'trans_family_id': fields.many2one('account.coda.trans.code', 'Transaction Family', domain=[('type', '=', 'family')]), @@ -465,18 +475,18 @@ class coda_account_mapping_rule(osv.osv): _defaults = { 'active': True, } - - def account_id_get(self, cr, uid, coda_bank_account_id, trans_type_id=None, trans_family_id=None, - trans_code_id=None, trans_category_id=None, struct_comm_type_id=None, partner_id=None, context=None): + + def account_id_get(self, cr, uid, coda_bank_account_id, trans_type_id=None, trans_family_id=None, + trans_code_id=None, trans_category_id=None, struct_comm_type_id=None, partner_id=None, context=None): cr.execute('SELECT account_id, trans_type_id, trans_family_id, trans_code_id, trans_category_id, struct_comm_type_id, partner_id ' \ 'FROM coda_account_mapping_rule ' \ 'WHERE active = TRUE AND coda_bank_account_id = %s ' \ 'ORDER BY sequence' % coda_bank_account_id ) - rules = cr.fetchall() + rules = cr.fetchall() condition = '(not rule[1] or (trans_type_id == rule[1])) and (not rule[2] or (trans_family_id == rule[2])) ' \ 'and (not rule[3] or (trans_code_id == rule[3])) and (not rule[4] or (trans_category_id == rule[4])) ' \ - 'and (not rule[5] or (struct_comm_type_id == rule[5])) and (not rule[6] or (partner_id == rule[6]))' + 'and (not rule[5] or (struct_comm_type_id == rule[5])) and (not rule[6] or (partner_id == rule[6]))' account_id = None for rule in rules: if eval(condition): diff --git a/addons/l10n_be_coda/res_bank.py b/addons/l10n_be_coda/res_bank.py index 6a3581539e9..47e7fdf8569 100755 --- a/addons/l10n_be_coda/res_bank.py +++ b/addons/l10n_be_coda/res_bank.py @@ -2,9 +2,9 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# +# # Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. -# +# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the @@ -22,6 +22,7 @@ from osv import fields, osv + class res_bank(osv.osv): _inherit = 'res.bank' _columns = { diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 6f055ca3d92..ea7558e13da 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -2,9 +2,9 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# +# # Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. -# +# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the @@ -22,7 +22,7 @@ import time import base64 -from osv import fields,osv +from osv import fields, osv from tools.translate import _ import netsvc import re @@ -31,20 +31,21 @@ from sys import exc_info import logging _logger = logging.getLogger(__name__) + class account_coda_import(osv.osv_memory): _name = 'account.coda.import' _description = 'Import CODA File' _columns = { 'coda_data': fields.binary('CODA File', required=True), 'coda_fname': fields.char('CODA Filename', size=128, required=True), - 'note':fields.text('Log'), + 'note': fields.text('Log'), } _defaults = { 'coda_fname': lambda *a: '', } def _check_account_payment(self, cr, uid, context=None): - res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_payment'), ('state','=','installed')]) + res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_payment'), ('state', '=', 'installed')]) return res and True or False def coda_parsing(self, cr, uid, ids, context=None, batch=False, codafile=None, codafilename=None): @@ -54,15 +55,15 @@ class account_coda_import(osv.osv_memory): codafile = str(codafile) codafilename = codafilename else: - data=self.browse(cr,uid,ids)[0] + data = self.browse(cr, uid, ids)[0] try: codafile = data.coda_data - codafilename = data.coda_fname + codafilename = data.coda_fname except: raise osv.except_osv(_('Error!'), _('Wizard in incorrect state. Please hit the Cancel button!')) return {} - currency_obj = self.pool.get('res.currency') + currency_obj = self.pool.get('res.currency') coda_bank_account_obj = self.pool.get('coda.bank.account') trans_type_obj = self.pool.get('account.coda.trans.type') trans_code_obj = self.pool.get('account.coda.trans.code') @@ -78,29 +79,25 @@ class account_coda_import(osv.osv_memory): bank_st_line_obj = self.pool.get('account.bank.statement.line') glob_obj = self.pool.get('account.bank.statement.line.global') inv_obj = self.pool.get('account.invoice') - move_obj = self.pool.get('account.move') move_line_obj = self.pool.get('account.move.line') voucher_obj = self.pool.get('account.voucher') - voucher_line_obj = self.pool.get('account.voucher.line') seq_obj = self.pool.get('ir.sequence') mod_obj = self.pool.get('ir.model.data') - partner_obj = self.pool.get('res.partner') account_mapping_obj = self.pool.get('coda.account.mapping.rule') - + if self._check_account_payment(cr, uid): payment_line_obj = self.pool.get('payment.line') else: payment_line_obj = False - + wf_service = netsvc.LocalService('workflow') - be_country_id = self.pool.get('res.country').search(cr, uid, [('code', '=', 'BE')])[0] coda_bank_table = coda_bank_account_obj.read(cr, uid, coda_bank_account_obj.search(cr, uid, []), context=context) for coda_bank in coda_bank_table: coda_bank.update({'journal_code': coda_bank['journal'] and journal_obj.browse(cr, uid, coda_bank['journal'][0], context=context).code or ''}) coda_bank.update({'iban': partner_bank_obj.browse(cr, uid, coda_bank['bank_id'][0], context=context).iban}) coda_bank.update({'acc_number': partner_bank_obj.browse(cr, uid, coda_bank['bank_id'][0], context=context).acc_number}) - coda_bank.update({'currency_name': currency_obj.browse(cr, uid, coda_bank['currency'][0], context=context).name}) + coda_bank.update({'currency_name': currency_obj.browse(cr, uid, coda_bank['currency'][0], context=context).name}) trans_type_table = trans_type_obj.read(cr, uid, trans_type_obj.search(cr, uid, []), context=context) trans_code_table = trans_code_obj.read(cr, uid, trans_code_obj.search(cr, uid, []), context=context) trans_category_table = trans_category_obj.read(cr, uid, trans_category_obj.search(cr, uid, []), context=context) @@ -112,9 +109,9 @@ class account_coda_import(osv.osv_memory): coda_statements = [] recordlist = unicode(base64.decodestring(codafile), 'windows-1252', 'strict').split('\n') digits = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account') - + for line in recordlist: - + if not line: pass elif line[0] == '0': @@ -124,10 +121,10 @@ class account_coda_import(osv.osv_memory): coda_statement_lines = {} st_line_seq = 0 # header data - coda_statement['currency'] = 'EUR' # default currency + coda_statement['currency'] = 'EUR' # default currency coda_statement['version'] = line[127] coda_version = line[127] - if coda_version not in ['1','2']: + if coda_version not in ['1', '2']: err_string = _('\nCODA V%s statements are not supported, please contact your bank!') % coda_version err_code = 'R0001' if batch: @@ -137,10 +134,10 @@ class account_coda_import(osv.osv_memory): coda_statement['date'] = str2date(line[5:11]) coda_statement['coda_creation_date'] = str2date(line[5:11]) coda_statement['separate_application'] = line[83:88] - coda_statement['first_transaction_date'] = False + coda_statement['first_transaction_date'] = False coda_statement['state'] = 'draft' - - coda_id = coda_obj.search(cr, uid,[ + + coda_id = coda_obj.search(cr, uid, [ ('name', '=', codafilename), ('coda_creation_date', '=', coda_statement['date']), ]) @@ -151,7 +148,7 @@ class account_coda_import(osv.osv_memory): if batch: return (err_code, err_string) raise osv.except_osv(_('Warning !'), err_string) - + elif line[0] == '1': if coda_version == '1': coda_statement['acc_number'] = line[5:17] @@ -159,7 +156,7 @@ class account_coda_import(osv.osv_memory): coda_statement['currency'] = line[18:21] elif line[1] == '0': # Belgian bank account BBAN structure coda_statement['acc_number'] = line[5:17] - coda_statement['currency'] = line[18:21] + coda_statement['currency'] = line[18:21] elif line[1] == '1': # foreign bank account BBAN structure err_string = _('\nForeign bank accounts with BBAN structure are not supported !') err_code = 'R1001' @@ -167,7 +164,7 @@ class account_coda_import(osv.osv_memory): return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) elif line[1] == '2': # Belgian bank account IBAN structure - coda_statement['acc_number']=line[5:21] + coda_statement['acc_number'] = line[5:21] coda_statement['currency'] = line[39:42] elif line[1] == '3': # foreign bank account IBAN structure err_string = _('\nForeign bank accounts with IBAN structure are not supported !') @@ -184,22 +181,22 @@ class account_coda_import(osv.osv_memory): coda_statement['description'] = line[90:125].strip() cba_filter = lambda x: (coda_statement['acc_number'] in _get_acc_numbers(x['acc_number'])) \ and (coda_statement['currency'] == x['currency_name']) and (coda_statement['description'] in [x['description1'] or '', x['description2'] or '']) - coda_bank = filter(cba_filter, coda_bank_table) + coda_bank = filter(cba_filter, coda_bank_table) if coda_bank: - coda_bank = coda_bank[0] + coda_bank = coda_bank[0] coda_statement['type'] = coda_bank['state'] coda_statement['journal_id'] = coda_bank['journal'] and coda_bank['journal'][0] coda_statement['currency_id'] = coda_bank['currency'][0] - coda_statement['coda_bank_account_id'] = coda_bank['id'] - coda_statement['account_mapping_ids'] = coda_bank['account_mapping_ids'] - coda_statement['coda_bank_params'] = coda_bank + coda_statement['coda_bank_account_id'] = coda_bank['id'] + coda_statement['account_mapping_ids'] = coda_bank['account_mapping_ids'] + coda_statement['coda_bank_params'] = coda_bank awaiting_acc = coda_bank['awaiting_account'][0] transfer_acc = coda_bank['transfer_account'][0] find_payment = coda_bank['find_payment'] find_bbacom = coda_bank['find_bbacom'] - find_inv_number = coda_bank['find_inv_number'] + find_inv_number = coda_bank['find_inv_number'] find_partner = coda_bank['find_partner'] - update_partner = coda_bank['update_partner'] + update_partner = coda_bank['update_partner'] coda_statement['balance_start_enforce'] = coda_bank['balance_start_enforce'] coda_statement['discard_dup'] = coda_bank['discard_dup'] company_id = coda_bank['company_id'][0] @@ -217,7 +214,7 @@ class account_coda_import(osv.osv_memory): bal_start = list2float(line[43:58]) # old balance data if line[42] == '1': # 1= Debit bal_start = - bal_start - coda_statement['balance_start'] = bal_start + coda_statement['balance_start'] = bal_start coda_statement['old_balance_date'] = str2date(line[58:64]) coda_statement['acc_holder'] = line[64:90] coda_statement['paper_ob_seq_number'] = line[2:5] @@ -225,50 +222,50 @@ class account_coda_import(osv.osv_memory): elif line[0] == '2': # movement data record 2 - + if line[1] == '1': # movement data record 2.1 st_line = {} st_line_seq = st_line_seq + 1 st_line['sequence'] = st_line_seq st_line['type'] = 'general' - st_line['reconcile'] = False + st_line['reconcile'] = False st_line['trans_family'] = False st_line['struct_comm_type'] = '' st_line['struct_comm_type_id'] = 0 st_line['struct_comm_type_desc'] = '' st_line['struct_comm_bba'] = '' st_line['communication'] = '' - st_line['payment_reference'] = '' + st_line['payment_reference'] = '' st_line['partner_id'] = 0 st_line['account_id'] = 0 st_line['counterparty_name'] = '' - st_line['counterparty_bic'] = '' + st_line['counterparty_bic'] = '' st_line['counterparty_number'] = '' - st_line['counterparty_currency'] = '' + st_line['counterparty_currency'] = '' st_line['glob_lvl_flag'] = False st_line['globalisation_id'] = 0 st_line['globalisation_code'] = '' st_line['globalisation_amount'] = False st_line['amount'] = False - + st_line['ref'] = line[2:10] st_line['ref_move'] = line[2:6] st_line['ref_move_detail'] = line[6:10] - + if st_line_seq == 1: - main_move_stack = [st_line] # initialise main_move_stack (used to link 2.1 detail records to 2.1 main record - glob_lvl_stack = [0] # initialise globalisation stack + main_move_stack = [st_line] # initialise main_move_stack (used to link 2.1 detail records to 2.1 main record + glob_lvl_stack = [0] # initialise globalisation stack elif st_line['ref_move_detail'] == '0000': - glob_lvl_stack = [0] # re-initialise globalisation stack - + glob_lvl_stack = [0] # re-initialise globalisation stack + st_line['trans_ref'] = line[10:31] st_line_amt = list2float(line[32:47]) if line[31] == '1': # 1=debit st_line_amt = - st_line_amt - + st_line['trans_type'] = line[53] - trans_type = filter(lambda x: st_line['trans_type'] == x['type'], trans_type_table) + trans_type = filter(lambda x: st_line['trans_type'] == x['type'], trans_type_table) if not trans_type: err_string = _('\nThe File contains an invalid CODA Transaction Type : %s!') % st_line['trans_type'] err_code = 'R2001' @@ -276,13 +273,13 @@ class account_coda_import(osv.osv_memory): return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) st_line['trans_type_id'] = trans_type[0]['id'] - st_line['trans_type_desc'] = trans_type[0]['description'] - - # processing of amount depending on globalisation code + st_line['trans_type_desc'] = trans_type[0]['description'] + + # processing of amount depending on globalisation code glob_lvl_flag = int(line[124]) - if glob_lvl_flag > 0: - if glob_lvl_stack[-1] == glob_lvl_flag: - st_line['glob_lvl_flag'] = glob_lvl_flag + if glob_lvl_flag > 0: + if glob_lvl_stack[-1] == glob_lvl_flag: + st_line['glob_lvl_flag'] = glob_lvl_flag st_line['amount'] = st_line_amt glob_lvl_stack.pop() else: @@ -292,7 +289,7 @@ class account_coda_import(osv.osv_memory): st_line['globalisation_amount'] = st_line_amt else: st_line['amount'] = st_line_amt - + # The 'globalisation' concept can also be implemented without the globalisation level flag. # This is e.g. used by Europabank to give the details of Card Payments. if st_line['ref_move'] == main_move_stack[-1]['ref_move']: @@ -303,7 +300,7 @@ class account_coda_import(osv.osv_memory): if batch: return (err_code, err_string) raise osv.except_osv(_('Data Error!'), err_string) - elif st_line['ref_move_detail'] != '0000': + elif st_line['ref_move_detail'] != '0000': if glob_lvl_stack[-1] == 0: # promote associated move record into a globalisation glob_lvl_flag = 1 @@ -319,7 +316,7 @@ class account_coda_import(osv.osv_memory): 'account_id': 0, }) main_move_stack[-1]['promoted'] = True - if not main_move_stack[-1].get('detail_cnt'): + if not main_move_stack[-1].get('detail_cnt'): main_move_stack[-1]['detail_cnt'] = 1 else: main_move_stack[-1]['detail_cnt'] += 1 @@ -328,17 +325,17 @@ class account_coda_import(osv.osv_memory): st_line['val_date'] = str2date(line[47:53]) # positions 54-61 : transaction code st_line['trans_family'] = line[54:56] - trans_family = filter(lambda x: (x['type'] == 'family') and (st_line['trans_family'] == x['code']), trans_code_table) + trans_family = filter(lambda x: (x['type'] == 'family') and (st_line['trans_family'] == x['code']), trans_code_table) if not trans_family: - err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] + err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] err_code = 'R2002' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) + raise osv.except_osv(_('Data Error!'), err_string) st_line['trans_family_id'] = trans_family[0]['id'] st_line['trans_family_desc'] = trans_family[0]['description'] st_line['trans_code'] = line[56:58] - trans_code = filter(lambda x: (x['type'] == 'code') and (st_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), + trans_code = filter(lambda x: (x['type'] == 'code') and (st_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), trans_code_table) if trans_code: st_line['trans_code_id'] = trans_code[0]['id'] @@ -347,17 +344,17 @@ class account_coda_import(osv.osv_memory): st_line['trans_code_id'] = None st_line['trans_code_desc'] = _('Transaction Code unknown, please consult your bank.') st_line['trans_category'] = line[58:61] - trans_category = filter(lambda x: st_line['trans_category'] == x['category'], trans_category_table) + trans_category = filter(lambda x: st_line['trans_category'] == x['category'], trans_category_table) if trans_category: st_line['trans_category_id'] = trans_category[0]['id'] st_line['trans_category_desc'] = trans_category[0]['description'] else: st_line['trans_category_id'] = None - st_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') - # positions 61-115 : communication + st_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') + # positions 61-115 : communication if line[61] == '1': st_line['struct_comm_type'] = line[62:65] - comm_type = filter(lambda x: st_line['struct_comm_type'] == x['code'], comm_type_table) + comm_type = filter(lambda x: st_line['struct_comm_type'] == x['code'], comm_type_table) if not comm_type: err_string = _('\nThe File contains an invalid Structured Communication Type : %s!') % st_line['struct_comm_type'] err_code = 'R2003' @@ -368,28 +365,28 @@ class account_coda_import(osv.osv_memory): st_line['struct_comm_type_desc'] = comm_type[0]['description'] st_line['communication'] = st_line['name'] = line[65:115] if st_line['struct_comm_type'] in ['101', '102']: - bbacomm = line[65:77] - st_line['struct_comm_bba'] = st_line['name'] = '+++' + bbacomm[0:3] + '/' + bbacomm[3:7] + '/' + bbacomm[7:] + '+++' + bbacomm = line[65:77] + st_line['struct_comm_bba'] = st_line['name'] = '+++' + bbacomm[0:3] + '/' + bbacomm[3:7] + '/' + bbacomm[7:] + '+++' else: st_line['communication'] = st_line['name'] = line[62:115] st_line['entry_date'] = str2date(line[115:121]) if st_line['sequence'] == 1: coda_statement['first_transaction_date'] = st_line['entry_date'] - # positions 122-124 not processed - coda_statement_lines[st_line_seq] = st_line # store transaction - + # positions 122-124 not processed + coda_statement_lines[st_line_seq] = st_line # store transaction + if st_line['ref_move'] != main_move_stack[-1]['ref_move']: if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): # add closing globalisation level on previous detail record in order to correctly close # moves that have been 'promoted' to globalisation - closeglobalise = coda_statement['coda_statement_lines'][st_line_seq-1] + closeglobalise = coda_statement['coda_statement_lines'][st_line_seq - 1] closeglobalise.update({ 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], }) else: # demote record with globalisation code from 'globalisation' to 'general' when no detail records # the same logic is repeated on the New Balance Record ('8 Record') in order to cope with CODA files - # containing a single 2.1 record that needs to be 'demoted'. + # containing a single 2.1 record that needs to be 'demoted'. if main_move_stack[-1]['type'] == 'globalisation' and not main_move_stack[-1].get('detail_cnt'): # demote record with globalisation code from 'globalisation' to 'general' when no detail records main_st_line_seq = main_move_stack[-1]['sequence'] @@ -403,7 +400,7 @@ class account_coda_import(osv.osv_memory): main_move_stack.pop() main_move_stack.append(st_line) coda_statement['coda_statement_lines'] = coda_statement_lines - + elif line[1] == '2': # movement data record 2.2 if coda_statement['coda_statement_lines'][st_line_seq]['ref'][0:4] != line[2:6]: @@ -412,12 +409,12 @@ class account_coda_import(osv.osv_memory): err_code = 'R2004' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) + raise osv.except_osv(_('Error!'), err_string) coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:63] coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:63] coda_statement['coda_statement_lines'][st_line_seq]['payment_reference'] = line[63:98].strip() coda_statement['coda_statement_lines'][st_line_seq]['counterparty_bic'] = line[98:109].strip() - + elif line[1] == '3': # movement data record 2.3 if coda_statement['coda_statement_lines'][st_line_seq]['ref'][0:4] != line[2:6]: @@ -426,7 +423,7 @@ class account_coda_import(osv.osv_memory): err_code = 'R2005' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) + raise osv.except_osv(_('Error!'), err_string) st_line = coda_statement_lines[st_line_seq] if coda_version == '1': counterparty_number = line[10:22].strip() @@ -438,7 +435,7 @@ class account_coda_import(osv.osv_memory): counterparty_currency = line[23:26].strip() else: counterparty_number = line[10:44].strip() - counterparty_currency = line[44:47].strip() + counterparty_currency = line[44:47].strip() counterparty_name = line[47:82].strip() st_line['name'] += line[82:125] st_line['communication'] += line[82:125] @@ -447,20 +444,20 @@ class account_coda_import(osv.osv_memory): st_line['counterparty_name'] = counterparty_name """ TO DO: - + replace code infra by check on flag 128 and copy info in Notes Field. - + if counterparty_currency not in [coda_bank['currency_name'], '']: err_string = _('\nCODA parsing error on movement data record 2.3, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] + '\nPlease report this issue via your OpenERP support channel.') % line[2:10] err_code = 'R2006' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) + raise osv.except_osv(_('Error!'), err_string) """ - # invoice matching and reconciliation - if st_line['type'] == 'general': + # invoice matching and reconciliation + if st_line['type'] == 'general': match = False payment_reference_match = False inv_ids = None @@ -480,17 +477,17 @@ class account_coda_import(osv.osv_memory): st_line['reconcile'] = payline.move_line_id.id st_line['account_id'] = payline.move_line_id.account_id.id if payline._get_ml_inv_ref: - inv_type = payline.ml_inv_ref.type + inv_type = payline.ml_inv_ref.type st_line['type'] = inv_type == 'in_invoice' and 'supplier' or 'customer' else: st_line['type'] = 'general' else: err_string = _('\nThe CODA parsing detected a payment reference ambiguity while processing movement data record 2.3, seq nr %s!' \ - '\nPlease check your Payment Gateway configuration or contact your OpenERP support channel.') % line[2:10] + '\nPlease check your Payment Gateway configuration or contact your OpenERP support channel.') % line[2:10] err_code = 'R2007' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) + raise osv.except_osv(_('Error!'), err_string) # check bba scor in bank statement line against open invoices if st_line['struct_comm_bba'] and find_bbacom: @@ -498,15 +495,15 @@ class account_coda_import(osv.osv_memory): domain = [('type', 'in', ['out_invoice', 'in_refund'])] else: domain = [('type', 'in', ['in_invoice', 'out_refund'])] - inv_ids = inv_obj.search(cr , uid, - domain + [('state', '=', 'open'), ('reference' ,'=', st_line['struct_comm_bba']), ('reference_type' ,'=', 'bba')]) + inv_ids = inv_obj.search(cr, uid, + domain + [('state', '=', 'open'), ('reference', '=', st_line['struct_comm_bba']), ('reference_type', '=', 'bba')]) if not inv_ids: coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ "\n There is no invoice matching the Structured Communication '%s'!" \ "\n Please verify and adjust the invoice and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ % (st_line['ref'], st_line['struct_comm_bba']) elif len(inv_ids) == 1: - match = True + match = True elif len(inv_ids) > 1: coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ "\n There are multiple invoices matching the Structured Communication '%s'!" \ @@ -527,7 +524,7 @@ class account_coda_import(osv.osv_memory): else: select2 = " AND type IN ('in_invoice', 'out_refund')" cr.execute(select + select2) - res=cr.fetchall() + res = cr.fetchall() if res: inv_ids = [x[0] for x in res] if len(inv_ids) == 1: @@ -548,26 +545,26 @@ class account_coda_import(osv.osv_memory): if st_line['amount'] > 0: select2 = " AND type = 'out_invoice' AND free_comm ilike '%'||number||'%'" cr.execute(select + select2) - res=cr.fetchall() + res = cr.fetchall() if res: inv_ids = [x[0] for x in res] - else: + else: select2 = " AND type = 'in_refund' AND free_comm ilike '%'||reference||'%'" cr.execute(select + select2) - res=cr.fetchall() + res = cr.fetchall() if res: inv_ids = [x[0] for x in res] # 'in_invoice', 'out_refund' else: select2 = " AND type = 'in_invoice' AND free_comm ilike '%'||reference||'%'" cr.execute(select + select2) - res=cr.fetchall() + res = cr.fetchall() if res: inv_ids = [x[0] for x in res] - else: + else: select2 = " AND type = 'out_refund' AND free_comm ilike '%'||number||'%'" cr.execute(select + select2) - res=cr.fetchall() + res = cr.fetchall() if res: inv_ids = [x[0] for x in res] if inv_ids: @@ -578,7 +575,7 @@ class account_coda_import(osv.osv_memory): "\n There are multiple invoices matching the Invoice Amount and Reference." \ "\n A manual reconciliation is required.") \ % (st_line['ref']) - + if not payment_reference_match and match and inv_ids and len(inv_ids) == 1: invoice = inv_obj.browse(cr, uid, inv_ids[0]) partner = invoice.partner_id @@ -594,27 +591,27 @@ class account_coda_import(osv.osv_memory): st_line['reconcile'] = iml_ids[0] else: err_string = _('\nThe CODA parsing detected a database inconsistency while processing movement data record 2.3, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] + '\nPlease report this issue via your OpenERP support channel.') % line[2:10] err_code = 'R2008' if batch: return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - - # lookup partner via counterparty_number when invoice lookup failed + raise osv.except_osv(_('Error!'), err_string) + + # lookup partner via counterparty_number when invoice lookup failed if not match and counterparty_number: - transfer_account = filter(lambda x: counterparty_number in x, company_bank_accounts) + transfer_account = filter(lambda x: counterparty_number in x, company_bank_accounts) if transfer_account: st_line['account_id'] = transfer_acc match = True elif find_partner: - partner_bank_ids = partner_bank_obj.search(cr,uid,[('acc_number','=', counterparty_number)]) + partner_bank_ids = partner_bank_obj.search(cr, uid, [('acc_number', '=', counterparty_number)]) if not match and find_partner and partner_bank_ids: if len(partner_bank_ids) > 1: coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ "\n No partner record assigned: There are multiple partners with the same Bank Account Number '%s'!" \ "\n Please correct the configuration and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ % (st_line['ref'], counterparty_number) - else: + else: partner_bank = partner_bank_obj.browse(cr, uid, partner_bank_ids[0], context) st_line['partner_id'] = partner_bank.partner_id.id match = True @@ -634,21 +631,21 @@ class account_coda_import(osv.osv_memory): coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ "\n No matching partner record found!" \ "\n Please adjust the corresponding entry manually in the generated Bank Statement.") \ - % (st_line['ref']) + % (st_line['ref']) st_line['account_id'] = awaiting_acc - + # add bank account to partner record if match and st_line['account_id'] != transfer_acc and counterparty_number and update_partner: - partner_bank_ids = partner_bank_obj.search(cr,uid,[('acc_number','=', counterparty_number), ('partner_id', '=', st_line['partner_id'])], order='id') + partner_bank_ids = partner_bank_obj.search(cr, uid, [('acc_number', '=', counterparty_number), ('partner_id', '=', st_line['partner_id'])], order='id') if len(partner_bank_ids) > 1: # clean up partner bank duplicates, keep most recently created - _logger.warn('Duplicate Bank Accounts for partner_id %s have been removed, ids = %s', + _logger.warn('Duplicate Bank Accounts for partner_id %s have been removed, ids = %s', st_line['partner_id'], partner_bank_ids[:-1]) - partner_bank_obj.unlink(cr,uid, partner_bank_ids[:-1]) + partner_bank_obj.unlink(cr, uid, partner_bank_ids[:-1]) if not partner_bank_ids: feedback = update_partner_bank(self, cr, uid, st_line['counterparty_bic'], counterparty_number, st_line['partner_id'], counterparty_name) - if feedback: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':") % st_line['ref'] + feedback + if feedback: + coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':") % st_line['ref'] + feedback coda_statement_lines[st_line_seq] = st_line coda_statement['coda_statement_lines'] = coda_statement_lines @@ -660,18 +657,18 @@ class account_coda_import(osv.osv_memory): err_code = 'R2009' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) + raise osv.except_osv(_('Data Error!'), err_string) elif line[0] == '3': # information data record 3 - + if line[1] == '1': # information data record 3.1 info_line = {} info_line['entry_date'] = st_line['entry_date'] info_line['type'] = 'information' st_line_seq = st_line_seq + 1 - info_line['sequence'] = st_line_seq + info_line['sequence'] = st_line_seq info_line['struct_comm_type'] = '' info_line['struct_comm_type_desc'] = '' info_line['communication'] = '' @@ -679,37 +676,37 @@ class account_coda_import(osv.osv_memory): info_line['trans_ref'] = line[10:31] # positions 32-38 : transaction code info_line['trans_type'] = line[31] - trans_type = filter(lambda x: info_line['trans_type'] == x['type'], trans_type_table) + trans_type = filter(lambda x: info_line['trans_type'] == x['type'], trans_type_table) if not trans_type: err_string = _('\nThe File contains an invalid CODA Transaction Type : %s!') % st_line['trans_type'] err_code = 'R3001' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - info_line['trans_type_desc'] = trans_type[0]['description'] + raise osv.except_osv(_('Data Error!'), err_string) + info_line['trans_type_desc'] = trans_type[0]['description'] info_line['trans_family'] = line[32:34] - trans_family = filter(lambda x: (x['type'] == 'family') and (info_line['trans_family'] == x['code']), trans_code_table) + trans_family = filter(lambda x: (x['type'] == 'family') and (info_line['trans_family'] == x['code']), trans_code_table) if not trans_family: - err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] + err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] err_code = 'R3002' if batch: return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) + raise osv.except_osv(_('Data Error!'), err_string) info_line['trans_family_desc'] = trans_family[0]['description'] info_line['trans_code'] = line[34:36] - trans_code = filter(lambda x: (x['type'] == 'code') and (info_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), + trans_code = filter(lambda x: (x['type'] == 'code') and (info_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), trans_code_table) if trans_code: info_line['trans_code_desc'] = trans_code[0]['description'] else: info_line['trans_code_desc'] = _('Transaction Code unknown, please consult your bank.') info_line['trans_category'] = line[36:39] - trans_category = filter(lambda x: info_line['trans_category'] == x['category'], trans_category_table) + trans_category = filter(lambda x: info_line['trans_category'] == x['category'], trans_category_table) if trans_category: info_line['trans_category_desc'] = trans_category[0]['description'] else: - info_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') - # positions 40-113 : communication + info_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') + # positions 40-113 : communication if line[39] == '1': info_line['struct_comm_type'] = line[40:43] comm_type = filter(lambda x: info_line['struct_comm_type'] == x['code'], comm_type_table) @@ -726,7 +723,7 @@ class account_coda_import(osv.osv_memory): # positions 114-128 not processed coda_statement_lines[st_line_seq] = info_line coda_statement['coda_statement_lines'] = coda_statement_lines - + elif line[1] == '2': # information data record 3.2 if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: @@ -736,9 +733,9 @@ class account_coda_import(osv.osv_memory): if batch: return (err_code, err_string) raise osv.except_osv(_('Error!'), err_string) - coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:115] + coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:115] coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:115] - + elif line[1] == '3': # information data record 3.3 if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: @@ -750,7 +747,7 @@ class account_coda_import(osv.osv_memory): raise osv.except_osv(_('Error!'), err_string) coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:100] coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:100] - + elif line[0] == '4': # free communication data record 4 comm_line = {} @@ -761,11 +758,11 @@ class account_coda_import(osv.osv_memory): comm_line['communication'] = comm_line['name'] = line[32:112] coda_statement_lines[st_line_seq] = comm_line coda_statement['coda_statement_lines'] = coda_statement_lines - + elif line[0] == '8': # new balance record last_transaction = main_move_stack[-1] - if last_transaction['type'] == 'globalisation' and not last_transaction.get('detail_cnt'): + if last_transaction['type'] == 'globalisation' and not last_transaction.get('detail_cnt'): # demote record with globalisation code from 'globalisation' to 'general' when no detail records main_st_line_seq = main_move_stack[-1]['sequence'] to_demote = coda_statement['coda_statement_lines'][main_st_line_seq] @@ -778,7 +775,7 @@ class account_coda_import(osv.osv_memory): # add closing globalisation level on previous detail record in order to correctly close # moves that have been 'promoted' to globalisation if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): - closeglobalise = coda_statement['coda_statement_lines'][st_line_seq-1] + closeglobalise = coda_statement['coda_statement_lines'][st_line_seq - 1] closeglobalise.update({ 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], }) @@ -788,10 +785,10 @@ class account_coda_import(osv.osv_memory): if line[41] == '1': # 1=Debit bal_end = - bal_end coda_statement['balance_end_real'] = bal_end - if coda_statement['new_balance_date']: - period_id = period_obj.search(cr , uid, [('date_start' ,'<=', coda_statement['new_balance_date']), ('date_stop','>=',coda_statement['new_balance_date'])]) + if coda_statement['new_balance_date']: + period_id = period_obj.search(cr, uid, [('date_start', '<=', coda_statement['new_balance_date']), ('date_stop', '>=', coda_statement['new_balance_date'])]) else: - period_id = period_obj.search(cr , uid, [('date_start' ,'<=', coda_statement['date']), ('date_stop','>=',coda_statement['date'])]) + period_id = period_obj.search(cr, uid, [('date_start', '<=', coda_statement['date']), ('date_stop', '>=', coda_statement['date'])]) if not period_id: err_string = _("\nThe CODA Statement New Balance date doesn't fall within a defined Accounting Period!" \ "\nPlease create the Accounting Period for date %s.") % coda_statement['new_balance_date'] @@ -802,7 +799,7 @@ class account_coda_import(osv.osv_memory): coda_statement['period_id'] = period_id[0] if coda_bank['coda_st_naming']: coda_statement['name'] = coda_bank['coda_st_naming'] % { - 'code': coda_bank['journal_code'] or '', + 'code': coda_bank['journal_code'] or '', 'year': coda_statement['new_balance_date'] and coda_statement['new_balance_date'][:4] or coda_statement['date'][:4], 'y': coda_statement['new_balance_date'] and coda_statement['new_balance_date'][2:4] or coda_statement['date'][2:4], 'coda': coda_statement['coda_seq_number'], @@ -811,14 +808,14 @@ class account_coda_import(osv.osv_memory): } else: coda_statement['name'] = '/' - + elif line[0] == '9': # footer record - coda_statement['balance_min'] = list2float(line[22:37]) + coda_statement['balance_min'] = list2float(line[22:37]) coda_statement['balance_plus'] = list2float(line[37:52]) if not bal_end: coda_statement['balance_end_real'] = coda_statement['balance_start'] + coda_statement['balance_plus'] - coda_statement['balance_min'] - if coda_parsing_note: + if coda_parsing_note: coda_statement['coda_parsing_note'] = '\nStatement Line matching results:' + coda_parsing_note else: coda_statement['coda_parsing_note'] = '' @@ -826,28 +823,28 @@ class account_coda_import(osv.osv_memory): #end for err_string = '' - err_code = '' + err_code = '' coda_id = 0 coda_note = '' line_note = '' - + try: - coda_id = coda_obj.create(cr, uid,{ - 'name' : codafilename, + coda_id = coda_obj.create(cr, uid, { + 'name': codafilename, 'coda_data': codafile, - 'coda_creation_date' : coda_statement['date'], + 'coda_creation_date': coda_statement['date'], 'date': fields.date.context_today(self, cr, uid, context=context), 'user_id': uid, }) context.update({'coda_id': coda_id}) - + except osv.except_osv, e: cr.rollback() err_string = _('\nApplication Error : ') + str(e) except Exception, e: cr.rollback() err_string = _('\nSystem Error : ') + str(e) - except : + except: cr.rollback() err_string = _('\nUnknown Error : ') + str(e) if err_string: @@ -859,40 +856,40 @@ class account_coda_import(osv.osv_memory): nb_err = 0 err_string = '' coda_st_ids = [] - bk_st_ids = [] - + bk_st_ids = [] + for statement in coda_statements: - + # The CODA Statement info is written to two objects: 'coda.bank.statement' and 'account.bank.statement' try: normal2info = False lines = statement['coda_statement_lines'] - if not statement['first_transaction_date']: - normal2info = True # don't create a bank statement for CODA's without transactions + if not statement['first_transaction_date']: + normal2info = True # don't create a bank statement for CODA's without transactions else: line_vals = [x for x in lines.itervalues()] transactions = filter(lambda x: (x['type'] in ['globalisation', 'general', 'supplier', 'customer']) and x['amount'], line_vals) if not transactions: - normal2info = True # don't create a bank statement for CODA's without transactions + normal2info = True # don't create a bank statement for CODA's without transactions if normal2info: - statement['type'] = 'info' # don't create a bank statement for CODA's without transactions + statement['type'] = 'info' # don't create a bank statement for CODA's without transactions statement['coda_parsing_note'] += _("\n\nThe CODA Statement %s does not contain transactions, hence no Bank Statement has been created." \ "\nSelect the 'CODA Bank Statement' to check the contents of %s.") \ - %(statement['name'], statement['name']) - + % (statement['name'], statement['name']) + coda_st_id = coda_st_obj.create(cr, uid, { 'name': statement['name'], 'type': statement['type'], 'coda_bank_account_id': statement['coda_bank_account_id'], - 'currency': statement['currency_id'], + 'currency': statement['currency_id'], 'journal_id': statement['journal_id'], 'coda_id': coda_id, 'date': statement['date'], 'coda_creation_date': statement['coda_creation_date'], 'period_id': statement['period_id'], 'old_balance_date': statement['old_balance_date'], - 'new_balance_date': statement['new_balance_date'], + 'new_balance_date': statement['new_balance_date'], 'balance_start': statement['balance_start'], 'balance_end_real': statement['balance_end_real'], }) @@ -904,10 +901,10 @@ class account_coda_import(osv.osv_memory): dup_ids = bank_st_obj.search(cr, uid, [('name', '=', statement['name']), ('company_id', '=', company_id)]) if dup_ids: discard = True - statement['type'] = 'info' # don't create a bank statement for duplicates + statement['type'] = 'info' # don't create a bank statement for duplicates statement['coda_parsing_note'] += _("\n\nThe Bank Statement %s already exists, hence no duplicate Bank Statement has been created." \ "\nSelect the 'CODA Bank Statement' to check the contents of %s.") \ - %(statement['name'], statement['name']) + % (statement['name'], statement['name']) # create only bank statement for CODA's of type 'normal' if statement['type'] == 'normal' and not discard: @@ -924,16 +921,16 @@ class account_coda_import(osv.osv_memory): if journal.default_debit_account_id and (journal.default_credit_account_id == journal.default_debit_account_id): balance_start_check = journal.default_debit_account_id.balance else: - nb_err += 1 + nb_err += 1 err_string += _('\nConfiguration Error in journal %s!' \ '\nPlease verify the Default Debit and Credit Account settings.') % journal.name break - if balance_start_check <> statement['balance_start']: + if balance_start_check != statement['balance_start']: balance_start_err_string = _('\nThe CODA Statement %s Starting Balance (%.2f) does not correspond with the previous Closing Balance (%.2f) in journal %s!') \ - % (statement['name'], statement['balance_start'], balance_start_check, journal.name) + % (statement['name'], statement['balance_start'], balance_start_check, journal.name) if statement['balance_start_enforce']: - nb_err += 1 - err_string += balance_start_err_string + nb_err += 1 + err_string += balance_start_err_string break else: statement['coda_parsing_note'] += '\n' + balance_start_err_string @@ -950,89 +947,90 @@ class account_coda_import(osv.osv_memory): } st_hook_error, st_vals = self._statement_hook(cr, uid, statement['coda_bank_params'], st_vals, context=context) if st_hook_error: - nb_err += 1 - err_string += st_hook_error + nb_err += 1 + err_string += st_hook_error break bk_st_id = bank_st_obj.create(cr, uid, st_vals, context=context) bk_st_ids.append(bk_st_id) coda_st_obj.write(cr, uid, [coda_st_id], {'statement_id': bk_st_id}, context=context) - + st_line_seq = 0 for x in lines: line = lines[x] - + if not line['type'] == 'communication': if line['trans_family'] in st_line_name_families: - line['name'] = get_st_line_name(line, context) + line['name'] = get_st_line_name(line, context) if line['type'] == 'information': if line['struct_comm_type'] in parse_comms_info: line['name'], line['communication'] = parse_comm_info(self, cr, uid, line, comm_type_table, context) elif line['struct_comm_type'] in parse_comms_move: - line['name'], line['communication'] = parse_comm_move(self, cr, uid, line, comm_type_table, context) + line['name'], line['communication'] = parse_comm_move(self, cr, uid, line, comm_type_table, context) elif line['struct_comm_type'] in parse_comms_move: line['name'], line['communication'] = parse_comm_move(self, cr, uid, line, comm_type_table, context) # handling non-transactional records : line['type'] in ['information', 'communication'] - + if line['type'] == 'information': - line['globalisation_id'] = glob_id_stack[-1][2] + #Check if this line can be deleted. glob_id_stack marked as undefined here + #line['globalisation_id'] = glob_id_stack[-1][2] line_note = _('Transaction Type' ': %s - %s' \ '\nTransaction Family: %s - %s' \ '\nTransaction Code: %s - %s' \ '\nTransaction Category: %s - %s' \ '\nStructured Communication Type: %s - %s' \ '\nCommunication: %s') \ - %(line['trans_type'], line['trans_type_desc'], + % (line['trans_type'], line['trans_type_desc'], line['trans_family'], line['trans_family_desc'], line['trans_code'], line['trans_code_desc'], line['trans_category'], line['trans_category_desc'], line['struct_comm_type'], line['struct_comm_type_desc'], line['communication']) - - coda_st_line_id = coda_st_line_obj.create(cr, uid, { + + coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], + 'ref': line['ref'], 'name': line['name'].strip() or '/', - 'type' : 'information', - 'date': line['entry_date'], + 'type': 'information', + 'date': line['entry_date'], 'statement_id': coda_st_id, 'note': line_note, }) - + elif line['type'] == 'communication': line_note = _('Free Communication:\n %s') \ - %(line['communication']) - - coda_st_line_id = coda_st_line_obj.create(cr, uid, { + % (line['communication']) + + coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], + 'ref': line['ref'], 'name': line['name'].strip() or '/', - 'type' : 'communication', + 'type': 'communication', 'date': statement['date'], 'statement_id': coda_st_id, 'note': line_note, }) - # handling transactional records, # line['type'] in ['globalisation', 'general', 'supplier', 'customer'] + # handling transactional records, # line['type'] in ['globalisation', 'general', 'supplier', 'customer'] else: - + if line['ref_move_detail'] == '0000': glob_id_stack = [(0, '', 0, '')] # initialise stack with tuples (glob_lvl_flag, glob_code, glob_id, glob_name) - + glob_lvl_flag = line['glob_lvl_flag'] - if glob_lvl_flag: - if glob_id_stack[-1][0] == glob_lvl_flag: + if glob_lvl_flag: + if glob_id_stack[-1][0] == glob_lvl_flag: line['globalisation_id'] = glob_id_stack[-1][2] glob_id_stack.pop() else: glob_name = line['name'].strip() or '/' glob_code = seq_obj.get(cr, uid, 'statement.line.global') glob_id = glob_obj.create(cr, uid, { - 'code': glob_code, + 'code': glob_code, 'name': glob_name, 'type': 'coda', 'parent_id': glob_id_stack[-1][2], @@ -1041,7 +1039,7 @@ class account_coda_import(osv.osv_memory): }) line['globalisation_id'] = glob_id glob_id_stack.append((glob_lvl_flag, glob_code, glob_id, glob_name)) - + line_note = _('Partner Name: %s \nPartner Account Number: %s' \ '\nTransaction Type: %s - %s' \ '\nTransaction Family: %s - %s' \ @@ -1050,64 +1048,64 @@ class account_coda_import(osv.osv_memory): '\nStructured Communication Type: %s - %s' \ '\nPayment Reference: %s' \ '\nCommunication: %s') \ - %(line['counterparty_name'], line['counterparty_number'], + % (line['counterparty_name'], line['counterparty_number'], line['trans_type'], line['trans_type_desc'], line['trans_family'], line['trans_family_desc'], line['trans_code'], line['trans_code_desc'], line['trans_category'], line['trans_category_desc'], line['struct_comm_type'], line['struct_comm_type_desc'], - line['payment_reference'], + line['payment_reference'], line['communication']) - + if line['type'] == 'globalisation': - - coda_st_line_id = coda_st_line_obj.create(cr, uid, { + + coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], + 'ref': line['ref'], 'name': line['name'].strip() or '/', - 'type' : 'globalisation', - 'val_date' : line['val_date'], + 'type': 'globalisation', + 'val_date': line['val_date'], 'date': line['entry_date'], - 'globalisation_level': line['glob_lvl_flag'], - 'globalisation_amount': line['globalisation_amount'], - 'globalisation_id': line['globalisation_id'], + 'globalisation_level': line['glob_lvl_flag'], + 'globalisation_amount': line['globalisation_amount'], + 'globalisation_id': line['globalisation_id'], 'partner_id': line['partner_id'] or 0, 'account_id': line['account_id'], - 'payment_reference': line['payment_reference'], + 'payment_reference': line['payment_reference'], 'statement_id': coda_st_id, 'note': line_note, }) - else: # line['type'] in ['general', 'supplier', 'customer'] + else: # line['type'] in ['general', 'supplier', 'customer'] - if glob_lvl_flag == 0: + if glob_lvl_flag == 0: line['globalisation_id'] = glob_id_stack[-1][2] - if not line['account_id']: + if not line['account_id']: line['account_id'] = awaiting_acc - - coda_st_line_id = coda_st_line_obj.create(cr, uid, { + + coda_st_line_obj.create(cr, uid, { 'sequence': line['sequence'], - 'ref': line['ref'], - 'name': line['name'].strip() or '/', - 'type' : line['type'], - 'val_date' : line['val_date'], + 'ref': line['ref'], + 'name': line['name'].strip() or '/', + 'type': line['type'], + 'val_date': line['val_date'], 'date': line['entry_date'], 'amount': line['amount'], 'partner_id': line['partner_id'] or 0, 'counterparty_name': line['counterparty_name'], - 'counterparty_bic': line['counterparty_bic'], - 'counterparty_number': line['counterparty_number'], - 'counterparty_currency': line['counterparty_currency'], + 'counterparty_bic': line['counterparty_bic'], + 'counterparty_number': line['counterparty_number'], + 'counterparty_currency': line['counterparty_currency'], 'account_id': line['account_id'], - 'globalisation_level': line['glob_lvl_flag'], - 'globalisation_id': line['globalisation_id'], - 'payment_reference': line['payment_reference'], + 'globalisation_level': line['glob_lvl_flag'], + 'globalisation_id': line['globalisation_id'], + 'payment_reference': line['payment_reference'], 'statement_id': coda_st_id, 'note': line_note, }) if statement['type'] == 'normal': - if line['amount'] != 0.0: + if line['amount'] != 0.0: st_line_seq += 1 voucher_id = False line_name = line['name'].strip() @@ -1116,9 +1114,9 @@ class account_coda_import(osv.osv_memory): line_name = glob_id_stack[-1][3] or '/' else: line_name = '/' - + if line['reconcile']: - + move_line = move_line_obj.browse(cr, uid, line['reconcile'], context=context) company_currency_id = journal.company_id.currency_id.id currency_id = journal.currency.id @@ -1128,11 +1126,11 @@ class account_coda_import(osv.osv_memory): multi_currency = False context_multi_currency = context.copy() context_multi_currency.update({'date': line['entry_date']}) - + line_cr_ids = [] line_dr_ids = [] - amount_remaining = abs(line['amount']) - + amount_remaining = abs(line['amount']) + #for entry in entries: if move_line.reconcile_partial_id: amount_original = abs(move_line.amount_residual_currency) @@ -1142,7 +1140,7 @@ class account_coda_import(osv.osv_memory): if move_line.currency_id and move_line.amount_currency: amount_original = abs(move_line.amount_currency) else: - amount_original = currency_obj.compute(cr, uid, company_currency_id, currency_id, original_amount, context=context_multi_currency) + amount_original = currency_obj.compute(cr, uid, company_currency_id, currency_id, amount_original, context=context_multi_currency) if amount_remaining > 0: amount_voucher_line = min(amount_original, abs(amount_remaining)) amount_remaining -= amount_voucher_line @@ -1160,8 +1158,8 @@ class account_coda_import(osv.osv_memory): line_cr_ids += [(0, 0, voucher_line_vals)] else: line_dr_ids += [(0, 0, voucher_line_vals)] - - voucher_vals = { + + voucher_vals = { 'type': line['type'] == 'supplier' and 'payment' or 'receipt', 'name': line_name, 'date': line['val_date'], @@ -1179,9 +1177,9 @@ class account_coda_import(osv.osv_memory): 'number': statement['name'] + '/' + str(st_line_seq), 'partner_id': line['partner_id'], } - + #_logger.warn('voucher_vals=%s, context=%s', voucher_vals, context) - context['journal_id'] = journal.id # add journal to context for __get_payment_rate_currency method + context['journal_id'] = journal.id # add journal to context for __get_payment_rate_currency method if line_cr_ids or line_dr_ids: voucher_id = voucher_obj.create(cr, uid, voucher_vals, context=context) else: @@ -1205,25 +1203,25 @@ class account_coda_import(osv.osv_memory): line['account_id'] = account_id st_line_vals = { - 'ref': line['ref'], + 'ref': line['ref'], 'name': line_name, - 'type' : line['type'], - 'val_date' : line['val_date'], + 'type': line['type'], + 'val_date': line['val_date'], 'date': line['entry_date'], 'amount': line['amount'], 'partner_id': line['partner_id'] or 0, 'counterparty_name': line['counterparty_name'], - 'counterparty_bic': line['counterparty_bic'], - 'counterparty_number': line['counterparty_number'], - 'counterparty_currency': line['counterparty_currency'], + 'counterparty_bic': line['counterparty_bic'], + 'counterparty_number': line['counterparty_number'], + 'counterparty_currency': line['counterparty_currency'], 'account_id': line['account_id'], - 'globalisation_id': line['globalisation_id'], - 'payment_reference': line['payment_reference'], + 'globalisation_id': line['globalisation_id'], + 'payment_reference': line['payment_reference'], 'statement_id': bk_st_id, 'voucher_id': voucher_id, 'note': line_note, } - + st_lines_vals = self._st_line_hook(cr, uid, statement['coda_bank_params'], st_line_vals, context=context) if not st_lines_vals: # removal of lines by the _coda_parsing_hook currently not supported : @@ -1234,7 +1232,7 @@ class account_coda_import(osv.osv_memory): for st_line_vals in st_lines_vals: # To DO : update sequence of statement lines and naming of associated vouchers/moves when the hook returns multiple lines st_line_vals.update({'sequence': st_line_seq}) - bank_st_line_id = bank_st_line_obj.create(cr, uid, st_line_vals, context=context) + bank_st_line_obj.create(cr, uid, st_line_vals, context=context) if st_line_vals['voucher_id']: voucher = voucher_obj.browse(cr, uid, st_line_vals['voucher_id'], context=context) move_line = move_line_obj.browse(cr, uid, line['reconcile'], context=context) @@ -1247,7 +1245,7 @@ class account_coda_import(osv.osv_memory): coda_st_obj.write(cr, uid, [coda_st_id], {}, context=context) # calculate balance st_balance = coda_st_obj.read(cr, uid, coda_st_id, ['balance_end', 'balance_end_real'], context=context) - if st_balance['balance_end'] <> st_balance['balance_end_real']: + if st_balance['balance_end'] != st_balance['balance_end_real']: err_string += _('\nIncorrect ending Balance in CODA Statement %s for Bank Account %s!') \ % (statement['coda_seq_number'], (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description'])) if statement['type'] == 'normal': @@ -1255,9 +1253,9 @@ class account_coda_import(osv.osv_memory): break else: statement['coda_parsing_note'] += '\n' + err_string - - if statement['type'] == 'normal': - bank_st_obj.button_dummy(cr, uid, [bk_st_id], context=context) # calculate balance + + if statement['type'] == 'normal': + bank_st_obj.button_dummy(cr, uid, [bk_st_id], context=context) # calculate balance journal_name = journal.name else: journal_name = _('None') @@ -1270,16 +1268,16 @@ class account_coda_import(osv.osv_memory): '\nAccount Holder Name: %s' \ '\nDate: %s, Starting Balance: %.2f, Ending Balance: %.2f' \ '%s') \ - %(journal_name, + % (journal_name, coda_version, statement['coda_seq_number'], statement['paper_nb_seq_number'], (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description']), statement['acc_holder'], statement['date'], float(statement['balance_start']), float(statement['balance_end_real']), - statement['coda_parsing_note'] % {'name':coda_statement['name']}) + statement['coda_parsing_note'] % {'name': coda_statement['name']}) if statement.get('separate_application') != '00000': - coda_note += _('\nCode Separate Application: %s') %statement['separate_application'] \ + coda_note += _('\nCode Separate Application: %s') % statement['separate_application'] \ except osv.except_osv, e: cr.rollback() @@ -1293,25 +1291,25 @@ class account_coda_import(osv.osv_memory): nb_err += 1 err_string += _('\nSystem Error : ') + str(e) tb = ''.join(format_exception(*exc_info())) - _logger.error('System Error while processing Statement %s\n%s', - statement.get('name', '/'),tb) - except : + _logger.error('System Error while processing Statement %s\n%s', + statement.get('name', '/'), tb) + except: cr.rollback() nb_err += 1 err_string = _('\nUnknown Error : ') + str(e) tb = ''.join(format_exception(*exc_info())) _logger.error('Unknown Error while processing Statement %s\n%s', - statement.get('name', '/'),tb) + statement.get('name', '/'), tb) # end 'for statement in coda_statements' - + coda_note_header = _('CODA File is Imported :') coda_note_footer = _('\n\nNumber of statements : ') + str(len(coda_st_ids)) err_log = err_log + _('\nNumber of errors : ') + str(nb_err) + '\n' if not nb_err: note = coda_note_header + coda_note + coda_note_footer - coda_obj.write(cr, uid,[coda_id],{'note': note }) + coda_obj.write(cr, uid, [coda_id], {'note': note}) cr.commit() if batch: return None @@ -1321,12 +1319,12 @@ class account_coda_import(osv.osv_memory): err_code = 'G0002' return (err_code, err_string) raise osv.except_osv(_('CODA Import failed !'), err_string) - - context.update({ 'bk_st_ids': bk_st_ids}) + + context.update({'bk_st_ids': bk_st_ids}) model_data_ids = mod_obj.search(cr, uid, [('model', '=', 'ir.ui.view'), ('name', '=', 'account_coda_import_result_view')], context=context) resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id'] self.write(cr, uid, ids, {'note': note}, context=context) - + return { 'name': _('Import CODA File result'), 'res_id': ids[0], @@ -1341,16 +1339,16 @@ class account_coda_import(osv.osv_memory): } def _statement_hook(self, cr, uid, coda_bank_params, st_vals, context=None): - """ + """ Use this method to take customer specific actions based upon the bank statement data. Returns: st_hook_error : False or string with error message - st_vals + st_vals """ return False, st_vals def _st_line_hook(self, cr, uid, coda_bank_params, st_line_vals, context=None): - """ + """ Use this method to adapt the statement line created by the CODA parsing to customer specific needs. """ @@ -1374,43 +1372,50 @@ class account_coda_import(osv.osv_memory): res_model, res_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, module, xml_id) action = self.pool.get('ir.actions.act_window').read(cr, uid, res_id, context=context) domain = eval(action.get('domain') or '[]') - domain += [('id','in', context.get('bk_st_ids', False))] + domain += [('id', 'in', context.get('bk_st_ids', False))] action.update({'domain': domain}) return action - + account_coda_import() + def repl_special(s): s = s.replace("\'", "\'" + "'") return s + def str2date(date_str): try: - return time.strftime('%Y-%m-%d', time.strptime(date_str,'%d%m%y')) + return time.strftime('%Y-%m-%d', time.strptime(date_str, '%d%m%y')) except: return False + def str2time(time_str): return time_str[:2] + ':' + time_str[2:] + def str2float(str): try: return float(str) except: return 0.0 + def list2float(lst): try: - return str2float((lambda s : s[:-3] + '.' + s[-3:])(lst)) + return str2float((lambda s: s[:-3] + '.' + s[-3:])(lst)) except: return 0.0 + def number2float(s, d): try: - return float(s[:len(s)-d] + '.' + s[len(s)-d:]) + return float(s[:len(s) - d] + '.' + s[len(s) - d:]) except: return False + def _get_acc_numbers(acc_number): #TODO this method is needed because the iban and bank account fields have been merged together. But sometimes we # need to retrieve the normal bank account from the IBAN. This should be globalized and defined as a method on the @@ -1422,6 +1427,7 @@ def _get_acc_numbers(acc_number): from base_iban.base_iban import _ref_iban, _format_iban + def calc_iban_checksum(country, bban): bban = bban.replace(' ', '').upper() + country.upper() + '00' base = '' @@ -1433,16 +1439,18 @@ def calc_iban_checksum(country, bban): kk = 98 - int(base) % 97 return str(kk).rjust(2, '0') + def check_bban(country, bban): if country == 'BE': try: int(bban) except: - return False + return False if len(bban) != 12: return False return True + def check_iban(iban): """ Check the IBAN number (logic partially based upon base_iban module, cf. is_iban_valid method) @@ -1458,20 +1466,21 @@ def check_iban(iban): iban2 = "" for char in iban: if char.isalpha(): - iban2 += str(ord(char)-87) + iban2 += str(ord(char) - 87) else: iban2 += char #iban is correct if modulo 97 == 1 return int(iban2) % 97 == 1 + def get_bank(self, cr, uid, bic, iban): - country_obj = self.pool.get('res.country') + country_obj = self.pool.get('res.country') bank_obj = self.pool.get('res.bank') bank_id = False bank_name = False - feedback = False + feedback = False bank_country = iban[:2] try: bank_country_id = country_obj.search(cr, uid, [('code', '=', bank_country)])[0] @@ -1505,7 +1514,7 @@ def get_bank(self, cr, uid, bic, iban): feedback = _("\n Bank lookup failed. Please define a Bank with Code '%s' and Country '%s' !") \ % (bank_code, country.name) else: - if not bic: + if not bic: feedback = _("\n Bank lookup failed due to missing BIC in Bank Statement for IBAN '%s' !") \ % (iban) else: @@ -1518,10 +1527,11 @@ def get_bank(self, cr, uid, bic, iban): 'country': bank_country_id, }) else: - bank_id = bank_ids[0] - + bank_id = bank_ids[0] + return bank_id, bic, bank_name, feedback - + + def update_partner_bank(self, cr, uid, bic, iban, partner_id, counterparty_name): partner_bank_obj = self.pool.get('res.partner.bank') bank_id = False @@ -1531,7 +1541,6 @@ def update_partner_bank(self, cr, uid, bic, iban, partner_id, counterparty_name) if not bank_id: return feedback else: - bban = iban #convert belgian BBAN numbers to IBAN if check_bban('BE', iban): kk = calc_iban_checksum('BE', iban) @@ -1541,22 +1550,23 @@ def update_partner_bank(self, cr, uid, bic, iban, partner_id, counterparty_name) return feedback if bank_id: - partner_bank_id = partner_bank_obj.create(cr, uid, { + partner_bank_obj.create(cr, uid, { 'partner_id': partner_id, 'name': counterparty_name, 'bank': bank_id, 'state': 'iban', 'bank_bic': bic, - 'bank_name': bank_name, + 'bank_name': bank_name, 'acc_number': iban, }) return feedback -indent = '\n' + 8*' ' +indent = '\n' + 8 * ' ' st_line_name_families = ['13', '35', '41', '80'] parse_comms_move = ['100', '101', '102', '103', '105', '106', '107', '108', '111', '113', '114', '115', '121', '122', '123', '124', '125', '126', '127'] parse_comms_info = ['001', '002', '004', '005', '006', '007', '107', '008', '009', '010', '011'] + def get_st_line_name(line, context): #_logger.warn('get_st_line_name - entry').warn('ref = %s, family = %s, code = %s, categ = %s', line['ref'], line['trans_family'], line['trans_code'], line['trans_category']) st_line_name = line['name'] @@ -1572,6 +1582,7 @@ def get_st_line_name(line, context): return st_line_name + def parse_comm_move(self, cr, uid, line, comm_type_table, context): #_logger.warn('parse_comm_move - entry, ref = %s, family = %s, code = %s, categ = %s, comm_type = %s, name = %s', line['ref'], line['trans_family'], line['trans_code'], line['trans_category'], line['struct_comm_type'], line['name']) comm_type = line['struct_comm_type'] @@ -1628,7 +1639,7 @@ def parse_comm_move(self, cr, uid, line, comm_type_table, context): '1': _('direct debit cancelled or nonexistent'), '2': _('refusal - other reason'), 'D': _('payer disagrees'), - 'E': _('direct debit number linked to another identification number of the creditor')} + 'E': _('direct debit number linked to another identification number of the creditor')} st_line_name = _('Direct debit - DOM\'80') direct_debit_number = comm[0:12].strip() pivot_date = str2date(comm[12:18]) @@ -1649,7 +1660,7 @@ def parse_comm_move(self, cr, uid, line, comm_type_table, context): st_line_comm += indent + _('Interest rates, calculation basis') + ': %.2f' % list2float(comm[15:30]) + \ indent + _('Interest') + ': %.2f' % list2float(comm[30:42]) - if comm_type =='111': + if comm_type == '111': card_schemes = { '1': 'Bancontact/Mister Cash', '2': _('Private'), @@ -1781,10 +1792,10 @@ def parse_comm_move(self, cr, uid, line, comm_type_table, context): if comm_type == '123': starting_date = str2date(comm[0:6]) maturity_date = comm[6:12] == '999999' and _('guarantee without fixed term') or str2date(comm[0:6]) - basic_amount = list2float(comm[12:27]) + basic_amount = list2float(comm[12:27]) percent = number2float(comm[27:39], 8) term = comm[39:43].lstrip('0') - minimum = comm[43] == '1' and True or False + minimum = comm[43] == '1' and True or False guarantee_number = comm[44:57].strip() st_line_comm = '\n' + indent + st_line_name + indent + _('Starting Date') + ': %s' % starting_date st_line_comm += indent + _('Maturity Date') + ': %s' % maturity_date @@ -1793,7 +1804,7 @@ def parse_comm_move(self, cr, uid, line, comm_type_table, context): st_line_comm += indent + _('Term in days') + ': %s' % term st_line_comm += indent + (minimum and _('Minimum applicable') or _('Minimum not applicable')) st_line_comm += indent + _('Guarantee Number') + ': %s' % guarantee_number - + if comm_type == '124': card_issuers = { '1': 'Mastercard', @@ -1812,7 +1823,7 @@ def parse_comm_move(self, cr, uid, line, comm_type_table, context): st_line_comm += indent + _('Invoice Number') + ': %s' % invoice_number st_line_comm += indent + _('Identification Number') + ': %s' % identification_number st_line_comm += indent + _('Date') + ': %s' % date - + if comm_type == '125': if line['trans_family'] not in st_line_name_families: st_line_name = _('Credit') @@ -1836,31 +1847,31 @@ def parse_comm_move(self, cr, uid, line, comm_type_table, context): st_line_comm += indent + _('End Date') + ': %s' % end_date st_line_comm += indent + _('Nominal Interest Rate or Rate of Charge') + ': %.4f' % rate st_line_comm += indent + _('Transaction Reference') + ': %s' % trans_reference - + if comm_type == '127': direct_debit_types = { '0': _('unspecified'), '1': _('recurrent'), '2': _('one-off'), '3': _('1-st (recurrent)'), - '4': _('last (recurrent)')} + '4': _('last (recurrent)')} direct_debit_schemes = { '0': _('unspecified'), '1': _('SEPA core'), - '2': _('SEPA B2B')} + '2': _('SEPA B2B')} paid_refusals = { '0': _('paid'), '1': _('technical problem'), '2': _('refusal - reason not specified'), '3': _('debtor disagrees'), - '4': _('debtor\'s account problem')} + '4': _('debtor\'s account problem')} R_types = { '0': _('paid'), '1': _('reject'), '2': _('return'), '3': _('refund'), '4': _('reversal'), - '5': _('cancellation')} + '5': _('cancellation')} st_line_name = _('European direct debit (SEPA)') settlement_date = str2date(comm[0:6]) direct_debit_type = direct_debit_types.get(comm[6], '') @@ -1880,14 +1891,15 @@ def parse_comm_move(self, cr, uid, line, comm_type_table, context): st_line_comm += indent + _('Communication') + ': %s' % comm_zone st_line_comm += indent + _('R transaction Type') + ': %s' % R_type st_line_comm += indent + _('Reason') + ': %s' % reason - + return st_line_name, st_line_comm + def parse_comm_info(self, cr, uid, line, comm_type_table, context): comm_type = line['struct_comm_type'] comm = st_line_comm = line['communication'] st_line_name = line['name'] - + if comm_type == '001': st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] st_line_comm = '\n' + indent + st_line_name + indent + _('Name') + ': %s' % comm[0:70].strip() @@ -1900,7 +1912,6 @@ def parse_comm_info(self, cr, uid, line, comm_type_table, context): st_line_comm = comm.strip() if comm_type == '006': - amount_sign = comm[48] amount = (comm[48] == '1' and '-' or '') + ('%.2f' % list2float(comm[33:48])) + ' ' + comm[30:33] st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] st_line_comm = '\n' + indent + st_line_name + indent + _('Description of the detail') + ': %s' % comm[0:30].strip() @@ -1912,5 +1923,4 @@ def parse_comm_info(self, cr, uid, line, comm_type_table, context): 'Please contact Noviat (info@noviat.be) for more information about the development roadmap', comm_type) return st_line_name, st_line_comm - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 5d44b0f624c6fe354529a4aa265d9bca373daff1 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Mon, 3 Dec 2012 17:51:39 +0100 Subject: [PATCH 043/163] [FIX]Unexisting payment reference, wrong operator in sql req bzr revid: dle@openerp.com-20121203165139-qov9jfk91wxv3qb9 --- addons/l10n_be_coda/l10n_be_coda_view.xml | 2 +- addons/l10n_be_coda/wizard/account_coda_import.py | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/addons/l10n_be_coda/l10n_be_coda_view.xml b/addons/l10n_be_coda/l10n_be_coda_view.xml index fb0a12b73fb..1ef09862c3d 100644 --- a/addons/l10n_be_coda/l10n_be_coda_view.xml +++ b/addons/l10n_be_coda/l10n_be_coda_view.xml @@ -246,7 +246,7 @@ - + diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index ea7558e13da..5a1b530d38c 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -913,7 +913,7 @@ class account_coda_import(osv.osv_memory): balance_start_check_date = statement['first_transaction_date'] or statement['date'] cr.execute('SELECT balance_end_real \ FROM account_bank_statement \ - WHERE journal_id = %s and date < %s \ + WHERE journal_id = %s and date <= %s \ ORDER BY date DESC,id DESC LIMIT 1', (statement['journal_id'], balance_start_check_date)) res = cr.fetchone() balance_start_check = res and res[0] @@ -975,7 +975,7 @@ class account_coda_import(osv.osv_memory): if line['type'] == 'information': #Check if this line can be deleted. glob_id_stack marked as undefined here - #line['globalisation_id'] = glob_id_stack[-1][2] + line['globalisation_id'] = glob_id_stack[-1][2] line_note = _('Transaction Type' ': %s - %s' \ '\nTransaction Family: %s - %s' \ '\nTransaction Code: %s - %s' \ @@ -1035,7 +1035,6 @@ class account_coda_import(osv.osv_memory): 'type': 'coda', 'parent_id': glob_id_stack[-1][2], 'amount': line['globalisation_amount'], - 'payment_reference': line['payment_reference'] }) line['globalisation_id'] = glob_id glob_id_stack.append((glob_lvl_flag, glob_code, glob_id, glob_name)) @@ -1201,7 +1200,6 @@ class account_coda_import(osv.osv_memory): account_id = account_mapping_obj.account_id_get(cr, uid, **kwargs) if account_id: line['account_id'] = account_id - st_line_vals = { 'ref': line['ref'], 'name': line_name, @@ -1216,7 +1214,6 @@ class account_coda_import(osv.osv_memory): 'counterparty_currency': line['counterparty_currency'], 'account_id': line['account_id'], 'globalisation_id': line['globalisation_id'], - 'payment_reference': line['payment_reference'], 'statement_id': bk_st_id, 'voucher_id': voucher_id, 'note': line_note, From 9e6c2805abe603818ba112471bd1221fce7eeedf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 4 Dec 2012 15:26:50 +0100 Subject: [PATCH 044/163] [REF] [IMP] expression.parse: refactored the main parsing loop, now using source and result stacks. Leaf elements are encapsulated into a specific object, allowing to delegate the join condition formation and aliases generation, as well as working_table management to them. The main parsing loop is now a loop taking a leaf, doing one action on it, and putting the result back to be analyzed or in the results. This allows to avoid having while loops inside a main while loop with some weird corner effects. bzr revid: tde@openerp.com-20121204142650-gkhmjdeu5upi25kp --- openerp/addons/base/ir/ir_rule.py | 4 +- openerp/addons/base/tests/test_expression.py | 104 ++- openerp/osv/expression.py | 912 +++++++++++-------- openerp/osv/orm.py | 9 +- openerp/osv/query.py | 4 +- openerp/tests/test_expression.py | 11 +- 6 files changed, 650 insertions(+), 394 deletions(-) diff --git a/openerp/addons/base/ir/ir_rule.py b/openerp/addons/base/ir/ir_rule.py index a4341436158..ba4665ddd69 100644 --- a/openerp/addons/base/ir/ir_rule.py +++ b/openerp/addons/base/ir/ir_rule.py @@ -52,7 +52,7 @@ class ir_rule(osv.osv): eval_context = self._eval_context(cr, uid) for rule in self.browse(cr, uid, ids, context): if rule.domain_force: - res[rule.id] = expression.normalize(eval(rule.domain_force, eval_context)) + res[rule.id] = expression.normalize_domain(eval(rule.domain_force, eval_context)) else: res[rule.id] = [] return res @@ -130,7 +130,7 @@ class ir_rule(osv.osv): for rule in self.browse(cr, SUPERUSER_ID, rule_ids): # read 'domain' as UID to have the correct eval context for the rule. rule_domain = self.read(cr, uid, rule.id, ['domain'])['domain'] - dom = expression.normalize(rule_domain) + dom = expression.normalize_domain(rule_domain) for group in rule.groups: if group in user.groups_id: group_domains.setdefault(group, []).append(dom) diff --git a/openerp/addons/base/tests/test_expression.py b/openerp/addons/base/tests/test_expression.py index d3fe9de3efd..5286e1c5657 100644 --- a/openerp/addons/base/tests/test_expression.py +++ b/openerp/addons/base/tests/test_expression.py @@ -92,7 +92,30 @@ class test_expression(common.TransactionCase): # self.assertTrue(a not in with_any_other_than_a, "Search for category_id with any other than cat_a failed (1).") # self.assertTrue(ab in with_any_other_than_a, "Search for category_id with any other than cat_a failed (2).") - def test_10_auto_join(self): + def test_10_expression_parse(self): + # TDE note: those tests have been added when refactoring the expression.parse() method. + # They come in addition to the already existing test_osv_expression.yml; maybe some tests + # will be a bit redundant + registry, cr, uid = self.registry, self.cr, self.uid + users_obj = registry('res.users') + + # Create users + a = users_obj.create(cr, uid, {'name': 'test_A', 'login': 'test_A'}) + b1 = users_obj.create(cr, uid, {'name': 'test_B', 'login': 'test_B'}) + b1_user = users_obj.browse(cr, uid, [b1])[0] + b2 = users_obj.create(cr, uid, {'name': 'test_B2', 'login': 'test_B2', 'parent_id': b1_user.partner_id.id}) + + # Test1: simple inheritance + user_ids = users_obj.search(cr, uid, [('name', 'like', 'test')]) + self.assertEqual(set(user_ids), set([a, b1, b2]), 'searching through inheritance failed') + user_ids = users_obj.search(cr, uid, [('name', '=', 'test_B')]) + self.assertEqual(set(user_ids), set([b1]), 'searching through inheritance failed') + + # Test2: inheritance + relational fields + user_ids = users_obj.search(cr, uid, [('child_ids.name', 'like', 'test_B')]) + self.assertEqual(set(user_ids), set([b1]), 'searching through inheritance failed') + + def test_20_auto_join(self): registry, cr, uid = self.registry, self.cr, self.uid # Get models @@ -132,6 +155,9 @@ class test_expression(common.TransactionCase): # Do: one2many without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', name_test)]) + for query in self.query_list: + print query + print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_aa]), "_auto_join off: ('bank_ids.name', 'like', '..'): incorrect result") @@ -141,14 +167,14 @@ class test_expression(common.TransactionCase): sql_query = self.query_list[0].get_sql() self.assertIn('res_partner_bank', sql_query[0], "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect main table") - self.assertIn('res_partner_bank."name" like %s', sql_query[1], + self.assertIn('"res_partner_bank"."name" like %s', sql_query[1], "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect where condition") self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect parameter") sql_query = self.query_list[2].get_sql() self.assertIn('res_partner', sql_query[0], "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect main table") - self.assertIn('res_partner."id" in (%s)', sql_query[1], + self.assertIn('"res_partner"."id" in (%s)', sql_query[1], "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect where condition") self.assertEqual(set([p_aa]), set(sql_query[2]), "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect parameter") @@ -156,6 +182,9 @@ class test_expression(common.TransactionCase): # Do: cascaded one2many without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + for query in self.query_list: + print query + print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_a, p_b]), "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]): incorrect result") @@ -167,6 +196,8 @@ class test_expression(common.TransactionCase): partner_bank_ids_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', 'test_a')]) + # for query in self.query_list: + # print query # Test result self.assertEqual(set(partner_ids), set([p_aa]), "_auto_join on: ('bank_ids.name', 'like', '..') incorrect result") @@ -178,9 +209,9 @@ class test_expression(common.TransactionCase): "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect main table") self.assertIn('"res_partner_bank" as res_partner__bank_ids', sql_query[0], "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join") - self.assertIn('res_partner__bank_ids."name" like %s', sql_query[1], + self.assertIn('"res_partner__bank_ids"."name" like %s', sql_query[1], "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect where condition") - self.assertIn('res_partner__bank_ids."partner_id"=res_partner."id"', sql_query[1], + self.assertIn('res_partner."id"=res_partner__bank_ids."partner_id"', sql_query[1], "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join condition") self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect parameter") @@ -188,6 +219,9 @@ class test_expression(common.TransactionCase): # Do: one2many with _auto_join, test final leaf is an id self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('bank_ids.id', 'in', [b_aa, b_ab])]) + for query in self.query_list: + print query + print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_aa, p_ab]), "_auto_join on: ('bank_ids.id', 'in', [..]) incorrect result") @@ -199,9 +233,9 @@ class test_expression(common.TransactionCase): "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect main table") self.assertIn('"res_partner_bank" as res_partner__bank_ids', sql_query[0], "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect join") - self.assertIn('res_partner__bank_ids."id" in (%s,%s)', sql_query[1], + self.assertIn('"res_partner__bank_ids"."id" in (%s,%s)', sql_query[1], "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect where condition") - self.assertIn('res_partner__bank_ids."partner_id"=res_partner."id"', sql_query[1], + self.assertIn('res_partner."id"=res_partner__bank_ids."partner_id"', sql_query[1], "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect join condition") self.assertEqual(set([b_aa, b_ab]), set(sql_query[2]), "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect parameter") @@ -210,6 +244,9 @@ class test_expression(common.TransactionCase): partner_child_ids_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + for query in self.query_list: + print query + print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_a, p_b]), "_auto_join on: ('child_ids.bank_ids.id', 'not in', [..]): incorrect result") @@ -223,11 +260,11 @@ class test_expression(common.TransactionCase): "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") self.assertIn('"res_partner_bank" as res_partner__child_ids__bank_ids', sql_query[0], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") - self.assertIn('res_partner__child_ids__bank_ids."id" in (%s,%s)', sql_query[1], + self.assertIn('"res_partner__child_ids__bank_ids"."id" in (%s,%s)', sql_query[1], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect where condition") - self.assertIn('res_partner__child_ids."parent_id"=res_partner."id"', sql_query[1], + self.assertIn('res_partner."id"=res_partner__child_ids."parent_id"', sql_query[1], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") - self.assertIn('res_partner__child_ids__bank_ids."partner_id"=res_partner__child_ids."id"', sql_query[1], + self.assertIn('res_partner__child_ids."id"=res_partner__child_ids__bank_ids."partner_id"', sql_query[1], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") self.assertEqual(set([b_aa, b_ba]), set(sql_query[2]), "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect parameter") @@ -241,6 +278,9 @@ class test_expression(common.TransactionCase): # Do: many2one without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + for query in self.query_list: + print query + print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join off: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -252,6 +292,9 @@ class test_expression(common.TransactionCase): partner_state_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + for query in self.query_list: + print query + print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -261,7 +304,7 @@ class test_expression(common.TransactionCase): sql_query = self.query_list[0].get_sql() self.assertIn('"res_country"', sql_query[0], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") - self.assertIn('res_country."code" like %s', sql_query[1], + self.assertIn('"res_country"."code" like %s', sql_query[1], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") self.assertEqual(['%' + name_test + '%'], sql_query[2], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") @@ -270,9 +313,9 @@ class test_expression(common.TransactionCase): "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") self.assertIn('"res_country_state" as res_partner__state_id', sql_query[0], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join") - self.assertIn('res_partner__state_id."country_id" in (%s)', sql_query[1], + self.assertIn('"res_partner__state_id"."country_id" in (%s)', sql_query[1], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") - self.assertIn('(res_partner__state_id."id"=res_partner."state_id"', sql_query[1], + self.assertIn('res_partner."state_id"=res_partner__state_id."id"', sql_query[1], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join condition") # Do: many2one with 1 _auto_join on the second many2one @@ -280,6 +323,9 @@ class test_expression(common.TransactionCase): state_country_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + for query in self.query_list: + print query + print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -292,9 +338,9 @@ class test_expression(common.TransactionCase): "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") self.assertIn('"res_country" as res_country_state__country_id', sql_query[0], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join") - self.assertIn('res_country_state__country_id."code" like %s', sql_query[1], + self.assertIn('"res_country_state__country_id"."code" like %s', sql_query[1], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") - self.assertIn('res_country_state__country_id."id"=res_country_state."country_id"', sql_query[1], + self.assertIn('res_country_state."country_id"=res_country_state__country_id."id"', sql_query[1], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join condition") self.assertEqual(['%' + name_test + '%'], sql_query[2], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") @@ -302,7 +348,7 @@ class test_expression(common.TransactionCase): sql_query = self.query_list[1].get_sql() self.assertIn('"res_partner"', sql_query[0], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") - self.assertIn('res_partner."state_id" in', sql_query[1], + self.assertIn('"res_partner"."state_id" in', sql_query[1], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") # Do: many2one with 2 _auto_join @@ -310,6 +356,8 @@ class test_expression(common.TransactionCase): state_country_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + for query in self.query_list: + print query # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join on: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -323,11 +371,11 @@ class test_expression(common.TransactionCase): "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") self.assertIn('"res_country" as res_partner__state_id__country_id', sql_query[0], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") - self.assertIn('res_partner__state_id__country_id."code" like %s', sql_query[1], + self.assertIn('"res_partner__state_id__country_id"."code" like %s', sql_query[1], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect where condition") - self.assertIn('res_partner__state_id."id"=res_partner."state_id"', sql_query[1], + self.assertIn('res_partner."state_id"=res_partner__state_id."id"', sql_query[1], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") - self.assertIn('res_partner__state_id__country_id."id"=res_partner__state_id."country_id"', sql_query[1], + self.assertIn('res_partner__state_id."country_id"=res_partner__state_id__country_id."id"', sql_query[1], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") self.assertEqual(['%' + name_test + '%'], sql_query[2], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect parameter") @@ -345,6 +393,9 @@ class test_expression(common.TransactionCase): # Do: ('child_ids.state_id.country_id.code', 'like', '..') without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) + for query in self.query_list: + print query + print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") @@ -358,6 +409,9 @@ class test_expression(common.TransactionCase): state_country_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) + for query in self.query_list: + print query + print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") @@ -365,12 +419,12 @@ class test_expression(common.TransactionCase): self.assertEqual(len(self.query_list), 1, "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") - # Remove mocks and modifications - partner_bank_ids_col._auto_join = False - partner_child_ids_col._auto_join = False - partner_state_id_col._auto_join = False - state_country_id_col._auto_join = False - BaseModel._where_calc = self._base_model_where_calc + # # Remove mocks and modifications + # partner_bank_ids_col._auto_join = False + # partner_child_ids_col._auto_join = False + # partner_state_id_col._auto_join = False + # state_country_id_col._auto_join = False + # BaseModel._where_calc = self._base_model_where_calc if __name__ == '__main__': unittest2.main() diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index b13586f5311..2474e6665cd 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -136,10 +136,9 @@ start the server specifying the ``--unaccent`` flag. import logging import traceback -from openerp.tools import flatten, reverse_enumerate -import fields import openerp.modules from openerp.osv.orm import MAGIC_COLUMNS +import openerp.tools as tools #.apidoc title: Domain Expressions @@ -174,7 +173,12 @@ FALSE_DOMAIN = [FALSE_LEAF] _logger = logging.getLogger(__name__) -def normalize(domain): + +# -------------------------------------------------- +# Generic domain manipulation +# -------------------------------------------------- + +def normalize_domain(domain): """Returns a normalized version of ``domain_expr``, where all implicit '&' operators have been made explicit. One property of normalized domain expressions is that they can be easily combined together as if they were single domain components. @@ -190,13 +194,14 @@ def normalize(domain): result[0:0] = [AND_OPERATOR] # put an extra '&' in front expected = 1 result.append(token) - if isinstance(token, (list, tuple)): # domain term + if isinstance(token, (list, tuple)): # domain term expected -= 1 else: expected += op_arity.get(token, 0) - 1 assert expected == 0 return result + def combine(operator, unit, zero, domains): """Returns a new domain expression where all domain components from ``domains`` have been added together using the binary operator ``operator``. The given @@ -227,46 +232,16 @@ def combine(operator, unit, zero, domains): result = [operator] * (count - 1) + result return result + def AND(domains): """AND([D1,D2,...]) returns a domain representing D1 and D2 and ... """ return combine(AND_OPERATOR, TRUE_DOMAIN, FALSE_DOMAIN, domains) + def OR(domains): """OR([D1,D2,...]) returns a domain representing D1 or D2 or ... """ return combine(OR_OPERATOR, FALSE_DOMAIN, TRUE_DOMAIN, domains) -def is_operator(element): - """Test whether an object is a valid domain operator. """ - return isinstance(element, basestring) and element in DOMAIN_OPERATORS - -# TODO change the share wizard to use this function. -def is_leaf(element, internal=False): - """ Test whether an object is a valid domain term. - - :param internal: allow or not the 'inselect' internal operator in the term. - This normally should be always left to False. - """ - INTERNAL_OPS = TERM_OPERATORS + ('inselect',) - return (isinstance(element, tuple) or isinstance(element, list)) \ - and len(element) == 3 \ - and (((not internal) and element[1] in TERM_OPERATORS + ('<>',)) \ - or (internal and element[1] in INTERNAL_OPS + ('<>',))) - -def normalize_leaf(left, operator, right): - """ Change a term's operator to some canonical form, simplifying later - processing. - """ - original = operator - operator = operator.lower() - if operator == '<>': - operator = '!=' - if isinstance(right, bool) and operator in ('in', 'not in'): - _logger.warning("The domain term '%s' should use the '=' or '!=' operator." % ((left, original, right),)) - operator = '=' if operator == 'in' else '!=' - if isinstance(right, (list, tuple)) and operator in ('=', '!='): - _logger.warning("The domain term '%s' should use the 'in' or 'not in' operator." % ((left, original, right),)) - operator = 'in' if operator == '=' else 'not in' - return left, operator, right def distribute_not(domain): """ Distribute any '!' domain operators found inside a normalized domain. @@ -308,6 +283,7 @@ def distribute_not(domain): operator = mapping[operator] return [(left, operator, right)] return [NOT_OPERATOR, (left, operator, right)] + def distribute_negate(domain): """Negate the domain ``subtree`` rooted at domain[0], leaving the rest of the domain intact, and return @@ -331,34 +307,268 @@ def distribute_not(domain): done, todo = distribute_negate(domain[1:]) return done + distribute_not(todo) + +# -------------------------------------------------- +# Generic leaf manipulation +# -------------------------------------------------- + +def normalize_leaf(element): + """ Change a term's operator to some canonical form, simplifying later + processing. """ + if not is_leaf(element): + return element + left, operator, right = element + original = operator + operator = operator.lower() + if operator == '<>': + operator = '!=' + if isinstance(right, bool) and operator in ('in', 'not in'): + _logger.warning("The domain term '%s' should use the '=' or '!=' operator." % ((left, original, right),)) + operator = '=' if operator == 'in' else '!=' + if isinstance(right, (list, tuple)) and operator in ('=', '!='): + _logger.warning("The domain term '%s' should use the 'in' or 'not in' operator." % ((left, original, right),)) + operator = 'in' if operator == '=' else 'not in' + return (left, operator, right) + + +def is_operator(element): + """Test whether an object is a valid domain operator. """ + return isinstance(element, basestring) and element in DOMAIN_OPERATORS + + +# TODO change the share wizard to use this function. +def is_leaf(element, internal=False): + """ Test whether an object is a valid domain term: + - is a list or tuple + - with 3 elements + - second element if a valid op + + :param tuple element: a leaf in form (left, operator, right) + :param boolean internal: allow or not the 'inselect' internal operator + in the term. This should be always left to False. + """ + INTERNAL_OPS = TERM_OPERATORS + ('<>',) + if internal: + INTERNAL_OPS += ('inselect',) + return (isinstance(element, tuple) or isinstance(element, list)) \ + and len(element) == 3 \ + and element[1] in INTERNAL_OPS + + +# -------------------------------------------------- +# SQL utils +# -------------------------------------------------- + def select_from_where(cr, select_field, from_table, where_field, where_ids, where_operator): # todo: merge into parent query as sub-query res = [] if where_ids: - if where_operator in ['<','>','>=','<=']: + if where_operator in ['<', '>', '>=', '<=']: cr.execute('SELECT "%s" FROM "%s" WHERE "%s" %s %%s' % \ (select_field, from_table, where_field, where_operator), - (where_ids[0],)) # TODO shouldn't this be min/max(where_ids) ? + (where_ids[0],)) # TODO shouldn't this be min/max(where_ids) ? res = [r[0] for r in cr.fetchall()] - else: # TODO where_operator is supposed to be 'in'? It is called with child_of... + else: # TODO where_operator is supposed to be 'in'? It is called with child_of... for i in range(0, len(where_ids), cr.IN_MAX): - subids = where_ids[i:i+cr.IN_MAX] + subids = where_ids[i:i + cr.IN_MAX] cr.execute('SELECT "%s" FROM "%s" WHERE "%s" IN %%s' % \ (select_field, from_table, where_field), (tuple(subids),)) res.extend([r[0] for r in cr.fetchall()]) return res + def select_distinct_from_where_not_null(cr, select_field, from_table): - cr.execute('SELECT distinct("%s") FROM "%s" where "%s" is not null' % \ - (select_field, from_table, select_field)) + cr.execute('SELECT distinct("%s") FROM "%s" where "%s" is not null' % (select_field, from_table, select_field)) return [r[0] for r in cr.fetchall()] + +# -------------------------------------------------- +# ExtendedLeaf class for managing leafs and contexts +# ------------------------------------------------- + +class ExtendedLeaf(object): + + def __init__(self, leaf, table, context_stack=None): + """ Initialize the ExtendedLeaf + + :attr [string, tuple] leaf: operator or tuple-formatted domain + expression + :attr object table: table object + :attr list _tables: list of chained table objects, updated when + adding joins + :attr tuple elements: manipulation-friendly leaf + :attr object field: field obj, taken from table, not necessarily + found (inherits, 'id') + :attr list field_path: exploded left of elements + (partner_id.name -> ['partner_id', 'name']) + :attr object relational_table: distant table for relational fields + """ + assert table, 'Invalid leaf creation without table' + self.context_stack = context_stack or [] + # validate the leaf + self.leaf = leaf + # normalize the leaf's operator + self.normalize_leaf() + # set working variables; handle the context stack and previous tables + self.table = table + self._tables = [] + for item in self.context_stack: + self._tables.append(item[0]) + self._tables.append(table) + # if leaf.is_operator: + # self.elements = self.leaf, None, None + # elif leaf.is_true_leaf() or leaf.is_false_leaf(): + # # because we consider left as a string + # self.elements = ('%s' % leaf.leaf[0], leaf.leaf[1], leaf.leaf[2]) + # else: + # self.elements = leaf.leaf + # self.field_path = self.elements[0].split('.', 1) + # self.field = self.table._columns.get(self.field_path[0]) + # if self.field and self.field._obj: + # relational_table = working_table.pool.get(field._obj) + # else: + # relational_table = None + # check validity + self.check_leaf() + + def __str__(self): + return '' % (str(self.leaf), self.table._table, ','.join(self._get_context_debug())) + + def create_substitution_leaf(self, new_leaf, new_table=None): + if new_table is None: + new_table = self.table + return ExtendedLeaf(new_leaf, new_table, self.context_stack) + + def create_sibling_leaf(self, new_leaf): + pass + + # -------------------------------------------------- + # Join / Context manipulation + # running examples: + # - res_users.name, like, foo: name is on res_partner, not on res_users + # - res_partner.bank_ids.name, like, foo: bank_ids is a one2many with _auto_join + # - res_partner.state_id.name, like, foo: state_id is a many2one with _auto_join + # A join: + # - link between src_table and dst_table, using src_field and dst_field + # i.e.: inherits: res_users.partner_id = res_partner.id + # i.e.: one2many: res_partner.id = res_partner_bank.partner_id + # i.e.: many2one: res_partner.state_id = res_country_state.id + # - done in the context of a field + # i.e.: inherits: 'partner_id' + # i.e.: one2many: 'bank_ids' + # i.e.: many2one: 'state_id' + # - table names use aliases: initial table followed by the context field + # names, joined using a '__' + # i.e.: inherits: res_partner as res_users__partner_id + # i.e.: one2many: res_partner_bank as res_partner__bank_ids + # i.e.: many2one: res_country_state as res_partner__state_id + # - join condition use aliases + # i.e.: inherits: res_users.partner_id = res_users__partner_id.id + # i.e.: one2many: res_partner.id = res_partner__bank_ids.partner_id + # i.e.: many2one: res_partner.state_id = res_partner__state_id.id + # Variables explanation: + # - src_table: working table before the join + # -> res_users, res_partner, res_partner + # - dst_table: working table after the join + # -> res_partner, res_partner_bank, res_country_state + # - src_table_link_name: field name used to link the src table, not + # necessarily a field (because 'id' is not a field instance) + # i.e.: inherits: 'partner_id', found in the inherits of the current table + # i.e.: one2many: 'id', not a field + # i.e.: many2one: 'state_id', the current field name + # - dst_table_link_name: field name used to link the dst table, not + # necessarily a field (because 'id' is not a field instance) + # i.e.: inherits: 'id', not a field + # i.e.: one2many: 'partner_id', _fields_id of the current field + # i.e.: many2one: 'id', not a field + # - context_field_name: field name used as a context to make the alias + # i.e.: inherits: 'partner_id': found in the inherits of the current table + # i.e.: one2many: 'bank_ids': current field name + # i.e.: many2one: 'state_id': current field name + # -------------------------------------------------- + + def _generate_alias(self): + alias = self._tables[0]._table + for context in self.context_stack: + alias += '__' + context[4] + return alias + + def add_join_context(self, context_field_name, src_table_link_name, dst_table, dst_table_link_name): + """ See above comments for more details. A join context is a tuple structure + holding the following elements: (src_table (self.table), src_table_link_name, + dst_table, dst_table_link_name, context_field_name) + After adding the join, the table of the current leaf is updated. + """ + self.context_stack.append((self.table, src_table_link_name, dst_table, dst_table_link_name, context_field_name)) + self._tables.append(dst_table) + self.table = dst_table + + def get_join_conditions(self): + names = [] + alias = self._tables[0]._table + for context in self.context_stack: + previous_alias = alias + alias += '__' + context[4] + names.append('%s."%s"=%s."%s"' % (previous_alias, context[1], alias, context[3])) + return names + + def get_tables(self): + tables = set() + alias = self._tables[0]._table + for context in self.context_stack: + alias += '__' + context[4] + table_full_alias = '"%s" as %s' % (context[2]._table, alias) + tables.add(table_full_alias) + return tables + + def _get_context_debug(self): + names = ['%s."%s"=%s."%s" (%s)' % (table[0]._table, table[1], table[2]._table, table[3], table[4]) for table in self.context_stack] + return names + + # -------------------------------------------------- + # Leaf manipulation + # -------------------------------------------------- + + def check_leaf(self): + """ Leaf validity rules: + - a valid leaf is an operator or a leaf + - a valid leaf has a field objects unless + - it is not a tuple + - it is an inherited field + - left is id, operator is 'child_of' + - left is in MAGIC_COLUMNS + """ + if not is_operator(self.leaf) and not is_leaf(self.leaf, True): + raise ValueError("Invalid leaf %s" % str(self.leaf)) + + # if self.is_leaf() and not (self.is_true_leaf() or self.is_false_leaf()) \ + # and not self.field and not self.field_path[0] in self.table._inherit_fields \ + # and not (self.leaf[0] == 'id' and self.leaf[1] == 'child_of') \ + # and not (self.field_path[0] in MAGIC_COLUMNS): + # raise ValueError("Invalid field %r in leaf %r" % (self.leaf[0], self.leaf)) + + def is_operator(self): + return is_operator(self.leaf) + + def is_true_leaf(self): + return self.leaf == TRUE_LEAF + + def is_false_leaf(self): + return self.leaf == FALSE_LEAF + + def is_leaf(self, internal=False): + return is_leaf(self.leaf, internal=internal) + + def normalize_leaf(self): + self.leaf = normalize_leaf(self.leaf) + return True + + class expression(object): - """ - parse a domain expression - use a real polish notation - leafs are still in a ('foo', '=', 'bar') format - For more info: http://christophe-simonis-at-tiny.blogspot.com/2008/08/new-new-domain-notation.html + """ Parse a domain expression + Use a real polish notation + Leafs are still in a ('foo', '=', 'bar') format + For more info: http://christophe-simonis-at-tiny.blogspot.com/2008/08/new-new-domain-notation.html """ def __init__(self, cr, uid, exp, table, context): @@ -368,329 +578,301 @@ class expression(object): :param exp: expression (using domain ('foo', '=', 'bar' format)) :param table: root table object - :attr dict leaf_to_table: used to store the table to use for the - sql generation, according to the domain leaf. - structure: { [leaf index]: table object } - :attr set table_aliases: set of aliases. Previously this attribute - was a set of table objects; now that joins generation is included - into the expression parsing, it holds aliases, and a mapping - exist linking aliases to tables. - :attr dict table_aliases_mapping: mapping alias -> table object - :attr list joins: list of join conditions, such as (res_country_state."id" = res_partner."state_id") - :attr root_table: root table, set by parse() + :attr list result: list that will hold the result of the parsing + as a list of ExtendedLeaf + :attr list joins: list of join conditions, such as + (res_country_state."id" = res_partner."state_id") + :attr root_table: base table for the query + :attr list expression: the domain expression, that will be normalized + and prepared """ self.has_unaccent = openerp.modules.registry.RegistryManager.get(cr.dbname).has_unaccent - self.leaf_to_table = {} - self.table_aliases = set() - self.table_aliases_mapping = {} + self.result = [] self.joins = [] - self.root_table = None - # assign self.exp with the normalized, parsed domain. - self.parse(cr, uid, distribute_not(normalize(exp)), table, context) + self.root_table = table - # TDE note: this seems not to be used anymore, commenting - # # TODO used only for osv_memory - # @property - # def exp(self): - # return self.exp[:] + # normalize and prepare the expression for parsing + self.expression = distribute_not(normalize_domain(exp)) - def _has_table_alias(self, alias): - return alias in self.table_aliases + # parse the domain expression + self.parse(cr, uid, context=context) - def _get_table_from_alias(self, alias): - return self.table_aliases_mapping.get(alias) + # ---------------------------------------- + # Tools for domain manipulation + # ---------------------------------------- - def _get_full_alias(self, alias): - if not self._get_table_from_alias(alias): - return False - table_name = self._get_table_from_alias(alias)._table - if table_name == alias: - return '"%s"' % alias + def to_ids(self, cr, uid, value, relational_table, context=None, limit=None): + """ Normalize a single id or name, or a list of those, into a list of ids + :param {int,long,basestring,list,tuple} value: + if int, long -> return [value] + if basestring, convert it into a list of basestrings, then + if list of basestring -> + perform a name_search on relational_table for each name + return the list of related ids + """ + names = [] + if isinstance(value, basestring): + names = [value] + elif value and isinstance(value, (tuple, list)) and all(isinstance(item, basestring) for item in value): + names = value + elif isinstance(value, (int, long)): + return [value] + if names: + name_get_list = [name_get[0] for name in names for name_get in relational_table.name_search(cr, uid, name, [], 'ilike', context=context, limit=limit)] + return list(set(name_get_list)) + return list(value) + + def child_of_domain(self, cr, uid, left, ids, left_model, parent=None, prefix='', context=None): + """ Return a domain implementing the child_of operator for [(left,child_of,ids)], + either as a range using the parent_left/right tree lookup fields + (when available), or as an expanded [(left,in,child_ids)] """ + if left_model._parent_store and (not left_model.pool._init): + # TODO: Improve where joins are implemented for many with '.', replace by: + # doms += ['&',(prefix+'.parent_left','<',o.parent_right),(prefix+'.parent_left','>=',o.parent_left)] + doms = [] + for o in left_model.browse(cr, uid, ids, context=context): + if doms: + doms.insert(0, OR_OPERATOR) + doms += [AND_OPERATOR, ('parent_left', '<', o.parent_right), ('parent_left', '>=', o.parent_left)] + if prefix: + return [(left, 'in', left_model.search(cr, uid, doms, context=context))] + return doms else: - return '"%s" as %s' % (table_name, alias) + def recursive_children(ids, model, parent_field): + if not ids: + return [] + ids2 = model.search(cr, uid, [(parent_field, 'in', ids)], context=context) + return ids + recursive_children(ids2, model, parent_field) + return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] - def _add_table_alias(self, alias, table): - if not self._has_table_alias(alias): - self.table_aliases.add(alias) - self.table_aliases_mapping[alias] = table - else: - raise ValueError("Already existing alias %s for table %s, trying to set it for table %s" % (alias, self._get_table_from_alias(alias)._table, table._table)) + # ---------------------------------------- + # Internal structure + # ---------------------------------------- + + def _format_table_name(self, table_name): + return '"%s"' % (table_name) def get_tables(self): """ Returns the list of tables for SQL queries, like select from ... """ - return [self._get_full_alias(item) for item in self.table_aliases] + tables = [] + for leaf in self.result: + for table in leaf.get_tables(): + if table not in tables: + tables.append(table) + table_name = '"%s"' % self.root_table._table + if table_name not in tables: + tables.append(table_name) + return tables - def parse(self, cr, uid, exp, table, context): + # ---------------------------------------- + # Parsing + # ---------------------------------------- + + def parse(self, cr, uid, context): """ Transform the leaves of the expression - For each element in the expression - 1. validity check: operator or True / False or a valid leaf - 2. TDE FIXME: TO COMPLETE + The principle is to pop elements from the left of a leaf stack. Each + leaf is processed. The processing is a if/elif list of various cases + that appear in the leafs (many2one, function fields, ...). Two results + can appear at the end of a leaf processing: + - the leaf is modified or new leafs introduced in the domain: they + are added at the left of the stack, to be processed next + - the leaf is added to the result - Some var explanation for those who have 2 bytes of brain cache memory like me and that cannot remember 32^16 similar variable names. - :var obj working_table: table object, table containing the field (the name provided in the left operand) + Some var explanation: + :var obj working_table: table object, table containing the field + (the name provided in the left operand) :var list field_path: left operand seen as a path (foo.bar -> [foo, bar]) - :var string field_table: working_table._table :var obj relational_table: relational table of a field (field._obj) ex: res_partner.bank_ids -> res_partner_bank - :var obj field_obj: deleted var, now renamed to relational_table - - :param exp: expression (domain) - :param table: table object """ - self.exp = exp - self.root_table = table - self._add_table_alias(table._table, table) + result = [] + stack = [ExtendedLeaf(leaf, self.root_table) for leaf in self.expression] - def child_of_domain(left, ids, left_model, parent=None, prefix=''): - """Returns a domain implementing the child_of operator for [(left,child_of,ids)], - either as a range using the parent_left/right tree lookup fields (when available), - or as an expanded [(left,in,child_ids)]""" - if left_model._parent_store and (not left_model.pool._init): - # TODO: Improve where joins are implemented for many with '.', replace by: - # doms += ['&',(prefix+'.parent_left','<',o.parent_right),(prefix+'.parent_left','>=',o.parent_left)] - doms = [] - for o in left_model.browse(cr, uid, ids, context=context): - if doms: - doms.insert(0, OR_OPERATOR) - doms += [AND_OPERATOR, ('parent_left', '<', o.parent_right), ('parent_left', '>=', o.parent_left)] - if prefix: - return [(left, 'in', left_model.search(cr, uid, doms, context=context))] - return doms + while stack: + # Get the next leaf to process + leaf = stack.pop(0) + leafs_to_stack = [] + results_to_stack = [] + + # Get working variables + working_table = leaf.table + if leaf.is_operator(): + left, operator, right = leaf.leaf, None, None + elif leaf.is_true_leaf() or leaf.is_false_leaf(): + # because we consider left as a string + left, operator, right = ('%s' % leaf.leaf[0], leaf.leaf[1], leaf.leaf[2]) else: - def recursive_children(ids, model, parent_field): - if not ids: - return [] - ids2 = model.search(cr, uid, [(parent_field, 'in', ids)], context=context) - return ids + recursive_children(ids2, model, parent_field) - return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] - - def to_ids(value, relational_table): - """Normalize a single id or name, or a list of those, into a list of ids""" - names = [] - if isinstance(value, basestring): - names = [value] - if value and isinstance(value, (tuple, list)) and isinstance(value[0], basestring): - names = value - if names: - return flatten([[x[0] for x in relational_table.name_search(cr, uid, n, [], 'ilike', context=context, limit=None)] \ - for n in names]) - elif isinstance(value, (int, long)): - return [value] - return list(value) - - i = -1 - while i + 1 < len(self.exp): - i += 1 - - # 0 Preparation - # - Check validity of current element of expression (operator OR True/False leaf OR leaf) - # - Normalize the leaf's operator - # - Set working variables - - # check validity - e = self.exp[i] - if is_operator(e) or e == TRUE_LEAF or e == FALSE_LEAF: - continue - if not is_leaf(e): - raise ValueError("Invalid term %r in domain expression %r" % (e, exp)) - - # normalize the leaf's operator - e = normalize_leaf(*e) - self.exp[i] = e - left, operator, right = e - - # working variables - working_table = table # The table containing the field (the name provided in the left operand) + left, operator, right = leaf.leaf + # field_path = leaf.field_path + # field = leaf.field field_path = left.split('.', 1) - - # 1 Extract field - # - Try to directly extract the field - # - Handle inherits fields: replace by a join, find the final new - # working table and extract the field - field = working_table._columns.get(field_path[0]) - if field_path[0] in table._inherit_fields: - while not field: - next_table = working_table.pool.get(working_table._inherit_fields[field_path[0]][0]) - if not self._has_table_alias(next_table._table): - self.joins.append('%s."%s"=%s."%s"' % (next_table._table, 'id', working_table._table, working_table._inherits[next_table._name])) - self._add_table_alias(next_table._table, next_table) - working_table = next_table - field = working_table._columns.get(field_path[0]) - self.leaf_to_table[i] = working_table - # 2 Field not found - # - ('id', 'child_of', ids): replace the leaf by a computed domain - # after searching and continue the processing OR - # - field in magic columns (ex: id): continue the processing OR - # - raise an error + if field and field._obj: + relational_table = working_table.pool.get(field._obj) + else: + relational_table = None - if not field: - if left == 'id' and operator == 'child_of': - ids2 = to_ids(right, table) - dom = child_of_domain(left, ids2, working_table) - self.exp = self.exp[:i] + dom + self.exp[i + 1:] - else: - # field could not be found in model columns, it's probably invalid, unless - # it's one of the _log_access special fields - # TODO: make these fields explicitly available in self.columns instead! - if field_path[0] not in MAGIC_COLUMNS: - raise ValueError("Invalid field %r in domain expression %r" % (left, exp)) - continue + # ---------------------------------------- + # SIMPLE CASE + # 1. leaf is an operator + # 2. leaf is a true/false leaf + # -> add directly to result + # ---------------------------------------- - # 3 Field found - # - update working variables - # - get relational table that exists for relational fields - # - prepare the alias for tables, that can be the table name if only one-level - # - if domain is a path (ex: ('partner_id.name', '=', 'foo')): - # TDE TO ADD: once fully implemented, explain auto_join - # replace all the expression by a normalized equivalent domain - # - find the related ids: partner_id.name='foo' -> res_partner.search(('name', '=', 'foo'))) - # - many2one: leaf becomes directly ('partner_id', 'in', 'partner_ids') - # - one2many: - # - search on current table where partner_id is in partner_ids - # - leaf becomes ('id', 'in', ids) - # - get out of current leaf is field is not a property field - # - if domain is not a path: handle some leaf replacement / tweaking - # - handle function fields - # - handle one2many, many2many and many2one fields - # - other fields: handle datetime and translatable fields + if leaf.is_operator(): + results_to_stack.append(leaf) + elif leaf.is_true_leaf() or leaf.is_false_leaf(): + results_to_stack.append(leaf) - relational_table = table.pool.get(field._obj) - alias = working_table._table + # ---------------------------------------- + # FIELD NOT FOUND + # -> from inherits'd fields -> work on the related table, and add + # a join condition + # -> ('id', 'child_of', '..') -> use a 'to_ids' + # -> but is one on the _log_access special fields, add directly to + # result + # TODO: make these fields explicitly available in self.columns instead! + # -> else: crash + # ---------------------------------------- - while len(field_path) > 1 and field._auto_join: - assert field._type in ['many2one', 'one2many'], \ + elif not field and field_path[0] in working_table._inherit_fields: + # comments about inherits'd fields + # { 'field_name': ('parent_model', 'm2o_field_to_reach_parent', + # field_column_obj, origina_parent_model), ... } + next_table = working_table.pool.get(working_table._inherit_fields[field_path[0]][0]) + leaf.add_join_context(working_table._inherits[next_table._name], working_table._inherits[next_table._name], next_table, 'id') + leafs_to_stack.append(leaf) + + elif not field and left == 'id' and operator == 'child_of': + ids2 = self.to_ids(cr, uid, right, working_table, context) + dom = self.child_of_domain(cr, uid, left, ids2, working_table) + leafs_to_stack += [leaf.create_substitution_leaf(dom_leaf, working_table) for dom_leaf in dom] + + elif not field and field_path[0] in MAGIC_COLUMNS: + results_to_stack.append(leaf) + + elif not field: + raise ValueError("Invalid field %r in leaf %r" % (left, leaf)) + + # ---------------------------------------- + # PATH SPOTTED + # -> XX + # -> note: hack about fields.property should not be necessary anymore + # as after transforming the field, it will go through this loop once again + # ---------------------------------------- + + elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: + # res_partner.parent_id = res_partner.id + leaf.add_join_context(field_path[0], field_path[0], relational_table, 'id') + leafs_to_stack.append(leaf.create_substitution_leaf((field_path[1], operator, right), relational_table)) + + elif len(field_path) > 1 and field._type == 'one2many' and field._auto_join: + # res_partner.id = res_partner.parent_id + leaf.add_join_context(field_path[0], 'id', relational_table, field._fields_id) + leafs_to_stack.append(leaf.create_substitution_leaf((field_path[1], operator, right), relational_table)) + + elif len(field_path) > 1 and field._auto_join: + assert False, \ '_auto_join attribute on something else than a many2one or one2many is currently not supported' - previous_alias = alias - alias = alias + '__' + field_path[0] - if not self._get_table_from_alias(alias): - self._add_table_alias(alias, relational_table) - if field._type == 'many2one': - self.joins.append('%s."%s"=%s."%s"' % (alias, 'id', previous_alias, field_path[0])) - elif field._type == 'one2many': - self.joins.append('%s."%s"=%s."%s"' % (alias, field._fields_id, previous_alias, 'id')) - self.exp[i] = (alias + '.' + field_path[1], self.exp[i][1], self.exp[i][2]) + elif len(field_path) > 1 and field._type == 'many2one': + right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) + leaf.leaf = (field_path[0], 'in', right_ids) + leafs_to_stack.append(leaf) - # udpate working variables - field_path = field_path[1].split('.', 1) - working_table = relational_table - field = working_table._columns.get(field_path[0]) + # Making search easier when there is a left operand as field.o2m or field.m2m + elif len(field_path) > 1 and field._type in ['many2many', 'one2many']: + right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) + table_ids = working_table.search(cr, uid, [(field_path[0], 'in', right_ids)], context=dict(context, active_test=False)) + leaf.leaf = ('id', 'in', table_ids) + leafs_to_stack.append(leaf) - if not field: - if left == 'id' and operator == 'child_of': - ids2 = to_ids(right, table) - dom = child_of_domain(left, ids2, working_table) - self.exp = self.exp[:i] + dom + self.exp[i + 1:] - else: - # field could not be found in model columns, it's probably invalid, unless - # it's one of the _log_access special fields - # TODO: make these fields explicitly available in self.columns instead! - if field_path[0] not in MAGIC_COLUMNS: - raise ValueError("Invalid field %r in domain expression %r" % (left, exp)) - break + # ---------------------------------------- + # FUNCTION FIELD + # -> not stored, get the result of fnct_search + # ---------------------------------------- - # moved on top - relational_table = table.pool.get(field._obj) - - if not field: - continue - - if len(field_path) > 1: - if field._type == 'many2one': - right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) - self.exp[i] = (alias + '.' + field_path[0], 'in', right) - # Making search easier when there is a left operand as field.o2m or field.m2m - if field._type in ['many2many', 'one2many']: - right = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) - right1 = table.search(cr, uid, [(field_path[0], 'in', right)], context=dict(context, active_test=False)) - self.exp[i] = (alias + '.id', 'in', right1) - - if not isinstance(field, fields.property): - continue - - if field._properties and not field.store: + elif field._properties and not field.store and not field._fnct_search: # this is a function field that is not stored - if not field._fnct_search: - # the function field doesn't provide a search function and doesn't store - # values in the database, so we must ignore it : we generate a dummy leaf - self.exp[i] = TRUE_LEAF - _logger.error( - "The field '%s' (%s) can not be searched: non-stored " - "function field without fnct_search", - field.string, left) - # avoid compiling stack trace if not needed - if _logger.isEnabledFor(logging.DEBUG): - _logger.debug(''.join(traceback.format_stack())) + # the function field doesn't provide a search function and doesn't store + # values in the database, so we must ignore it : we generate a dummy leaf + leaf.leaf = TRUE_LEAF + _logger.error( + "The field '%s' (%s) can not be searched: non-stored " + "function field without fnct_search", + field.string, left) + # avoid compiling stack trace if not needed + if _logger.isEnabledFor(logging.DEBUG): + _logger.debug(''.join(traceback.format_stack())) + leafs_to_stack.append(leaf) + + elif field._properties and not field.store: + # this is a function field that is not stored + fct_domain = field.search(cr, uid, working_table, left, [leaf.leaf], context=context) + if not fct_domain: + leaf.leaf = TRUE_LEAF + leafs_to_stack.append(leaf) else: - assert working_table == table, \ - 'function fields can not be contained in paths using _auto_join' - subexp = field.search(cr, uid, table, left, [self.exp[i]], context=context) - if not subexp: - self.exp[i] = TRUE_LEAF - else: - # we assume that the expression is valid - # we create a dummy leaf for forcing the parsing of the resulting expression - self.exp[i] = AND_OPERATOR - self.exp.insert(i + 1, TRUE_LEAF) - for j, se in enumerate(subexp): - self.exp.insert(i + 2 + j, se) - # else, the value of the field is store in the database, so we search on it + # we assume that the expression is valid + # we create a dummy leaf for forcing the parsing of the resulting expression + leafs_to_stack.append(leaf.create_substitution_leaf(AND_OPERATOR, working_table)) + leafs_to_stack.append(leaf.create_substitution_leaf(TRUE_LEAF, working_table)) + for domain_element in fct_domain: + leafs_to_stack.append(leaf.create_substitution_leaf(domain_element, working_table)) + + # Applying recursivity on field(one2many) + elif field._type == 'one2many' and operator == 'child_of': + ids2 = self.to_ids(cr, uid, right, relational_table, context) + if field._obj != working_table._name: + dom = self.child_of_domain(cr, uid, left, ids2, relational_table, prefix=field._obj) + else: + dom = self.child_of_domain(cr, uid, 'id', ids2, working_table, parent=left) + leafs_to_stack += [leaf.create_substitution_leaf(dom_leaf, working_table) for dom_leaf in dom] elif field._type == 'one2many': - # Applying recursivity on field(one2many) - if operator == 'child_of': - ids2 = to_ids(right, relational_table) - if field._obj != working_table._name: - dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) + call_null = True + + if right is not False: + if isinstance(right, basestring): + ids2 = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, context=context, limit=None)] + if ids2: + operator = 'in' else: - dom = child_of_domain('id', ids2, working_table, parent=left) - self.exp = self.exp[:i] + dom + self.exp[i + 1:] - - else: - call_null = True - - if right is not False: - if isinstance(right, basestring): - ids2 = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, context=context, limit=None)] - if ids2: - operator = 'in' + if not isinstance(right, list): + ids2 = [right] else: - if not isinstance(right, list): - ids2 = [right] - else: - ids2 = right - if not ids2: - if operator in ['like', 'ilike', 'in', '=']: - #no result found with given search criteria - call_null = False - self.exp[i] = FALSE_LEAF - else: - ids2 = select_from_where(cr, field._fields_id, relational_table._table, 'id', ids2, operator) - if ids2: - call_null = False - o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - self.exp[i] = ('id', o2m_op, ids2) + ids2 = right + if not ids2: + if operator in ['like', 'ilike', 'in', '=']: + #no result found with given search criteria + call_null = False + leafs_to_stack.append(leaf.create_substitution_leaf(FALSE_LEAF, working_table)) + else: + ids2 = select_from_where(cr, field._fields_id, relational_table._table, 'id', ids2, operator) + if ids2: + call_null = False + o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' + leafs_to_stack.append(leaf.create_substitution_leaf(('id', o2m_op, ids2), working_table)) - if call_null: - o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - self.exp[i] = ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)) + if call_null: + o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' + leafs_to_stack.append(leaf.create_substitution_leaf(('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)), working_table)) elif field._type == 'many2many': rel_table, rel_id1, rel_id2 = field._sql_names(working_table) #FIXME if operator == 'child_of': def _rec_convert(ids): - if relational_table == table: + if relational_table == working_table: return ids return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator) - ids2 = to_ids(right, relational_table) - dom = child_of_domain('id', ids2, relational_table) + ids2 = self.to_ids(cr, uid, right, relational_table, context) + dom = self.child_of_domain(cr, uid, 'id', ids2, relational_table) ids2 = relational_table.search(cr, uid, dom, context=context) - self.exp[i] = ('id', 'in', _rec_convert(ids2)) + leafs_to_stack.append(leaf.create_substitution_leaf(('id', 'in', _rec_convert(ids2)), working_table)) else: call_null_m2m = True if right is not False: @@ -707,26 +889,26 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null_m2m = False - self.exp[i] = FALSE_LEAF + leafs_to_stack.append(leaf.create_substitution_leaf(FALSE_LEAF, working_table)) else: operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - self.exp[i] = ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]) + leafs_to_stack.append(leaf.create_substitution_leaf(('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_table)) if call_null_m2m: m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - self.exp[i] = ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)) + leafs_to_stack.append(leaf.create_substitution_leaf(('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_table)) elif field._type == 'many2one': if operator == 'child_of': - ids2 = to_ids(right, relational_table) + ids2 = self.to_ids(cr, uid, right, relational_table, context) if field._obj != working_table._name: - dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) + dom = self.child_of_domain(cr, uid, left, ids2, relational_table, prefix=field._obj) else: - dom = child_of_domain('id', ids2, working_table, parent=left) - self.exp = self.exp[:i] + dom + self.exp[i + 1:] + dom = self.child_of_domain(cr, uid, 'id', ids2, working_table, parent=left) + leafs_to_stack += [leaf.create_substitution_leaf(dom_leaf, working_table) for dom_leaf in dom] else: def _get_expression(relational_table, cr, uid, left, right, operator, context=None): if context is None: @@ -750,26 +932,24 @@ class expression(object): # resolve string-based m2o criterion into IDs if isinstance(right, basestring) or \ right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): - self.exp[i] = _get_expression(relational_table, cr, uid, left, right, operator, context=context) + leafs_to_stack.append(leaf.create_substitution_leaf(_get_expression(relational_table, cr, uid, left, right, operator, context=context), working_table)) else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() - pass + results_to_stack.append(leaf) else: # other field type # add the time part to datetime field when it's not there: - if field._type == 'datetime' and self.exp[i][2] and len(self.exp[i][2]) == 10: - - self.exp[i] = list(self.exp[i]) + if field._type == 'datetime' and right and len(right) == 10: if operator in ('>', '>='): - self.exp[i][2] += ' 00:00:00' + right += ' 00:00:00' elif operator in ('<', '<='): - self.exp[i][2] += ' 23:59:59' + right += ' 23:59:59' - self.exp[i] = tuple(self.exp[i]) + leafs_to_stack.append(leaf.create_substitution_leaf((left, operator, right), working_table)) - if field.translate: + elif field.translate: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') sql_operator = {'=like': 'like', '=ilike': 'ilike'}.get(operator, operator) if need_wildcard: @@ -802,30 +982,49 @@ class expression(object): right, right, ] + leafs_to_stack.append(leaf.create_substitution_leaf(('id', 'inselect', (subselect, params)), working_table)) - self.exp[i] = ('id', 'inselect', (subselect, params)) + else: + results_to_stack.append(leaf) - def __leaf_to_sql(self, leaf, table): + # ---------------------------------------- + # END OF PROCESS OF CURRENT LEAF + # -> results_to_stack elements are added in result + # -> leafs_to_stack elements are inserted back in the processed + # stack to be immediately processed + # ---------------------------------------- + + leafs_to_stack.reverse() + for leaf in results_to_stack: + result.append(leaf) + for leaf in leafs_to_stack: + stack.insert(0, leaf) + + # ---------------------------------------- + # END OF PARSING FULL DOMAIN + # ---------------------------------------- + + self.result = result + + # Generate joins + joins = set() + for leaf in self.result: + joins |= set(leaf.get_join_conditions()) + self.joins = list(joins) + + def __leaf_to_sql(self, eleaf): + table = eleaf.table + leaf = eleaf.leaf left, operator, right = leaf # final sanity checks - should never fail assert operator in (TERM_OPERATORS + ('inselect',)), \ "Invalid operator %r in domain term %r" % (operator, leaf) assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in table._all_columns \ - or left in MAGIC_COLUMNS \ - or ('.' in left and self._has_table_alias(left.split('.')[0])), \ + or left in MAGIC_COLUMNS, \ "Invalid field %r in domain term %r" % (left, leaf) - if not leaf in (TRUE_LEAF, FALSE_LEAF) and '.' in left: - # leaf still contains '.' -> should be aliases (alias.field) - # update table with alias, and left with field - leaf_path = left.split('.') - assert len(leaf_path) == 2, "Invalid leaf with alias %r in leaf %r" % (left, leaf) - table_alias = leaf_path[0] - table = self._get_table_from_alias(table_alias) - left = leaf_path[1] - else: - table_alias = table._table + table_alias = '"%s"' % (eleaf._generate_alias()) if leaf == TRUE_LEAF: query = 'TRUE' @@ -946,25 +1145,26 @@ class expression(object): stack = [] params = [] # Process the domain from right to left, using a stack, to generate a SQL expression. - for i, e in reverse_enumerate(self.exp): - if is_leaf(e, internal=True): - table = self.leaf_to_table.get(i, self.root_table) - q, p = self.__leaf_to_sql(e, table) + self.result.reverse() + for leaf in self.result: + if leaf.is_leaf(internal=True): + q, p = self.__leaf_to_sql(leaf) params.insert(0, p) stack.append(q) - elif e == NOT_OPERATOR: + elif leaf.leaf == NOT_OPERATOR: stack.append('(NOT (%s))' % (stack.pop(),)) else: ops = {AND_OPERATOR: ' AND ', OR_OPERATOR: ' OR '} q1 = stack.pop() q2 = stack.pop() - stack.append('(%s %s %s)' % (q1, ops[e], q2,)) + stack.append('(%s %s %s)' % (q1, ops[leaf.leaf], q2,)) assert len(stack) == 1 query = stack[0] joins = ' AND '.join(self.joins) if joins: query = '(%s) AND %s' % (joins, query) - return (query, flatten(params)) + + return (query, tools.flatten(params)) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 7c5b0622db7..6c37b4fed8f 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2721,11 +2721,10 @@ class BaseModel(object): parent_table_name = parent_model._table quoted_parent_table_name = '"%s"' % parent_table_name if quoted_parent_table_name not in query.tables: + print '--> _inheratis_join_add adding %s' % (quoted_parent_table_name) query.tables.append(quoted_parent_table_name) query.where_clause.append('(%s.%s = %s.id)' % (current_table._table, inherits_field, parent_table_name)) - - def _inherits_join_calc(self, field, query): """ Adds missing table select and join clause(s) to ``query`` for reaching @@ -4658,8 +4657,10 @@ class BaseModel(object): query.where_clause += added_clause query.where_clause_params += added_params for table in added_tables: - if table not in query.tables: - query.tables.append(table) + quoted_table_name = '%s' % (table) + if quoted_table_name not in query.tables: + print '--> apply_rule adding %s' % quoted_table_name + query.tables.append(quoted_table_name) return True return False diff --git a/openerp/osv/query.py b/openerp/osv/query.py index 252b301d531..d32ea73b29d 100644 --- a/openerp/osv/query.py +++ b/openerp/osv/query.py @@ -102,7 +102,7 @@ class Query(object): tables_to_process = list(self.tables) def add_joins_for_table(table, query_from): - for (dest_table, lhs_col, col, join) in self.joins.get(table,[]): + for (dest_table, lhs_col, col, join) in self.joins.get(table, []): tables_to_process.remove(dest_table) query_from += ' %s %s ON (%s."%s" = %s."%s")' % \ (join, dest_table, table, lhs_col, dest_table, col) @@ -114,7 +114,7 @@ class Query(object): if table in self.joins: query_from = add_joins_for_table(table, query_from) query_from += ',' - query_from = query_from[:-1] # drop last comma + query_from = query_from[:-1] # drop last comma return (query_from, " AND ".join(self.where_clause), self.where_clause_params) def __str__(self): diff --git a/openerp/tests/test_expression.py b/openerp/tests/test_expression.py index dd78e3fa88c..1c5678becf1 100644 --- a/openerp/tests/test_expression.py +++ b/openerp/tests/test_expression.py @@ -2,11 +2,12 @@ import unittest2 import openerp + class test_domain_normalization(unittest2.TestCase): def test_normalize_domain(self): expression = openerp.osv.expression - norm_domain = domain = ['&',(1,'=',1),('a','=','b')] - assert norm_domain == expression.normalize(domain), "Normalized domains should be left untouched" - domain = [('x','in',['y','z']),('a.v','=','e'),'|','|',('a','=','b'),'!',('c','>','d'),('e','!=','f'),('g','=','h')] - norm_domain = ['&','&','&'] + domain - assert norm_domain == expression.normalize(domain), "Non-normalized domains should be properly normalized" + norm_domain = domain = ['&', (1, '=', 1), ('a', '=', 'b')] + assert norm_domain == expression.normalize_domain(domain), "Normalized domains should be left untouched" + domain = [('x', 'in', ['y', 'z']), ('a.v', '=', 'e'), '|', '|', ('a', '=', 'b'), '!', ('c', '>', 'd'), ('e', '!=', 'f'), ('g', '=', 'h')] + norm_domain = ['&', '&', '&'] + domain + assert norm_domain == expression.normalize_domain(domain), "Non-normalized domains should be properly normalized" From 52bd6459eff3ce8a6e0db7206b3db8837f39f24e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 4 Dec 2012 15:56:08 +0100 Subject: [PATCH 045/163] [REV] ir_ui_menu: needaction on menus back to their previous state (as in current trunk as ok 2012/12/04; another branch exist for speeding them up, this one is for improving the parsing. bzr revid: tde@openerp.com-20121204145608-lah4uk40ok5litf0 --- openerp/addons/base/ir/ir_ui_menu.py | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index cf0f07f42da..e286466b85c 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -265,18 +265,7 @@ class ir_ui_menu(osv.osv): return res - def _get_needaction_enabled(self, cr, uid, ids, field_names, args, context=None): - """ needaction_enabled: tell whether the menu has a related action - that uses the needaction mechanism. """ - res = dict.fromkeys(ids, False) - for menu in self.browse(cr, uid, ids, context=context): - if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: - obj = self.pool.get(menu.action.res_model) - if obj and obj._needaction: - res[menu.id] = True - return res - - def get_needaction_data(self, cr, uid, ids, context=None): + def get_needaction_data(self, cr, uid, ids, field_names, args, context=None): """ Return for each menu entry of ids : - if it uses the needaction mechanism (needaction_enabled) - the needaction counter of the related action, taking into account @@ -315,11 +304,15 @@ class ir_ui_menu(osv.osv): 'web_icon_hover': fields.char('Web Icon File (hover)', size=128), 'web_icon_data': fields.function(_get_image_icon, string='Web Icon Image', type='binary', readonly=True, store=True, multi='icon'), 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), - 'needaction_enabled': fields.function(_get_needaction_enabled, - type='boolean', + 'needaction_enabled': fields.function(get_needaction_data, + type='boolean', multi='get_needaction_data', store=True, string='Target model uses the need action mechanism', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), + 'needaction_counter': fields.function(get_needaction_data, + type='integer', multi='get_needaction_data', + string='Number of actions the user has to perform', + help='If the target model uses the need action mechanism, this field gives the number of actions the current user has to perform.'), 'action': fields.function(_action, fnct_inv=_action_inv, type='reference', string='Action', selection=[ From 83d1e7cdf22d99d1a2269b84d805c541d6f847c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 4 Dec 2012 15:56:45 +0100 Subject: [PATCH 046/163] [IMP] mail_message: notification_ids as _auto_join; mail_thread: mail_message as _auto_join. Updated search domain of function fields accordingly. bzr revid: tde@openerp.com-20121204145645-vea4i1p93zmwztqx --- addons/mail/mail_message.py | 16 +++------------- addons/mail/mail_thread.py | 13 ++----------- addons/mail/mail_thread_view.xml | 1 - 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index aec106f766b..95c34ad5c51 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -98,15 +98,7 @@ class mail_message(osv.Model): def _search_to_read(self, cr, uid, obj, name, domain, context=None): """ Search for messages to read by the current user. Condition is inversed because we search unread message on a read column. """ - if domain[0][2]: - read_cond = "(read = False OR read IS NULL)" - else: - read_cond = "read = True" - partner_id = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - cr.execute("SELECT message_id FROM mail_notification "\ - "WHERE partner_id = %%s AND %s" % read_cond, - (partner_id,)) - return [('id', 'in', [r[0] for r in cr.fetchall()])] + return ['&', ('notification_ids.partner_id.user_ids', 'in', [uid]), ('notification_ids.read', '=', not domain[0][2])] def name_get(self, cr, uid, ids, context=None): # name_get may receive int id instead of an id list @@ -146,7 +138,7 @@ class mail_message(osv.Model): store=True, string='Message Record Name', help="Name get of the related document."), 'notification_ids': fields.one2many('mail.notification', 'message_id', - string='Notifications', + string='Notifications', _auto_join=True, help='Technical field holding the message notifications. Use notified_partner_ids to access notified partners.'), 'subject': fields.char('Subject'), 'date': fields.datetime('Date'), @@ -166,9 +158,7 @@ class mail_message(osv.Model): } def _needaction_domain_get(self, cr, uid, context=None): - if self._needaction: - return [('to_read', '=', True)] - return [] + return [('to_read', '=', True)] def _get_default_author(self, cr, uid, context=None): return self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 30954be4ed8..d308105d81e 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -122,17 +122,7 @@ class mail_thread(osv.AbstractModel): return res def _search_unread(self, cr, uid, obj=None, name=None, domain=None, context=None): - partner_id = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - res = {} - notif_obj = self.pool.get('mail.notification') - notif_ids = notif_obj.search(cr, uid, [ - ('partner_id', '=', partner_id), - ('message_id.model', '=', self._name), - ('read', '=', False) - ], context=context) - for notif in notif_obj.browse(cr, uid, notif_ids, context=context): - res[notif.message_id.res_id] = True - return [('id', 'in', res.keys())] + return ['&', ('message_ids.model', '=', self._name), ('message_ids.notification_ids.to_read', '=', False)] def _get_followers(self, cr, uid, ids, name, arg, context=None): fol_obj = self.pool.get('mail.followers') @@ -207,6 +197,7 @@ class mail_thread(osv.AbstractModel): help="Comments and emails"), 'message_ids': fields.one2many('mail.message', 'res_id', domain=lambda self: [('model', '=', self._name)], + _auto_join=True, string='Messages', help="Messages and communication history"), 'message_unread': fields.function(_get_message_data, fnct_search=_search_unread, diff --git a/addons/mail/mail_thread_view.xml b/addons/mail/mail_thread_view.xml index 4106eb2e024..1ad0eee3406 100644 --- a/addons/mail/mail_thread_view.xml +++ b/addons/mail/mail_thread_view.xml @@ -11,7 +11,6 @@ } ' % (str(self.leaf), self.table._table, ','.join(self._get_context_debug())) - def create_substitution_leaf(self, new_leaf, new_table=None): - if new_table is None: - new_table = self.table - return ExtendedLeaf(new_leaf, new_table, self.context_stack) + # def create_substitution_leaf(self, new_leaf, new_table=None): + # if new_table is None: + # new_table = self.table + # return ExtendedLeaf(new_leaf, new_table, self.context_stack) - def create_sibling_leaf(self, new_leaf): - pass + # def create_sibling_leaf(self, new_leaf): + # pass # -------------------------------------------------- # Join / Context manipulation @@ -464,7 +464,7 @@ class ExtendedLeaf(object): # i.e.: many2one: res_country_state as res_partner__state_id # - join condition use aliases # i.e.: inherits: res_users.partner_id = res_users__partner_id.id - # i.e.: one2many: res_partner.id = res_partner__bank_ids.partner_id + # i.e.: one2many: res_partner.id = res_partner__bank_ids.parr_id # i.e.: many2one: res_partner.state_id = res_partner__state_id.id # Variables explanation: # - src_table: working table before the join @@ -646,12 +646,9 @@ class expression(object): return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] # ---------------------------------------- - # Internal structure + # Leafs management # ---------------------------------------- - def _format_table_name(self, table_name): - return '"%s"' % (table_name) - def get_tables(self): """ Returns the list of tables for SQL queries, like select from ... """ tables = [] @@ -664,6 +661,16 @@ class expression(object): tables.append(table_name) return tables + def create_substitution_leaf(self, leaf, new_elements, new_table=None): + if new_table is None: + new_table = leaf.table + new_context_stack = [tuple(context) for context in leaf.context_stack] + new_leaf = ExtendedLeaf(new_elements, new_table, context_stack=new_context_stack) + return new_leaf + + def create_sibling_leaf(self, leaf, new_elements): + pass + # ---------------------------------------- # Parsing # ---------------------------------------- @@ -697,6 +704,11 @@ class expression(object): # Get working variables working_table = leaf.table + # left, operator, right = leaf.elements + # field_path = leaf.field_path + # field = leaf.field + # relational_table = leaf.relational_table + if leaf.is_operator(): left, operator, right = leaf.leaf, None, None elif leaf.is_true_leaf() or leaf.is_false_leaf(): @@ -748,30 +760,43 @@ class expression(object): elif not field and left == 'id' and operator == 'child_of': ids2 = self.to_ids(cr, uid, right, working_table, context) dom = self.child_of_domain(cr, uid, left, ids2, working_table) - leafs_to_stack += [leaf.create_substitution_leaf(dom_leaf, working_table) for dom_leaf in dom] + leafs_to_stack += [self.create_substitution_leaf(leaf, dom_leaf, working_table) for dom_leaf in dom] elif not field and field_path[0] in MAGIC_COLUMNS: results_to_stack.append(leaf) elif not field: - raise ValueError("Invalid field %r in leaf %r" % (left, leaf)) + raise ValueError("Invalid field %r in leaf %r" % (left, str(leaf))) # ---------------------------------------- # PATH SPOTTED - # -> XX + # -> many2one or one2many with _auto_join: + # - add a join, then jump into linked field: field.remaining on + # src_table is replaced by remaining on dst_table, and set for re-evaluation + # - if a domain is defined on the field, add it into evaluation + # on the relational table + # -> many2one, many2many, one2many: replace by an equivalent computed + # domain, given by recursively searching on the remaining of the path # -> note: hack about fields.property should not be necessary anymore # as after transforming the field, it will go through this loop once again # ---------------------------------------- elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: - # res_partner.parent_id = res_partner.id + # res_partner.state_id = res_partner__state_id.id leaf.add_join_context(field_path[0], field_path[0], relational_table, 'id') - leafs_to_stack.append(leaf.create_substitution_leaf((field_path[1], operator, right), relational_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) elif len(field_path) > 1 and field._type == 'one2many' and field._auto_join: - # res_partner.id = res_partner.parent_id + # res_partner.id = res_partner__bank_ids.partner_id leaf.add_join_context(field_path[0], 'id', relational_table, field._fields_id) - leafs_to_stack.append(leaf.create_substitution_leaf((field_path[1], operator, right), relational_table)) + domain = field._domain(working_table) if callable(field._domain) else field._domain + if domain: + domain = normalize_domain(domain) + leafs_to_stack.append(self.create_substitution_leaf(leaf, AND_OPERATOR, relational_table)) + for elem in domain: + leafs_to_stack.append(self.create_substitution_leaf(leaf, elem, relational_table)) + print '--> appending %s' % str(leafs_to_stack[-1]) + leafs_to_stack.append(self.create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) elif len(field_path) > 1 and field._auto_join: assert False, \ @@ -817,10 +842,10 @@ class expression(object): else: # we assume that the expression is valid # we create a dummy leaf for forcing the parsing of the resulting expression - leafs_to_stack.append(leaf.create_substitution_leaf(AND_OPERATOR, working_table)) - leafs_to_stack.append(leaf.create_substitution_leaf(TRUE_LEAF, working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, AND_OPERATOR, working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, TRUE_LEAF, working_table)) for domain_element in fct_domain: - leafs_to_stack.append(leaf.create_substitution_leaf(domain_element, working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, domain_element, working_table)) # Applying recursivity on field(one2many) elif field._type == 'one2many' and operator == 'child_of': @@ -829,7 +854,7 @@ class expression(object): dom = self.child_of_domain(cr, uid, left, ids2, relational_table, prefix=field._obj) else: dom = self.child_of_domain(cr, uid, 'id', ids2, working_table, parent=left) - leafs_to_stack += [leaf.create_substitution_leaf(dom_leaf, working_table) for dom_leaf in dom] + leafs_to_stack += [self.create_substitution_leaf(leaf, dom_leaf, working_table) for dom_leaf in dom] elif field._type == 'one2many': call_null = True @@ -848,17 +873,17 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null = False - leafs_to_stack.append(leaf.create_substitution_leaf(FALSE_LEAF, working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, FALSE_LEAF, working_table)) else: ids2 = select_from_where(cr, field._fields_id, relational_table._table, 'id', ids2, operator) if ids2: call_null = False o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - leafs_to_stack.append(leaf.create_substitution_leaf(('id', o2m_op, ids2), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', o2m_op, ids2), working_table)) if call_null: o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - leafs_to_stack.append(leaf.create_substitution_leaf(('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)), working_table)) elif field._type == 'many2many': rel_table, rel_id1, rel_id2 = field._sql_names(working_table) @@ -872,7 +897,7 @@ class expression(object): ids2 = self.to_ids(cr, uid, right, relational_table, context) dom = self.child_of_domain(cr, uid, 'id', ids2, relational_table) ids2 = relational_table.search(cr, uid, dom, context=context) - leafs_to_stack.append(leaf.create_substitution_leaf(('id', 'in', _rec_convert(ids2)), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), working_table)) else: call_null_m2m = True if right is not False: @@ -889,17 +914,17 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null_m2m = False - leafs_to_stack.append(leaf.create_substitution_leaf(FALSE_LEAF, working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, FALSE_LEAF, working_table)) else: operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - leafs_to_stack.append(leaf.create_substitution_leaf(('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_table)) if call_null_m2m: m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - leafs_to_stack.append(leaf.create_substitution_leaf(('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_table)) elif field._type == 'many2one': if operator == 'child_of': @@ -908,7 +933,7 @@ class expression(object): dom = self.child_of_domain(cr, uid, left, ids2, relational_table, prefix=field._obj) else: dom = self.child_of_domain(cr, uid, 'id', ids2, working_table, parent=left) - leafs_to_stack += [leaf.create_substitution_leaf(dom_leaf, working_table) for dom_leaf in dom] + leafs_to_stack += [self.create_substitution_leaf(leaf, dom_leaf, working_table) for dom_leaf in dom] else: def _get_expression(relational_table, cr, uid, left, right, operator, context=None): if context is None: @@ -932,7 +957,7 @@ class expression(object): # resolve string-based m2o criterion into IDs if isinstance(right, basestring) or \ right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): - leafs_to_stack.append(leaf.create_substitution_leaf(_get_expression(relational_table, cr, uid, left, right, operator, context=context), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, _get_expression(relational_table, cr, uid, left, right, operator, context=context), working_table)) else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() results_to_stack.append(leaf) @@ -947,7 +972,7 @@ class expression(object): elif operator in ('<', '<='): right += ' 23:59:59' - leafs_to_stack.append(leaf.create_substitution_leaf((left, operator, right), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, (left, operator, right), working_table)) elif field.translate: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') @@ -982,7 +1007,7 @@ class expression(object): right, right, ] - leafs_to_stack.append(leaf.create_substitution_leaf(('id', 'inselect', (subselect, params)), working_table)) + leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', 'inselect', (subselect, params)), working_table)) else: results_to_stack.append(leaf) From 0b32c75f74bec07d3e52fa2651a1929cc168e79b Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Tue, 4 Dec 2012 18:59:48 +0100 Subject: [PATCH 048/163] [REF]Whole code of coda parser bzr revid: dle@openerp.com-20121204175948-ckz5s05dgqgv0tq1 --- addons/account/account_bank_statement.py | 2 +- addons/l10n_be_coda/wizard/__init__.py | 2 +- .../wizard/account_coda_import.py | 7 +- .../wizard/account_coda_import_dle.py | 331 ++++++++++++++++++ 4 files changed, 339 insertions(+), 3 deletions(-) create mode 100644 addons/l10n_be_coda/wizard/account_coda_import_dle.py diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index e7e3f740067..60f2b230c05 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -546,7 +546,7 @@ class account_bank_statement_line(osv.osv): _name = "account.bank.statement.line" _description = "Bank Statement Line" _columns = { - 'name': fields.char('Communication', size=64, required=True), + 'name': fields.char('Communication', size=256, required=True), 'date': fields.date('Date', required=True), 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')), 'type': fields.selection([ diff --git a/addons/l10n_be_coda/wizard/__init__.py b/addons/l10n_be_coda/wizard/__init__.py index e3038609b80..3851606707b 100644 --- a/addons/l10n_be_coda/wizard/__init__.py +++ b/addons/l10n_be_coda/wizard/__init__.py @@ -20,6 +20,6 @@ # ############################################################################## -import account_coda_import +import account_coda_import_dle # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 5a1b530d38c..fdd56204f77 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -973,6 +973,8 @@ class account_coda_import(osv.osv_memory): # handling non-transactional records : line['type'] in ['information', 'communication'] if line['type'] == 'information': + if line['ref_move_detail'] == '0000': + glob_id_stack = [(0, '', 0, '')] # initialise stack with tuples (glob_lvl_flag, glob_code, glob_id, glob_name) #Check if this line can be deleted. glob_id_stack marked as undefined here line['globalisation_id'] = glob_id_stack[-1][2] @@ -1349,12 +1351,15 @@ class account_coda_import(osv.osv_memory): Use this method to adapt the statement line created by the CODA parsing to customer specific needs. """ + print 'PLZ DISPLAY SOMETHING RIGHTPLZPLZPLZ' + print st_line_vals['name'] + print st_line_vals['counterparty_name'] return [st_line_vals] def action_open_coda_statements(self, cr, uid, ids, context=None): if context is None: context = {} - module, xml_id = 'account_coda', 'action_coda_bank_statements' + module, xml_id = 'l10n_be_coda', 'action_coda_bank_statements' res_model, res_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, module, xml_id) action = self.pool.get('ir.actions.act_window').read(cr, uid, res_id, context=context) domain = eval(action.get('domain') or '[]') diff --git a/addons/l10n_be_coda/wizard/account_coda_import_dle.py b/addons/l10n_be_coda/wizard/account_coda_import_dle.py new file mode 100644 index 00000000000..be8bb147698 --- /dev/null +++ b/addons/l10n_be_coda/wizard/account_coda_import_dle.py @@ -0,0 +1,331 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import base64 +from osv import fields, osv +from tools.translate import _ +import time +import tools +import logging +_logger = logging.getLogger(__name__) + + +class account_coda_import(osv.osv_memory): + _name = 'account.coda.import' + _description = 'Import CODA File' + _columns = { + 'coda_data': fields.binary('CODA File', required=True), + 'coda_fname': fields.char('CODA Filename', size=128, required=True), + 'note': fields.text('Log'), + } + _defaults = { + 'coda_fname': lambda *a: '', + } + + def coda_parsing(self, cr, uid, ids, context=None, batch=False, codafile=None, codafilename=None): + if context is None: + context = {} + if batch: + codafile = str(codafile) + codafilename = codafilename + else: + data = self.browse(cr, uid, ids)[0] + try: + codafile = data.coda_data + codafilename = data.coda_fname + except: + raise osv.except_osv(_('Error!'), _('Wizard in incorrect state. Please hit the Cancel button!')) + return {} + recordlist = unicode(base64.decodestring(codafile), 'windows-1252', 'strict').split('\n') + statements = [] + for line in recordlist: + if not line: + continue + elif line[0] == '0': + #Begin of a new Bank statement + statement = {} + statements.append(statement) + statement['error'] = False + statement['errors'] = [] + statement['version'] = line[127] + if statement['version'] not in ['1', '2']: + statement['error'] = True + statement['errors'].append(('R0001', _('CODA V%s statements are not supported, please contact your bank!') % statement['version'])) + continue + statement['lines'] = [] + statement['date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[5:11]), '%d%m%y')) + statement['separateApplication'] = rmspaces(line[83:88]) + elif not statement['error']: + if line[0] == '1': + #Statement details + if statement['version'] == '1': + statement['accountNumber'] = rmspaces(line[5:17]) + statement['currency'] = rmspaces(line[18:21]) + elif statement['version'] == '2': + if line[1] == '0': # Belgian bank account BBAN structure + statement['accountNumber'] = rmspaces(line[5:17]) + statement['currency'] = rmspaces(line[18:21]) + elif line[1] == '1': # foreign bank account BBAN structure + statement['error'] = True + statement['errors'].append(('R1001', _('Foreign bank accounts with BBAN structure are not supported !'))) + continue + elif line[1] == '2': # Belgian bank account IBAN structure + statement['accountNumber'] = rmspaces(line[5:21]) + statement['currency'] = rmspaces(line[39:42]) + elif line[1] == '3': # foreign bank account IBAN structure + statement['error'] = True + statement['errors'].append(('R1002', _('Foreign bank accounts with IBAN structure are not supported !'))) + continue + else: # Something else, not supported + statement['error'] = True + statement['errors'].append(('R1003', _('\nUnsupported bank account structure !'))) + continue + statement['description'] = rmspaces(line[90:125]) + statement['balance_start'] = float(rmspaces(line[43:58])) / 1000 + statement['balance_start_date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[58:64]), '%d%m%y')) + statement['accountHolder'] = rmspaces(line[64:90]) + statement['paperSeqNumber'] = rmspaces(line[2:5]) + statement['codaSeqNumber'] = rmspaces(line[125:128]) + elif line[0] == '2': + if line[1] == '1': + #New statement line + statementLine = {} + statementLine['type'] = 'general' + statementLine['ref'] = rmspaces(line[2:10]) + statementLine['ref_move'] = rmspaces(line[2:6]) + statementLine['ref_move_detail'] = rmspaces(line[6:10]) + statementLine['sequence'] = len(statement['lines']) + 1 + if statementLine['sequence'] == 1: + main_move_stack = [statementLine] + glob_lvl_stack = [0] # initialise globalisation stack + elif statementLine['ref_move_detail'] == '0000': + glob_lvl_stack = [0] # re-initialise globalisation stack + statementLine['transactionRef'] = rmspaces(line[10:31]) + statementLine['debit'] = line[31] # 0 = Credit, 1 = Debit + statementLine['amount'] = float(rmspaces(line[32:47])) / 1000 + if statementLine['debit'] == '1': + statementLine['amount'] = - statementLine['amount'] + statementLine['transactionType'] = line[53] + #TODO Handling severals transactions types + statementLine['transactionDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[47:53]), '%d%m%y')) + statementLine['transactionFamily'] = rmspaces(line[54:56]) + #TODO Handling severals transactions Family + statementLine['transactionCode'] = rmspaces(line[56:58]) + #TODO Handling severals transactions code + statementLine['transactionCategory'] = rmspaces(line[58:61]) + #TODO Handling severals transactions category + statementLine['communication'] = rmspaces(line[65:115]) + #TODO Handling structured communication + statementLine['entryDate'] = rmspaces(line[115:121]) + + glob_lvl_flag = int(line[124]) + if glob_lvl_flag > 0: + if glob_lvl_stack[-1] == glob_lvl_flag: + statementLine['glob_lvl_flag'] = glob_lvl_flag + statementLine['amount'] = statementLine['amount'] + glob_lvl_stack.pop() + else: + glob_lvl_stack.append(glob_lvl_flag) + statementLine['type'] = 'globalisation' + statementLine['glob_lvl_flag'] = glob_lvl_flag + statementLine['globalisation_amount'] = statementLine['amount'] + del statementLine['amount'] + + # The 'globalisation' concept can also be implemented without the globalisation level flag. + # This is e.g. used by Europabank to give the details of Card Payments. + if statementLine['ref_move'] == main_move_stack[-1]['ref_move']: + if statementLine['ref_move_detail'] == '9999': + statement['error'] = True + statement['errors'].append(('R1003', _('\nUnsupported bank account structure !'))) + continue + elif statementLine['ref_move_detail'] != '0000': + if glob_lvl_stack[-1] == 0: + # promote associated move record into a globalisation + glob_lvl_flag = 1 + glob_lvl_stack.append(glob_lvl_flag) + main_st_line_seq = main_move_stack[-1]['sequence'] + to_promote = statement['lines'][main_st_line_seq] + if not main_move_stack[-1].get('detail_cnt'): + to_promote.update({ + 'type': 'globalisation', + 'glob_lvl_flag': glob_lvl_flag, + 'globalisation_amount': main_move_stack[-1]['amount'], + 'amount': False, + 'account_id': 0, + }) + main_move_stack[-1]['promoted'] = True + if not main_move_stack[-1].get('detail_cnt'): + main_move_stack[-1]['detail_cnt'] = 1 + else: + main_move_stack[-1]['detail_cnt'] += 1 + + statement['lines'].append(statementLine) + + if statementLine['ref_move'] != main_move_stack[-1]['ref_move']: + if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): + # add closing globalisation level on previous detail record in order to correctly close + # moves that have been 'promoted' to globalisation + closeglobalise = statement['lines'][len(statement['lines']) - 1] + closeglobalise.update({ + 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], + }) + else: + # demote record with globalisation code from 'globalisation' to 'general' when no detail records + # the same logic is repeated on the New Balance Record ('8 Record') in order to cope with CODA files + # containing a single 2.1 record that needs to be 'demoted'. + if main_move_stack[-1]['type'] == 'globalisation' and not main_move_stack[-1].get('detail_cnt'): + # demote record with globalisation code from 'globalisation' to 'general' when no detail records + main_st_line_seq = main_move_stack[-1]['sequence'] + to_demote = statement['lines'][main_st_line_seq] + to_demote.update({ + 'type': 'general', + 'glob_lvl_flag': 0, + 'globalisation_amount': False, + 'amount': main_move_stack[-1]['globalisation_amount'], + }) + main_move_stack.pop() + main_move_stack.append(statementLine) + elif line[1] == '2': + if statement['lines'][-1]['ref'][0:4] != line[2:6]: + statement['error'] = True + statement['errors'].append(('R2004', _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) + continue + statement['lines'][-1]['communication'] += rmspaces(line[10:63]) + statement['lines'][-1]['payment_reference'] = rmspaces(line[63:98]) + statement['lines'][-1]['counterparty_bic'] = rmspaces(line[98:109]) + elif line[1] == '3': + if statement['lines'][-1]['ref'][0:4] != line[2:6]: + statement['error'] = True + statement['errors'].append(('R2004', _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) + continue + if statement['version'] == '1': + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) + statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:125]) + statement['lines'][-1]['counterpartyCurrency'] = '' + else: + if line[22] == ' ': + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) + statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[23:26]) + else: + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:44]) + statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[44:47]) + statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:82]) + statement['lines'][-1]['communication'] += rmspaces(line[82:125]) + else: + # movement data record 2.x (x != 1,2,3) + statement['error'] = True + statement['errors'].append(('R2009', _('\nMovement data records of type 2.%s are not supported !') % line[1])) + elif line[0] == '3': + if line[1] == '1': + infoLine = {} + infoLine['entryDate'] = statement['lines'][-1]['entryDate'] + infoLine['type'] = 'information' + infoLine['sequence'] = len(statement['lines']) + 1 + infoLine['ref'] = rmspaces(line[2:10]) + infoLine['transactionRef'] = rmspaces(line[10:31]) + infoLine['transactionType'] = line[31] + infoLine['transactionFamily'] = rmspaces(line[32:34]) + infoLine['transactionCode'] = rmspaces(line[34:36]) + infoLine['transactioncategory'] = rmspaces(line[36:39]) + infoLine['communication'] = rmspaces(line[40:113]) + statement['lines'].append(infoLine) + elif line[1] == '2': + if statement['lines'][-1]['ref'] != rmspaces(line[2:10]): + statement['error'] = True + statement['errors'].append(('R3004', _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) + continue + statement['lines'][-1]['communication'] += rmspaces(line[10:100]) + elif line[1] == '3': + if statement['lines'][-1]['ref'] != rmspaces(line[2:10]): + statement['error'] = True + statement['errors'].append(('R3005', _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) + continue + statement['lines'][-1]['communication'] += rmspaces(line[10:100]) + elif line[0] == '4': + comm_line = {} + comm_line['type'] = 'communication' + comm_line['sequence'] = len(statement['lines']) + 1 + comm_line['ref'] = rmspaces(line[2:10]) + comm_line['communication'] = rmspaces(line[32:112]) + statement['lines'].append(comm_line) + elif line[0] == '8': + # new balance record + last_transaction = main_move_stack[-1] + if last_transaction['type'] == 'globalisation' and not last_transaction.get('detail_cnt'): + # demote record with globalisation code from 'globalisation' to 'general' when no detail records + main_st_line_seq = main_move_stack[-1]['sequence'] + to_demote = statement['lines'][main_st_line_seq] + to_demote.update({ + 'type': 'general', + 'glob_lvl_flag': 0, + 'globalisation_amount': False, + 'amount': main_move_stack[-1]['globalisation_amount'], + }) + # add closing globalisation level on previous detail record in order to correctly close + # moves that have been 'promoted' to globalisation + if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): + closeglobalise = statement['lines'][-1] + closeglobalise.update({ + 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], + }) + statement['debit'] = line[41] + statement['paperSeqNumber'] = rmspaces(line[1:4]) + statement['balance_end_real'] = float(rmspaces(line[42:57])) / 1000 + statement['balance_end_realDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[57:63]), '%d%m%y')) + if statement['debit'] == '1': # 1=Debit + statement['balance_end_real'] = - statement['balance_end_real'] + if statement['balance_end_realDate']: + period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['balance_end_realDate']), ('date_stop', '>=', statement['balance_end_realDate'])]) + else: + period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['date']), ('date_stop', '>=', statement['date'])]) + if not period_id and len(period_id) == 0: + statement['error'] = True + statement['errors'].append(('R0002', _("The CODA Statement New Balance date doesn't fall within a defined Accounting Period! Please create the Accounting Period for date %s.") % statement['balance_end_realDate'])) + continue + statement['period_id'] = period_id[0] + elif line[0] == '9': + statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000 + statement['balancePlus'] = float(rmspaces(line[37:52])) / 1000 + if not statement['balance_end_real']: + statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin'] + for i, statement in enumerate(statements): + print '---STATEMENT #' + str(i) + '---' + print statement + if not statement['error']: + data = { + 'name': '[' + statement['date'] + ']' + statement['description'], + 'date': statement['date'], + 'journal_id': 18, + 'period_id': statement['period_id'], + 'balance_start': statement['balance_start'], + 'balance_end_real': statement['balance_end_real'], + 'account_id': 1 + } + self.pool.get('account.bank.statement').create(cr, uid, data, context=context) + +account_coda_import() + + +def rmspaces(s): + return " ".join(s.split()) + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 3bb1475f6ed5a551a0bc1820aecec0ed39a1a67e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 10:50:20 +0100 Subject: [PATCH 049/163] [FIX] mail_thread: fixed search domain on message_unread that was buggy. bzr revid: tde@openerp.com-20121205095020-932qhljgd5ll9nzb --- addons/mail/mail_message.py | 2 +- addons/mail/mail_thread.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 95c34ad5c51..1f588fc7663 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -63,7 +63,7 @@ class mail_message(osv.Model): # protection for `default_type` values leaking from menu action context (e.g. for invoices) if context and context.get('default_type') and context.get('default_type') not in self._columns['type'].selection: context = dict(context, default_type=None) - return super(mail_message, self).default_get(cr, uid, fields, context=context) + return super(mail_message, self).default_get(cr, uid, fields, context=context) def _shorten_name(self, name): if len(name) <= (self._message_record_name_length + 3): diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index d308105d81e..2d73bb16ea6 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -122,7 +122,7 @@ class mail_thread(osv.AbstractModel): return res def _search_unread(self, cr, uid, obj=None, name=None, domain=None, context=None): - return ['&', ('message_ids.model', '=', self._name), ('message_ids.notification_ids.to_read', '=', False)] + return [('message_ids.to_read', '=', False)] def _get_followers(self, cr, uid, ids, name, arg, context=None): fol_obj = self.pool.get('mail.followers') From 003752f7f1545b75e254e1585943bdfe1bb74de5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 11:20:52 +0100 Subject: [PATCH 050/163] [REF] ir_ui_menu: needaction_enabled is now stored, because there are no reasons not to be (this is something mainly statically defined). needaction_counter is removed, but a method on the menu allows to have the information back, calling get_needaction_data. A web-side branch will call asynchronously this method with some menu ids, allowing to separate the menu loading from the needaction loading. bzr revid: tde@openerp.com-20121205102052-pn1uwhrl9mn46c4x --- openerp/addons/base/ir/ir_ui_menu.py | 43 ++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index a8475d33552..9cafdbdd74a 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -265,17 +265,33 @@ class ir_ui_menu(osv.osv): return res - def _get_needaction(self, cr, uid, ids, field_names, args, context=None): + def _get_needaction_enabled(self, cr, uid, ids, field_names, args, context=None): + """ needaction_enabled: tell whether the menu has a related action + that uses the needaction mechanism. """ + res = dict.fromkeys(ids, False) + for menu in self.browse(cr, uid, ids, context=context): + if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: + obj = self.pool.get(menu.action.res_model) + if obj and obj._needaction: + res[menu.id] = True + return res + + def get_needaction_data(self, cr, uid, ids, context=None): + """ Return for each menu entry of ids : + - if it uses the needaction mechanism (needaction_enabled) + - the needaction counter of the related action, taking into account + the action domain + """ res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = { 'needaction_enabled': False, 'needaction_counter': False, } - if menu.action and menu.action.type in ('ir.actions.act_window','ir.actions.client') and menu.action.res_model: + if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: obj = self.pool.get(menu.action.res_model) if obj and obj._needaction: - if menu.action.type=='ir.actions.act_window': + if menu.action.type == 'ir.actions.act_window': dom = menu.action.domain and eval(menu.action.domain, {'uid': uid}) or [] else: dom = eval(menu.action.params_store or '{}', {'uid': uid}).get('domain') @@ -286,7 +302,7 @@ class ir_ui_menu(osv.osv): _columns = { 'name': fields.char('Menu', size=64, required=True, translate=True), 'sequence': fields.integer('Sequence'), - 'child_id' : fields.one2many('ir.ui.menu', 'parent_id','Child IDs'), + 'child_id': fields.one2many('ir.ui.menu', 'parent_id', 'Child IDs'), 'parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', select=True), 'groups_id': fields.many2many('res.groups', 'ir_ui_menu_group_rel', 'menu_id', 'gid', 'Groups', help="If you have groups, the visibility of this menu will be based on these groups. "\ @@ -296,11 +312,14 @@ class ir_ui_menu(osv.osv): 'icon': fields.selection(tools.icons, 'Icon', size=64), 'icon_pict': fields.function(_get_icon_pict, type='char', size=32), 'web_icon': fields.char('Web Icon File', size=128), - 'web_icon_hover':fields.char('Web Icon File (hover)', size=128), + 'web_icon_hover': fields.char('Web Icon File (hover)', size=128), 'web_icon_data': fields.function(_get_image_icon, string='Web Icon Image', type='binary', readonly=True, store=True, multi='icon'), - 'web_icon_hover_data':fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), - 'needaction_enabled': fields.function(_get_needaction, string='Target model uses the need action mechanism', type='boolean', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.', multi='_get_needaction'), - 'needaction_counter': fields.function(_get_needaction, string='Number of actions the user has to perform', type='integer', help='If the target model uses the need action mechanism, this field gives the number of actions the current user has to perform.', multi='_get_needaction'), + 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), + 'needaction_enabled': fields.function(_get_needaction_enabled, + type='boolean', + store=True, + string='Target model uses the need action mechanism', + help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), 'action': fields.function(_action, fnct_inv=_action_inv, type='reference', string='Action', selection=[ @@ -317,12 +336,12 @@ class ir_ui_menu(osv.osv): return _('Error ! You can not create recursive Menu.') _constraints = [ - (osv.osv._check_recursion, _rec_message , ['parent_id']) + (osv.osv._check_recursion, _rec_message, ['parent_id']) ] _defaults = { - 'icon' : 'STOCK_OPEN', - 'icon_pict': ('stock', ('STOCK_OPEN','ICON_SIZE_MENU')), - 'sequence' : 10, + 'icon': 'STOCK_OPEN', + 'icon_pict': ('stock', ('STOCK_OPEN', 'ICON_SIZE_MENU')), + 'sequence': 10, } _order = "sequence,id" From 85d1f4fcb10c92112ea76e28b8ee4b449b044a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 15:05:39 +0100 Subject: [PATCH 051/163] [IMP] mail_thread: message_unread: fixed domain of fnct_search, unread message have to_read flag at True, not false. bzr revid: tde@openerp.com-20121205140539-5g6ebfx4j425xglr --- addons/mail/mail_thread.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 00173fd2d6b..4145fabd0e5 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -122,7 +122,7 @@ class mail_thread(osv.AbstractModel): return res def _search_message_unread(self, cr, uid, obj=None, name=None, domain=None, context=None): - return [('message_ids.to_read', '=', False)] + return [('message_ids.to_read', '=', True)] def _get_followers(self, cr, uid, ids, name, arg, context=None): fol_obj = self.pool.get('mail.followers') From a7650e0e451b5276bca7116f0163b19e488c744d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 15:06:07 +0100 Subject: [PATCH 052/163] [IMP] mail_notification: updated the index on mail_notification, including newly added field starred. bzr revid: tde@openerp.com-20121205140607-f1hnhgu49tc2jwr5 --- addons/mail/mail_followers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/mail/mail_followers.py b/addons/mail/mail_followers.py index f02835e5b3b..9793e036351 100644 --- a/addons/mail/mail_followers.py +++ b/addons/mail/mail_followers.py @@ -74,9 +74,9 @@ class mail_notification(osv.Model): } def init(self, cr): - cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('mail_notification_partner_id_read_message_id',)) + cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('mail_notification_partner_id_read_starred_message_id',)) if not cr.fetchone(): - cr.execute('CREATE INDEX mail_notification_partner_id_read_message_id ON mail_notification (partner_id, read, message_id)') + cr.execute('CREATE INDEX mail_notification_partner_id_read_starred_message_id ON mail_notification (partner_id, read, starred, message_id)') def create(self, cr, uid, vals, context=None): """ Override of create to check that we can not create a notification From ae6f7b3a081b778f4e6924f299dc06e902a927d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 15:07:26 +0100 Subject: [PATCH 053/163] [IMP] ir_needaction: search is now without count but with a limit (to 100), and a simplified order by. This allows much faster queries as postgresql does not have to worry about order and things like that. bzr revid: tde@openerp.com-20121205140726-z1o4ueclat7y96pl --- openerp/addons/base/ir/ir_needaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 57b324de3b9..898e0c3f473 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -61,4 +61,4 @@ class ir_needaction_mixin(osv.AbstractModel): dom = self._needaction_domain_get(cr, uid, context=context) if not dom: return 0 - return self.search(cr, uid, (domain or []) + dom, limit=100, context=context, count=True) + return self.search(cr, uid, (domain or []) + dom, limit=100, order='id DESC', context=context) From 37051bbe917dacd2a5e4f531cb69ecd117459285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 15:32:38 +0100 Subject: [PATCH 054/163] [FIX] needaction: returns a count-like result. bzr revid: tde@openerp.com-20121205143238-xbna8akgqduap2t5 --- openerp/addons/base/ir/ir_needaction.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 898e0c3f473..39432ca6792 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -61,4 +61,5 @@ class ir_needaction_mixin(osv.AbstractModel): dom = self._needaction_domain_get(cr, uid, context=context) if not dom: return 0 - return self.search(cr, uid, (domain or []) + dom, limit=100, order='id DESC', context=context) + res = self.search(cr, uid, (domain or []) + dom, limit=100, order='id DESC', context=context) + return len(res) From ea01dfe9ddfe02dae9a35812b868ad5e84614d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 16:34:10 +0100 Subject: [PATCH 055/163] [CLEAN] fields.py: added auto_join in one2many and many2one __init__, binded on _auto_join. Added some short explanations in fields.py about the attribute. bzr revid: tde@openerp.com-20121205153410-07vo3j1c641xgmda --- openerp/osv/fields.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index b15cebd29f5..b9096b31d57 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -27,6 +27,9 @@ Fields Attributes: * _classic_read: is a classic sql fields * _type : field type + * _auto_join: for one2many and many2one fields, tells whether select + queries will join the relational table instead of replacing the + field condition by an equivalent-one based on a search. * readonly * required * size @@ -428,9 +431,10 @@ class many2one(_column): _symbol_f = lambda x: x or None _symbol_set = (_symbol_c, _symbol_f) - def __init__(self, obj, string='unknown', **args): + def __init__(self, obj, string='unknown', auto_join=False, **args): _column.__init__(self, string=string, **args) self._obj = obj + self._auto_join = auto_join def get(self, cr, obj, ids, name, user=None, context=None, values=None): if context is None: @@ -497,11 +501,12 @@ class one2many(_column): _prefetch = False _type = 'one2many' - def __init__(self, obj, fields_id, string='unknown', limit=None, **args): + def __init__(self, obj, fields_id, string='unknown', limit=None, auto_join=False, **args): _column.__init__(self, string=string, **args) self._obj = obj self._fields_id = fields_id self._limit = limit + self._auto_join = auto_join #one2many can't be used as condition for defaults assert(self.change_default != True) From 549262626369b000a22e2475ec32f41c67479676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 16:34:49 +0100 Subject: [PATCH 056/163] [DOC] Updated the doc about auto_join: a bit more precise, and updated accordingly to last changes in implementation. bzr revid: tde@openerp.com-20121205153449-68uel0ne0od3jl9i --- doc/06_misc_auto_join.rst | 65 +++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/doc/06_misc_auto_join.rst b/doc/06_misc_auto_join.rst index dab24f1bf09..1dd2d0edb88 100644 --- a/doc/06_misc_auto_join.rst +++ b/doc/06_misc_auto_join.rst @@ -5,11 +5,11 @@ Perfoming joins in select .. versionadded:: 7.0 -Starting with OpenERP 7.0, an ``_auto_join`` attribute is added on *many2one* and +Starting with OpenERP 7.0, an ``auto_join`` attribute is added on *many2one* and *one2many* fields. The purpose is to allow the automatic generation of joins in select queries. This attribute is set to False by default, therefore not changing -the default behavior of those fields. It is not recommended to use this attribute -unless you understand the limitations of the feature. +the default behavior. Please note that we consider this feature as still experimental +and should be used only if you understand its limitations and targets. Without ``_auto_join``, the behavior of expression.parse() is the same as before. Leafs holding a path beginning with many2one or one2many fields perform a search @@ -19,42 +19,53 @@ For example, if you have on res.partner a domain like ``[('bank_ids.name', performed : - 1 on res_partner_bank, with domain ``[('name', '=', 'foo')]``, that returns a - list of (res.partner.bank) bids + list of res.partner.bank ids (bids) - 1 on res_partner, with a domain ``['bank_ids', 'in', bids)]``, that returns a - list of (res.partner) pids + list of res.partner ids (pids) - 1 on res_partner, with a domain ``[('id', 'in', pids)]`` -When the _auto_join attribute is True, it will perform a select on res_partner -as well as on res_partner_bank. +When the ``auto_join`` attribute is True on a relational field, the destination +table will be joined to produce only one query. -- the relational table will be accessed through an alias: ``'"res_partner_bank" - as res_partner__bank_ids`` -- the relational table will have a join condition on the main table: +- the relational table is accessed using an alias: ``'"res_partner_bank" + as res_partner__bank_ids``. The alias is generated using the relational field + name. This allows to have multiple joins with different join conditions on the + same table, depending on the domain. +- there is a join condition between the destination table and the main table: ``res_partner__bank_ids."partner_id"=res_partner."id"`` -- the condition will be written on the relational table: +- the condition is then written on the relational table: ``res_partner__bank_ids."name" = 'foo'`` -This job is performed in expression.parse(). For leafs containing a path, it -checks whether the first item of the path is a *many2one* or *one2many* field -with the ``auto_join`` attribute set. If set, it adds a join query and recursively -analyzes the remaining of the leaf, going back to the normal behavior when -not reaching an ``_auto_join`` field. The sql condition created from the leaf -will be updated to take into account the table aliases. +This manipulation is performed in expression.parse(). It checks leafs that +contain a path, i.e. any domain containing a '.'. It then checks whether the +first item of the path is a *many2one* or *one2many* field with the ``auto_join`` +attribute set. If set, it adds a join query and recursively analyzes the +remaining of the leaf, using the same behavior. If the remaining path also holds +a path with auto_join fields, it will add all tables and add every necessary +join conditions. -Chaining _auto_join allows to reduce the number of queries performed, and to -avoid having too long ``('id', 'in', ids)`` replacement leafs in domains. -However, severe limitations exist on this feature that limits its current use as -of version 7.0. **This feature is therefore considered as experimental, and used +Chaining joins allows to reduce the number of queries performed, and to avoid +having too long equivalent leaf replacement in domains. Indeed, the internal +queries produced by this behavior can be very costly, because they were generally +select queries without limit that could lead to huge ('id', 'in', [...]) +leafs to analyze and execute. + +Some limitations exist on this feature that limits its current use as of version +7.0. **This feature is therefore considered as experimental, and used to speedup some precise bottlenecks in OpenERP**. List of known issues and limitations: -- using _auto_join bypasses the business logic; no name search is performed, only - direct matches between ids using join conditions -- ir.rules are not taken into account when performing the _auto_join. -- support of active_test is not asserted -- support of translation is not asserted -- support of _auto_join leading to function fields +- using ``auto_join`` bypasses the business logic; no name search is performed, + only direct matches between ids using join conditions +- ir.rules are not taken into account when analyzing and adding the join + conditions + +List of already-supported corner cases : + +- one2many fields having a domain attribute. Static domains as well as dynamic + domain are supported +- auto_join leading to functional searchable fields Typical use in OpenERP 7.0: From 02c200844c66331b583e4f4821e9dd638eb7e282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 16:35:35 +0100 Subject: [PATCH 057/163] [CLEAN] Removed some forgotten print statements. bzr revid: tde@openerp.com-20121205153535-lfs6yrokyk0wfm0w --- openerp/osv/orm.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index f37d1a2202d..a08126d12fc 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2732,7 +2732,6 @@ class BaseModel(object): parent_table_name = parent_model._table quoted_parent_table_name = '"%s"' % parent_table_name if quoted_parent_table_name not in query.tables: - print '--> _inheratis_join_add adding %s' % (quoted_parent_table_name) query.tables.append(quoted_parent_table_name) query.where_clause.append('(%s.%s = %s.id)' % (current_table._table, inherits_field, parent_table_name)) @@ -4670,7 +4669,6 @@ class BaseModel(object): for table in added_tables: quoted_table_name = '%s' % (table) if quoted_table_name not in query.tables: - print '--> apply_rule adding %s' % quoted_table_name query.tables.append(quoted_table_name) return True return False From d8235eec3ce368c16a5893002c0530393ecccb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Dec 2012 16:36:09 +0100 Subject: [PATCH 058/163] [CLEAN] _auto_join -> auto_join. bzr revid: tde@openerp.com-20121205153609-tncmotw8jnoa53e7 --- addons/mail/mail_message.py | 2 +- addons/mail/mail_thread.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index fbcffff1e4b..a5080e48373 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -157,7 +157,7 @@ class mail_message(osv.Model): store=True, string='Message Record Name', help="Name get of the related document."), 'notification_ids': fields.one2many('mail.notification', 'message_id', - string='Notifications', _auto_join=True, + string='Notifications', auto_join=True, help='Technical field holding the message notifications. Use notified_partner_ids to access notified partners.'), 'subject': fields.char('Subject'), 'date': fields.datetime('Date'), diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 4145fabd0e5..e706ad66a33 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -193,7 +193,7 @@ class mail_thread(osv.AbstractModel): obj='res.partner', string='Followers', multi='_get_followers'), 'message_ids': fields.one2many('mail.message', 'res_id', domain=lambda self: [('model', '=', self._name)], - _auto_join=True, + auto_join=True, string='Messages', help="Messages and communication history"), 'message_unread': fields.function(_get_message_data, From 652f81427e71ba307211ef951ad4913fcd5c6842 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Wed, 5 Dec 2012 18:06:50 +0100 Subject: [PATCH 059/163] [IMP]Parser algorithm improvement bzr revid: dle@openerp.com-20121205170650-a6ydpo9qa14d2c55 --- addons/account/account_bank_statement.py | 2 +- addons/account/account_view.xml | 2 +- .../wizard/account_coda_import.py | 3 +- .../wizard/account_coda_import_dle.py | 903 +++++++++++++----- 4 files changed, 659 insertions(+), 251 deletions(-) diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 60f2b230c05..db6795a70c8 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -546,7 +546,7 @@ class account_bank_statement_line(osv.osv): _name = "account.bank.statement.line" _description = "Bank Statement Line" _columns = { - 'name': fields.char('Communication', size=256, required=True), + 'name': fields.char('Communication',size=64, required=True), 'date': fields.date('Date', required=True), 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')), 'type': fields.selection([ diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index e2c45af8cba..562c1ad6fa1 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -575,7 +575,7 @@ - + diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index fdd56204f77..bb165cf1656 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -973,8 +973,7 @@ class account_coda_import(osv.osv_memory): # handling non-transactional records : line['type'] in ['information', 'communication'] if line['type'] == 'information': - if line['ref_move_detail'] == '0000': - glob_id_stack = [(0, '', 0, '')] # initialise stack with tuples (glob_lvl_flag, glob_code, glob_id, glob_name) + #Check if this line can be deleted. glob_id_stack marked as undefined here line['globalisation_id'] = glob_id_stack[-1][2] diff --git a/addons/l10n_be_coda/wizard/account_coda_import_dle.py b/addons/l10n_be_coda/wizard/account_coda_import_dle.py index be8bb147698..432008fa58e 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import_dle.py +++ b/addons/l10n_be_coda/wizard/account_coda_import_dle.py @@ -45,6 +45,7 @@ class account_coda_import(osv.osv_memory): if context is None: context = {} if batch: + print codafile = str(codafile) codafilename = codafilename else: @@ -59,273 +60,681 @@ class account_coda_import(osv.osv_memory): statements = [] for line in recordlist: if not line: - continue + pass elif line[0] == '0': #Begin of a new Bank statement statement = {} statements.append(statement) - statement['error'] = False - statement['errors'] = [] statement['version'] = line[127] if statement['version'] not in ['1', '2']: - statement['error'] = True - statement['errors'].append(('R0001', _('CODA V%s statements are not supported, please contact your bank!') % statement['version'])) - continue + raise osv.except_osv(_('Error R001!'), _('CODA V%s statements are not supported, please contact your bank!') % statement['version']) + statement['globalisation_stack'] = [] statement['lines'] = [] statement['date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[5:11]), '%d%m%y')) statement['separateApplication'] = rmspaces(line[83:88]) - elif not statement['error']: - if line[0] == '1': - #Statement details - if statement['version'] == '1': + elif line[0] == '1': + #Statement details + if statement['version'] == '1': + statement['accountNumber'] = rmspaces(line[5:17]) + statement['currency'] = rmspaces(line[18:21]) + elif statement['version'] == '2': + if line[1] == '0': # Belgian bank account BBAN structure statement['accountNumber'] = rmspaces(line[5:17]) statement['currency'] = rmspaces(line[18:21]) - elif statement['version'] == '2': - if line[1] == '0': # Belgian bank account BBAN structure - statement['accountNumber'] = rmspaces(line[5:17]) - statement['currency'] = rmspaces(line[18:21]) - elif line[1] == '1': # foreign bank account BBAN structure - statement['error'] = True - statement['errors'].append(('R1001', _('Foreign bank accounts with BBAN structure are not supported !'))) - continue - elif line[1] == '2': # Belgian bank account IBAN structure - statement['accountNumber'] = rmspaces(line[5:21]) - statement['currency'] = rmspaces(line[39:42]) - elif line[1] == '3': # foreign bank account IBAN structure - statement['error'] = True - statement['errors'].append(('R1002', _('Foreign bank accounts with IBAN structure are not supported !'))) - continue - else: # Something else, not supported - statement['error'] = True - statement['errors'].append(('R1003', _('\nUnsupported bank account structure !'))) - continue - statement['description'] = rmspaces(line[90:125]) - statement['balance_start'] = float(rmspaces(line[43:58])) / 1000 - statement['balance_start_date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[58:64]), '%d%m%y')) - statement['accountHolder'] = rmspaces(line[64:90]) - statement['paperSeqNumber'] = rmspaces(line[2:5]) - statement['codaSeqNumber'] = rmspaces(line[125:128]) - elif line[0] == '2': - if line[1] == '1': - #New statement line - statementLine = {} - statementLine['type'] = 'general' - statementLine['ref'] = rmspaces(line[2:10]) - statementLine['ref_move'] = rmspaces(line[2:6]) - statementLine['ref_move_detail'] = rmspaces(line[6:10]) - statementLine['sequence'] = len(statement['lines']) + 1 - if statementLine['sequence'] == 1: - main_move_stack = [statementLine] - glob_lvl_stack = [0] # initialise globalisation stack - elif statementLine['ref_move_detail'] == '0000': - glob_lvl_stack = [0] # re-initialise globalisation stack - statementLine['transactionRef'] = rmspaces(line[10:31]) - statementLine['debit'] = line[31] # 0 = Credit, 1 = Debit - statementLine['amount'] = float(rmspaces(line[32:47])) / 1000 - if statementLine['debit'] == '1': - statementLine['amount'] = - statementLine['amount'] - statementLine['transactionType'] = line[53] - #TODO Handling severals transactions types - statementLine['transactionDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[47:53]), '%d%m%y')) - statementLine['transactionFamily'] = rmspaces(line[54:56]) - #TODO Handling severals transactions Family - statementLine['transactionCode'] = rmspaces(line[56:58]) - #TODO Handling severals transactions code - statementLine['transactionCategory'] = rmspaces(line[58:61]) - #TODO Handling severals transactions category - statementLine['communication'] = rmspaces(line[65:115]) - #TODO Handling structured communication - statementLine['entryDate'] = rmspaces(line[115:121]) - - glob_lvl_flag = int(line[124]) - if glob_lvl_flag > 0: - if glob_lvl_stack[-1] == glob_lvl_flag: - statementLine['glob_lvl_flag'] = glob_lvl_flag - statementLine['amount'] = statementLine['amount'] - glob_lvl_stack.pop() - else: - glob_lvl_stack.append(glob_lvl_flag) - statementLine['type'] = 'globalisation' - statementLine['glob_lvl_flag'] = glob_lvl_flag - statementLine['globalisation_amount'] = statementLine['amount'] - del statementLine['amount'] - - # The 'globalisation' concept can also be implemented without the globalisation level flag. - # This is e.g. used by Europabank to give the details of Card Payments. - if statementLine['ref_move'] == main_move_stack[-1]['ref_move']: - if statementLine['ref_move_detail'] == '9999': - statement['error'] = True - statement['errors'].append(('R1003', _('\nUnsupported bank account structure !'))) - continue - elif statementLine['ref_move_detail'] != '0000': - if glob_lvl_stack[-1] == 0: - # promote associated move record into a globalisation - glob_lvl_flag = 1 - glob_lvl_stack.append(glob_lvl_flag) - main_st_line_seq = main_move_stack[-1]['sequence'] - to_promote = statement['lines'][main_st_line_seq] - if not main_move_stack[-1].get('detail_cnt'): - to_promote.update({ - 'type': 'globalisation', - 'glob_lvl_flag': glob_lvl_flag, - 'globalisation_amount': main_move_stack[-1]['amount'], - 'amount': False, - 'account_id': 0, - }) - main_move_stack[-1]['promoted'] = True - if not main_move_stack[-1].get('detail_cnt'): - main_move_stack[-1]['detail_cnt'] = 1 - else: - main_move_stack[-1]['detail_cnt'] += 1 - - statement['lines'].append(statementLine) - - if statementLine['ref_move'] != main_move_stack[-1]['ref_move']: - if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): - # add closing globalisation level on previous detail record in order to correctly close - # moves that have been 'promoted' to globalisation - closeglobalise = statement['lines'][len(statement['lines']) - 1] - closeglobalise.update({ - 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], - }) - else: - # demote record with globalisation code from 'globalisation' to 'general' when no detail records - # the same logic is repeated on the New Balance Record ('8 Record') in order to cope with CODA files - # containing a single 2.1 record that needs to be 'demoted'. - if main_move_stack[-1]['type'] == 'globalisation' and not main_move_stack[-1].get('detail_cnt'): - # demote record with globalisation code from 'globalisation' to 'general' when no detail records - main_st_line_seq = main_move_stack[-1]['sequence'] - to_demote = statement['lines'][main_st_line_seq] - to_demote.update({ - 'type': 'general', - 'glob_lvl_flag': 0, - 'globalisation_amount': False, - 'amount': main_move_stack[-1]['globalisation_amount'], - }) - main_move_stack.pop() - main_move_stack.append(statementLine) - elif line[1] == '2': - if statement['lines'][-1]['ref'][0:4] != line[2:6]: - statement['error'] = True - statement['errors'].append(('R2004', _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) - continue - statement['lines'][-1]['communication'] += rmspaces(line[10:63]) - statement['lines'][-1]['payment_reference'] = rmspaces(line[63:98]) - statement['lines'][-1]['counterparty_bic'] = rmspaces(line[98:109]) - elif line[1] == '3': - if statement['lines'][-1]['ref'][0:4] != line[2:6]: - statement['error'] = True - statement['errors'].append(('R2004', _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) - continue - if statement['version'] == '1': - statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) - statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:125]) - statement['lines'][-1]['counterpartyCurrency'] = '' + elif line[1] == '1': # foreign bank account BBAN structure + raise osv.except_osv(_('Error R1001!'), _('Foreign bank accounts with BBAN structure are not supported !')) + elif line[1] == '2': # Belgian bank account IBAN structure + statement['accountNumber'] = rmspaces(line[5:21]) + statement['currency'] = rmspaces(line[39:42]) + elif line[1] == '3': # foreign bank account IBAN structure + raise osv.except_osv(_('Error R1002!'), _('Foreign bank accounts with IBAN structure are not supported !')) + else: # Something else, not supported + raise osv.except_osv(_('Error R1003!'), _('\nUnsupported bank account structure !')) + statement['description'] = rmspaces(line[90:125]) + statement['balance_start'] = float(rmspaces(line[43:58])) / 1000 + statement['balance_start_date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[58:64]), '%d%m%y')) + statement['accountHolder'] = rmspaces(line[64:90]) + statement['paperSeqNumber'] = rmspaces(line[2:5]) + statement['codaSeqNumber'] = rmspaces(line[125:128]) + elif line[0] == '2': + if line[1] == '1': + #New statement line + statementLine = {} + statementLine['type'] = 'general' + statementLine['ref'] = rmspaces(line[2:10]) + statementLine['ref_move'] = rmspaces(line[2:6]) + statementLine['ref_move_detail'] = rmspaces(line[6:10]) + statementLine['sequence'] = len(statement['lines']) + 1 + statementLine['transactionRef'] = rmspaces(line[10:31]) + statementLine['debit'] = line[31] # 0 = Credit, 1 = Debit + statementLine['amount'] = float(rmspaces(line[32:47])) / 1000 + if statementLine['debit'] == '1': + statementLine['amount'] = - statementLine['amount'] + statementLine['transaction_type'] = line[53] + if statementLine['transaction_type'] not in transaction_types: + raise osv.except_osv(_('Error R2001!'), _('The File contains an invalid CODA Transaction Type : %s!') % statementLine['transaction_type']) + statementLine['transactionDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[47:53]), '%d%m%y')) + statementLine['transaction_family'] = rmspaces(line[54:56]) + #TODO Handling severals transactions Family + statementLine['transaction_code'] = rmspaces(line[56:58]) + #TODO Handling severals transactions code + statementLine['transaction_category'] = rmspaces(line[58:61]) + #TODO Handling severals transactions category + statementLine['communication'] = rmspaces(line[62:115]) + #TODO Handling structured communication + statementLine['entryDate'] = rmspaces(line[115:121]) + statementLine['type'] = 'normal' + statementLine['globalisation'] = int(line[124]) + if len(statement['globalisation_stack']) > 0: + statementLine['communication'] = "\n".join([statement['globalisation_stack'][-1]['communication'], statementLine['communication']]) + if statementLine['globalisation'] > 0: + if len(statement['globalisation_stack']) > 0 and statement['globalisation_stack'][-1]['globalisation'] == statementLine['globalisation']: + # Destack + statement['globalisation_stack'].pop() else: - if line[22] == ' ': - statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) - statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[23:26]) - else: - statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:44]) - statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[44:47]) - statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:82]) - statement['lines'][-1]['communication'] += rmspaces(line[82:125]) + #Stack + statementLine['type'] = 'globalisation' + statement['globalisation_stack'].append(statementLine) + statement['lines'].append(statementLine) + elif line[1] == '2': + if statement['lines'][-1]['ref'][0:4] != line[2:6]: + raise osv.except_osv(_('Error R2004!'), _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + statement['lines'][-1]['communication'] += rmspaces(line[10:63]) + statement['lines'][-1]['payment_reference'] = rmspaces(line[63:98]) + statement['lines'][-1]['counterparty_bic'] = rmspaces(line[98:109]) + elif line[1] == '3': + if statement['lines'][-1]['ref'][0:4] != line[2:6]: + raise osv.except_osv(_('Error R2005!'), _('CODA parsing error on movement data record 2.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + if statement['version'] == '1': + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) + statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:125]) + statement['lines'][-1]['counterpartyCurrency'] = '' else: - # movement data record 2.x (x != 1,2,3) - statement['error'] = True - statement['errors'].append(('R2009', _('\nMovement data records of type 2.%s are not supported !') % line[1])) - elif line[0] == '3': - if line[1] == '1': - infoLine = {} - infoLine['entryDate'] = statement['lines'][-1]['entryDate'] - infoLine['type'] = 'information' - infoLine['sequence'] = len(statement['lines']) + 1 - infoLine['ref'] = rmspaces(line[2:10]) - infoLine['transactionRef'] = rmspaces(line[10:31]) - infoLine['transactionType'] = line[31] - infoLine['transactionFamily'] = rmspaces(line[32:34]) - infoLine['transactionCode'] = rmspaces(line[34:36]) - infoLine['transactioncategory'] = rmspaces(line[36:39]) - infoLine['communication'] = rmspaces(line[40:113]) - statement['lines'].append(infoLine) - elif line[1] == '2': - if statement['lines'][-1]['ref'] != rmspaces(line[2:10]): - statement['error'] = True - statement['errors'].append(('R3004', _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) - continue - statement['lines'][-1]['communication'] += rmspaces(line[10:100]) - elif line[1] == '3': - if statement['lines'][-1]['ref'] != rmspaces(line[2:10]): - statement['error'] = True - statement['errors'].append(('R3005', _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10])) - continue - statement['lines'][-1]['communication'] += rmspaces(line[10:100]) - elif line[0] == '4': - comm_line = {} - comm_line['type'] = 'communication' - comm_line['sequence'] = len(statement['lines']) + 1 - comm_line['ref'] = rmspaces(line[2:10]) - comm_line['communication'] = rmspaces(line[32:112]) - statement['lines'].append(comm_line) - elif line[0] == '8': - # new balance record - last_transaction = main_move_stack[-1] - if last_transaction['type'] == 'globalisation' and not last_transaction.get('detail_cnt'): - # demote record with globalisation code from 'globalisation' to 'general' when no detail records - main_st_line_seq = main_move_stack[-1]['sequence'] - to_demote = statement['lines'][main_st_line_seq] - to_demote.update({ - 'type': 'general', - 'glob_lvl_flag': 0, - 'globalisation_amount': False, - 'amount': main_move_stack[-1]['globalisation_amount'], - }) - # add closing globalisation level on previous detail record in order to correctly close - # moves that have been 'promoted' to globalisation - if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): - closeglobalise = statement['lines'][-1] - closeglobalise.update({ - 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], - }) - statement['debit'] = line[41] - statement['paperSeqNumber'] = rmspaces(line[1:4]) - statement['balance_end_real'] = float(rmspaces(line[42:57])) / 1000 - statement['balance_end_realDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[57:63]), '%d%m%y')) - if statement['debit'] == '1': # 1=Debit - statement['balance_end_real'] = - statement['balance_end_real'] - if statement['balance_end_realDate']: - period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['balance_end_realDate']), ('date_stop', '>=', statement['balance_end_realDate'])]) - else: - period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['date']), ('date_stop', '>=', statement['date'])]) - if not period_id and len(period_id) == 0: - statement['error'] = True - statement['errors'].append(('R0002', _("The CODA Statement New Balance date doesn't fall within a defined Accounting Period! Please create the Accounting Period for date %s.") % statement['balance_end_realDate'])) - continue - statement['period_id'] = period_id[0] - elif line[0] == '9': - statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000 - statement['balancePlus'] = float(rmspaces(line[37:52])) / 1000 - if not statement['balance_end_real']: - statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin'] + if line[22] == ' ': + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) + statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[23:26]) + else: + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:44]) + statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[44:47]) + statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:82]) + statement['lines'][-1]['communication'] += rmspaces(line[82:125]) + else: + # movement data record 2.x (x != 1,2,3) + raise osv.except_osv(_('Error R2009!'), _('\nMovement data records of type 2.%s are not supported !') % line[1]) + elif line[0] == '3': + if line[1] == '1': + infoLine = {} + infoLine['entryDate'] = statement['lines'][-1]['entryDate'] + infoLine['type'] = 'information' + infoLine['sequence'] = len(statement['lines']) + 1 + infoLine['ref'] = rmspaces(line[2:10]) + infoLine['transactionRef'] = rmspaces(line[10:31]) + infoLine['transaction_type'] = line[31] + infoLine['transaction_family'] = rmspaces(line[32:34]) + infoLine['transaction_code'] = rmspaces(line[34:36]) + infoLine['transaction_category'] = rmspaces(line[36:39]) + infoLine['communication'] = rmspaces(line[40:113]) + infoLine['amount'] = 0.0 + infoLine['type'] = 'information' + statement['lines'].append(infoLine) + elif line[1] == '2': + if infoLine['ref'] != rmspaces(line[2:10]): + raise osv.except_osv(_('Error R3004!'), _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + statement['lines'][-1]['communication'] += rmspaces(line[10:100]) + elif line[1] == '3': + if infoLine['ref'] != rmspaces(line[2:10]): + raise osv.except_osv(_('Error R3005!'), _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + statement['lines'][-1]['communication'] += rmspaces(line[10:100]) + elif line[0] == '4': + comm_line = {} + comm_line['type'] = 'communication' + comm_line['sequence'] = len(statement['lines']) + 1 + comm_line['ref'] = rmspaces(line[2:10]) + comm_line['communication'] = rmspaces(line[32:112]) + comm_line['amount'] = 0.0 + comm_line['type'] = 'communication' + statement['lines'].append(comm_line) + elif line[0] == '8': + # new balance record + statement['debit'] = line[41] + statement['paperSeqNumber'] = rmspaces(line[1:4]) + statement['balance_end_real'] = float(rmspaces(line[42:57])) / 1000 + statement['balance_end_realDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[57:63]), '%d%m%y')) + if statement['debit'] == '1': # 1=Debit + statement['balance_end_real'] = - statement['balance_end_real'] + if statement['balance_end_realDate']: + period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['balance_end_realDate']), ('date_stop', '>=', statement['balance_end_realDate'])]) + else: + period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['date']), ('date_stop', '>=', statement['date'])]) + if not period_id and len(period_id) == 0: + raise osv.except_osv(_('Error R0002!'), _("The CODA Statement New Balance date doesn't fall within a defined Accounting Period! Please create the Accounting Period for date %s.") % statement['balance_end_realDate']) + statement['period_id'] = period_id[0] + elif line[0] == '9': + statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000 + statement['balancePlus'] = float(rmspaces(line[37:52])) / 1000 + if not statement['balance_end_real']: + statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin'] for i, statement in enumerate(statements): - print '---STATEMENT #' + str(i) + '---' + # print '---STATEMENT #' + str(i) + '---' print statement - if not statement['error']: - data = { - 'name': '[' + statement['date'] + ']' + statement['description'], - 'date': statement['date'], - 'journal_id': 18, - 'period_id': statement['period_id'], - 'balance_start': statement['balance_start'], - 'balance_end_real': statement['balance_end_real'], - 'account_id': 1 - } - self.pool.get('account.bank.statement').create(cr, uid, data, context=context) + data = { + 'name': '[' + statement['date'] + ']' + statement['description'], + 'date': statement['date'], + 'journal_id': 18, + 'period_id': statement['period_id'], + 'balance_start': statement['balance_start'], + 'balance_end_real': statement['balance_end_real'], + 'account_id': 1 + } + statement['id'] = self.pool.get('account.bank.statement').create(cr, uid, data, context=context) + for line in statement['lines']: + if line['type'] == 'normal': + counterparty = [] + if 'counterpartyName' in line: + counterparty.append(line['counterpartyName']) + if 'counterpartyNumber' in line: + counterparty.append(line['counterpartyNumber']) + if len(counterparty) > 0: + counterparty = '[' + ' / '.join(counterparty) + ']' + else: + counterparty = '/' + if line['transaction_type'] in transaction_types: + line['transaction_type'] = transaction_types[line['transaction_type']][1] + if line['transaction_category'] in transaction_categories: + line['transaction_category'] = transaction_categories[line['transaction_category']] + if line['transaction_family'] in transaction_codes: + transaction_family = transaction_codes[line['transaction_family']] + line['transaction_family'] = transaction_family[0] + if line['transaction_code'] in transaction_family[1]: + line['transaction_code'] = transaction_family[1][line['transaction_code']] + note = [] + note.append(_('Counter Party') + ': ' + counterparty) + note.append(_('Communication') + ': ' + line['communication']) + note.append(_('Transaction type') + ': ' + line['transaction_type']) + note.append(_('Transaction family') + ': ' + line['transaction_family']) + note.append(_('Transaction code') + ': ' + line['transaction_code']) + note.append(_('Transaction category') + ': ' + line['transaction_category']) + + try: + if 'counterpartyNumber' in line and int(line['counterpartyNumber']) == 0: + line['counterpartyNumber'] = False + except: + pass + if 'counterpartyNumber' in line and line['counterpartyNumber']: + ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) + if ids and len(ids) > 0: + partner_id = self.pool.get('res.partner.bank').browse(cr, uid, ids[0],context=context).partner_id.id + else: + partner_id = None + + data = { + 'name': line['communication'], + 'note': "\n".join(note), + 'date': line['entryDate'], + 'amount': line['amount'], + # 'type': '', + 'partner_id': partner_id, + 'account_id': 1, + 'statement_id': statement['id'], + # 'analytic_account_id': '', + # 'move_ids': '', + 'ref': line['ref'], + 'sequence': line['sequence'], + } + self.pool.get('account.bank.statement.line').create(cr, uid, data, context=context) account_coda_import() +transaction_types = { + "0": ["", _("Simple amount without detailed data; e.g. : an individual credit transfer [free of charges].")], + "1": ["", _("Amount as totalised by the customer; e.g. a file regrouping payments of wages or payments made to suppliers or a file regrouping collections for which the customer is ]debited or credited with one single amount. As a matter of principle, this type is also used when no detailed data is following [type 5].")], + "5": ["1", _("Detail of 1. Standard procedure is no detailing. However, the customer may ask for detailed data to be included into his file after the overall record [type 1].")], + "2": ["", _("Amount as totalised by the bank; e.g. : the total amount of a series of credit transfers with a structured communication As a matter of principle, this type will also be used when no detailed data [type 6 or 7] is following.")], + "6": ["2", _("Detail of 2. Simple amount without detailed data. Normally, data of this kind comes after type 2. The customer may ask for a separate file containing the detailed data. In that case, one will speak of a ‘separate application’. The records in a separate application keep type 6.")], + "7": ["2", _("Detail of 2. Simple account with detailed data The records in a separate application keep type 7.")], + "9": ["7", _("Detail of 7. The records in a separate application keep type 9.")], + "3": ["", _("Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers.")], + "8": ["3", _("Detail of 3.")], +} + +transaction_codes = { + "00": [_("Undefined transactions"), { + "89": _("Cancellation of a transaction"), + "87": _("Costs refunded"), + "85": _("Correction"), + "83": _("Value correction"), + "39": _("Cancellation of a transaction"), + "37": _("Costs"), + "35": _("Correction"), + "33": _("Value correction"), + "00": _("Undefined transaction") + }], + "01": [_("Domestic or local SEPA credit transfers"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "66": _("Financial centralization"), + "64": _("Transfer to your account"), + "62": _("Unpaid postal order"), + "60": _("Non-presented circular cheque"), + "54": _("Unexecutable transfer order"), + "52": _("Payment in your favour"), + "51": _("Transfer in your favour – initiated by the bank"), + "50": _("Transfer in your favour"), + "49": _("Cancellation or correction"), + "39": _("Your issue circular cheque"), + "37": _("Costs"), + "17": _("Financial centralisation"), + "15": _("Balance due insurance premium"), + "13": _("Transfer from your account"), + "11": _("Your semi-standing order – payment to employees"), + "09": _("Your semi-standing order"), + "07": _("Collective transfer"), + "05": _("Payment of wages etc."), + "03": _("Standing order"), + "02": _("Individual transfer order initiated by the bank"), + "01": _("Individual transfer order]"), + }], + "03": [_("Cheques"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of cheque-related costs"), + "68": _("Credit of a payment via electronic purse"), + "66": _("Remittance of cheque by your branch - credit under usual reserve"), + "64": _("Reversal of settlement of credit card"), + "63": _("Second credit of unpaid cheque"), + "62": _("Reversal of cheque"), + "60": _("Reversal of voucher"), + "58": _("Remittance of cheques, vouchers, etc. credit after collection"), + "56": _("Non-presented certified cheques"), + "52": _("First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve"), + "50": _("Credit of a payment via terminal"), + "49": _("Cancellation or correction"), + "39": _("Provisionally unpaid due to other reason than manual presentation"), + "38": _("Provisionally unpaid"), + "37": _("Cheque-related costs"), + "35": _("Cash advance"), + "19": _("Settlement of credit cards"), + "17": _("Your certified cheque"), + "15": _("Your purchase bank cheque"), + "13": _("Eurocheque written out abroad"), + "11": _("Department store cheque"), + "09": _("Unpaid voucher"), + "07": _("Definitely unpaid cheque"), + "05": _("Payment of voucher"), + "03": _("Your purchase by payment card"), + "01": _("Payment of your cheque"), + }], + "04": [_("Cards"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "68": _("Credit after Proton payments"), + "55": _("Income from payments by GSM"), + "53": _("Cash deposit at an ATM"), + "52": _("Loading GSM cards"), + "51": _("Unloading Proton"), + "50": _("Credit after a payment at a terminal"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "08": _("Payment by means of a payment card outside the Eurozone"), + "07": _("Payment by GSM"), + "06": _("Payment with tank card"), + "05": _("Loading Proton"), + "04": _("Cash withdrawal from an ATM"), + "03": _("Settlement credit cards"), + "02": _("Payment by means of a payment card within the Eurozone"), + "01": _("Loading a GSM card"), + }], + "05": [_("Direct debit"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "58": _("Reversal"), + "56": _("Unexecutable reimbursement"), + "54": _("Reimbursement"), + "52": _("Credit under usual reserve"), + "50": _("Credit after collection"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "05": _("Reimbursement"), + "03": _("Unpaid debt"), + "01": _("Payment"), + }], + "07": [_("Domestic commercial paper"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "86": _("Payment after cession"), + "64": _("Warrant"), + "58": _("Remittance of supplier's bill without guarantee"), + "56": _("Remittance of supplier's bill with guarantee"), + "54": _("Remittance of commercial paper for discount"), + "52": _("Remittance of commercial paper - credit under usual reserve"), + "50": _("Remittance of commercial paper - credit after collection"), + "49": _("Cancellation or correction"), + "39": _("Return of an irregular bill of exchange"), + "37": _("Costs related to commercial paper"), + "14": _("Warrant fallen due"), + "12": _("Safe custody"), + "10": _("Renewal of agreed maturity date"), + "09": _("Agio on supplier's bill"), + "08": _("Payment in advance"), + "07": _("Unpaid commercial paper"), + "06": _("Extension of maturity date"), + "05": _("Commercial paper claimed back"), + "03": _("Payment receipt card"), + "01": _("Payment commercial paper"), + }], + "09": [_("Counter transactions"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Sale of traveller’s cheque"), + "68": _("Difference in payment"), + "66": _("Repurchase of petrol coupons"), + "64": _("Your winning lottery ticket"), + "62": _("Sale of gold/pieces under usual reserve"), + "60": _("Sale of foreign bank notes"), + "58": _("Payment by your branch/agents"), + "56": _("Reserve"), + "54": _("Your payment ATM"), + "52": _("Payment night safe"), + "50": _("Cash payment"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "25": _("Purchase of traveller’s cheque"), + "21": _("Cash withdrawal on card (PROTON)"), + "19": _("Difference in payment"), + "17": _("Purchase of fiscal stamps"), + "15": _("Your purchase of lottery tickets"), + "13": _("Cash withdrawal by your branch or agents"), + "11": _("Your purchase of luncheon vouchers"), + "09": _("Purchase of petrol coupons"), + "07": _("Purchase of gold/pieces"), + "05": _("Purchase of foreign bank notes"), + "03": _("Cash withdrawal by card (ATM)"), + "01": _("Cash withdrawal"), + }], + "11": [_("Securities"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Settlement of securities"), + "68": _("Compensation for missing coupon"), + "66": _("Retrocession of issue commission"), + "64": _("Your issue"), + "62": _("Interim interest on subscription"), + "58": _("Repayable securities from a deposit or delivered at the counter - credit under usual reserve"), + "56": _("Reserve"), + "52": _("Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve"), + "51": _("Tender"), + "50": _("Sale of securities"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "19": _("Regularisation costs"), + "17": _("Management fee"), + "15": _("Interim interest on subscription"), + "13": _("Your repurchase of issue"), + "11": _("Payable coupons/repayable securities"), + "09": _("Settlement of securities"), + "06": _("Share option plan – exercising an option"), + "05": _("Partial payment subscription"), + "04": _("Issues"), + "03": _("Subscription to securities"), + "02": _("Tenders"), + "01": _("Purchase of securities"), + }], + "13": [_("Credit"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Settlement of discount bank acceptance"), + "68": _("Documentary export credits"), + "62": _("Term loan"), + "60": _("Settlement of mortgage loan"), + "56": _("Subsidy"), + "55": _("Fixed advance – interest only"), + "54": _("Fixed advance – capital and interest"), + "50": _("Settlement of instalment credit"), + "49": _("Cancellation or correction"), + "37": _("Credit-related costs"), + "21": _("Other credit applications"), + "19": _("Documentary import credits"), + "15": _("Your repayment hire-purchase and similar claims"), + "13": _("Settlement of bank acceptances"), + "11": _("Your repayment mortgage loan"), + "07": _("Your repayment instalment credits"), + "05": _("Settlement of fixed advance"), + "02": _("Long-term loan"), + "01": _("Short-term loan"), + }], + "30": [_("Various transactions"), { + "99": _("Cancellation or correction"), + "89": _("Undefined transaction"), + "87": _("Reimbursement of costs"), + "83": _("Value (date) correction"), + "55": _("Interest term investment"), + "54": _("Capital and/or interest term investment"), + "52": _("Forward sale of foreign exchange"), + "50": _("Spot sale of foreign exchange"), + "49": _("Cancellation or correction"), + "39": _("Undefined transaction"), + "37": _("Costs"), + "33": _("Value (date) correction"), + "05": _("Capital and/or interest term investment"), + "03": _("Forward purchase of foreign exchange"), + "01": _("Spot purchase of foreign exchange"), + }], + "35": [_("Closing (periodical settlements for interest, costs,…)"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "50": _("Closing"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "01": _("Closing"), + }], + "41": [_("International credit transfers - non-SEPA credit transfers"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "66": _("Financial centralisation (credit)"), + "64": _("Transfer to your account"), + "50": _("Transfer"), + "49": _("Cancellation or correction"), + "38": _("Costs relating to incoming foreign and non-SEPA transfers"), + "37": _("Costs relating to outgoing foreign transfers and non-SEPA transfers"), + "17": _("Financial centralisation (debit)"), + "13": _("Transfer from your account"), + "07": _("Collective transfers"), + "05": _("Collective payments of wages"), + "03": _("Standing order"), + "01": _("Transfer"), + }], + "43": [_("Foreign cheques"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Purchase of traveller’s cheque"), + "62": _("Reversal of cheques"), + "58": _("Remittance of foreign cheque credit after collection"), + "52": _("Remittance of foreign cheque credit under usual reserve"), + "49": _("Cancellation or correction"), + "37": _("Costs relating to payment of foreign cheques"), + "15": _("Purchase of an international bank cheque"), + "07": _("Unpaid foreign cheque"), + "01": _("Payment of a foreign cheque"), + }], + "47": [_("Foreign commercial paper"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "64": _("Warrant"), + "62": _("Remittance of documents abroad - credit after collection"), + "60": _("Remittance of documents abroad - credit under usual reserve"), + "58": _("Idem without guarantee"), + "56": _("Remittance of guaranteed foreign supplier's bill"), + "54": _("Discount abroad"), + "52": _("Remittance of foreign bill credit under usual reserve"), + "50": _("Remittance of foreign bill credit after collection"), + "49": _("Cancellation or correction"), + "37": _("Costs relating to the payment of a foreign bill"), + "14": _("Warrant fallen due"), + "13": _("Discount foreign supplier's bills"), + "11": _("Payment documents abroad"), + "07": _("Unpaid foreign bill"), + "06": _("Extension"), + "05": _("Bill claimed back"), + "01": _("Payment of foreign bill"), + }], + "49": [_("Foreign counter transactions"), {"03": _("ATM withdrawal")}], + "80": [_("Separately charged costs and provisions"), { + "01": _("Guarantee card charges"), + "02": _("Costs relating to electronic output"), + "03": _("Payment card charges"), + "04": _("Costs for holding a documentary cash credit"), + "05": _("Card charges"), + "06": _("Damage relating to bills and cheques"), + "07": _("Insurance costs"), + "08": _("Registering compensation for savings accounts"), + "09": _("Postage"), + "10": _("Purchase of Smartcard"), + "11": _("Costs for the safe custody of correspondence"), + "12": _("Costs for opening a bank guarantee"), + "13": _("Renting of safes"), + "14": _("Handling costs instalment credit"), + "15": _("Night safe"), + "16": _("Bank confirmation to revisor or accountant"), + "17": _("Charge for safe custody"), + "18": _("Trade information"), + "19": _("Special charge for safe custody"), + "20": _("Drawing up a certificate"), + "21": _("Pay-packet charges"), + "22": _("Management/custody"), + "23": _("Research costs"), + "24": _("Participation in and management of interest refund system"), + "25": _("Renting of direct debit box"), + "26": _("Travel insurance premium"), + "27": _("Subscription fee"), + "29": _("Information charges"), + "31": _("Writ service fee"), + "33": _("Miscellaneous fees and commissions"), + "35": _("Costs"), + "37": _("Access right to database"), + "39": _("Surety fee"), + "41": _("Research costs"), + "43": _("Printing of forms"), + "45": _("Documentary credit charges"), + "47": _("Charging fees for transactions"), + "49": _("Cancellation or correction"), + "99": _("Cancellation or correction"), + }], +} + +transaction_categories = { + "000": _("Net amount"), + "001": _("Interest received"), + "002": _("Interest paid"), + "003": _("Credit commission"), + "004": _("Postage"), + "005": _("Renting of letterbox"), + "006": _("Various fees/commissions"), + "007": _("Access right to database"), + "008": _("Information charges"), + "009": _("Travelling expenses"), + "010": _("Writ service fee"), + "011": _("VAT"), + "012": _("Exchange commission"), + "013": _("Payment commission"), + "014": _("Collection commission"), + "015": _("Correspondent charges"), + "016": _("BLIW/IBLC dues"), + "017": _("Research costs"), + "018": _("Tental guarantee charges"), + "019": _("Tax on physical delivery"), + "020": _("Costs of physical delivery"), + "021": _("Costs for drawing up a bank cheque"), + "022": _("Priority costs"), + "023": _("Exercising fee"), + "024": _("Growth premium"), + "025": _("Individual entry for exchange charges"), + "026": _("Handling commission"), + "027": _("Charges for unpaid bills"), + "028": _("Fidelity premium"), + "029": _("Protest charges"), + "030": _("Account insurance"), + "031": _("Charges foreign cheque"), + "032": _("Drawing up a circular cheque"), + "033": _("Charges for a foreign bill"), + "034": _("Reinvestment fee"), + "035": _("Charges foreign documentary bill"), + "036": _("Costs relating to a refused cheque"), + "037": _("Commission for handling charges"), + "039": _("Telecommunications"), + "041": _("Credit card costs"), + "042": _("Payment card costs"), + "043": _("Insurance costs"), + "045": _("Handling costs"), + "047": _("Charges extension bill"), + "049": _("Fiscal stamps/stamp duty"), + "050": _("Capital term investment"), + "051": _("Withholding tax"), + "052": _("Residence state tax"), + "053": _("Printing of forms"), + "055": _("Repayment loan or credit capital"), + "057": _("Interest subsidy"), + "058": _("Capital premium"), + "059": _("Default interest"), + "061": _("Charging fees for transactions"), + "063": _("Rounding differences"), + "065": _("Interest payment advice"), + "066": _("Fixed loan advance - reimbursement"), + "067": _("Fixed loan advance - extension"), + "068": _("Countervalue of an entry"), + "069": _("Forward arbitrage contracts : sum to be supplied by customer"), + "070": _("Forward arbitrage contracts : sum to be supplied by bank"), + "071": _("Fixed loan advance - availability"), + "072": _("Countervalue of commission to third party"), + "073": _("Costs of ATM abroad"), + "074": _("Mailing costs"), + "100": _("Gross amount"), + "200": _("Overall documentary credit charges"), + "201": _("Advice notice commission"), + "202": _("Advising commission | Additional advising commission"), + "203": _("Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission"), + "204": _("Amendment fee"), + "205": _("Documentary payment commission | Document commission | Drawdown fee | Negotiation fee"), + "206": _("Surety fee/payment under reserve"), + "207": _("Non-conformity fee"), + "208": _("Commitment fee deferred payment"), + "209": _("Transfer commission"), + "210": _("Commitment fee"), + "211": _("Credit arrangement fee | Additional credit arrangement fee"), + "212": _("Warehousing fee"), + "213": _("Financing fee"), + "214": _("Issue commission (delivery order)"), + "400": _("Acceptance fee"), + "401": _("Visa charges"), + "402": _("Certification costs"), + "403": _("Minimum discount rate"), + "404": _("Discount commission"), + "405": _("Bill guarantee commission"), + "406": _("Collection charges"), + "407": _("Costs Article 45"), + "408": _("Cover commission"), + "409": _("Safe deposit charges"), + "410": _("Reclamation charges"), + "411": _("Fixed collection charge"), + "412": _("Advice of expiry charges"), + "413": _("Acceptance charges"), + "414": _("Regularisation charges"), + "415": _("Surety fee"), + "416": _("Charges for the deposit of security"), + "418": _("Endorsement commission"), + "419": _("Bank service fee"), + "420": _("Retention charges"), + "425": _("Foreign broker's commission"), + "426": _("Belgian broker's commission"), + "427": _("Belgian Stock Exchange tax"), + "428": _("Interest accrued"), + "429": _("Foreign Stock Exchange tax"), + "430": _("Recovery of foreign tax"), + "431": _("Delivery of a copy"), +} + def rmspaces(s): return " ".join(s.split()) + + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 4333defecd2f1b780cc72449084dd2e8de3caf0b Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Wed, 5 Dec 2012 18:38:01 +0100 Subject: [PATCH 060/163] [DEL]All old object and views which are now useless bzr revid: dle@openerp.com-20121205173801-9abvk3u03mxvwp91 --- addons/l10n_be_coda/__init__.py | 1 - addons/l10n_be_coda/__openerp__.py | 6 - addons/l10n_be_coda/l10n_be_coda.py | 499 ---- .../l10n_be_coda/l10n_be_coda_comm_type.xml | 140 - .../l10n_be_coda_trans_category.xml | 440 --- .../l10n_be_coda/l10n_be_coda_trans_code.xml | 1914 ------------- .../l10n_be_coda/l10n_be_coda_trans_type.xml | 49 - addons/l10n_be_coda/l10n_be_coda_view.xml | 549 +--- addons/l10n_be_coda/l10n_be_coda_wizard.xml | 14 - addons/l10n_be_coda/res_bank.py | 34 - addons/l10n_be_coda/res_bank_view.xml | 31 - .../security/account_security.xml | 11 - .../l10n_be_coda/security/ir.model.access.csv | 17 - addons/l10n_be_coda/wizard/__init__.py | 2 +- .../wizard/account_coda_import.py | 2481 +++++------------ .../wizard/account_coda_import_dle.py | 740 ----- 16 files changed, 652 insertions(+), 6276 deletions(-) delete mode 100644 addons/l10n_be_coda/l10n_be_coda.py delete mode 100644 addons/l10n_be_coda/l10n_be_coda_comm_type.xml delete mode 100644 addons/l10n_be_coda/l10n_be_coda_trans_category.xml delete mode 100644 addons/l10n_be_coda/l10n_be_coda_trans_code.xml delete mode 100644 addons/l10n_be_coda/l10n_be_coda_trans_type.xml delete mode 100755 addons/l10n_be_coda/res_bank.py delete mode 100755 addons/l10n_be_coda/res_bank_view.xml delete mode 100644 addons/l10n_be_coda/security/account_security.xml delete mode 100644 addons/l10n_be_coda/security/ir.model.access.csv delete mode 100644 addons/l10n_be_coda/wizard/account_coda_import_dle.py diff --git a/addons/l10n_be_coda/__init__.py b/addons/l10n_be_coda/__init__.py index 4a58b8ad059..c737eb79536 100644 --- a/addons/l10n_be_coda/__init__.py +++ b/addons/l10n_be_coda/__init__.py @@ -20,7 +20,6 @@ # ############################################################################## -import l10n_be_coda import wizard # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/__openerp__.py b/addons/l10n_be_coda/__openerp__.py index 2c8931f484c..14e1bf6e443 100644 --- a/addons/l10n_be_coda/__openerp__.py +++ b/addons/l10n_be_coda/__openerp__.py @@ -93,12 +93,6 @@ If required, you can manually adjust the descriptions via the CODA configuration 'depends': ['account_voucher','base_iban', 'l10n_be_invoice_bba', 'account_bank_statement_extensions'], 'demo': [], 'data': [ - 'l10n_be_coda_trans_type.xml', - 'l10n_be_coda_trans_code.xml', - 'l10n_be_coda_trans_category.xml', - 'l10n_be_coda_comm_type.xml', - 'security/ir.model.access.csv', - 'security/account_security.xml', 'l10n_be_coda_wizard.xml', 'l10n_be_coda_view.xml', ], diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py deleted file mode 100644 index cc11c72cf06..00000000000 --- a/addons/l10n_be_coda/l10n_be_coda.py +++ /dev/null @@ -1,499 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from osv import osv, fields -import decimal_precision as dp -from tools.translate import _ -import logging -_logger = logging.getLogger(__name__) - - -class coda_bank_account(osv.osv): - _name = 'coda.bank.account' - _description = 'CODA Bank Account Configuration' - - def _check_account_pain(self, cr, uid, context=None): - res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_pain'), ('state', '=', 'installed')]) - return res and True or False - - def _check_currency(self, cr, uid, ids, context=None): - obj_cba = self.browse(cr, uid, ids[0], context=context) - if (obj_cba.state == 'normal') and obj_cba.journal: - if obj_cba.journal.currency and (obj_cba.currency != obj_cba.journal.currency): - return False - if not obj_cba.journal.currency and (obj_cba.currency != obj_cba.company_id.currency_id): - return False - return True - - _columns = { - 'name': fields.char('Name', size=64, required=True), - 'bank_id': fields.many2one('res.partner.bank', 'Bank Account', required=True, - help='Bank Account Number.\nThe CODA import function will find its CODA processing parameters on this number.'), - 'description1': fields.char('Primary Account Description', size=35, - help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'), - 'description2': fields.char('Secondary Account Description', size=35, - help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'), - 'state': fields.selection([ - ('normal', 'Normal'), - ('info', 'Info')], - 'Type', required=True, select=1, - help='No Bank Statements will be generated for CODA Bank Statements from Bank Accounts of type \'Info\'.'), - 'journal': fields.many2one('account.journal', 'Journal', - domain=[('type', '=', 'bank')], - states={'normal': [('required', True)], 'info': [('required', False)]}, - help='Bank Journal for the Bank Statement'), - 'currency': fields.many2one('res.currency', 'Currency', required=True, - help='The currency of the CODA Bank Statement'), - 'coda_st_naming': fields.char('Bank Statement Naming Policy', size=64, - help="Define the rules to create the name of the Bank Statements generated by the CODA processing." \ - "\nE.g. %(code)s%(y)s/%(paper)s" \ - "\n\nVariables:" \ - "\nBank Journal Code: %(code)s" \ - "\nYear (of CODA 'New Balance Date') with Century: %(year)s" \ - "\nYear (of CODA 'New Balance Date') without Century: %(y)s" \ - "\nCODA sequence number: %(coda)s" \ - "\nPaper Statement sequence number (as specified on 'Old Balance' record): %(paper_ob)s" \ - "\nPaper Statement sequence number (as specified on 'New Balance' record): %(paper)s"), - 'awaiting_account': fields.many2one('account.account', 'Default Account for Unrecognized Movement', domain=[('type', '!=', 'view')], required=True, - help='Set here the default account that will be used if the partner cannot be unambiguously identified.'), - 'transfer_account': fields.many2one('account.account', 'Default Internal Transfer Account', domain=[('code', 'like', '58%'), ('type', '!=', 'view')], required=True, - help='Set here the default account that will be used for internal transfer between own bank accounts (e.g. transfer between current and deposit bank accounts).'), - 'account_mapping_ids': fields.one2many('coda.account.mapping.rule', 'coda_bank_account_id', 'Account Mapping Rules'), - 'find_payment': fields.boolean('Lookup Payment Reference', - help='Invoice lookup and reconciliation via the SEPA EndToEndReference.' \ - '\nInstall the \'account_pain\' module if you want to take advantage of this feature.'), - 'find_bbacom': fields.boolean('Lookup Structured Communication of type \'BBA\'', - help='Partner lookup and reconciliation via the \'BBA\' Structured Communication.' \ - '\nA partial reconciliation will be created when there is no exact match between the Invoice and Bank Transaction amounts.'), - 'find_inv_number': fields.boolean('Lookup Invoice Number', - help='Partner lookup and reconciliation via the Invoice Number when a communication in free format is used.' \ - '\nA reconciliation will only be created in case of exact match between the Invoice and Bank Transaction amounts.'), - 'find_partner': fields.boolean('Lookup Partner', - help='Partner lookup via Bank Account Number in order to facilitate the reconciliation.'), - 'update_partner': fields.boolean('Update Partner Bank Accounts', - help='Update Partner record when the Counterparty\'s Bank Account has not been registered yet.'), - 'balance_start_enforce': fields.boolean('Prevent invalid Opening Balances', - help="Do not process Statements with an Opening Balance that doesn't match the previous Closing Balance."), - 'discard_dup': fields.boolean('Discard Duplicates', - help="Duplicate Bank Statements will be discarded. Select the corresponding 'CODA Bank Statement' in order to view the contents of such duplicates."), - 'active': fields.boolean('Active', help='If the active field is set to False, it will allow you to hide the Bank Account without removing it.'), - 'company_id': fields.many2one('res.company', 'Company', required=True), - } - _defaults = { - 'currency': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, - 'state': 'normal', - 'coda_st_naming': '%(code)s/%(y)s/%(coda)s', - 'active': True, - 'find_payment': _check_account_pain, - 'find_bbacom': True, - 'find_inv_number': True, - 'find_partner': True, - 'update_partner': True, - 'balance_start_enforce': True, - 'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, - } - _sql_constraints = [ - ('account_uniq_1', 'unique (bank_id, description1, currency)', 'The combination of Bank Account, Account Description and Currency must be unique !'), - ('account_uniq_2', 'unique (bank_id, description2, currency)', 'The combination of Bank Account, Account Description and Currency must be unique !'), - ] - _constraints = [ - (_check_currency, '\n\nConfiguration Error! \nThe Bank Account Currency should match the Journal Currency !', ['currency', 'journal']), - ] - _order = 'name' - - def name_get(self, cr, uid, ids, context=None): - res = [] - if not len(ids): - return res - for id in self.browse(cr, uid, ids, context=context): - res.append((id.id, (id.bank_id.iban or id.bank_id.acc_number) + ' (' + id.currency.name + ')' + \ - (id.description1 and (' - ' + id.description1) or ''))) - return res - - def copy(self, cr, uid, id, default=None, context=None): - cba = self.browse(cr, uid, id, context=context) - if not default: - default = {} - default = default.copy() - default.update({'journal_id': None}) - default['description1'] = cba['description1'] or '' - default['description2'] = cba['description2'] or '' - default['name'] = (cba['name'] or '') + ' (copy)' - default['state'] = cba['state'] - return super(coda_bank_account, self).copy(cr, uid, id, default, context) - - def onchange_state(self, cr, uid, ids, state): - return state == 'info' and {'value': {'journal': None}} or {} - -coda_bank_account() - - -class account_coda(osv.osv): - _name = 'account.coda' - _description = 'Object to store CODA Data Files' - _order = 'coda_creation_date desc' - _columns = { - 'name': fields.char('CODA Filename', size=128, readonly=True), - 'coda_data': fields.binary('CODA File', readonly=True), - 'statement_ids': fields.one2many('coda.bank.statement', 'coda_id', 'Generated CODA Bank Statements', readonly=True), - 'note': fields.text('Import Log', readonly=True), - 'coda_creation_date': fields.date('CODA Creation Date', readonly=True, select=True), - 'date': fields.date('Import Date', readonly=True, select=True), - 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), - 'company_id': fields.many2one('res.company', 'Company', readonly=True) - } - _defaults = { - 'date': fields.date.context_today, - 'user_id': lambda self, cr, uid, context: uid, - 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.coda', context=c), - } - _sql_constraints = [ - ('coda_uniq', 'unique (name, coda_creation_date)', 'This CODA has already been imported !') - ] - - def unlink(self, cr, uid, ids, context=None): - if context is None: - context = {} - context.update({'coda_unlink': True}) - coda_st_obj = self.pool.get('coda.bank.statement') - bank_st_obj = self.pool.get('account.bank.statement') - for coda in self.browse(cr, uid, ids, context=context): - for coda_statement in coda.statement_ids: - if not context.get('coda_statement_unlink', False): - if coda_st_obj.exists(cr, uid, coda_statement.id, context=context): - coda_st_obj.unlink(cr, uid, [coda_statement.id], context=context) - if not context.get('bank_statement_unlink', False): - if coda_st_obj.exists(cr, uid, coda_statement.id, context=context) and (coda_statement.type == 'normal') and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context): - bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) - context.update({'coda_unlink': False}) - return super(account_coda, self).unlink(cr, uid, ids, context=context) - -account_coda() - - -class account_coda_trans_type(osv.osv): - _name = 'account.coda.trans.type' - _description = 'CODA transaction type' - _rec_name = 'type' - _columns = { - 'type': fields.char('Transaction Type', size=1, required=True), - 'parent_id': fields.many2one('account.coda.trans.type', 'Parent'), - 'description': fields.text('Description', translate=True), - } -account_coda_trans_type() - - -class account_coda_trans_code(osv.osv): - _name = 'account.coda.trans.code' - _description = 'CODA transaction code' - _rec_name = 'code' - _columns = { - 'code': fields.char('Code', size=2, required=True, select=1), - 'type': fields.selection([ - ('code', 'Transaction Code'), - ('family', 'Transaction Family')], - 'Type', required=True, select=1), - 'parent_id': fields.many2one('account.coda.trans.code', 'Family', select=1), - 'description': fields.char('Description', size=128, translate=True, select=2), - 'comment': fields.text('Comment', translate=True), - } -account_coda_trans_code() - - -class account_coda_trans_category(osv.osv): - _name = 'account.coda.trans.category' - _description = 'CODA transaction category' - _rec_name = 'category' - _columns = { - 'category': fields.char('Transaction Category', size=3, required=True), - 'description': fields.char('Description', size=256, translate=True), - } -account_coda_trans_category() - - -class account_coda_comm_type(osv.osv): - _name = 'account.coda.comm.type' - _description = 'CODA structured communication type' - _rec_name = 'code' - _columns = { - 'code': fields.char('Structured Communication Type', size=3, required=True, select=1), - 'description': fields.char('Description', size=128, translate=True), - } - _sql_constraints = [ - ('code_uniq', 'unique (code)', 'The Structured Communication Code must be unique !') - ] -account_coda_comm_type() - - -class coda_bank_statement(osv.osv): - _name = 'coda.bank.statement' - _description = 'CODA Bank Statement' - - def _default_journal_id(self, cr, uid, context={}): - if context.get('journal_id', False): - return context['journal_id'] - return False - - def _end_balance(self, cursor, user, ids, name, attr, context=None): - res = {} - statements = self.browse(cursor, user, ids, context=context) - for statement in statements: - res[statement.id] = statement.balance_start - for line in statement.line_ids: - res[statement.id] += line.amount - for r in res: - res[r] = round(res[r], 2) - return res - - def _get_period(self, cr, uid, context={}): - periods = self.pool.get('account.period').find(cr, uid) - if periods: - return periods[0] - else: - return False - - _order = 'date desc' - _columns = { - 'name': fields.char('Name', size=64, required=True, readonly=True), - 'date': fields.date('Date', required=True, readonly=True), - 'coda_creation_date': fields.date('CODA Creation Date', readonly=True), - 'old_balance_date': fields.date('Old Balance Date', readonly=True), - 'new_balance_date': fields.date('New Balance Date', readonly=True), - 'coda_id': fields.many2one('account.coda', 'CODA Data File', ondelete='cascade'), - 'type': fields.selection([ - ('normal', 'Normal'), - ('info', 'Info')], - 'Type', required=True, readonly=True, - help='No Bank Statements are associated with CODA Bank Statements of type \'Info\'.'), - 'statement_id': fields.many2one('account.bank.statement', 'Associated Bank Statement'), - 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True, domain=[('type', '=', 'bank')]), - 'coda_bank_account_id': fields.many2one('coda.bank.account', 'Bank Account', readonly=True), - 'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True), - 'balance_start': fields.float('Starting Balance', digits_compute=dp.get_precision('Account'), readonly=True), - 'balance_end_real': fields.float('Ending Balance', digits_compute=dp.get_precision('Account'), readonly=True), - 'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance'), - 'line_ids': fields.one2many('coda.bank.statement.line', - 'statement_id', 'CODA Bank Statement lines', readonly=True), - 'currency': fields.many2one('res.currency', 'Currency', required=True, readonly=True, - help='The currency of the CODA Bank Statement'), - 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), - } - _defaults = { - 'type': 'normal', - 'currency': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, - 'journal_id': _default_journal_id, - 'period_id': _get_period, - } - - def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): - if context is None: - context = {} - res = super(coda_bank_statement, self).search(cr, uid, args=args, offset=offset, limit=limit, order=order, - context=context, count=count) - if context.get('bank_statement', False) and not res: - raise osv.except_osv('Warning', _('No CODA Bank Statement found for this Bank Statement!')) - return res - - def unlink(self, cr, uid, ids, context=None): - if context is None: - context = {} - context.update({'coda_statement_unlink': True}) - coda_obj = self.pool.get('account.coda') - bank_st_obj = self.pool.get('account.bank.statement') - - # find all CODA bank statements that are associated with the selected CODA bank statements via a common CODA file - new_ids = [] - for coda_statement in self.browse(cr, uid, ids, context=context): - if coda_obj.exists(cr, uid, coda_statement.coda_id.id, context=context): - new_ids += [x.id for x in coda_obj.browse(cr, uid, coda_statement.coda_id.id, context=context).statement_ids] - - # unlink CODA banks statements as well as associated bank statements and CODA files - for coda_statement in self.browse(cr, uid, new_ids, context=context): - if coda_statement.statement_id.state == 'confirm': - raise osv.except_osv(_('Invalid action !'), - _("Cannot delete CODA Bank Statement '%s' of Journal '%s'." \ - "\nThe associated Bank Statement has already been confirmed !" \ - "\nPlease undo this action first!") \ - % (coda_statement.name, coda_statement.journal_id.name)) - else: - if not context.get('coda_unlink', False): - if coda_statement.coda_id and coda_obj.exists(cr, uid, coda_statement.coda_id.id, context=context): - coda_obj.unlink(cr, uid, [coda_statement.coda_id.id], context=context) - if not context.get('bank_statement_unlink', False): - if coda_statement.statement_id and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context): - bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context) - - context.update({'coda_statement_unlink': False}) - return super(coda_bank_statement, self).unlink(cr, uid, new_ids, context=context) - -coda_bank_statement() - - -class account_bank_statement(osv.osv): - _inherit = 'account.bank.statement' - _columns = { - 'coda_statement_id': fields.many2one('coda.bank.statement', 'Associated CODA Bank Statement'), - } - # _sql_constraints = [ - # ('name_company_uniq', 'unique (name,company_id)', 'The name of the Bank Statement must be unique per company !') - # ] - - def unlink(self, cr, uid, ids, context=None): - if context is None: - context = {} - context.update({'bank_statement_unlink': True}) - coda_obj = self.pool.get('account.coda') - coda_st_obj = self.pool.get('coda.bank.statement') - - # find all statements that are associated with the selected bank statements via a common CODA file - ids_plus = [] - for statement in self.browse(cr, uid, ids, context=context): - if statement.coda_statement_id: - for x in coda_obj.browse(cr, uid, statement.coda_statement_id.coda_id.id, context=context).statement_ids: - if x.type == 'normal': - ids_plus += [x.statement_id.id] - - # unlink banks statements as well as associated CODA bank statements and CODA files - for statement in self.browse(cr, uid, ids_plus, context=context): - if not context.get('coda_statement_unlink', False): - if statement.coda_statement_id and coda_st_obj.exists(cr, uid, statement.coda_statement_id.id, context=context): - coda_st_obj.unlink(cr, uid, [statement.coda_statement_id.id], context=context) - if not context.get('coda_unlink', False): - if statement.coda_statement_id \ - and coda_st_obj.exists(cr, uid, statement.coda_statement_id.id, context=context) \ - and statement.coda_statement_id.coda_id \ - and coda_obj.exists(cr, uid, statement.coda_statement_id.coda_id.id, context=context): - coda_obj.unlink(cr, uid, [statement.coda_statement_id.coda_id.id], context=context) - - context.update({'bank_statement_unlink': False}) - new_ids = list(set(ids + ids_plus)) - return super(account_bank_statement, self).unlink(cr, uid, new_ids, context=context) - -account_bank_statement() - - -class coda_bank_statement_line(osv.osv): - _name = 'coda.bank.statement.line' - _order = 'sequence' - _description = 'CODA Bank Statement Line' - _columns = { - 'name': fields.char('Communication', size=268, required=True), - 'sequence': fields.integer('Sequence'), - 'date': fields.date('Entry Date', required=True), - 'val_date': fields.date('Valuta Date'), - 'account_id': fields.many2one('account.account', 'Account'), - 'type': fields.selection([ - ('supplier', 'Supplier'), - ('customer', 'Customer'), - ('general', 'General'), - ('globalisation', 'Globalisation'), - ('information', 'Information'), - ('communication', 'Free Communication'), - ], 'Type', required=True), - 'globalisation_level': fields.integer('Globalisation Level', - help="The value which is mentioned (1 to 9), specifies the hierarchy level" - " of the globalisation of which this record is the first." - "\nThe same code will be repeated at the end of the globalisation."), - 'globalisation_amount': fields.float('Globalisation Amount', digits_compute=dp.get_precision('Account')), - 'globalisation_id': fields.many2one('account.bank.statement.line.global', 'Globalisation ID', readonly=True, - help="Code to identify transactions belonging to the same globalisation level within a batch payment"), - 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')), - 'partner_id': fields.many2one('res.partner', 'Partner'), - 'counterparty_name': fields.char('Counterparty Name', size=35), - 'counterparty_bic': fields.char('Counterparty BIC', size=11), - 'counterparty_number': fields.char('Counterparty Number', size=34), - 'counterparty_currency': fields.char('Counterparty Currency', size=3), - 'payment_reference': fields.char('Payment Reference', size=35, - help="Payment Reference. For SEPA (SCT or SDD) transactions, the PaymentInformationIdentification "\ - "is recorded in this field pertaining to a globalisation, and the EndToEndReference for " \ - "simple transactions or for the details of a globalisation."), - 'statement_id': fields.many2one('coda.bank.statement', 'CODA Bank Statement', - select=True, required=True, ondelete='cascade'), - 'coda_bank_account_id': fields.related('statement_id', 'coda_bank_account_id', type='many2one', relation='coda.bank.account', string='Bank Account', store=True, readonly=True), - 'ref': fields.char('Reference', size=32), - 'note': fields.text('Notes'), - 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), - } - - #TODO : Check this function. account_bank_statement_line Seems undefined : ) - def unlink(self, cr, uid, ids, context=None): - if context is None: - context = {} - if context.get('block_statement_line_delete', False): - raise osv.except_osv('Warning', _('Delete operation not allowed !')) - return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context) - -coda_bank_statement_line() - - -class account_bank_statement_line_global(osv.osv): - _inherit = 'account.bank.statement.line.global' - _columns = { - 'coda_statement_line_ids': fields.one2many('coda.bank.statement.line', 'globalisation_id', 'CODA Bank Statement Lines', readonly=True), - } -account_bank_statement_line_global() - - -class coda_account_mapping_rule(osv.osv): - _name = 'coda.account.mapping.rule' - _description = 'Rules Engine to assign accounts during CODA parsing' - _order = 'sequence' - _columns = { - 'coda_bank_account_id': fields.many2one('coda.bank.account', 'CODA Bank Account', ondelete='cascade'), - 'sequence': fields.integer('Sequence', help='Determines the order of the rules to assign accounts'), - 'name': fields.char('Rule Name', size=128, required=True), - # matching criteria - 'trans_type_id': fields.many2one('account.coda.trans.type', 'Transaction Type'), - 'trans_family_id': fields.many2one('account.coda.trans.code', 'Transaction Family', domain=[('type', '=', 'family')]), - 'trans_code_id': fields.many2one('account.coda.trans.code', 'Transaction Code', domain=[('type', '=', 'code')]), - 'trans_category_id': fields.many2one('account.coda.trans.category', 'Transaction Category'), - 'struct_comm_type_id': fields.many2one('account.coda.comm.type', 'Structured Communication Type'), - 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='cascade'), - # resulting general account - 'account_id': fields.many2one('account.account', 'Account', ondelete='cascade', required=True, domain=[('type', '!=', 'view')]), - 'active': fields.boolean('Active', help='Switch on/off this rule.'), - } - _defaults = { - 'active': True, - } - - def account_id_get(self, cr, uid, coda_bank_account_id, trans_type_id=None, trans_family_id=None, - trans_code_id=None, trans_category_id=None, struct_comm_type_id=None, partner_id=None, context=None): - cr.execute('SELECT account_id, trans_type_id, trans_family_id, trans_code_id, trans_category_id, struct_comm_type_id, partner_id ' \ - 'FROM coda_account_mapping_rule ' \ - 'WHERE active = TRUE AND coda_bank_account_id = %s ' \ - 'ORDER BY sequence' % coda_bank_account_id - ) - rules = cr.fetchall() - condition = '(not rule[1] or (trans_type_id == rule[1])) and (not rule[2] or (trans_family_id == rule[2])) ' \ - 'and (not rule[3] or (trans_code_id == rule[3])) and (not rule[4] or (trans_category_id == rule[4])) ' \ - 'and (not rule[5] or (struct_comm_type_id == rule[5])) and (not rule[6] or (partner_id == rule[6]))' - account_id = None - for rule in rules: - if eval(condition): - account_id = rule[0] - break - return account_id - -coda_account_mapping_rule() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/l10n_be_coda_comm_type.xml b/addons/l10n_be_coda/l10n_be_coda_comm_type.xml deleted file mode 100644 index 9a042ec48d2..00000000000 --- a/addons/l10n_be_coda/l10n_be_coda_comm_type.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - 001 - Data concerning the counterparty - - - 002 - Communication of the bank - - - 003 - RBP data - - - 004 - Counterparty’s banker - - - 005 - Data concerning the correspondent - - - 006 - Information concerning the detail amount - - - 007 - Information concerning the detail cash - - - 008 - Identification of the de ultimate beneficiary/creditor (SEPA SCT/SDD) - - - 009 - Identification of the de ultimate ordering customer/debtor (SEPA SCT/SDD) - - - 010 - Information pertaining to sale or purchase of securities - - - 011 - Information pertaining to coupons - - - 100 - (SEPA) payment with a structured format communication applying the ISO standard 11649: Structured creditor reference to remittance information - - - 101 - Credit transfer or cash payment with structured format communication - - - 102 - Credit transfer or cash payment with reconstituted structured format communication - - - 103 - number (e.g. of the cheque, of the card, etc.) - - - 104 - Equivalent in EUR - - - 105 - original amount of the transaction - - - 106 - Method of calculation (VAT, withholding tax on income, commission, etc.) - - - 107 - Direct debit – DOM’80 - - - 108 - Closing - - - 111 - POS credit – Globalisation - - - 112 - ATM payment (usually Eurocheque card) - - - 113 - ATM/POS debit - - - 114 - POS credit - individual transaction - - - 115 - Terminal cash deposit - - - 120 - Correction of a transaction - - - 121 - Commercial bills - - - 122 - Bills - calculation of interest - - - 123 - Fees and commissions - - - 124 - Number of the credit card - - - 125 - Credit - - - 126 - Term investments - - - 127 - European direct debit (SEPA) - - - - diff --git a/addons/l10n_be_coda/l10n_be_coda_trans_category.xml b/addons/l10n_be_coda/l10n_be_coda_trans_category.xml deleted file mode 100644 index 192240cf8aa..00000000000 --- a/addons/l10n_be_coda/l10n_be_coda_trans_category.xml +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - 000 - Net amount - - - 001 - Interest received - - - 002 - Interest paid - - - 003 - Credit commission - - - 004 - Postage - - - 005 - Renting of letterbox - - - 006 - Various fees/commissions - - - 007 - Access right to database - - - 008 - Information charges - - - 009 - Travelling expenses - - - 010 - Writ service fee - - - 011 - VAT - - - 012 - Exchange commission - - - 013 - Payment commission - - - 014 - Collection commission - - - 015 - Correspondent charges - - - 016 - BLIW/IBLC dues - - - 017 - Research costs - - - 018 - Tental guarantee charges - - - 019 - Tax on physical delivery - - - 020 - Costs of physical delivery - - - 021 - Costs for drawing up a bank cheque - - - 022 - Priority costs - - - 023 - Exercising fee - - - 024 - Growth premium - - - 025 - Individual entry for exchange charges - - - 026 - Handling commission - - - 027 - Charges for unpaid bills - - - 028 - Fidelity premium - - - 029 - Protest charges - - - 030 - Account insurance - - - 031 - Charges foreign cheque - - - 032 - Drawing up a circular cheque - - - 033 - Charges for a foreign bill - - - 034 - Reinvestment fee - - - 035 - Charges foreign documentary bill - - - 036 - Costs relating to a refused cheque - - - 037 - Commission for handling charges - - - 039 - Telecommunications - - - 041 - Credit card costs - - - 042 - Payment card costs - - - 043 - Insurance costs - - - 045 - Handling costs - - - 047 - Charges extension bill - - - 049 - Fiscal stamps/stamp duty - - - 050 - Capital term investment - - - 051 - Withholding tax - - - 052 - Residence state tax - - - 053 - Printing of forms - - - 055 - Repayment loan or credit capital - - - 057 - Interest subsidy - - - 058 - Capital premium - - - 059 - Default interest - - - 061 - Charging fees for transactions - - - 063 - Rounding differences - - - 065 - Interest payment advice - - - 066 - Fixed loan advance - reimbursement - - - 067 - Fixed loan advance - extension - - - 068 - Countervalue of an entry - - - 069 - Forward arbitrage contracts : sum to be supplied by customer - - - 070 - Forward arbitrage contracts : sum to be supplied by bank - - - 071 - Fixed loan advance - availability - - - 072 - Countervalue of commission to third party - - - 073 - Costs of ATM abroad - - - 074 - Mailing costs - - - 100 - Gross amount - - - 200 - Overall documentary credit charges - - - 201 - Advice notice commission - - - 202 - Advising commission | Additional advising commission - - - 203 - Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission - - - 204 - Amendment fee - - - 205 - Documentary payment commission | Document commission | Drawdown fee | Negotiation fee - - - 206 - Surety fee/payment under reserve - - - 207 - Non-conformity fee - - - 208 - Commitment fee deferred payment - - - 209 - Transfer commission - - - 210 - Commitment fee - - - 211 - Credit arrangement fee | Additional credit arrangement fee - - - 212 - Warehousing fee - - - 213 - Financing fee - - - 214 - Issue commission (delivery order) - - - 400 - Acceptance fee - - - 401 - Visa charges - - - 402 - Certification costs - - - 403 - Minimum discount rate - - - 404 - Discount commission - - - 405 - Bill guarantee commission - - - 406 - Collection charges - - - 407 - Costs Article 45 - - - 408 - Cover commission - - - 409 - Safe deposit charges - - - 410 - Reclamation charges - - - 411 - Fixed collection charge - - - 412 - Advice of expiry charges - - - 413 - Acceptance charges - - - 414 - Regularisation charges - - - 415 - Surety fee - - - 416 - Charges for the deposit of security - - - 418 - Endorsement commission - - - 419 - Bank service fee - - - 420 - Retention charges - - - 425 - Foreign broker's commission - - - 426 - Belgian broker's commission - - - 427 - Belgian Stock Exchange tax - - - 428 - Interest accrued - - - 429 - Foreign Stock Exchange tax - - - 430 - Recovery of foreign tax - - - 431 - Delivery of a copy - - - - diff --git a/addons/l10n_be_coda/l10n_be_coda_trans_code.xml b/addons/l10n_be_coda/l10n_be_coda_trans_code.xml deleted file mode 100644 index b2b23d59bef..00000000000 --- a/addons/l10n_be_coda/l10n_be_coda_trans_code.xml +++ /dev/null @@ -1,1914 +0,0 @@ - - - - - - - 00 - family - Undefined transactions - - - 00 - code - - Undefined transaction - - - 33 - code - - Value correction - - - 35 - code - - Correction - - - 37 - code - - Costs - - - 39 - code - - Cancellation of a transaction - - - 83 - code - - Value correction - - - 85 - code - - Correction - - - 87 - code - - Costs refunded - - - 89 - code - - Cancellation of a transaction - - - 01 - family - Domestic or local SEPA credit transfers - - - 01 - code - - Individual transfer order - Credit transfer given by the customer on paper or electronically, even if the execution date of this transfer is in the future. Domestic payments as well as euro payments meeting the requirements. - - - 02 - code - - Individual transfer order initiated by the bank - The bank takes the initiative for debiting the customer’s account. - - - 03 - code - - Standing order - Credit transfer for which the order has been given once and which is carried out again at regular intervals without any change. - - - 05 - code - - Payment of wages, etc. - The principal will be debited for the total amount of the file entered. - - - 07 - code - - Collective transfer - The principal will be debited for the total amount of the file entered. - - - 09 - code - - Your semi-standing order - - - 11 - code - - Your semi-standing order – payment to employees - - - 13 - code - - Transfer from your account - Transfer from one account to another account of the same customer at the bank's or the customer's initiative (intracompany). - - - 15 - code - - Balance due insurance premium - - - 17 - code - - Financial centralisation - In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement. - - - 37 - code - - Costs - - - 39 - code - - Your issue circular cheque - To be used for issued circular cheques given in consignment - - - 49 - code - - Cancellation or correction - - - 50 - code - - Transfer in your favour - - - 51 - code - - Transfer in your favour – initiated by the bank - The bank takes the initiative for crediting the customer’s account. - - - 52 - code - - Payment in your favour - Payment by a third person - - - 54 - code - - Unexecutable transfer order - - - 60 - code - - Non-presented circular cheque - - - 62 - code - - Unpaid postal order - - - 64 - code - - Transfer to your account - Intracompany - - - 66 - code - - Financial centralization - In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement. - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 03 - family - Cheques - - - 01 - code - - Payment of your cheque - - - 03 - code - - Your purchase by payment card - - - 05 - code - - Payment of voucher - Payment of holiday pay, etc. - - - 07 - code - - Definitely unpaid cheque - - - 09 - code - - Unpaid voucher - - - 11 - code - - Department store cheque - - - 13 - code - - Eurocheque written out abroad - - - 15 - code - - Your purchase bank cheque - Cheque drawn by the bank on itself, usually with charges. - - - 17 - code - - Your certified cheque - Amount of the cheque; if any, charges receive code 37 - - - 19 - code - - Settlement of credit cards - - - 35 - code - - Cash advance - - - 37 - code - - Cheque-related costs - - - 38 - code - - Provisionally unpaid - - - 39 - code - - Provisionally unpaid due to other reason than manual presentation - - - 49 - code - - Cancellation or correction - - - 50 - code - - Credit of a payment via terminal - - - 52 - code - - First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve - - - 56 - code - - Non-presented certified cheques - - - 58 - code - - Remittance of cheques, vouchers, etc. credit after collection - Also for vouchers, postal orders, anything but bills of exchange, acquittances, promissory notes, etc. - - - 60 - code - - Reversal of voucher - - - 62 - code - - Reversal of cheque - cheques debited on account, but debit cancelled afterwards for lack of cover (double debit/contra-entry of transaction 01 or 05) - - - 63 - code - - Second credit of unpaid cheque - - - 64 - code - - Reversal of settlement of credit card - - - 66 - code - - Remittance of cheque by your branch - credit under usual reserve - - - 68 - code - - Credit of a payment via electronic purse - - - 87 - code - - Reimbursement of cheque-related costs - Overall amount, VAT included - - - 99 - code - - Cancellation or correction - - - 04 - family - Cards - - - 01 - code - - Loading a GSM card - Debit customer who is loading - - - 02 - code - - Payment by means of a payment card within the Eurozone - Eurozone = countries which have the euro as their official currency - - - 03 - code - - Settlement credit cards - See annexe III : communication 124 - - - 04 - code - - Cash withdrawal from an ATM - At home as well as abroad - - - 05 - code - - Loading Proton - - - 06 - code - - Payment with tank card - - - 07 - code - - Payment by GSM - - - 08 - code - - Payment by means of a payment card outside the Eurozone - Eurozone = countries which have the euro as their official currency - - - 37 - code - - Costs - Various costs for possessing or using a payment card - - - 49 - code - - Cancellation or correction - - - 50 - code - - Credit after a payment at a terminal - Except Proton - - - 51 - code - - Unloading Proton - - - 52 - code - - Loading GSM cards - Credit provider - - - 53 - code - - Cash deposit at an ATM - - - 55 - code - - Income from payments by GSM - - - 68 - code - - Credit after Proton payments - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 05 - family - Direct debit - - - 01 - code - - Payment - - - 03 - code - - Unpaid debt - - - 05 - code - - Reimbursement - - - 37 - code - - Costs - - - 49 - code - - Cancellation or correction - - - 50 - code - - Credit after collection - - - 52 - code - - Credit under usual reserve - - - 54 - code - - Reimbursement - - - 56 - code - - Unexecutable reimbursement - - - 58 - code - - Reversal - (cancellation of an undue debit of the debtor at the initiative of the financial institution or the debtor for lack of cover) - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 07 - family - Domestic commercial paper - - - 01 - code - - Payment commercial paper - Bills of exchange, acquittances, promissory notes; debit of the drawee - - - 03 - code - - Payment receipt card - - - 05 - code - - Commercial paper claimed back - Bill claimed back at the drawer's request (bill claimed back before maturity date) - - - 06 - code - - Extension of maturity date - Costs chargeable to the remitter - - - 07 - code - - Unpaid commercial paper - Contra-entry of a direct credit or of a discount - - - 08 - code - - Payment in advance - Debit of the remitter when the drawee pays in advance directly to the remitter (regards bank acceptances) - - - 09 - code - - Agio on supplier's bill - Debit of the agios to the account of the drawee - - - 10 - code - - Renewal of agreed maturity date - - - 12 - code - - Safe custody - - - 14 - code - - Warrant fallen due - - - 37 - code - - Costs related to commercial paper - If any, detail in the category (e.g. costs for presentation for acceptance, etc.) - - - 39 - code - - Return of an irregular bill of exchange - Debit of the drawer after credit under usual reserve or discount - - - 49 - code - - Cancellation or correction - - - 50 - code - - Remittance of commercial paper - credit after collection - Credit of the remitter - - - 52 - code - - Remittance of commercial paper - credit under usual reserve - - - 54 - code - - Remittance of commercial paper for discount - Among other things advances or promissory notes - - - 56 - code - - Remittance of supplier's bill with guarantee - - - 58 - code - - Remittance of supplier's bill without guarantee - - - 64 - code - - Warrant - - - 86 - code - - Payment after cession - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 09 - family - Counter transactions - - - 01 - code - - Cash withdrawal - Withdrawal by counter cheque or receipt; cash remitted by the bank clerk - - - 03 - code - - Cash withdrawal by card (ATM) - - - 05 - code - - Purchase of foreign bank notes - - - 07 - code - - Purchase of gold/pieces - - - 09 - code - - Purchase of petrol coupons - - - 11 - code - - Your purchase of luncheon vouchers - - - 13 - code - - Cash withdrawal by your branch or agents - On the account of the head office - - - 15 - code - - Your purchase of lottery tickets - - - 17 - code - - Purchase of fiscal stamps - - - 19 - code - - Difference in payment - Used in case of payments accepted under reserve of count, result of overcrediting - - - 21 - code - - Cash withdrawal on card (PROTON) - - - 25 - code - - Purchase of traveller’s cheque - - - 37 - code - - Costs - - - 49 - code - - Cancellation or correction - - - 50 - code - - Cash payment - For own account - the comment for the client is given in the communication; also for mixed payments (cash + cheques) - not to be communicated to the clients; for payments made by a third person: see family 01 - - - 52 - code - - Payment night safe - - - 54 - code - - Your payment ATM - - - 56 - code - - Reserve - - - 58 - code - - Payment by your branch/agents - Takes priority over transaction 52 (hence a payment made by an agent in a night safe = 58 and not 52) - - - 60 - code - - Sale of foreign bank notes - - - 62 - code - - Sale of gold/pieces under usual reserve - - - 64 - code - - Your winning lottery ticket - - - 66 - code - - Repurchase of petrol coupons - - - 68 - code - - Difference in payment - In case of payment accepted under reserve of count; result of undercrediting - see also transaction 19 - - - 70 - code - - Sale of traveller’s cheque - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 11 - family - Securities - - - 01 - code - - Purchase of securities - Purchase of domestic or foreign securities, including subscription rights, certificates, etc. - - - 02 - code - - Tenders - Payment to the bank on maturity date - - - 03 - code - - Subscription to securities - Bonds, shares, tap issues of CDs, with or without payment of interest, etc. - - - 04 - code - - Issues - - - 05 - code - - Partial payment subscription - Debit of the subscriber for the complementary payment of partly-paid shares - - - 06 - code - - Share option plan – exercising an option - - - 09 - code - - Settlement of securities - For professionals (stockbrokers) only, whoever the issuer may be (Belgian or foreigner) - - - 11 - code - - Payable coupons/repayable securities - Debit of the issuer by the bank in charge of the financial service - - - 13 - code - - Your repurchase of issue - Unissued part (see 64) - - - 15 - code - - Interim interest on subscription - In case of subscription before the interest due date - - - 17 - code - - Management fee - - - 19 - code - - Regularisation costs - - - 37 - code - - Costs - - - 49 - code - - Cancellation or correction - - - 50 - code - - Sale of securities - - - 51 - code - - Tender - Company issues paper in return for cash - - - 52 - code - - Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve - Whatever the currency of the security - - - 56 - code - - Reserve - - - 58 - code - - Repayable securities from a deposit or delivered at the counter - credit under usual reserve - - - 62 - code - - Interim interest on subscription - When reimbursed separately to the subscriber - - - 64 - code - - Your issue - Amount paid to the issuer by the bank in charge of the placement (firm underwriting or not); also used for the payment in full of partly-paid shares, see transaction 05 - - - 66 - code - - Retrocession of issue commission - For professionals such as insurances and stockbrokers - - - 68 - code - - Compensation for missing coupon - In case coupons attached to a purchased security are missing - - - 70 - code - - Settlement of securities - Only with stockbrokers when they deliver the securities to the bank - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 13 - family - Credit - - - 01 - code - - Short-term loan - Capital and/or interest (specified by the category) - - - 02 - code - - Long-term loan - - - 05 - code - - Settlement of fixed advance - Full or partial reimbursement of a fixed advance at maturity date - - - 07 - code - - Your repayment instalment credits - Often by standing order or direct debit. In case of direct debit, family 13 is used. - - - 11 - code - - Your repayment mortgage loan - - - 13 - code - - Settlement of bank acceptances - - - 15 - code - - Your repayment hire-purchase and similar claims - Hire-purchase agreement under which the financial institution is the lessor - - - 19 - code - - Documentary import credits - - - 21 - code - - Other credit applications - - - 37 - code - - Credit-related costs - - - 49 - code - - Cancellation or correction - - - 50 - code - - Settlement of instalment credit - - - 54 - code - - Fixed advance – capital and interest - - - 55 - code - - Fixed advance – interest only - - - 56 - code - - Subsidy - Interest or capital subsidy - - - 60 - code - - Settlement of mortgage loan - - - 62 - code - - Term loan - - - 68 - code - - Documentary export credits - - - 70 - code - - Settlement of discount bank acceptance - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 30 - family - Various transactions - - - 01 - code - - Spot purchase of foreign exchange - - - 03 - code - - Forward purchase of foreign exchange - - - 05 - code - - Capital and/or interest term investment - - - 33 - code - - Value (date) correction - - - 37 - code - - Costs - - - 39 - code - - Undefined transaction - - - 49 - code - - Cancellation or correction - - - 50 - code - - Spot sale of foreign exchange - - - 52 - code - - Forward sale of foreign exchange - - - 54 - code - - Capital and/or interest term investment - - - 55 - code - - Interest term investment - - - 83 - code - - Value (date) correction - - - 87 - code - - Reimbursement of costs - - - 89 - code - - Undefined transaction - - - 99 - code - - Cancellation or correction - - - 35 - family - Closing (periodical settlements for interest, costs,…) - - - 01 - code - - Closing - - - 37 - code - - Costs - - - 49 - code - - Cancellation or correction - - - 50 - code - - Closing - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 41 - family - International credit transfers - non-SEPA credit transfers - - - 01 - code - - Transfer - - - 03 - code - - Standing order - - - 05 - code - - Collective payments of wages - - - 07 - code - - Collective transfers - - - 13 - code - - Transfer from your account - Intracompany - - - 17 - code - - Financial centralisation (debit) - - - 37 - code - - Costs relating to outgoing foreign transfers and non-SEPA transfers - - - 38 - code - - Costs relating to incoming foreign and non-SEPA transfers - - - 49 - code - - Cancellation or correction - - - 50 - code - - Transfer - - - 64 - code - - Transfer to your account - Intracompany - - - 66 - code - - Financial centralisation (credit) - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 43 - family - Foreign cheques - - - 01 - code - - Payment of a foreign cheque - Debit of a cheque in foreign currency or in EUR in favour of a foreigner - - - 07 - code - - Unpaid foreign cheque - Foreign cheque remitted for collection that returns unpaid - - - 15 - code - - Purchase of an international bank cheque - - - 37 - code - - Costs relating to payment of foreign cheques - - - 49 - code - - Cancellation or correction - - - 52 - code - - Remittance of foreign cheque credit under usual reserve - - - 58 - code - - Remittance of foreign cheque credit after collection - - - 62 - code - - Reversal of cheques - - - 70 - code - - Purchase of traveller’s cheque - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 47 - family - Foreign commercial paper - - - 01 - code - - Payment of foreign bill - - - 05 - code - - Bill claimed back - - - 06 - code - - Extension - - - 07 - code - - Unpaid foreign bill - - - 11 - code - - Payment documents abroad - Bills of lading - - - 13 - code - - Discount foreign supplier's bills - Debit customer, payment of agios, interest, exchange commission, etc. - - - 14 - code - - Warrant fallen due - - - 37 - code - - Costs relating to the payment of a foreign bill - - - 49 - code - - Cancellation or correction - - - 50 - code - - Remittance of foreign bill credit after collection - - - 52 - code - - Remittance of foreign bill credit under usual reserve - - - 54 - code - - Discount abroad - - - 56 - code - - Remittance of guaranteed foreign supplier's bill - - - 58 - code - - Idem without guarantee - - - 60 - code - - Remittance of documents abroad - credit under usual reserve - - - 62 - code - - Remittance of documents abroad - credit after collection - - - 64 - code - - Warrant - - - 87 - code - - Reimbursement of costs - - - 99 - code - - Cancellation or correction - - - 49 - family - Foreign counter transactions - - - 03 - code - - ATM withdrawal - - - 80 - family - Separately charged costs and provisions - - - 01 - code - - Guarantee card charges - - - 02 - code - - Costs relating to electronic output - - - 03 - code - - Payment card charges - - - 04 - code - - Costs for holding a documentary cash credit - - - 05 - code - - Card charges - - - 06 - code - - Damage relating to bills and cheques - - - 07 - code - - Insurance costs - - insurance costs of account holders against fatal accidents - passing-on of several insurance costs - - - 08 - code - - Registering compensation for savings accounts - - - 09 - code - - Postage - Postage recouped to the debit of the customer (including forwarding charges) - - - 10 - code - - Purchase of Smartcard - - - 11 - code - - Costs for the safe custody of correspondence - Costs chargeable to clients who ask to have their correspondence kept at their disposal at the bank's counter - - - 12 - code - - Costs for opening a bank guarantee - - - 13 - code - - Renting of safes - Commission for renting a safe deposit box - - - 14 - code - - Handling costs instalment credit - - - 15 - code - - Night safe - Commission collected to the debit of the customer to whom the bank delivers a key which gives access to the night safe - - - 16 - code - - Bank confirmation to revisor or accountant - - - 17 - code - - Charge for safe custody - Collected for unsealed deposit of securities, and other parcels - - - 18 - code - - Trade information - - - 19 - code - - Special charge for safe custody - Collected for securities, gold, pass-books, etc. placed in safe custody - - - 20 - code - - Drawing up a certificate - - - 21 - code - - Pay-packet charges - Charges for preparing pay packets - - - 22 - code - - Management/custody - - - 23 - code - - Research costs - Costs charged for all kinds of research (information on past transactions, address retrieval, ...) - - - 24 - code - - Participation in and management of interest refund system - - - 25 - code - - Renting of direct debit box - Commission for the renting of boxes put at the disposal for the correspondence - - - 26 - code - - Travel insurance premium - - - 27 - code - - Subscription fee - For publications of the financial institution - - - 29 - code - - Information charges - Charges collected for: - commercial information - sundry information - - - 31 - code - - Writ service fee - E.g. for signing invoices - - - 33 - code - - Miscellaneous fees and commissions - Costs not specified otherwise, often with a manual communication (e.g. for collecting, ordering funds). VAT excluded = type 0 VAT included = type 3 (at least 3 articles) - - - 35 - code - - Costs - Costs charged for calculating the amount of the tax to be paid (e.g. Fiscomat). - - - 37 - code - - Access right to database - Fixed right, either one-off or periodical; for details, see "categories" - - - 39 - code - - Surety fee - Agios on guarantees given - - - 41 - code - - Research costs - - - 43 - code - - Printing of forms - - - 45 - code - - Documentary credit charges - - - 47 - code - - Charging fees for transactions - - - 49 - code - - Cancellation or correction - - - 99 - code - - Cancellation or correction - - - - diff --git a/addons/l10n_be_coda/l10n_be_coda_trans_type.xml b/addons/l10n_be_coda/l10n_be_coda_trans_type.xml deleted file mode 100644 index 9be29ce622a..00000000000 --- a/addons/l10n_be_coda/l10n_be_coda_trans_type.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - 0 - Simple amount without detailed data; e.g. : an individual credit transfer (free of charges). - - - 1 - Amount as totalised by the customer; e.g. a file regrouping payments of wages or payments made to suppliers or a file regrouping collections for which the customer is debited or credited with one single amount. As a matter of principle, this type is also used when no detailed data is following (type 5). - - - 5 - - Detail of 1. Standard procedure is no detailing. However, the customer may ask for detailed data to be included into his file after the overall record (type 1). - - - 2 - Amount as totalised by the bank; e.g. : the total amount of a series of credit transfers with a structured communication As a matter of principle, this type will also be used when no detailed data (type 6 or 7) is following. - - - 6 - - Detail of 2. Simple amount without detailed data. Normally, data of this kind comes after type 2. The customer may ask for a separate file containing the detailed data. In that case, one will speak of a ‘separate application’. The records in a separate application keep type 6. - - - 7 - - Detail of 2. Simple account with detailed data The records in a separate application keep type 7. - - - 9 - - Detail of 7. The records in a separate application keep type 9. - - - 3 - Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers. - - - 8 - - Detail of 3. - - - - diff --git a/addons/l10n_be_coda/l10n_be_coda_view.xml b/addons/l10n_be_coda/l10n_be_coda_view.xml index 1ef09862c3d..9a362cd6fc4 100644 --- a/addons/l10n_be_coda/l10n_be_coda_view.xml +++ b/addons/l10n_be_coda/l10n_be_coda_view.xml @@ -1,547 +1,6 @@ - - - - - - - - coda.bank.account.search - coda.bank.account - - - - - - - - - - - - - - - - - - - coda.bank.account.list - coda.bank.account - - - - - - - - - - - - - coda.bank.account.form - coda.bank.account - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- - CODA Bank Account Configuration - coda.bank.account - form - tree,form - - - - - - - account.coda.trans.type.tree - account.coda.trans.type - - - - - - - - - - account.coda.trans.type.form - account.coda.trans.type - -
- - - - - -
-
-
- - CODA Transaction Types - ir.actions.act_window - account.coda.trans.type - form - tree,form - - - - - - account.coda.trans.code.tree - account.coda.trans.code - - - - - - - - - - - account.coda.trans.code.form - account.coda.trans.code - -
- - - - - - - - -
-
- - CODA Transaction Codes - ir.actions.act_window - account.coda.trans.code - form - tree,form - - - - - - account.coda.trans.category.tree - account.coda.trans.category - - - - - - - - - account.coda.trans.category.form - account.coda.trans.category - -
- - - - -
- - CODA Transaction Categories - ir.actions.act_window - account.coda.trans.category - form - tree,form - - - - - - account.coda.comm.type.tree - account.coda.comm.type - - - - - - - - - account.coda.comm.type.form - account.coda.comm.type - -
- - - - -
- - CODA Structured Communication Types - ir.actions.act_window - account.coda.comm.type - form - tree,form - - - - - - - - - - account.coda.tree - account.coda - - - - - - - - - - - - - account.coda.form - account.coda - -
- - - - - - - - - - - - - -
-
-
- - - account.coda.search - account.coda - - - - - - - - - - - - - - - - - Imported CODA Files - ir.actions.act_window - account.coda - form - tree,form - - - - - - - - - coda.bank.statement.list - coda.bank.statement - - - - - - - - - - - - - - - - - coda.bank.statement.form - coda.bank.statement - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - coda.bank.statement.search - coda.bank.statement - - - - - - - - - - - - - - - - - - - - - CODA Bank Statements - ir.actions.act_window - coda.bank.statement - form - tree,form - - - The CODA Bank Statements contain the information encoded in their originating CODA file in a human readable format. The Bank Statements associated with a CODA contain the subset of the CODA Bank Statement data that is required for the creation of the Accounting Entries. - - - - - - - - coda.bank.statement.line.list - coda.bank.statement.line - - - - - - - - - - - - - - - - - - - - - coda.bank.statement.line.form - coda.bank.statement.line - -
- - - - - - - - - - - - - - - - - - -
- - - coda.bank.statement.line.filter - coda.bank.statement.line - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CODA Statement Lines - coda.bank.statement.line - form - tree,form - {'block_statement_line_delete' : 1} - - - - - - - - - - - - -
-
+ + + + \ No newline at end of file diff --git a/addons/l10n_be_coda/l10n_be_coda_wizard.xml b/addons/l10n_be_coda/l10n_be_coda_wizard.xml index 76178820d9c..427e0c1991e 100644 --- a/addons/l10n_be_coda/l10n_be_coda_wizard.xml +++ b/addons/l10n_be_coda/l10n_be_coda_wizard.xml @@ -49,20 +49,6 @@ new - - - - diff --git a/addons/l10n_be_coda/res_bank.py b/addons/l10n_be_coda/res_bank.py deleted file mode 100755 index 47e7fdf8569..00000000000 --- a/addons/l10n_be_coda/res_bank.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from osv import fields, osv - - -class res_bank(osv.osv): - _inherit = 'res.bank' - _columns = { - 'code': fields.char('Code', size=3, - help='Country specific Bank Code (used for bban to iban conversion).'), - } -res_bank() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/res_bank_view.xml b/addons/l10n_be_coda/res_bank_view.xml deleted file mode 100755 index fe4a71d2bdb..00000000000 --- a/addons/l10n_be_coda/res_bank_view.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - res.bank.form.add.code - res.bank - - form - - - - - - - - - res.bank.tree.add.code - res.bank - - form - - - - - - - - - - diff --git a/addons/l10n_be_coda/security/account_security.xml b/addons/l10n_be_coda/security/account_security.xml deleted file mode 100644 index b8fdd32ebe6..00000000000 --- a/addons/l10n_be_coda/security/account_security.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Account Coda model company rule - - - ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] - - - diff --git a/addons/l10n_be_coda/security/ir.model.access.csv b/addons/l10n_be_coda/security/ir.model.access.csv deleted file mode 100644 index 89ee65048fb..00000000000 --- a/addons/l10n_be_coda/security/ir.model.access.csv +++ /dev/null @@ -1,17 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_account_coda_manager,account.coda manager,model_account_coda,account.group_account_manager,1,1,1,1 -access_account_coda_user,account.coda user,model_account_coda,account.group_account_user,1,0,0,0 -access_account_coda_trans_type_manager,account.coda.trans.type manager,model_account_coda_trans_type,account.group_account_manager,1,1,1,1 -access_account_coda_trans_type_user,account.coda.trans.type user,model_account_coda_trans_type,account.group_account_user,1,0,0,0 -access_account_coda_trans_code_manager,account.coda.trans.code manager,model_account_coda_trans_code,account.group_account_manager,1,1,1,1 -access_account_coda_trans_code_user,account.coda.trans.code user,model_account_coda_trans_code,account.group_account_user,1,0,0,0 -access_account_coda_trans_category_manager,account.coda.trans.category manager,model_account_coda_trans_category,account.group_account_manager,1,1,1,1 -access_account_coda_trans_category_user,account.coda.trans.category user,model_account_coda_trans_category,account.group_account_user,1,0,0,0 -access_account_coda_comm_type_manager,account.coda.comm.type manager,model_account_coda_comm_type,account.group_account_manager,1,1,1,1 -access_account_coda_comm_type_user,account.coda.comm.type user,model_account_coda_comm_type,account.group_account_user,1,0,0,0 -access_coda_bank_account_manager,coda.bank.account manager,model_coda_bank_account,account.group_account_manager,1,1,1,1 -access_coda_bank_account_user,coda.bank.account user,model_coda_bank_account,account.group_account_user,1,0,0,0 -access_coda_bank_statement_manager,coda.bank.statement manager,model_coda_bank_statement,account.group_account_manager,1,1,1,1 -access_coda_bank_statement_user,coda.bank.statement user,model_coda_bank_statement,account.group_account_user,1,0,0,0 -access_coda_bank_statement_line_manager,coda.bank.statement.line manager,model_coda_bank_statement_line,account.group_account_manager,1,1,1,1 -access_coda_bank_statement_line_user,coda.bank.statement.line user,model_coda_bank_statement_line,account.group_account_user,1,0,0,0 diff --git a/addons/l10n_be_coda/wizard/__init__.py b/addons/l10n_be_coda/wizard/__init__.py index 3851606707b..e3038609b80 100644 --- a/addons/l10n_be_coda/wizard/__init__.py +++ b/addons/l10n_be_coda/wizard/__init__.py @@ -20,6 +20,6 @@ # ############################################################################## -import account_coda_import_dle +import account_coda_import # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index bb165cf1656..b63b29701d8 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -20,14 +20,11 @@ # ############################################################################## -import time import base64 from osv import fields, osv from tools.translate import _ -import netsvc -import re -from traceback import format_exception -from sys import exc_info +import time +import tools import logging _logger = logging.getLogger(__name__) @@ -44,14 +41,11 @@ class account_coda_import(osv.osv_memory): 'coda_fname': lambda *a: '', } - def _check_account_payment(self, cr, uid, context=None): - res = self.pool.get('ir.module.module').search(cr, uid, [('name', '=', 'account_payment'), ('state', '=', 'installed')]) - return res and True or False - def coda_parsing(self, cr, uid, ids, context=None, batch=False, codafile=None, codafilename=None): if context is None: context = {} if batch: + print codafile = str(codafile) codafilename = codafilename else: @@ -62,1866 +56,685 @@ class account_coda_import(osv.osv_memory): except: raise osv.except_osv(_('Error!'), _('Wizard in incorrect state. Please hit the Cancel button!')) return {} - - currency_obj = self.pool.get('res.currency') - coda_bank_account_obj = self.pool.get('coda.bank.account') - trans_type_obj = self.pool.get('account.coda.trans.type') - trans_code_obj = self.pool.get('account.coda.trans.code') - trans_category_obj = self.pool.get('account.coda.trans.category') - comm_type_obj = self.pool.get('account.coda.comm.type') - journal_obj = self.pool.get('account.journal') - period_obj = self.pool.get('account.period') - partner_bank_obj = self.pool.get('res.partner.bank') - coda_obj = self.pool.get('account.coda') - coda_st_obj = self.pool.get('coda.bank.statement') - coda_st_line_obj = self.pool.get('coda.bank.statement.line') - bank_st_obj = self.pool.get('account.bank.statement') - bank_st_line_obj = self.pool.get('account.bank.statement.line') - glob_obj = self.pool.get('account.bank.statement.line.global') - inv_obj = self.pool.get('account.invoice') - move_line_obj = self.pool.get('account.move.line') - voucher_obj = self.pool.get('account.voucher') - seq_obj = self.pool.get('ir.sequence') - mod_obj = self.pool.get('ir.model.data') - account_mapping_obj = self.pool.get('coda.account.mapping.rule') - - if self._check_account_payment(cr, uid): - payment_line_obj = self.pool.get('payment.line') - else: - payment_line_obj = False - - wf_service = netsvc.LocalService('workflow') - - coda_bank_table = coda_bank_account_obj.read(cr, uid, coda_bank_account_obj.search(cr, uid, []), context=context) - for coda_bank in coda_bank_table: - coda_bank.update({'journal_code': coda_bank['journal'] and journal_obj.browse(cr, uid, coda_bank['journal'][0], context=context).code or ''}) - coda_bank.update({'iban': partner_bank_obj.browse(cr, uid, coda_bank['bank_id'][0], context=context).iban}) - coda_bank.update({'acc_number': partner_bank_obj.browse(cr, uid, coda_bank['bank_id'][0], context=context).acc_number}) - coda_bank.update({'currency_name': currency_obj.browse(cr, uid, coda_bank['currency'][0], context=context).name}) - trans_type_table = trans_type_obj.read(cr, uid, trans_type_obj.search(cr, uid, []), context=context) - trans_code_table = trans_code_obj.read(cr, uid, trans_code_obj.search(cr, uid, []), context=context) - trans_category_table = trans_category_obj.read(cr, uid, trans_category_obj.search(cr, uid, []), context=context) - comm_type_table = comm_type_obj.read(cr, uid, comm_type_obj.search(cr, uid, []), context=context) - - err_string = '' - err_code = None - err_log = '' - coda_statements = [] recordlist = unicode(base64.decodestring(codafile), 'windows-1252', 'strict').split('\n') - digits = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account') - + statements = [] for line in recordlist: - if not line: pass elif line[0] == '0': - # start of a new statement within the CODA file - coda_statement = {} - coda_parsing_note = '' - coda_statement_lines = {} - st_line_seq = 0 - # header data - coda_statement['currency'] = 'EUR' # default currency - coda_statement['version'] = line[127] - coda_version = line[127] - if coda_version not in ['1', '2']: - err_string = _('\nCODA V%s statements are not supported, please contact your bank!') % coda_version - err_code = 'R0001' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - coda_statement['coda_statement_lines'] = {} - coda_statement['date'] = str2date(line[5:11]) - coda_statement['coda_creation_date'] = str2date(line[5:11]) - coda_statement['separate_application'] = line[83:88] - coda_statement['first_transaction_date'] = False - coda_statement['state'] = 'draft' - - coda_id = coda_obj.search(cr, uid, [ - ('name', '=', codafilename), - ('coda_creation_date', '=', coda_statement['date']), - ]) - if coda_id: - err_string = _("\nCODA File with Filename '%s' and Creation Date '%s' has already been imported !") \ - % (codafilename, coda_statement['date']) - err_code = 'W0001' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Warning !'), err_string) - + #Begin of a new Bank statement + statement = {} + statements.append(statement) + statement['version'] = line[127] + if statement['version'] not in ['1', '2']: + raise osv.except_osv(_('Error R001!'), _('CODA V%s statements are not supported, please contact your bank!') % statement['version']) + statement['globalisation_stack'] = [] + statement['lines'] = [] + statement['date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[5:11]), '%d%m%y')) + statement['separateApplication'] = rmspaces(line[83:88]) elif line[0] == '1': - if coda_version == '1': - coda_statement['acc_number'] = line[5:17] - if line[18:21].strip(): - coda_statement['currency'] = line[18:21] - elif line[1] == '0': # Belgian bank account BBAN structure - coda_statement['acc_number'] = line[5:17] - coda_statement['currency'] = line[18:21] - elif line[1] == '1': # foreign bank account BBAN structure - err_string = _('\nForeign bank accounts with BBAN structure are not supported !') - err_code = 'R1001' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - elif line[1] == '2': # Belgian bank account IBAN structure - coda_statement['acc_number'] = line[5:21] - coda_statement['currency'] = line[39:42] - elif line[1] == '3': # foreign bank account IBAN structure - err_string = _('\nForeign bank accounts with IBAN structure are not supported !') - err_code = 'R1002' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - else: - err_string = _('\nUnsupported bank account structure !') - err_code = 'R1003' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - coda_statement['description'] = line[90:125].strip() - cba_filter = lambda x: (coda_statement['acc_number'] in _get_acc_numbers(x['acc_number'])) \ - and (coda_statement['currency'] == x['currency_name']) and (coda_statement['description'] in [x['description1'] or '', x['description2'] or '']) - coda_bank = filter(cba_filter, coda_bank_table) - if coda_bank: - coda_bank = coda_bank[0] - coda_statement['type'] = coda_bank['state'] - coda_statement['journal_id'] = coda_bank['journal'] and coda_bank['journal'][0] - coda_statement['currency_id'] = coda_bank['currency'][0] - coda_statement['coda_bank_account_id'] = coda_bank['id'] - coda_statement['account_mapping_ids'] = coda_bank['account_mapping_ids'] - coda_statement['coda_bank_params'] = coda_bank - awaiting_acc = coda_bank['awaiting_account'][0] - transfer_acc = coda_bank['transfer_account'][0] - find_payment = coda_bank['find_payment'] - find_bbacom = coda_bank['find_bbacom'] - find_inv_number = coda_bank['find_inv_number'] - find_partner = coda_bank['find_partner'] - update_partner = coda_bank['update_partner'] - coda_statement['balance_start_enforce'] = coda_bank['balance_start_enforce'] - coda_statement['discard_dup'] = coda_bank['discard_dup'] - company_id = coda_bank['company_id'][0] - company_bank_ids = partner_bank_obj.search(cr, uid, [('company_id', '=', company_id)]) - company_bank_accounts = partner_bank_obj.read(cr, uid, company_bank_ids, ['acc_number']) - company_bank_accounts = [x['acc_number'].replace(' ', '') for x in company_bank_accounts] - else: - err_string = _("\nNo matching CODA Bank Account Configuration record found !") + \ - _("\nPlease check if the 'Bank Account Number', 'Currency' and 'Account Description' fields of your configuration record match with '%s', '%s' and '%s' !") \ - % (coda_statement['acc_number'], coda_statement['currency'], coda_statement['description']) - err_code = 'R1004' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - bal_start = list2float(line[43:58]) # old balance data - if line[42] == '1': # 1= Debit - bal_start = - bal_start - coda_statement['balance_start'] = bal_start - coda_statement['old_balance_date'] = str2date(line[58:64]) - coda_statement['acc_holder'] = line[64:90] - coda_statement['paper_ob_seq_number'] = line[2:5] - coda_statement['coda_seq_number'] = line[125:128] - + #Statement details + if statement['version'] == '1': + statement['accountNumber'] = rmspaces(line[5:17]) + statement['currency'] = rmspaces(line[18:21]) + elif statement['version'] == '2': + if line[1] == '0': # Belgian bank account BBAN structure + statement['accountNumber'] = rmspaces(line[5:17]) + statement['currency'] = rmspaces(line[18:21]) + elif line[1] == '1': # foreign bank account BBAN structure + raise osv.except_osv(_('Error R1001!'), _('Foreign bank accounts with BBAN structure are not supported !')) + elif line[1] == '2': # Belgian bank account IBAN structure + statement['accountNumber'] = rmspaces(line[5:21]) + statement['currency'] = rmspaces(line[39:42]) + elif line[1] == '3': # foreign bank account IBAN structure + raise osv.except_osv(_('Error R1002!'), _('Foreign bank accounts with IBAN structure are not supported !')) + else: # Something else, not supported + raise osv.except_osv(_('Error R1003!'), _('Unsupported bank account structure !')) + statement['description'] = rmspaces(line[90:125]) + statement['balance_start'] = float(rmspaces(line[43:58])) / 1000 + statement['balance_start_date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[58:64]), '%d%m%y')) + statement['accountHolder'] = rmspaces(line[64:90]) + statement['paperSeqNumber'] = rmspaces(line[2:5]) + statement['codaSeqNumber'] = rmspaces(line[125:128]) elif line[0] == '2': - # movement data record 2 - if line[1] == '1': - # movement data record 2.1 - st_line = {} - st_line_seq = st_line_seq + 1 - st_line['sequence'] = st_line_seq - st_line['type'] = 'general' - st_line['reconcile'] = False - st_line['trans_family'] = False - st_line['struct_comm_type'] = '' - st_line['struct_comm_type_id'] = 0 - st_line['struct_comm_type_desc'] = '' - st_line['struct_comm_bba'] = '' - st_line['communication'] = '' - st_line['payment_reference'] = '' - st_line['partner_id'] = 0 - st_line['account_id'] = 0 - st_line['counterparty_name'] = '' - st_line['counterparty_bic'] = '' - st_line['counterparty_number'] = '' - st_line['counterparty_currency'] = '' - st_line['glob_lvl_flag'] = False - st_line['globalisation_id'] = 0 - st_line['globalisation_code'] = '' - st_line['globalisation_amount'] = False - st_line['amount'] = False - - st_line['ref'] = line[2:10] - st_line['ref_move'] = line[2:6] - st_line['ref_move_detail'] = line[6:10] - - if st_line_seq == 1: - main_move_stack = [st_line] # initialise main_move_stack (used to link 2.1 detail records to 2.1 main record - glob_lvl_stack = [0] # initialise globalisation stack - elif st_line['ref_move_detail'] == '0000': - glob_lvl_stack = [0] # re-initialise globalisation stack - - st_line['trans_ref'] = line[10:31] - st_line_amt = list2float(line[32:47]) - if line[31] == '1': # 1=debit - st_line_amt = - st_line_amt - - st_line['trans_type'] = line[53] - trans_type = filter(lambda x: st_line['trans_type'] == x['type'], trans_type_table) - if not trans_type: - err_string = _('\nThe File contains an invalid CODA Transaction Type : %s!') % st_line['trans_type'] - err_code = 'R2001' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - st_line['trans_type_id'] = trans_type[0]['id'] - st_line['trans_type_desc'] = trans_type[0]['description'] - - # processing of amount depending on globalisation code - glob_lvl_flag = int(line[124]) - if glob_lvl_flag > 0: - if glob_lvl_stack[-1] == glob_lvl_flag: - st_line['glob_lvl_flag'] = glob_lvl_flag - st_line['amount'] = st_line_amt - glob_lvl_stack.pop() + #New statement line + statementLine = {} + statementLine['type'] = 'general' + statementLine['ref'] = rmspaces(line[2:10]) + statementLine['ref_move'] = rmspaces(line[2:6]) + statementLine['ref_move_detail'] = rmspaces(line[6:10]) + statementLine['sequence'] = len(statement['lines']) + 1 + statementLine['transactionRef'] = rmspaces(line[10:31]) + statementLine['debit'] = line[31] # 0 = Credit, 1 = Debit + statementLine['amount'] = float(rmspaces(line[32:47])) / 1000 + if statementLine['debit'] == '1': + statementLine['amount'] = - statementLine['amount'] + statementLine['transaction_type'] = line[53] + if statementLine['transaction_type'] not in transaction_types: + raise osv.except_osv(_('Error R2001!'), _('The File contains an invalid CODA Transaction Type : %s!') % statementLine['transaction_type']) + statementLine['transactionDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[47:53]), '%d%m%y')) + statementLine['transaction_family'] = rmspaces(line[54:56]) + #TODO Handling severals transactions Family + statementLine['transaction_code'] = rmspaces(line[56:58]) + #TODO Handling severals transactions code + statementLine['transaction_category'] = rmspaces(line[58:61]) + #TODO Handling severals transactions category + statementLine['communication'] = rmspaces(line[62:115]) + #TODO Handling structured communication + statementLine['entryDate'] = rmspaces(line[115:121]) + statementLine['type'] = 'normal' + statementLine['globalisation'] = int(line[124]) + if len(statement['globalisation_stack']) > 0 and statementLine['communication'] != '': + statementLine['communication'] = "\n".join([statement['globalisation_stack'][-1]['communication'], statementLine['communication']]) + if statementLine['globalisation'] > 0: + if len(statement['globalisation_stack']) > 0 and statement['globalisation_stack'][-1]['globalisation'] == statementLine['globalisation']: + # Destack + statement['globalisation_stack'].pop() else: - glob_lvl_stack.append(glob_lvl_flag) - st_line['type'] = 'globalisation' - st_line['glob_lvl_flag'] = glob_lvl_flag - st_line['globalisation_amount'] = st_line_amt - else: - st_line['amount'] = st_line_amt - - # The 'globalisation' concept can also be implemented without the globalisation level flag. - # This is e.g. used by Europabank to give the details of Card Payments. - if st_line['ref_move'] == main_move_stack[-1]['ref_move']: - if st_line['ref_move_detail'] == '9999': - # Current CODA parsing logic doesn't support > 9999 detail lines - err_string = _('\nTransaction Detail Limit reached!') - err_code = 'R2010' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - elif st_line['ref_move_detail'] != '0000': - if glob_lvl_stack[-1] == 0: - # promote associated move record into a globalisation - glob_lvl_flag = 1 - glob_lvl_stack.append(glob_lvl_flag) - main_st_line_seq = main_move_stack[-1]['sequence'] - to_promote = coda_statement['coda_statement_lines'][main_st_line_seq] - if not main_move_stack[-1].get('detail_cnt'): - to_promote.update({ - 'type': 'globalisation', - 'glob_lvl_flag': glob_lvl_flag, - 'globalisation_amount': main_move_stack[-1]['amount'], - 'amount': False, - 'account_id': 0, - }) - main_move_stack[-1]['promoted'] = True - if not main_move_stack[-1].get('detail_cnt'): - main_move_stack[-1]['detail_cnt'] = 1 - else: - main_move_stack[-1]['detail_cnt'] += 1 - - # positions 48-53 : Valuta date or 000000 if not known (DDMMYY) - st_line['val_date'] = str2date(line[47:53]) - # positions 54-61 : transaction code - st_line['trans_family'] = line[54:56] - trans_family = filter(lambda x: (x['type'] == 'family') and (st_line['trans_family'] == x['code']), trans_code_table) - if not trans_family: - err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] - err_code = 'R2002' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - st_line['trans_family_id'] = trans_family[0]['id'] - st_line['trans_family_desc'] = trans_family[0]['description'] - st_line['trans_code'] = line[56:58] - trans_code = filter(lambda x: (x['type'] == 'code') and (st_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), - trans_code_table) - if trans_code: - st_line['trans_code_id'] = trans_code[0]['id'] - st_line['trans_code_desc'] = trans_code[0]['description'] - else: - st_line['trans_code_id'] = None - st_line['trans_code_desc'] = _('Transaction Code unknown, please consult your bank.') - st_line['trans_category'] = line[58:61] - trans_category = filter(lambda x: st_line['trans_category'] == x['category'], trans_category_table) - if trans_category: - st_line['trans_category_id'] = trans_category[0]['id'] - st_line['trans_category_desc'] = trans_category[0]['description'] - else: - st_line['trans_category_id'] = None - st_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') - # positions 61-115 : communication - if line[61] == '1': - st_line['struct_comm_type'] = line[62:65] - comm_type = filter(lambda x: st_line['struct_comm_type'] == x['code'], comm_type_table) - if not comm_type: - err_string = _('\nThe File contains an invalid Structured Communication Type : %s!') % st_line['struct_comm_type'] - err_code = 'R2003' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - st_line['struct_comm_type_id'] = comm_type[0]['id'] - st_line['struct_comm_type_desc'] = comm_type[0]['description'] - st_line['communication'] = st_line['name'] = line[65:115] - if st_line['struct_comm_type'] in ['101', '102']: - bbacomm = line[65:77] - st_line['struct_comm_bba'] = st_line['name'] = '+++' + bbacomm[0:3] + '/' + bbacomm[3:7] + '/' + bbacomm[7:] + '+++' - else: - st_line['communication'] = st_line['name'] = line[62:115] - st_line['entry_date'] = str2date(line[115:121]) - if st_line['sequence'] == 1: - coda_statement['first_transaction_date'] = st_line['entry_date'] - # positions 122-124 not processed - coda_statement_lines[st_line_seq] = st_line # store transaction - - if st_line['ref_move'] != main_move_stack[-1]['ref_move']: - if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): - # add closing globalisation level on previous detail record in order to correctly close - # moves that have been 'promoted' to globalisation - closeglobalise = coda_statement['coda_statement_lines'][st_line_seq - 1] - closeglobalise.update({ - 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], - }) - else: - # demote record with globalisation code from 'globalisation' to 'general' when no detail records - # the same logic is repeated on the New Balance Record ('8 Record') in order to cope with CODA files - # containing a single 2.1 record that needs to be 'demoted'. - if main_move_stack[-1]['type'] == 'globalisation' and not main_move_stack[-1].get('detail_cnt'): - # demote record with globalisation code from 'globalisation' to 'general' when no detail records - main_st_line_seq = main_move_stack[-1]['sequence'] - to_demote = coda_statement['coda_statement_lines'][main_st_line_seq] - to_demote.update({ - 'type': 'general', - 'glob_lvl_flag': 0, - 'globalisation_amount': False, - 'amount': main_move_stack[-1]['globalisation_amount'], - }) - main_move_stack.pop() - main_move_stack.append(st_line) - coda_statement['coda_statement_lines'] = coda_statement_lines - + #Stack + statementLine['type'] = 'globalisation' + statement['globalisation_stack'].append(statementLine) + statement['lines'].append(statementLine) elif line[1] == '2': - # movement data record 2.2 - if coda_statement['coda_statement_lines'][st_line_seq]['ref'][0:4] != line[2:6]: - err_string = _('\nCODA parsing error on movement data record 2.2, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] - err_code = 'R2004' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:63] - coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:63] - coda_statement['coda_statement_lines'][st_line_seq]['payment_reference'] = line[63:98].strip() - coda_statement['coda_statement_lines'][st_line_seq]['counterparty_bic'] = line[98:109].strip() - + if statement['lines'][-1]['ref'][0:4] != line[2:6]: + raise osv.except_osv(_('Error R2004!'), _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + statement['lines'][-1]['communication'] += rmspaces(line[10:63]) + statement['lines'][-1]['payment_reference'] = rmspaces(line[63:98]) + statement['lines'][-1]['counterparty_bic'] = rmspaces(line[98:109]) elif line[1] == '3': - # movement data record 2.3 - if coda_statement['coda_statement_lines'][st_line_seq]['ref'][0:4] != line[2:6]: - err_string = _('\nCODA parsing error on movement data record 2.3, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] - err_code = 'R2005' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - st_line = coda_statement_lines[st_line_seq] - if coda_version == '1': - counterparty_number = line[10:22].strip() - counterparty_name = line[47:125].strip() - counterparty_currency = '' + if statement['lines'][-1]['ref'][0:4] != line[2:6]: + raise osv.except_osv(_('Error R2005!'), _('CODA parsing error on movement data record 2.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + if statement['version'] == '1': + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) + statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:125]) + statement['lines'][-1]['counterpartyCurrency'] = '' else: if line[22] == ' ': - counterparty_number = line[10:22].strip() - counterparty_currency = line[23:26].strip() + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) + statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[23:26]) else: - counterparty_number = line[10:44].strip() - counterparty_currency = line[44:47].strip() - counterparty_name = line[47:82].strip() - st_line['name'] += line[82:125] - st_line['communication'] += line[82:125] - st_line['counterparty_number'] = counterparty_number - st_line['counterparty_currency'] = counterparty_currency - st_line['counterparty_name'] = counterparty_name - """ - TO DO: - - replace code infra by check on flag 128 and copy info in Notes Field. - - if counterparty_currency not in [coda_bank['currency_name'], '']: - err_string = _('\nCODA parsing error on movement data record 2.3, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] - err_code = 'R2006' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - """ - - # invoice matching and reconciliation - if st_line['type'] == 'general': - match = False - payment_reference_match = False - inv_ids = None - partner_bank_ids = False - - # check payment reference in bank statement line against payment order lines - payment_reference = st_line['payment_reference'] - if payment_reference and find_payment and st_line['amount'] < 0: - payline_ids = payment_line_obj and payment_line_obj.search(cr, uid, [('name', '=', payment_reference)]) - if payline_ids: - if len(payline_ids) == 1: - payline = payment_line_obj.browse(cr, uid, payline_ids[0]) - match = True - payment_reference_match = True - st_line['partner_id'] = payline.partner_id.id - if payline.move_line_id: - st_line['reconcile'] = payline.move_line_id.id - st_line['account_id'] = payline.move_line_id.account_id.id - if payline._get_ml_inv_ref: - inv_type = payline.ml_inv_ref.type - st_line['type'] = inv_type == 'in_invoice' and 'supplier' or 'customer' - else: - st_line['type'] = 'general' - else: - err_string = _('\nThe CODA parsing detected a payment reference ambiguity while processing movement data record 2.3, seq nr %s!' \ - '\nPlease check your Payment Gateway configuration or contact your OpenERP support channel.') % line[2:10] - err_code = 'R2007' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - - # check bba scor in bank statement line against open invoices - if st_line['struct_comm_bba'] and find_bbacom: - if st_line['amount'] > 0: - domain = [('type', 'in', ['out_invoice', 'in_refund'])] - else: - domain = [('type', 'in', ['in_invoice', 'out_refund'])] - inv_ids = inv_obj.search(cr, uid, - domain + [('state', '=', 'open'), ('reference', '=', st_line['struct_comm_bba']), ('reference_type', '=', 'bba')]) - if not inv_ids: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ - "\n There is no invoice matching the Structured Communication '%s'!" \ - "\n Please verify and adjust the invoice and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ - % (st_line['ref'], st_line['struct_comm_bba']) - elif len(inv_ids) == 1: - match = True - elif len(inv_ids) > 1: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ - "\n There are multiple invoices matching the Structured Communication '%s'!" \ - "\n A manual reconciliation is required.") \ - % (st_line['ref'], st_line['struct_comm_bba']) - - # use free comm in bank statement line for lookup against open invoices - if not match and find_bbacom: - # extract possible bba scor from free form communication and try to find matching invoice - free_comm_digits = re.sub('\D', '', st_line['communication'] or '') - select = "SELECT id FROM (SELECT id, type, state, amount_total, number, reference_type, reference, " \ - "'%s'::text AS free_comm_digits FROM account_invoice) sq " \ - "WHERE state = 'open' AND reference_type = 'bba' " \ - "AND free_comm_digits LIKE '%%'||regexp_replace(reference, '\\\D', '', 'g')||'%%'" \ - % (free_comm_digits) - if st_line['amount'] > 0: - select2 = " AND type IN ('out_invoice', 'in_refund')" - else: - select2 = " AND type IN ('in_invoice', 'out_refund')" - cr.execute(select + select2) - res = cr.fetchall() - if res: - inv_ids = [x[0] for x in res] - if len(inv_ids) == 1: - match = True - if not match and st_line['communication'] and find_inv_number: - # check matching invoice number in free form communication combined with matching amount - free_comm = repl_special(st_line['communication'].strip()) - amount_fmt = '%.' + str(digits) + 'f' - if st_line['amount'] > 0: - amount_rounded = amount_fmt % round(st_line['amount'], digits) - else: - amount_rounded = amount_fmt % round(-st_line['amount'], digits) - select = "SELECT id FROM (SELECT id, type, state, amount_total, number, reference_type, reference, " \ - "'%s'::text AS free_comm FROM account_invoice) sq " \ - "WHERE state = 'open' AND amount_total = %s" \ - % (free_comm, amount_rounded) - # 'out_invoice', 'in_refund' - if st_line['amount'] > 0: - select2 = " AND type = 'out_invoice' AND free_comm ilike '%'||number||'%'" - cr.execute(select + select2) - res = cr.fetchall() - if res: - inv_ids = [x[0] for x in res] - else: - select2 = " AND type = 'in_refund' AND free_comm ilike '%'||reference||'%'" - cr.execute(select + select2) - res = cr.fetchall() - if res: - inv_ids = [x[0] for x in res] - # 'in_invoice', 'out_refund' - else: - select2 = " AND type = 'in_invoice' AND free_comm ilike '%'||reference||'%'" - cr.execute(select + select2) - res = cr.fetchall() - if res: - inv_ids = [x[0] for x in res] - else: - select2 = " AND type = 'out_refund' AND free_comm ilike '%'||number||'%'" - cr.execute(select + select2) - res = cr.fetchall() - if res: - inv_ids = [x[0] for x in res] - if inv_ids: - if len(inv_ids) == 1: - match = True - elif len(inv_ids) > 1: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ - "\n There are multiple invoices matching the Invoice Amount and Reference." \ - "\n A manual reconciliation is required.") \ - % (st_line['ref']) - - if not payment_reference_match and match and inv_ids and len(inv_ids) == 1: - invoice = inv_obj.browse(cr, uid, inv_ids[0]) - partner = invoice.partner_id - st_line['partner_id'] = partner.id - if invoice.type in ['in_invoice', 'in_refund']: - st_line['account_id'] = partner.property_account_payable.id - st_line['type'] = 'supplier' - else: - st_line['account_id'] = partner.property_account_receivable.id - st_line['type'] = 'customer' - iml_ids = move_line_obj.search(cr, uid, [('move_id', '=', invoice.move_id.id), ('reconcile_id', '=', False), ('account_id.reconcile', '=', True)]) - if iml_ids: - st_line['reconcile'] = iml_ids[0] - else: - err_string = _('\nThe CODA parsing detected a database inconsistency while processing movement data record 2.3, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] - err_code = 'R2008' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - - # lookup partner via counterparty_number when invoice lookup failed - if not match and counterparty_number: - transfer_account = filter(lambda x: counterparty_number in x, company_bank_accounts) - if transfer_account: - st_line['account_id'] = transfer_acc - match = True - elif find_partner: - partner_bank_ids = partner_bank_obj.search(cr, uid, [('acc_number', '=', counterparty_number)]) - if not match and find_partner and partner_bank_ids: - if len(partner_bank_ids) > 1: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ - "\n No partner record assigned: There are multiple partners with the same Bank Account Number '%s'!" \ - "\n Please correct the configuration and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ - % (st_line['ref'], counterparty_number) - else: - partner_bank = partner_bank_obj.browse(cr, uid, partner_bank_ids[0], context) - st_line['partner_id'] = partner_bank.partner_id.id - match = True - if st_line['amount'] < 0: - st_line['account_id'] = partner_bank.partner_id.property_account_payable.id - st_line['type'] = 'supplier' - else: - st_line['account_id'] = partner_bank.partner_id.property_account_receivable.id - st_line['type'] = 'customer' - elif not match and find_partner: - if counterparty_number: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ - "\n The bank account '%s' is not defined for the partner '%s'!" \ - "\n Please correct the configuration and perform the import again or otherwise change the corresponding entry manually in the generated Bank Statement.") \ - % (st_line['ref'], counterparty_number, counterparty_name) - else: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':" \ - "\n No matching partner record found!" \ - "\n Please adjust the corresponding entry manually in the generated Bank Statement.") \ - % (st_line['ref']) - st_line['account_id'] = awaiting_acc - - # add bank account to partner record - if match and st_line['account_id'] != transfer_acc and counterparty_number and update_partner: - partner_bank_ids = partner_bank_obj.search(cr, uid, [('acc_number', '=', counterparty_number), ('partner_id', '=', st_line['partner_id'])], order='id') - if len(partner_bank_ids) > 1: - # clean up partner bank duplicates, keep most recently created - _logger.warn('Duplicate Bank Accounts for partner_id %s have been removed, ids = %s', - st_line['partner_id'], partner_bank_ids[:-1]) - partner_bank_obj.unlink(cr, uid, partner_bank_ids[:-1]) - if not partner_bank_ids: - feedback = update_partner_bank(self, cr, uid, st_line['counterparty_bic'], counterparty_number, st_line['partner_id'], counterparty_name) - if feedback: - coda_parsing_note += _("\n Bank Statement '%%(name)s' line '%s':") % st_line['ref'] + feedback - - coda_statement_lines[st_line_seq] = st_line - coda_statement['coda_statement_lines'] = coda_statement_lines - # end of processing movement data record 2.3 - + statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:44]) + statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[44:47]) + statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:82]) + statement['lines'][-1]['communication'] += rmspaces(line[82:125]) else: - # movement data record 2.x (x <> 1,2,3) - err_string = _('\nMovement data records of type 2.%s are not supported !') % line[1] - err_code = 'R2009' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - + # movement data record 2.x (x != 1,2,3) + raise osv.except_osv(_('Error R2009!'), _('\nMovement data records of type 2.%s are not supported !') % line[1]) elif line[0] == '3': - # information data record 3 - if line[1] == '1': - # information data record 3.1 - info_line = {} - info_line['entry_date'] = st_line['entry_date'] - info_line['type'] = 'information' - st_line_seq = st_line_seq + 1 - info_line['sequence'] = st_line_seq - info_line['struct_comm_type'] = '' - info_line['struct_comm_type_desc'] = '' - info_line['communication'] = '' - info_line['ref'] = line[2:10] - info_line['trans_ref'] = line[10:31] - # positions 32-38 : transaction code - info_line['trans_type'] = line[31] - trans_type = filter(lambda x: info_line['trans_type'] == x['type'], trans_type_table) - if not trans_type: - err_string = _('\nThe File contains an invalid CODA Transaction Type : %s!') % st_line['trans_type'] - err_code = 'R3001' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - info_line['trans_type_desc'] = trans_type[0]['description'] - info_line['trans_family'] = line[32:34] - trans_family = filter(lambda x: (x['type'] == 'family') and (info_line['trans_family'] == x['code']), trans_code_table) - if not trans_family: - err_string = _('\nThe File contains an invalid CODA Transaction Family : %s!') % st_line['trans_family'] - err_code = 'R3002' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - info_line['trans_family_desc'] = trans_family[0]['description'] - info_line['trans_code'] = line[34:36] - trans_code = filter(lambda x: (x['type'] == 'code') and (info_line['trans_code'] == x['code']) and (trans_family[0]['id'] == x['parent_id'][0]), - trans_code_table) - if trans_code: - info_line['trans_code_desc'] = trans_code[0]['description'] - else: - info_line['trans_code_desc'] = _('Transaction Code unknown, please consult your bank.') - info_line['trans_category'] = line[36:39] - trans_category = filter(lambda x: info_line['trans_category'] == x['category'], trans_category_table) - if trans_category: - info_line['trans_category_desc'] = trans_category[0]['description'] - else: - info_line['trans_category_desc'] = _('Transaction Category unknown, please consult your bank.') - # positions 40-113 : communication - if line[39] == '1': - info_line['struct_comm_type'] = line[40:43] - comm_type = filter(lambda x: info_line['struct_comm_type'] == x['code'], comm_type_table) - if not comm_type: - err_string = _('\nThe File contains an invalid Structured Communication Type : %s!') % info_line['struct_comm_type'] - err_code = 'R3003' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - info_line['struct_comm_type_desc'] = comm_type[0]['description'] - info_line['communication'] = info_line['name'] = line[43:113] - else: - info_line['communication'] = info_line['name'] = line[40:113] - # positions 114-128 not processed - coda_statement_lines[st_line_seq] = info_line - coda_statement['coda_statement_lines'] = coda_statement_lines - + infoLine = {} + infoLine['entryDate'] = statement['lines'][-1]['entryDate'] + infoLine['type'] = 'information' + infoLine['sequence'] = len(statement['lines']) + 1 + infoLine['ref'] = rmspaces(line[2:10]) + infoLine['transactionRef'] = rmspaces(line[10:31]) + infoLine['transaction_type'] = line[31] + infoLine['transaction_family'] = rmspaces(line[32:34]) + infoLine['transaction_code'] = rmspaces(line[34:36]) + infoLine['transaction_category'] = rmspaces(line[36:39]) + infoLine['communication'] = rmspaces(line[40:113]) + infoLine['amount'] = 0.0 + infoLine['type'] = 'information' + statement['lines'].append(infoLine) elif line[1] == '2': - # information data record 3.2 - if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: - err_string = _('\nCODA parsing error on information data record 3.2, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] - err_code = 'R3004' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:115] - coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:115] - + if infoLine['ref'] != rmspaces(line[2:10]): + raise osv.except_osv(_('Error R3004!'), _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + statement['lines'][-1]['communication'] += rmspaces(line[10:100]) elif line[1] == '3': - # information data record 3.3 - if coda_statement['coda_statement_lines'][st_line_seq]['ref'] != line[2:10]: - err_string = _('\nCODA parsing error on information data record 3.3, seq nr %s!' \ - '\nPlease report this issue via your OpenERP support channel.') % line[2:10] - err_code = 'R3005' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Error!'), err_string) - coda_statement['coda_statement_lines'][st_line_seq]['name'] += line[10:100] - coda_statement['coda_statement_lines'][st_line_seq]['communication'] += line[10:100] - + if infoLine['ref'] != rmspaces(line[2:10]): + raise osv.except_osv(_('Error R3005!'), _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + statement['lines'][-1]['communication'] += rmspaces(line[10:100]) elif line[0] == '4': - # free communication data record 4 - comm_line = {} - comm_line['type'] = 'communication' - st_line_seq = st_line_seq + 1 - comm_line['sequence'] = st_line_seq - comm_line['ref'] = line[2:10] - comm_line['communication'] = comm_line['name'] = line[32:112] - coda_statement_lines[st_line_seq] = comm_line - coda_statement['coda_statement_lines'] = coda_statement_lines - + comm_line = {} + comm_line['type'] = 'communication' + comm_line['sequence'] = len(statement['lines']) + 1 + comm_line['ref'] = rmspaces(line[2:10]) + comm_line['communication'] = rmspaces(line[32:112]) + comm_line['amount'] = 0.0 + comm_line['type'] = 'communication' + statement['lines'].append(comm_line) elif line[0] == '8': # new balance record - last_transaction = main_move_stack[-1] - if last_transaction['type'] == 'globalisation' and not last_transaction.get('detail_cnt'): - # demote record with globalisation code from 'globalisation' to 'general' when no detail records - main_st_line_seq = main_move_stack[-1]['sequence'] - to_demote = coda_statement['coda_statement_lines'][main_st_line_seq] - to_demote.update({ - 'type': 'general', - 'glob_lvl_flag': 0, - 'globalisation_amount': False, - 'amount': main_move_stack[-1]['globalisation_amount'], - }) - # add closing globalisation level on previous detail record in order to correctly close - # moves that have been 'promoted' to globalisation - if main_move_stack[-1].get('detail_cnt') and main_move_stack[-1].get('promoted'): - closeglobalise = coda_statement['coda_statement_lines'][st_line_seq - 1] - closeglobalise.update({ - 'glob_lvl_flag': main_move_stack[-1]['glob_lvl_flag'], - }) - coda_statement['paper_nb_seq_number'] = line[1:4] - bal_end = list2float(line[42:57]) - coda_statement['new_balance_date'] = str2date(line[57:63]) - if line[41] == '1': # 1=Debit - bal_end = - bal_end - coda_statement['balance_end_real'] = bal_end - if coda_statement['new_balance_date']: - period_id = period_obj.search(cr, uid, [('date_start', '<=', coda_statement['new_balance_date']), ('date_stop', '>=', coda_statement['new_balance_date'])]) + statement['debit'] = line[41] + statement['paperSeqNumber'] = rmspaces(line[1:4]) + statement['balance_end_real'] = float(rmspaces(line[42:57])) / 1000 + statement['balance_end_realDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[57:63]), '%d%m%y')) + if statement['debit'] == '1': # 1=Debit + statement['balance_end_real'] = - statement['balance_end_real'] + if statement['balance_end_realDate']: + period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['balance_end_realDate']), ('date_stop', '>=', statement['balance_end_realDate'])]) else: - period_id = period_obj.search(cr, uid, [('date_start', '<=', coda_statement['date']), ('date_stop', '>=', coda_statement['date'])]) - if not period_id: - err_string = _("\nThe CODA Statement New Balance date doesn't fall within a defined Accounting Period!" \ - "\nPlease create the Accounting Period for date %s.") % coda_statement['new_balance_date'] - err_code = 'R0002' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('Data Error!'), err_string) - coda_statement['period_id'] = period_id[0] - if coda_bank['coda_st_naming']: - coda_statement['name'] = coda_bank['coda_st_naming'] % { - 'code': coda_bank['journal_code'] or '', - 'year': coda_statement['new_balance_date'] and coda_statement['new_balance_date'][:4] or coda_statement['date'][:4], - 'y': coda_statement['new_balance_date'] and coda_statement['new_balance_date'][2:4] or coda_statement['date'][2:4], - 'coda': coda_statement['coda_seq_number'], - 'paper_ob': coda_statement['paper_ob_seq_number'], - 'paper': coda_statement['paper_nb_seq_number'], - } - else: - coda_statement['name'] = '/' - + period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['date']), ('date_stop', '>=', statement['date'])]) + if not period_id and len(period_id) == 0: + raise osv.except_osv(_('Error R0002!'), _("The CODA Statement New Balance date doesn't fall within a defined Accounting Period! Please create the Accounting Period for date %s.") % statement['balance_end_realDate']) + statement['period_id'] = period_id[0] elif line[0] == '9': - # footer record - coda_statement['balance_min'] = list2float(line[22:37]) - coda_statement['balance_plus'] = list2float(line[37:52]) - if not bal_end: - coda_statement['balance_end_real'] = coda_statement['balance_start'] + coda_statement['balance_plus'] - coda_statement['balance_min'] - if coda_parsing_note: - coda_statement['coda_parsing_note'] = '\nStatement Line matching results:' + coda_parsing_note - else: - coda_statement['coda_parsing_note'] = '' - coda_statements.append(coda_statement) - #end for + statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000 + statement['balancePlus'] = float(rmspaces(line[37:52])) / 1000 + if not statement['balance_end_real']: + statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin'] + for i, statement in enumerate(statements): + # print '---STATEMENT #' + str(i) + '---' + print statement + data = { + 'name': '[' + statement['date'] + ']' + statement['description'], + 'date': statement['date'], + 'journal_id': 18, + 'period_id': statement['period_id'], + 'balance_start': statement['balance_start'], + 'balance_end_real': statement['balance_end_real'], + 'account_id': 1 + } + statement['id'] = self.pool.get('account.bank.statement').create(cr, uid, data, context=context) + for line in statement['lines']: + if line['type'] == 'normal': + counterparty = [] + if 'counterpartyName' in line: + counterparty.append(line['counterpartyName']) + if 'counterpartyNumber' in line: + counterparty.append(line['counterpartyNumber']) + if len(counterparty) > 0: + counterparty = '[' + ' / '.join(counterparty) + ']' + else: + counterparty = '/' + if line['transaction_type'] in transaction_types: + line['transaction_type'] = transaction_types[line['transaction_type']][1] + if line['transaction_category'] in transaction_categories: + line['transaction_category'] = transaction_categories[line['transaction_category']] + if line['transaction_family'] in transaction_codes: + transaction_family = transaction_codes[line['transaction_family']] + line['transaction_family'] = transaction_family[0] + if line['transaction_code'] in transaction_family[1]: + line['transaction_code'] = transaction_family[1][line['transaction_code']] + note = [] + note.append(_('Counter Party') + ': ' + counterparty) + note.append(_('Communication') + ': ' + line['communication']) + note.append(_('Transaction type') + ': ' + line['transaction_type']) + note.append(_('Transaction family') + ': ' + line['transaction_family']) + note.append(_('Transaction code') + ': ' + line['transaction_code']) + note.append(_('Transaction category') + ': ' + line['transaction_category']) - err_string = '' - err_code = '' - coda_id = 0 - coda_note = '' - line_note = '' - - try: - coda_id = coda_obj.create(cr, uid, { - 'name': codafilename, - 'coda_data': codafile, - 'coda_creation_date': coda_statement['date'], - 'date': fields.date.context_today(self, cr, uid, context=context), - 'user_id': uid, - }) - context.update({'coda_id': coda_id}) - - except osv.except_osv, e: - cr.rollback() - err_string = _('\nApplication Error : ') + str(e) - except Exception, e: - cr.rollback() - err_string = _('\nSystem Error : ') + str(e) - except: - cr.rollback() - err_string = _('\nUnknown Error : ') + str(e) - if err_string: - err_code = 'G0001' - if batch: - return (err_code, err_string) - raise osv.except_osv(_('CODA Import failed !'), err_string) - - nb_err = 0 - err_string = '' - coda_st_ids = [] - bk_st_ids = [] - - for statement in coda_statements: - - # The CODA Statement info is written to two objects: 'coda.bank.statement' and 'account.bank.statement' - - try: - normal2info = False - lines = statement['coda_statement_lines'] - if not statement['first_transaction_date']: - normal2info = True # don't create a bank statement for CODA's without transactions - else: - line_vals = [x for x in lines.itervalues()] - transactions = filter(lambda x: (x['type'] in ['globalisation', 'general', 'supplier', 'customer']) and x['amount'], line_vals) - if not transactions: - normal2info = True # don't create a bank statement for CODA's without transactions - if normal2info: - statement['type'] = 'info' # don't create a bank statement for CODA's without transactions - statement['coda_parsing_note'] += _("\n\nThe CODA Statement %s does not contain transactions, hence no Bank Statement has been created." \ - "\nSelect the 'CODA Bank Statement' to check the contents of %s.") \ - % (statement['name'], statement['name']) - - coda_st_id = coda_st_obj.create(cr, uid, { - 'name': statement['name'], - 'type': statement['type'], - 'coda_bank_account_id': statement['coda_bank_account_id'], - 'currency': statement['currency_id'], - 'journal_id': statement['journal_id'], - 'coda_id': coda_id, - 'date': statement['date'], - 'coda_creation_date': statement['coda_creation_date'], - 'period_id': statement['period_id'], - 'old_balance_date': statement['old_balance_date'], - 'new_balance_date': statement['new_balance_date'], - 'balance_start': statement['balance_start'], - 'balance_end_real': statement['balance_end_real'], - }) - coda_st_ids.append(coda_st_id) - - # check duplicates for CODA's of type 'normal' - discard = False - if statement['type'] == 'normal' and statement['discard_dup']: - dup_ids = bank_st_obj.search(cr, uid, [('name', '=', statement['name']), ('company_id', '=', company_id)]) - if dup_ids: - discard = True - statement['type'] = 'info' # don't create a bank statement for duplicates - statement['coda_parsing_note'] += _("\n\nThe Bank Statement %s already exists, hence no duplicate Bank Statement has been created." \ - "\nSelect the 'CODA Bank Statement' to check the contents of %s.") \ - % (statement['name'], statement['name']) - - # create only bank statement for CODA's of type 'normal' - if statement['type'] == 'normal' and not discard: - context.update({'ebanking_import': 1}) - journal = journal_obj.browse(cr, uid, statement['journal_id'], context=context) - balance_start_check_date = statement['first_transaction_date'] or statement['date'] - cr.execute('SELECT balance_end_real \ - FROM account_bank_statement \ - WHERE journal_id = %s and date <= %s \ - ORDER BY date DESC,id DESC LIMIT 1', (statement['journal_id'], balance_start_check_date)) - res = cr.fetchone() - balance_start_check = res and res[0] - if balance_start_check == None: - if journal.default_debit_account_id and (journal.default_credit_account_id == journal.default_debit_account_id): - balance_start_check = journal.default_debit_account_id.balance + try: + if 'counterpartyNumber' in line and int(line['counterpartyNumber']) == 0: + line['counterpartyNumber'] = False + except: + pass + if 'counterpartyNumber' in line and line['counterpartyNumber']: + ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) + if ids and len(ids) > 0: + partner_id = self.pool.get('res.partner.bank').browse(cr, uid, ids[0],context=context).partner_id.id else: - nb_err += 1 - err_string += _('\nConfiguration Error in journal %s!' \ - '\nPlease verify the Default Debit and Credit Account settings.') % journal.name - break - if balance_start_check != statement['balance_start']: - balance_start_err_string = _('\nThe CODA Statement %s Starting Balance (%.2f) does not correspond with the previous Closing Balance (%.2f) in journal %s!') \ - % (statement['name'], statement['balance_start'], balance_start_check, journal.name) - if statement['balance_start_enforce']: - nb_err += 1 - err_string += balance_start_err_string - break - else: - statement['coda_parsing_note'] += '\n' + balance_start_err_string + partner_id = None - st_vals = { - 'name': statement['name'], - 'journal_id': statement['journal_id'], - 'coda_statement_id': coda_st_id, - 'date': statement['new_balance_date'], - 'period_id': statement['period_id'], - 'balance_start': statement['balance_start'], - 'balance_end_real': statement['balance_end_real'], - 'state': 'draft', + data = { + 'name': line['communication'], + 'note': "\n".join(note), + 'date': line['entryDate'], + 'amount': line['amount'], + # 'type': '', + 'partner_id': partner_id, + 'account_id': 1, + 'statement_id': statement['id'], + # 'analytic_account_id': '', + # 'move_ids': '', + 'ref': line['ref'], + 'sequence': line['sequence'], } - st_hook_error, st_vals = self._statement_hook(cr, uid, statement['coda_bank_params'], st_vals, context=context) - if st_hook_error: - nb_err += 1 - err_string += st_hook_error - break - bk_st_id = bank_st_obj.create(cr, uid, st_vals, context=context) - bk_st_ids.append(bk_st_id) - coda_st_obj.write(cr, uid, [coda_st_id], {'statement_id': bk_st_id}, context=context) - - st_line_seq = 0 - - for x in lines: - line = lines[x] - - if not line['type'] == 'communication': - if line['trans_family'] in st_line_name_families: - line['name'] = get_st_line_name(line, context) - if line['type'] == 'information': - if line['struct_comm_type'] in parse_comms_info: - line['name'], line['communication'] = parse_comm_info(self, cr, uid, line, comm_type_table, context) - elif line['struct_comm_type'] in parse_comms_move: - line['name'], line['communication'] = parse_comm_move(self, cr, uid, line, comm_type_table, context) - elif line['struct_comm_type'] in parse_comms_move: - line['name'], line['communication'] = parse_comm_move(self, cr, uid, line, comm_type_table, context) - - # handling non-transactional records : line['type'] in ['information', 'communication'] - - if line['type'] == 'information': - - - #Check if this line can be deleted. glob_id_stack marked as undefined here - line['globalisation_id'] = glob_id_stack[-1][2] - line_note = _('Transaction Type' ': %s - %s' \ - '\nTransaction Family: %s - %s' \ - '\nTransaction Code: %s - %s' \ - '\nTransaction Category: %s - %s' \ - '\nStructured Communication Type: %s - %s' \ - '\nCommunication: %s') \ - % (line['trans_type'], line['trans_type_desc'], - line['trans_family'], line['trans_family_desc'], - line['trans_code'], line['trans_code_desc'], - line['trans_category'], line['trans_category_desc'], - line['struct_comm_type'], line['struct_comm_type_desc'], - line['communication']) - - coda_st_line_obj.create(cr, uid, { - 'sequence': line['sequence'], - 'ref': line['ref'], - 'name': line['name'].strip() or '/', - 'type': 'information', - 'date': line['entry_date'], - 'statement_id': coda_st_id, - 'note': line_note, - }) - - elif line['type'] == 'communication': - - line_note = _('Free Communication:\n %s') \ - % (line['communication']) - - coda_st_line_obj.create(cr, uid, { - 'sequence': line['sequence'], - 'ref': line['ref'], - 'name': line['name'].strip() or '/', - 'type': 'communication', - 'date': statement['date'], - 'statement_id': coda_st_id, - 'note': line_note, - }) - - # handling transactional records, # line['type'] in ['globalisation', 'general', 'supplier', 'customer'] - - else: - - if line['ref_move_detail'] == '0000': - glob_id_stack = [(0, '', 0, '')] # initialise stack with tuples (glob_lvl_flag, glob_code, glob_id, glob_name) - - glob_lvl_flag = line['glob_lvl_flag'] - if glob_lvl_flag: - if glob_id_stack[-1][0] == glob_lvl_flag: - line['globalisation_id'] = glob_id_stack[-1][2] - glob_id_stack.pop() - else: - glob_name = line['name'].strip() or '/' - glob_code = seq_obj.get(cr, uid, 'statement.line.global') - glob_id = glob_obj.create(cr, uid, { - 'code': glob_code, - 'name': glob_name, - 'type': 'coda', - 'parent_id': glob_id_stack[-1][2], - 'amount': line['globalisation_amount'], - }) - line['globalisation_id'] = glob_id - glob_id_stack.append((glob_lvl_flag, glob_code, glob_id, glob_name)) - - line_note = _('Partner Name: %s \nPartner Account Number: %s' \ - '\nTransaction Type: %s - %s' \ - '\nTransaction Family: %s - %s' \ - '\nTransaction Code: %s - %s' \ - '\nTransaction Category: %s - %s' \ - '\nStructured Communication Type: %s - %s' \ - '\nPayment Reference: %s' \ - '\nCommunication: %s') \ - % (line['counterparty_name'], line['counterparty_number'], - line['trans_type'], line['trans_type_desc'], - line['trans_family'], line['trans_family_desc'], - line['trans_code'], line['trans_code_desc'], - line['trans_category'], line['trans_category_desc'], - line['struct_comm_type'], line['struct_comm_type_desc'], - line['payment_reference'], - line['communication']) - - if line['type'] == 'globalisation': - - coda_st_line_obj.create(cr, uid, { - 'sequence': line['sequence'], - 'ref': line['ref'], - 'name': line['name'].strip() or '/', - 'type': 'globalisation', - 'val_date': line['val_date'], - 'date': line['entry_date'], - 'globalisation_level': line['glob_lvl_flag'], - 'globalisation_amount': line['globalisation_amount'], - 'globalisation_id': line['globalisation_id'], - 'partner_id': line['partner_id'] or 0, - 'account_id': line['account_id'], - 'payment_reference': line['payment_reference'], - 'statement_id': coda_st_id, - 'note': line_note, - }) - - else: # line['type'] in ['general', 'supplier', 'customer'] - - if glob_lvl_flag == 0: - line['globalisation_id'] = glob_id_stack[-1][2] - if not line['account_id']: - line['account_id'] = awaiting_acc - - coda_st_line_obj.create(cr, uid, { - 'sequence': line['sequence'], - 'ref': line['ref'], - 'name': line['name'].strip() or '/', - 'type': line['type'], - 'val_date': line['val_date'], - 'date': line['entry_date'], - 'amount': line['amount'], - 'partner_id': line['partner_id'] or 0, - 'counterparty_name': line['counterparty_name'], - 'counterparty_bic': line['counterparty_bic'], - 'counterparty_number': line['counterparty_number'], - 'counterparty_currency': line['counterparty_currency'], - 'account_id': line['account_id'], - 'globalisation_level': line['glob_lvl_flag'], - 'globalisation_id': line['globalisation_id'], - 'payment_reference': line['payment_reference'], - 'statement_id': coda_st_id, - 'note': line_note, - }) - - if statement['type'] == 'normal': - if line['amount'] != 0.0: - st_line_seq += 1 - voucher_id = False - line_name = line['name'].strip() - if not line_name: - if line['globalisation_id']: - line_name = glob_id_stack[-1][3] or '/' - else: - line_name = '/' - - if line['reconcile']: - - move_line = move_line_obj.browse(cr, uid, line['reconcile'], context=context) - company_currency_id = journal.company_id.currency_id.id - currency_id = journal.currency.id - if currency_id and currency_id != company_currency_id: - multi_currency = True - else: - multi_currency = False - context_multi_currency = context.copy() - context_multi_currency.update({'date': line['entry_date']}) - - line_cr_ids = [] - line_dr_ids = [] - amount_remaining = abs(line['amount']) - - #for entry in entries: - if move_line.reconcile_partial_id: - amount_original = abs(move_line.amount_residual_currency) - else: - amount_original = move_line.credit or move_line.debit - if multi_currency: - if move_line.currency_id and move_line.amount_currency: - amount_original = abs(move_line.amount_currency) - else: - amount_original = currency_obj.compute(cr, uid, company_currency_id, currency_id, amount_original, context=context_multi_currency) - if amount_remaining > 0: - amount_voucher_line = min(amount_original, abs(amount_remaining)) - amount_remaining -= amount_voucher_line - else: - amount_voucher_line = 0.0 - voucher_line_vals = { - 'name': move_line.name, - 'account_id': move_line.account_id.id, - 'amount': amount_voucher_line, - 'reconcile': amount_voucher_line == amount_original, - 'type': move_line.credit and 'dr' or 'cr', - 'move_line_id': move_line.id, - } - if voucher_line_vals['type'] == 'cr': - line_cr_ids += [(0, 0, voucher_line_vals)] - else: - line_dr_ids += [(0, 0, voucher_line_vals)] - - voucher_vals = { - 'type': line['type'] == 'supplier' and 'payment' or 'receipt', - 'name': line_name, - 'date': line['val_date'], - 'journal_id': statement['journal_id'], - 'account_id': journal.default_credit_account_id.id, - 'line_cr_ids': line_cr_ids, - 'line_dr_ids': line_dr_ids, - 'pre_line': len(line_dr_ids) > 0 and True or False, - 'period_id': statement['period_id'], - 'currency_id': journal.currency and journal.currency.id or journal.company_id.currency_id.id, - 'company_id': journal.company_id.id, - 'state': 'draft', - 'amount': abs(line['amount']), - 'reference': line['ref'], - 'number': statement['name'] + '/' + str(st_line_seq), - 'partner_id': line['partner_id'], - } - - #_logger.warn('voucher_vals=%s, context=%s', voucher_vals, context) - context['journal_id'] = journal.id # add journal to context for __get_payment_rate_currency method - if line_cr_ids or line_dr_ids: - voucher_id = voucher_obj.create(cr, uid, voucher_vals, context=context) - else: - raise osv.except_osv(_('Error!'), _("Reconcile error while processing line with ref '%s' ! " \ - "\nPlease report this issue via your OpenERP support channel.") % line['ref']) - - # override default account mapping by mappings defined in rules engine - if statement['account_mapping_ids']: - kwargs = { - 'coda_bank_account_id': statement['coda_bank_account_id'], - 'trans_type_id': line['trans_type_id'], - 'trans_family_id': line['trans_family_id'], - 'trans_code_id': line['trans_code_id'], - 'trans_category_id': line['trans_category_id'], - 'struct_comm_type_id': line['struct_comm_type_id'], - 'partner_id': line['partner_id'], - 'context': context, - } - account_id = account_mapping_obj.account_id_get(cr, uid, **kwargs) - if account_id: - line['account_id'] = account_id - st_line_vals = { - 'ref': line['ref'], - 'name': line_name, - 'type': line['type'], - 'val_date': line['val_date'], - 'date': line['entry_date'], - 'amount': line['amount'], - 'partner_id': line['partner_id'] or 0, - 'counterparty_name': line['counterparty_name'], - 'counterparty_bic': line['counterparty_bic'], - 'counterparty_number': line['counterparty_number'], - 'counterparty_currency': line['counterparty_currency'], - 'account_id': line['account_id'], - 'globalisation_id': line['globalisation_id'], - 'statement_id': bk_st_id, - 'voucher_id': voucher_id, - 'note': line_note, - } - - st_lines_vals = self._st_line_hook(cr, uid, statement['coda_bank_params'], st_line_vals, context=context) - if not st_lines_vals: - # removal of lines by the _coda_parsing_hook currently not supported : - # this qould require resequencing/renaming of linked vouchers & moves as well as removal of associated voucher/moves - err_string += _('\nError in _st_line_hook while processing CODA Statement %s for Bank Account %s!') \ - % (statement['coda_seq_number'], (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description'])) - nb_err += 1 - for st_line_vals in st_lines_vals: - # To DO : update sequence of statement lines and naming of associated vouchers/moves when the hook returns multiple lines - st_line_vals.update({'sequence': st_line_seq}) - bank_st_line_obj.create(cr, uid, st_line_vals, context=context) - if st_line_vals['voucher_id']: - voucher = voucher_obj.browse(cr, uid, st_line_vals['voucher_id'], context=context) - move_line = move_line_obj.browse(cr, uid, line['reconcile'], context=context) - if line['amount'] == (line['amount'] > 0 and move_line.debit or -move_line.credit): - wf_service.trg_validate(uid, 'account.voucher', st_line_vals['voucher_id'], 'proforma_voucher', cr) - if voucher.move_id: - move_line_obj.write(cr, uid, [x.id for x in voucher.move_ids], {'statement_id': bk_st_id}, context=context) - - # end 'for x in lines' - - coda_st_obj.write(cr, uid, [coda_st_id], {}, context=context) # calculate balance - st_balance = coda_st_obj.read(cr, uid, coda_st_id, ['balance_end', 'balance_end_real'], context=context) - if st_balance['balance_end'] != st_balance['balance_end_real']: - err_string += _('\nIncorrect ending Balance in CODA Statement %s for Bank Account %s!') \ - % (statement['coda_seq_number'], (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description'])) - if statement['type'] == 'normal': - nb_err += 1 - break - else: - statement['coda_parsing_note'] += '\n' + err_string - - if statement['type'] == 'normal': - bank_st_obj.button_dummy(cr, uid, [bk_st_id], context=context) # calculate balance - journal_name = journal.name - else: - journal_name = _('None') - coda_note = coda_note + \ - _('\n\nBank Journal: %s' \ - '\nCODA Version: %s' \ - '\nCODA Sequence Number: %s' \ - '\nPaper Statement Sequence Number: %s' \ - '\nBank Account: %s' \ - '\nAccount Holder Name: %s' \ - '\nDate: %s, Starting Balance: %.2f, Ending Balance: %.2f' \ - '%s') \ - % (journal_name, - coda_version, - statement['coda_seq_number'], - statement['paper_nb_seq_number'], - (statement['acc_number'] + ' (' + statement['currency'] + ') - ' + statement['description']), - statement['acc_holder'], - statement['date'], float(statement['balance_start']), float(statement['balance_end_real']), - statement['coda_parsing_note'] % {'name': coda_statement['name']}) - if statement.get('separate_application') != '00000': - coda_note += _('\nCode Separate Application: %s') % statement['separate_application'] \ - - except osv.except_osv, e: - cr.rollback() - nb_err += 1 - err_string += _('\nError ! ') + str(e) - tb = ''.join(format_exception(*exc_info())) - _logger.error('Application Error while processing Statement %s\n%s', - statement.get('name', '/'), tb) - except Exception, e: - cr.rollback() - nb_err += 1 - err_string += _('\nSystem Error : ') + str(e) - tb = ''.join(format_exception(*exc_info())) - _logger.error('System Error while processing Statement %s\n%s', - statement.get('name', '/'), tb) - except: - cr.rollback() - nb_err += 1 - err_string = _('\nUnknown Error : ') + str(e) - tb = ''.join(format_exception(*exc_info())) - _logger.error('Unknown Error while processing Statement %s\n%s', - statement.get('name', '/'), tb) - - # end 'for statement in coda_statements' - - coda_note_header = _('CODA File is Imported :') - coda_note_footer = _('\n\nNumber of statements : ') + str(len(coda_st_ids)) - err_log = err_log + _('\nNumber of errors : ') + str(nb_err) + '\n' - - if not nb_err: - note = coda_note_header + coda_note + coda_note_footer - coda_obj.write(cr, uid, [coda_id], {'note': note}) - cr.commit() - if batch: - return None - else: - cr.rollback() - if batch: - err_code = 'G0002' - return (err_code, err_string) - raise osv.except_osv(_('CODA Import failed !'), err_string) - - context.update({'bk_st_ids': bk_st_ids}) - model_data_ids = mod_obj.search(cr, uid, [('model', '=', 'ir.ui.view'), ('name', '=', 'account_coda_import_result_view')], context=context) - resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id'] - self.write(cr, uid, ids, {'note': note}, context=context) - - return { - 'name': _('Import CODA File result'), - 'res_id': ids[0], - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'account.coda.import', - 'view_id': False, - 'target': 'new', - 'views': [(resource_id, 'form')], - 'context': context, - 'type': 'ir.actions.act_window', - } - - def _statement_hook(self, cr, uid, coda_bank_params, st_vals, context=None): - """ - Use this method to take customer specific actions based upon the bank statement data. - Returns: - st_hook_error : False or string with error message - st_vals - """ - return False, st_vals - - def _st_line_hook(self, cr, uid, coda_bank_params, st_line_vals, context=None): - """ - Use this method to adapt the statement line created by the - CODA parsing to customer specific needs. - """ - print 'PLZ DISPLAY SOMETHING RIGHTPLZPLZPLZ' - print st_line_vals['name'] - print st_line_vals['counterparty_name'] - return [st_line_vals] - - def action_open_coda_statements(self, cr, uid, ids, context=None): - if context is None: - context = {} - module, xml_id = 'l10n_be_coda', 'action_coda_bank_statements' - res_model, res_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, module, xml_id) - action = self.pool.get('ir.actions.act_window').read(cr, uid, res_id, context=context) - domain = eval(action.get('domain') or '[]') - domain += [('coda_id', '=', context.get('coda_id', False))] - action.update({'domain': domain}) - return action - - def action_open_bank_statements(self, cr, uid, ids, context=None): - if context is None: - context = {} - module, xml_id = 'account', 'action_bank_statement_tree' - res_model, res_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, module, xml_id) - action = self.pool.get('ir.actions.act_window').read(cr, uid, res_id, context=context) - domain = eval(action.get('domain') or '[]') - domain += [('id', 'in', context.get('bk_st_ids', False))] - action.update({'domain': domain}) - return action + self.pool.get('account.bank.statement.line').create(cr, uid, data, context=context) account_coda_import() +transaction_types = { + "0": ["", _("Simple amount without detailed data; e.g. : an individual credit transfer [free of charges].")], + "1": ["", _("Amount as totalised by the customer; e.g. a file regrouping payments of wages or payments made to suppliers or a file regrouping collections for which the customer is ]debited or credited with one single amount. As a matter of principle, this type is also used when no detailed data is following [type 5].")], + "5": ["1", _("Detail of 1. Standard procedure is no detailing. However, the customer may ask for detailed data to be included into his file after the overall record [type 1].")], + "2": ["", _("Amount as totalised by the bank; e.g. : the total amount of a series of credit transfers with a structured communication As a matter of principle, this type will also be used when no detailed data [type 6 or 7] is following.")], + "6": ["2", _("Detail of 2. Simple amount without detailed data. Normally, data of this kind comes after type 2. The customer may ask for a separate file containing the detailed data. In that case, one will speak of a ‘separate application’. The records in a separate application keep type 6.")], + "7": ["2", _("Detail of 2. Simple account with detailed data The records in a separate application keep type 7.")], + "9": ["7", _("Detail of 7. The records in a separate application keep type 9.")], + "3": ["", _("Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers.")], + "8": ["3", _("Detail of 3.")], +} -def repl_special(s): - s = s.replace("\'", "\'" + "'") - return s +transaction_codes = { + "00": [_("Undefined transactions"), { + "89": _("Cancellation of a transaction"), + "87": _("Costs refunded"), + "85": _("Correction"), + "83": _("Value correction"), + "39": _("Cancellation of a transaction"), + "37": _("Costs"), + "35": _("Correction"), + "33": _("Value correction"), + "00": _("Undefined transaction") + }], + "01": [_("Domestic or local SEPA credit transfers"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "66": _("Financial centralization"), + "64": _("Transfer to your account"), + "62": _("Unpaid postal order"), + "60": _("Non-presented circular cheque"), + "54": _("Unexecutable transfer order"), + "52": _("Payment in your favour"), + "51": _("Transfer in your favour – initiated by the bank"), + "50": _("Transfer in your favour"), + "49": _("Cancellation or correction"), + "39": _("Your issue circular cheque"), + "37": _("Costs"), + "17": _("Financial centralisation"), + "15": _("Balance due insurance premium"), + "13": _("Transfer from your account"), + "11": _("Your semi-standing order – payment to employees"), + "09": _("Your semi-standing order"), + "07": _("Collective transfer"), + "05": _("Payment of wages etc."), + "03": _("Standing order"), + "02": _("Individual transfer order initiated by the bank"), + "01": _("Individual transfer order]"), + }], + "03": [_("Cheques"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of cheque-related costs"), + "68": _("Credit of a payment via electronic purse"), + "66": _("Remittance of cheque by your branch - credit under usual reserve"), + "64": _("Reversal of settlement of credit card"), + "63": _("Second credit of unpaid cheque"), + "62": _("Reversal of cheque"), + "60": _("Reversal of voucher"), + "58": _("Remittance of cheques, vouchers, etc. credit after collection"), + "56": _("Non-presented certified cheques"), + "52": _("First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve"), + "50": _("Credit of a payment via terminal"), + "49": _("Cancellation or correction"), + "39": _("Provisionally unpaid due to other reason than manual presentation"), + "38": _("Provisionally unpaid"), + "37": _("Cheque-related costs"), + "35": _("Cash advance"), + "19": _("Settlement of credit cards"), + "17": _("Your certified cheque"), + "15": _("Your purchase bank cheque"), + "13": _("Eurocheque written out abroad"), + "11": _("Department store cheque"), + "09": _("Unpaid voucher"), + "07": _("Definitely unpaid cheque"), + "05": _("Payment of voucher"), + "03": _("Your purchase by payment card"), + "01": _("Payment of your cheque"), + }], + "04": [_("Cards"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "68": _("Credit after Proton payments"), + "55": _("Income from payments by GSM"), + "53": _("Cash deposit at an ATM"), + "52": _("Loading GSM cards"), + "51": _("Unloading Proton"), + "50": _("Credit after a payment at a terminal"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "08": _("Payment by means of a payment card outside the Eurozone"), + "07": _("Payment by GSM"), + "06": _("Payment with tank card"), + "05": _("Loading Proton"), + "04": _("Cash withdrawal from an ATM"), + "03": _("Settlement credit cards"), + "02": _("Payment by means of a payment card within the Eurozone"), + "01": _("Loading a GSM card"), + }], + "05": [_("Direct debit"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "58": _("Reversal"), + "56": _("Unexecutable reimbursement"), + "54": _("Reimbursement"), + "52": _("Credit under usual reserve"), + "50": _("Credit after collection"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "05": _("Reimbursement"), + "03": _("Unpaid debt"), + "01": _("Payment"), + }], + "07": [_("Domestic commercial paper"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "86": _("Payment after cession"), + "64": _("Warrant"), + "58": _("Remittance of supplier's bill without guarantee"), + "56": _("Remittance of supplier's bill with guarantee"), + "54": _("Remittance of commercial paper for discount"), + "52": _("Remittance of commercial paper - credit under usual reserve"), + "50": _("Remittance of commercial paper - credit after collection"), + "49": _("Cancellation or correction"), + "39": _("Return of an irregular bill of exchange"), + "37": _("Costs related to commercial paper"), + "14": _("Warrant fallen due"), + "12": _("Safe custody"), + "10": _("Renewal of agreed maturity date"), + "09": _("Agio on supplier's bill"), + "08": _("Payment in advance"), + "07": _("Unpaid commercial paper"), + "06": _("Extension of maturity date"), + "05": _("Commercial paper claimed back"), + "03": _("Payment receipt card"), + "01": _("Payment commercial paper"), + }], + "09": [_("Counter transactions"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Sale of traveller’s cheque"), + "68": _("Difference in payment"), + "66": _("Repurchase of petrol coupons"), + "64": _("Your winning lottery ticket"), + "62": _("Sale of gold/pieces under usual reserve"), + "60": _("Sale of foreign bank notes"), + "58": _("Payment by your branch/agents"), + "56": _("Reserve"), + "54": _("Your payment ATM"), + "52": _("Payment night safe"), + "50": _("Cash payment"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "25": _("Purchase of traveller’s cheque"), + "21": _("Cash withdrawal on card (PROTON)"), + "19": _("Difference in payment"), + "17": _("Purchase of fiscal stamps"), + "15": _("Your purchase of lottery tickets"), + "13": _("Cash withdrawal by your branch or agents"), + "11": _("Your purchase of luncheon vouchers"), + "09": _("Purchase of petrol coupons"), + "07": _("Purchase of gold/pieces"), + "05": _("Purchase of foreign bank notes"), + "03": _("Cash withdrawal by card (ATM)"), + "01": _("Cash withdrawal"), + }], + "11": [_("Securities"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Settlement of securities"), + "68": _("Compensation for missing coupon"), + "66": _("Retrocession of issue commission"), + "64": _("Your issue"), + "62": _("Interim interest on subscription"), + "58": _("Repayable securities from a deposit or delivered at the counter - credit under usual reserve"), + "56": _("Reserve"), + "52": _("Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve"), + "51": _("Tender"), + "50": _("Sale of securities"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "19": _("Regularisation costs"), + "17": _("Management fee"), + "15": _("Interim interest on subscription"), + "13": _("Your repurchase of issue"), + "11": _("Payable coupons/repayable securities"), + "09": _("Settlement of securities"), + "06": _("Share option plan – exercising an option"), + "05": _("Partial payment subscription"), + "04": _("Issues"), + "03": _("Subscription to securities"), + "02": _("Tenders"), + "01": _("Purchase of securities"), + }], + "13": [_("Credit"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Settlement of discount bank acceptance"), + "68": _("Documentary export credits"), + "62": _("Term loan"), + "60": _("Settlement of mortgage loan"), + "56": _("Subsidy"), + "55": _("Fixed advance – interest only"), + "54": _("Fixed advance – capital and interest"), + "50": _("Settlement of instalment credit"), + "49": _("Cancellation or correction"), + "37": _("Credit-related costs"), + "21": _("Other credit applications"), + "19": _("Documentary import credits"), + "15": _("Your repayment hire-purchase and similar claims"), + "13": _("Settlement of bank acceptances"), + "11": _("Your repayment mortgage loan"), + "07": _("Your repayment instalment credits"), + "05": _("Settlement of fixed advance"), + "02": _("Long-term loan"), + "01": _("Short-term loan"), + }], + "30": [_("Various transactions"), { + "99": _("Cancellation or correction"), + "89": _("Undefined transaction"), + "87": _("Reimbursement of costs"), + "83": _("Value (date) correction"), + "55": _("Interest term investment"), + "54": _("Capital and/or interest term investment"), + "52": _("Forward sale of foreign exchange"), + "50": _("Spot sale of foreign exchange"), + "49": _("Cancellation or correction"), + "39": _("Undefined transaction"), + "37": _("Costs"), + "33": _("Value (date) correction"), + "05": _("Capital and/or interest term investment"), + "03": _("Forward purchase of foreign exchange"), + "01": _("Spot purchase of foreign exchange"), + }], + "35": [_("Closing (periodical settlements for interest, costs,…)"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "50": _("Closing"), + "49": _("Cancellation or correction"), + "37": _("Costs"), + "01": _("Closing"), + }], + "41": [_("International credit transfers - non-SEPA credit transfers"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "66": _("Financial centralisation (credit)"), + "64": _("Transfer to your account"), + "50": _("Transfer"), + "49": _("Cancellation or correction"), + "38": _("Costs relating to incoming foreign and non-SEPA transfers"), + "37": _("Costs relating to outgoing foreign transfers and non-SEPA transfers"), + "17": _("Financial centralisation (debit)"), + "13": _("Transfer from your account"), + "07": _("Collective transfers"), + "05": _("Collective payments of wages"), + "03": _("Standing order"), + "01": _("Transfer"), + }], + "43": [_("Foreign cheques"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "70": _("Purchase of traveller’s cheque"), + "62": _("Reversal of cheques"), + "58": _("Remittance of foreign cheque credit after collection"), + "52": _("Remittance of foreign cheque credit under usual reserve"), + "49": _("Cancellation or correction"), + "37": _("Costs relating to payment of foreign cheques"), + "15": _("Purchase of an international bank cheque"), + "07": _("Unpaid foreign cheque"), + "01": _("Payment of a foreign cheque"), + }], + "47": [_("Foreign commercial paper"), { + "99": _("Cancellation or correction"), + "87": _("Reimbursement of costs"), + "64": _("Warrant"), + "62": _("Remittance of documents abroad - credit after collection"), + "60": _("Remittance of documents abroad - credit under usual reserve"), + "58": _("Idem without guarantee"), + "56": _("Remittance of guaranteed foreign supplier's bill"), + "54": _("Discount abroad"), + "52": _("Remittance of foreign bill credit under usual reserve"), + "50": _("Remittance of foreign bill credit after collection"), + "49": _("Cancellation or correction"), + "37": _("Costs relating to the payment of a foreign bill"), + "14": _("Warrant fallen due"), + "13": _("Discount foreign supplier's bills"), + "11": _("Payment documents abroad"), + "07": _("Unpaid foreign bill"), + "06": _("Extension"), + "05": _("Bill claimed back"), + "01": _("Payment of foreign bill"), + }], + "49": [_("Foreign counter transactions"), {"03": _("ATM withdrawal")}], + "80": [_("Separately charged costs and provisions"), { + "01": _("Guarantee card charges"), + "02": _("Costs relating to electronic output"), + "03": _("Payment card charges"), + "04": _("Costs for holding a documentary cash credit"), + "05": _("Card charges"), + "06": _("Damage relating to bills and cheques"), + "07": _("Insurance costs"), + "08": _("Registering compensation for savings accounts"), + "09": _("Postage"), + "10": _("Purchase of Smartcard"), + "11": _("Costs for the safe custody of correspondence"), + "12": _("Costs for opening a bank guarantee"), + "13": _("Renting of safes"), + "14": _("Handling costs instalment credit"), + "15": _("Night safe"), + "16": _("Bank confirmation to revisor or accountant"), + "17": _("Charge for safe custody"), + "18": _("Trade information"), + "19": _("Special charge for safe custody"), + "20": _("Drawing up a certificate"), + "21": _("Pay-packet charges"), + "22": _("Management/custody"), + "23": _("Research costs"), + "24": _("Participation in and management of interest refund system"), + "25": _("Renting of direct debit box"), + "26": _("Travel insurance premium"), + "27": _("Subscription fee"), + "29": _("Information charges"), + "31": _("Writ service fee"), + "33": _("Miscellaneous fees and commissions"), + "35": _("Costs"), + "37": _("Access right to database"), + "39": _("Surety fee"), + "41": _("Research costs"), + "43": _("Printing of forms"), + "45": _("Documentary credit charges"), + "47": _("Charging fees for transactions"), + "49": _("Cancellation or correction"), + "99": _("Cancellation or correction"), + }], +} + +transaction_categories = { + "000": _("Net amount"), + "001": _("Interest received"), + "002": _("Interest paid"), + "003": _("Credit commission"), + "004": _("Postage"), + "005": _("Renting of letterbox"), + "006": _("Various fees/commissions"), + "007": _("Access right to database"), + "008": _("Information charges"), + "009": _("Travelling expenses"), + "010": _("Writ service fee"), + "011": _("VAT"), + "012": _("Exchange commission"), + "013": _("Payment commission"), + "014": _("Collection commission"), + "015": _("Correspondent charges"), + "016": _("BLIW/IBLC dues"), + "017": _("Research costs"), + "018": _("Tental guarantee charges"), + "019": _("Tax on physical delivery"), + "020": _("Costs of physical delivery"), + "021": _("Costs for drawing up a bank cheque"), + "022": _("Priority costs"), + "023": _("Exercising fee"), + "024": _("Growth premium"), + "025": _("Individual entry for exchange charges"), + "026": _("Handling commission"), + "027": _("Charges for unpaid bills"), + "028": _("Fidelity premium"), + "029": _("Protest charges"), + "030": _("Account insurance"), + "031": _("Charges foreign cheque"), + "032": _("Drawing up a circular cheque"), + "033": _("Charges for a foreign bill"), + "034": _("Reinvestment fee"), + "035": _("Charges foreign documentary bill"), + "036": _("Costs relating to a refused cheque"), + "037": _("Commission for handling charges"), + "039": _("Telecommunications"), + "041": _("Credit card costs"), + "042": _("Payment card costs"), + "043": _("Insurance costs"), + "045": _("Handling costs"), + "047": _("Charges extension bill"), + "049": _("Fiscal stamps/stamp duty"), + "050": _("Capital term investment"), + "051": _("Withholding tax"), + "052": _("Residence state tax"), + "053": _("Printing of forms"), + "055": _("Repayment loan or credit capital"), + "057": _("Interest subsidy"), + "058": _("Capital premium"), + "059": _("Default interest"), + "061": _("Charging fees for transactions"), + "063": _("Rounding differences"), + "065": _("Interest payment advice"), + "066": _("Fixed loan advance - reimbursement"), + "067": _("Fixed loan advance - extension"), + "068": _("Countervalue of an entry"), + "069": _("Forward arbitrage contracts : sum to be supplied by customer"), + "070": _("Forward arbitrage contracts : sum to be supplied by bank"), + "071": _("Fixed loan advance - availability"), + "072": _("Countervalue of commission to third party"), + "073": _("Costs of ATM abroad"), + "074": _("Mailing costs"), + "100": _("Gross amount"), + "200": _("Overall documentary credit charges"), + "201": _("Advice notice commission"), + "202": _("Advising commission | Additional advising commission"), + "203": _("Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission"), + "204": _("Amendment fee"), + "205": _("Documentary payment commission | Document commission | Drawdown fee | Negotiation fee"), + "206": _("Surety fee/payment under reserve"), + "207": _("Non-conformity fee"), + "208": _("Commitment fee deferred payment"), + "209": _("Transfer commission"), + "210": _("Commitment fee"), + "211": _("Credit arrangement fee | Additional credit arrangement fee"), + "212": _("Warehousing fee"), + "213": _("Financing fee"), + "214": _("Issue commission (delivery order)"), + "400": _("Acceptance fee"), + "401": _("Visa charges"), + "402": _("Certification costs"), + "403": _("Minimum discount rate"), + "404": _("Discount commission"), + "405": _("Bill guarantee commission"), + "406": _("Collection charges"), + "407": _("Costs Article 45"), + "408": _("Cover commission"), + "409": _("Safe deposit charges"), + "410": _("Reclamation charges"), + "411": _("Fixed collection charge"), + "412": _("Advice of expiry charges"), + "413": _("Acceptance charges"), + "414": _("Regularisation charges"), + "415": _("Surety fee"), + "416": _("Charges for the deposit of security"), + "418": _("Endorsement commission"), + "419": _("Bank service fee"), + "420": _("Retention charges"), + "425": _("Foreign broker's commission"), + "426": _("Belgian broker's commission"), + "427": _("Belgian Stock Exchange tax"), + "428": _("Interest accrued"), + "429": _("Foreign Stock Exchange tax"), + "430": _("Recovery of foreign tax"), + "431": _("Delivery of a copy"), +} -def str2date(date_str): - try: - return time.strftime('%Y-%m-%d', time.strptime(date_str, '%d%m%y')) - except: - return False +def rmspaces(s): + return " ".join(s.split()) -def str2time(time_str): - return time_str[:2] + ':' + time_str[2:] - -def str2float(str): - try: - return float(str) - except: - return 0.0 - - -def list2float(lst): - try: - return str2float((lambda s: s[:-3] + '.' + s[-3:])(lst)) - except: - return 0.0 - - -def number2float(s, d): - try: - return float(s[:len(s) - d] + '.' + s[len(s) - d:]) - except: - return False - - -def _get_acc_numbers(acc_number): - #TODO this method is needed because the iban and bank account fields have been merged together. But sometimes we - # need to retrieve the normal bank account from the IBAN. This should be globalized and defined as a method on the - # bank account class. Each country part of the IBAN area should define its own code to do so. - acc_number = acc_number.replace(' ', '') - if acc_number.lower().startswith('be'): - return [acc_number[4:], acc_number] - return [acc_number] - -from base_iban.base_iban import _ref_iban, _format_iban - - -def calc_iban_checksum(country, bban): - bban = bban.replace(' ', '').upper() + country.upper() + '00' - base = '' - for c in bban: - if c.isdigit(): - base += c - else: - base += str(ord(c) - ord('A') + 10) - kk = 98 - int(base) % 97 - return str(kk).rjust(2, '0') - - -def check_bban(country, bban): - if country == 'BE': - try: - int(bban) - except: - return False - if len(bban) != 12: - return False - return True - - -def check_iban(iban): - """ - Check the IBAN number (logic partially based upon base_iban module, cf. is_iban_valid method) - """ - iban = _format_iban(iban).lower() - if iban[:2] not in _ref_iban: - return False - if len(iban) != len(_format_iban(_ref_iban[iban[:2]])): - return False - #the four first digits have to be shifted to the end - iban = iban[4:] + iban[:4] - #letters have to be transformed into numbers (a = 10, b = 11, ...) - iban2 = "" - for char in iban: - if char.isalpha(): - iban2 += str(ord(char) - 87) - else: - iban2 += char - #iban is correct if modulo 97 == 1 - return int(iban2) % 97 == 1 - - -def get_bank(self, cr, uid, bic, iban): - - country_obj = self.pool.get('res.country') - bank_obj = self.pool.get('res.bank') - - bank_id = False - bank_name = False - feedback = False - bank_country = iban[:2] - try: - bank_country_id = country_obj.search(cr, uid, [('code', '=', bank_country)])[0] - except: - feedback = _("\n Bank lookup failed due to missing Country definition for Country Code '%s' !") \ - % (bank_country) - else: - if iban[:2] == 'BE' and 'code' in bank_obj.fields_get_keys(cr, uid): - # To DO : extend for other countries - bank_code = iban[4:7] - if bic: - bank_ids = bank_obj.search(cr, uid, [('bic', '=', bic), ('code', '=', bank_code), ('country', '=', bank_country_id)]) - if bank_ids: - bank_id = bank_ids[0] - else: - bank_id = bank_obj.create(cr, uid, { - 'name': bic, - 'code': bank_code, - 'bic': bic, - 'country': bank_country_id, - }) - else: - bank_ids = bank_obj.search(cr, uid, [('code', '=', bank_code), ('country', '=', bank_country_id)]) - if bank_ids: - bank_id = bank_ids[0] - bank_data = bank_obj.read(cr, uid, bank_id, fields=['bic', 'name']) - bic = bank_data['bic'] - bank_name = bank_data['name'] - else: - country = country_obj.browse(cr, uid, bank_country_id) - feedback = _("\n Bank lookup failed. Please define a Bank with Code '%s' and Country '%s' !") \ - % (bank_code, country.name) - else: - if not bic: - feedback = _("\n Bank lookup failed due to missing BIC in Bank Statement for IBAN '%s' !") \ - % (iban) - else: - bank_ids = bank_obj.search(cr, uid, [('bic', '=', bic), ('country', '=', bank_country_id)]) - if not bank_ids: - bank_name = bic - bank_id = bank_obj.create(cr, uid, { - 'name': bank_name, - 'bic': bic, - 'country': bank_country_id, - }) - else: - bank_id = bank_ids[0] - - return bank_id, bic, bank_name, feedback - - -def update_partner_bank(self, cr, uid, bic, iban, partner_id, counterparty_name): - partner_bank_obj = self.pool.get('res.partner.bank') - bank_id = False - feedback = False - if check_iban(iban): - bank_id, bic, bank_name, feedback = get_bank(self, cr, uid, bic, iban) - if not bank_id: - return feedback - else: - #convert belgian BBAN numbers to IBAN - if check_bban('BE', iban): - kk = calc_iban_checksum('BE', iban) - iban = 'BE' + kk + iban - bank_id, bic, bank_name, feedback = get_bank(self, cr, uid, bic, iban) - if not bank_id: - return feedback - - if bank_id: - partner_bank_obj.create(cr, uid, { - 'partner_id': partner_id, - 'name': counterparty_name, - 'bank': bank_id, - 'state': 'iban', - 'bank_bic': bic, - 'bank_name': bank_name, - 'acc_number': iban, - }) - return feedback - -indent = '\n' + 8 * ' ' -st_line_name_families = ['13', '35', '41', '80'] -parse_comms_move = ['100', '101', '102', '103', '105', '106', '107', '108', '111', '113', '114', '115', '121', '122', '123', '124', '125', '126', '127'] -parse_comms_info = ['001', '002', '004', '005', '006', '007', '107', '008', '009', '010', '011'] - - -def get_st_line_name(line, context): - #_logger.warn('get_st_line_name - entry').warn('ref = %s, family = %s, code = %s, categ = %s', line['ref'], line['trans_family'], line['trans_code'], line['trans_category']) - st_line_name = line['name'] - - if line['trans_family'] == '35' and line['trans_code'] in ['01', '37']: - st_line_name = ', '.join([_('Closing'), line['trans_code_desc'], line['trans_category_desc']]) - - if line['trans_family'] in ['13', '41']: - st_line_name = ', '.join([line['trans_family_desc'], line['trans_code_desc'], line['trans_category_desc']]) - - if line['trans_family'] in ['80']: - st_line_name = ', '.join([line['trans_code_desc'], line['trans_category_desc']]) - - return st_line_name - - -def parse_comm_move(self, cr, uid, line, comm_type_table, context): - #_logger.warn('parse_comm_move - entry, ref = %s, family = %s, code = %s, categ = %s, comm_type = %s, name = %s', line['ref'], line['trans_family'], line['trans_code'], line['trans_category'], line['struct_comm_type'], line['name']) - comm_type = line['struct_comm_type'] - comm = st_line_comm = line['communication'] - st_line_name = line['name'] - - if comm_type in ['115', '121', '122', '126']: - _logger.warn('The parsing of Structured Commmunication Type %s has not yet been implemented. ' \ - 'Please contact Noviat (info@noviat.be) for more information about the development roadmap', comm_type) - - if comm_type == '100': - st_line_name = _('Payment with ISO 11649 structured format communication') - st_line_comm = '\n' + indent + _('Payment with a structured format communication applying the ISO standard 11649') + ':' - st_line_comm += indent + _('Structured creditor reference to remittance information') - st_line_comm += indent + comm - - if comm_type in ['101', '102']: - st_line_name = st_line_comm = '+++' + comm[0:3] + '/' + comm[3:7] + '/' + comm[7:12] + '+++' - - if comm_type == '103': - st_line_name = ', '.join([line['trans_family_desc'], _('Number')]) - st_line_comm = comm - - if comm_type == '105': - st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] - amount_1 = list2float(comm[0:15]) - amount_2 = list2float(comm[15:30]) - rate = number2float(comm[30:42], 8) - currency = comm[42:45] - struct_format_comm = comm[45:57].strip() - country_code = comm[57:59] - amount_3 = list2float(comm[59:74]) - st_line_comm = '\n' + indent + st_line_name + indent + _('Gross amount in the currency of the account') + ': %.2f' % amount_1 - st_line_comm += indent + _('Gross amount in the original currency') + ': %.2f' % amount_2 - st_line_comm += indent + _('Rate') + ': %.4f' % rate - st_line_comm += indent + _('Currency') + ': %s' % currency - st_line_comm += indent + _('Structured format communication') + ': %s' % struct_format_comm - st_line_comm += indent + _('Country code of the principal') + ': %s' % country_code - st_line_comm += indent + _('Equivalent in EUR') + ': %.2f' % amount_3 - - if comm_type == '106': - if not st_line_name and line['trans_family'] not in st_line_name_families: - st_line_name = _('VAT, withholding tax on income, commission, etc.') - interest = comm[30:42].strip('0') - st_line_comm = '\n' + indent + st_line_name + indent + _('Equivalent in the currency of the account') + ': %.2f' % list2float(comm[0:15]) - st_line_comm += indent + _('Amount on which % is calculated') + ': %.2f' % list2float(comm[15:30]) - st_line_comm += indent + _('Percent') + ': %.4f' % number2float(comm[30:42], 8) - st_line_comm += indent + (comm[42] == 1 and _('Minimum applicable') or _('Minimum not applicable')) - st_line_comm += indent + _('Equivalent in EUR') + ': %.2f' % list2float(comm[43:58]) - - if comm_type == '107': - paid_refusals = { - '0': _('paid'), - '1': _('direct debit cancelled or nonexistent'), - '2': _('refusal - other reason'), - 'D': _('payer disagrees'), - 'E': _('direct debit number linked to another identification number of the creditor')} - st_line_name = _('Direct debit - DOM\'80') - direct_debit_number = comm[0:12].strip() - pivot_date = str2date(comm[12:18]) - comm_zone = comm[18:48] - paid_refusal = paid_refusals.get(comm[48], '') - creditor_number = comm[49:60].strip() - st_line_comm = '\n' + indent + st_line_name + indent + _('Direct Debit Number') + ': %s' % direct_debit_number - st_line_comm += indent + _('Central (Pivot) Date') + ': %s' % pivot_date - st_line_comm += indent + _('Communication Zone') + ': %s' % comm_zone - st_line_comm += indent + _('Paid or reason for refusal') + ': %s' % paid_refusal - st_line_comm += indent + _("Creditor's Number") + ': %s' % creditor_number - - if comm_type == '108': - st_line_name = _('Closing, period from %s to %s') % (str2date(comm[42:48]), str2date(comm[48:54])) - interest = comm[30:42].strip('0') - st_line_comm = '\n' + indent + st_line_name + indent + _('Equivalent in the currency of the account') + ': %.2f' % list2float(comm[0:15]) - if interest: - st_line_comm += indent + _('Interest rates, calculation basis') + ': %.2f' % list2float(comm[15:30]) + \ - indent + _('Interest') + ': %.2f' % list2float(comm[30:42]) - - if comm_type == '111': - card_schemes = { - '1': 'Bancontact/Mister Cash', - '2': _('Private'), - '3': 'Maestro', - '5': 'TINA', - '9': _('Other')} - trans_types = { - '1': _('Withdrawal'), - '2': _('Cumulative on network'), - '7': _('Distribution sector'), - '8': _('Teledata'), - '9': _('Fuel')} - st_line_name = _('POS credit - globalisation') - card_scheme = card_schemes.get(comm[0], '') - pos_number = comm[1:7].strip() - period_number = comm[7:10].strip() - first_sequence_number = comm[10:16].strip() - trans_first_date = str2date(comm[16:22]) - last_sequence_number = comm[22:28].strip() - trans_last_date = str2date(comm[28:34]) - trans_type = trans_types.get(comm[34], '') - terminal_name = comm[35:50].strip() - terminal_city = comm[51:60].strip() - st_line_comm = '\n' + indent + st_line_name + indent + _('Card Scheme') + ': %s' % card_scheme - st_line_comm += indent + _('POS Number') + ': %s' % pos_number - st_line_comm += indent + _('Period Number') + ': %s' % period_number - st_line_comm += indent + _('First Transaction Sequence Number') + ': %s' % first_sequence_number - st_line_comm += indent + _('Date of first transaction') + ': %s' % trans_first_date - st_line_comm += indent + _('Last Transaction Sequence Number') + ': %s' % last_sequence_number - st_line_comm += indent + _('Date of last transaction') + ': %s' % trans_last_date - st_line_comm += indent + _('Transaction Type') + ': %s' % trans_type - st_line_comm += indent + _('Terminal Identification') + ': %s' % terminal_name + ', ' + terminal_city - - if comm_type == '113': - card_schemes = { - '1': 'Bancontact/Mister Cash', - '2': 'Maestro', - '3': _('Private'), - '9': _('Other')} - trans_types = { - '1': _('Withdrawal'), - '2': _('Proton loading'), - '3': _('Reimbursement Proton balance'), - '4': _('Reversal of purchases'), - '7': _('Distribution sector'), - '8': _('Teledata'), - '9': _('Fuel')} - product_codes = { - '01': _('premium with lead substitute'), - '02': _('europremium'), - '03': _('diesel'), - '04': _('LPG'), - '06': _('premium plus 98 oct'), - '07': _('regular unleaded'), - '08': _('domestic fuel oil'), - '09': _('lubricants'), - '10': _('petrol'), - '11': _('premium 99+'), - '12': _('Avgas'), - '16': _('other types'), - } - st_line_name = _('ATM/POS debit') - card_number = comm[0:16].strip() - card_scheme = card_schemes.get(comm[16], '') - terminal_number = comm[17:23].strip() - sequence_number = comm[23:29].strip() - trans_date = comm[29:35].strip() and str2date(comm[29:35]) or '' - trans_hour = comm[35:39].strip() and str2time(comm[35:39]) or '' - trans_type = trans_types.get(comm[39], '') - terminal_name = comm[40:56].strip() - terminal_city = comm[56:66].strip() - orig_amount = comm[66:81].strip() and list2float(comm[66:81]) - rate = number2float(comm[81:93], 8) - currency = comm[93:96] - volume = number2float(comm[96:101], 2) - product_code = product_codes.get(comm[101:103], '') - unit_price = number2float(comm[103:108], 2) - st_line_comm = '\n' + indent + st_line_name + indent + _('Card Number') + ': %s' % card_number - st_line_comm += indent + _('Card Scheme') + ': %s' % card_scheme - if terminal_number: - st_line_comm += indent + _('Terminal Number') + ': %s' % terminal_number - st_line_comm += indent + _('Transaction Sequence Number') + ': %s' % sequence_number - st_line_comm += indent + _('Time') + ': %s' % trans_date + ' ' + trans_hour - st_line_comm += indent + _('Transaction Type') + ': %s' % trans_type - st_line_comm += indent + _('Terminal Identification') + ': %s' % terminal_name + ', ' + terminal_city - if orig_amount: - st_line_comm += indent + _('Original Amount') + ': %.2f' % orig_amount - st_line_comm += indent + _('Rate') + ': %.4f' % rate - st_line_comm += indent + _('Currency') + ': %s' % currency - if volume: - st_line_comm += indent + _('Volume') + ': %.2f' % volume - if product_code: - st_line_comm += indent + _('Product Code') + ': %s' % product_code - if unit_price: - st_line_comm += indent + _('Unit Price') + ': %.2f' % unit_price - - if comm_type == '114': - card_schemes = { - '1': 'Bancontact/Mister Cash', - '2': 'Maestro', - '3': _('Private'), - '5': 'TINA', - '9': _('Other')} - trans_types = { - '1': _('Withdrawal'), - '7': _('Distribution sector'), - '8': _('Teledata'), - '9': _('Fuel')} - st_line_name = _('POS credit - individual transaction') - card_scheme = card_schemes.get(comm[0], '') - pos_number = comm[1:7].strip() - period_number = comm[7:10].strip() - sequence_number = comm[10:16].strip() - trans_date = str2date(comm[16:22]) - trans_hour = str2time(comm[22:26]) - trans_type = trans_types.get(comm[26], '') - terminal_name = comm[27:43].strip() - terminal_city = comm[43:53].strip() - trans_reference = comm[53:69].strip() - st_line_comm = '\n' + indent + st_line_name + indent + _('Card Scheme') + ': %s' % card_scheme - st_line_comm += indent + _('POS Number') + ': %s' % pos_number - st_line_comm += indent + _('Period Number') + ': %s' % period_number - st_line_comm += indent + _('Transaction Sequence Number') + ': %s' % sequence_number - st_line_comm += indent + _('Time') + ': %s' % trans_date + ' ' + trans_hour - st_line_comm += indent + _('Transaction Type') + ': %s' % trans_type - st_line_comm += indent + _('Terminal Identification') + ': %s' % terminal_name + ', ' + terminal_city - st_line_comm += indent + _('Transaction Reference') + ': %s' % trans_reference - - if comm_type == '123': - starting_date = str2date(comm[0:6]) - maturity_date = comm[6:12] == '999999' and _('guarantee without fixed term') or str2date(comm[0:6]) - basic_amount = list2float(comm[12:27]) - percent = number2float(comm[27:39], 8) - term = comm[39:43].lstrip('0') - minimum = comm[43] == '1' and True or False - guarantee_number = comm[44:57].strip() - st_line_comm = '\n' + indent + st_line_name + indent + _('Starting Date') + ': %s' % starting_date - st_line_comm += indent + _('Maturity Date') + ': %s' % maturity_date - st_line_comm += indent + _('Basic Amount') + ': %.2f' % basic_amount - st_line_comm += indent + _('Percentage') + ': %.4f' % percent - st_line_comm += indent + _('Term in days') + ': %s' % term - st_line_comm += indent + (minimum and _('Minimum applicable') or _('Minimum not applicable')) - st_line_comm += indent + _('Guarantee Number') + ': %s' % guarantee_number - - if comm_type == '124': - card_issuers = { - '1': 'Mastercard', - '2': 'Visa', - '3': 'American Express', - '4': 'Diners Club', - '9': _('Other')} - st_line_name = _('Settlement credit cards') - card_number = comm[0:20].strip() - card_issuer = card_issuers.get(comm[20], '') - invoice_number = comm[21:33].strip() - identification_number = comm[33:48].strip() - date = comm[48:54].strip() and str2date(comm[48:54]) or '' - st_line_comm = '\n' + indent + st_line_name + indent + _('Card Number') + ': %s' % card_number - st_line_comm += indent + _('Issuing Institution') + ': %s' % card_issuer - st_line_comm += indent + _('Invoice Number') + ': %s' % invoice_number - st_line_comm += indent + _('Identification Number') + ': %s' % identification_number - st_line_comm += indent + _('Date') + ': %s' % date - - if comm_type == '125': - if line['trans_family'] not in st_line_name_families: - st_line_name = _('Credit') - credit_account = comm[0:27].strip() - if check_bban('BE', credit_account): - credit_account = '-'.join([credit_account[:3], credit_account[3:10], credit_account[10:]]) - old_balance = list2float(comm[27:42]) - new_balance = list2float(comm[42:57]) - amount = list2float(comm[57:72]) - currency = comm[72:75] - start_date = str2date(comm[75:81]) - end_date = str2date(comm[81:87]) - rate = number2float(comm[87:99], 8) - trans_reference = comm[99:112].strip() - st_line_comm = '\n' + indent + st_line_name + indent + _('Credit Account Number') + ': %s' % credit_account - st_line_comm += indent + _('Old Balance') + ': %.2f' % old_balance - st_line_comm += indent + _('New Balance') + ': %.2f' % new_balance - st_line_comm += indent + _('Amount') + ': %.2f' % amount - st_line_comm += indent + _('Currency') + ': %s' % currency - st_line_comm += indent + _('Starting Date') + ': %s' % start_date - st_line_comm += indent + _('End Date') + ': %s' % end_date - st_line_comm += indent + _('Nominal Interest Rate or Rate of Charge') + ': %.4f' % rate - st_line_comm += indent + _('Transaction Reference') + ': %s' % trans_reference - - if comm_type == '127': - direct_debit_types = { - '0': _('unspecified'), - '1': _('recurrent'), - '2': _('one-off'), - '3': _('1-st (recurrent)'), - '4': _('last (recurrent)')} - direct_debit_schemes = { - '0': _('unspecified'), - '1': _('SEPA core'), - '2': _('SEPA B2B')} - paid_refusals = { - '0': _('paid'), - '1': _('technical problem'), - '2': _('refusal - reason not specified'), - '3': _('debtor disagrees'), - '4': _('debtor\'s account problem')} - R_types = { - '0': _('paid'), - '1': _('reject'), - '2': _('return'), - '3': _('refund'), - '4': _('reversal'), - '5': _('cancellation')} - st_line_name = _('European direct debit (SEPA)') - settlement_date = str2date(comm[0:6]) - direct_debit_type = direct_debit_types.get(comm[6], '') - direct_debit_scheme = direct_debit_schemes.get(comm[7], '') - paid_refusal = paid_refusals.get(comm[8], '') - creditor_id = comm[9:44].strip() - mandate_ref = comm[44:79].strip() - comm_zone = comm[79:141] - R_type = R_types.get(comm[141], '') - reason = comm[142:146].strip() - st_line_comm = '\n' + indent + st_line_name + indent + _('Settlement_Date') + ': %s' % settlement_date - st_line_comm += indent + _('Direct Debit Type') + ': %s' % direct_debit_type - st_line_comm += indent + _('Direct Debit Scheme') + ': %s' % direct_debit_scheme - st_line_comm += indent + _('Paid or reason for refusal') + ': %s' % paid_refusal - st_line_comm += indent + _('Creditor\'s Identification Code') + ': %s' % creditor_id - st_line_comm += indent + _('Mandate Reference') + ': %s' % mandate_ref - st_line_comm += indent + _('Communication') + ': %s' % comm_zone - st_line_comm += indent + _('R transaction Type') + ': %s' % R_type - st_line_comm += indent + _('Reason') + ': %s' % reason - - return st_line_name, st_line_comm - - -def parse_comm_info(self, cr, uid, line, comm_type_table, context): - comm_type = line['struct_comm_type'] - comm = st_line_comm = line['communication'] - st_line_name = line['name'] - - if comm_type == '001': - st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] - st_line_comm = '\n' + indent + st_line_name + indent + _('Name') + ': %s' % comm[0:70].strip() - st_line_comm += indent + _('Street') + ': %s' % comm[70:105].strip() - st_line_comm += indent + _('Locality') + ': %s' % comm[105:140].strip() - st_line_comm += indent + _('Identification Code') + ': %s' % comm[140:175].strip() - - if comm_type in ['002', '004', '005']: - st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] - st_line_comm = comm.strip() - - if comm_type == '006': - amount = (comm[48] == '1' and '-' or '') + ('%.2f' % list2float(comm[33:48])) + ' ' + comm[30:33] - st_line_name = filter(lambda x: comm_type == x['code'], comm_type_table)[0]['description'] - st_line_comm = '\n' + indent + st_line_name + indent + _('Description of the detail') + ': %s' % comm[0:30].strip() - st_line_comm += indent + _('Amount') + ': %s' % amount - st_line_comm += indent + _('Category') + ': %s' % comm[49:52].strip() - - if comm_type not in ['001', '002', '004', '005', '006']: - _logger.warn('The parsing of Structured Commmunication Type %s has not yet been implemented. ' \ - 'Please contact Noviat (info@noviat.be) for more information about the development roadmap', comm_type) - - return st_line_name, st_line_comm # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/wizard/account_coda_import_dle.py b/addons/l10n_be_coda/wizard/account_coda_import_dle.py deleted file mode 100644 index 432008fa58e..00000000000 --- a/addons/l10n_be_coda/wizard/account_coda_import_dle.py +++ /dev/null @@ -1,740 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -import base64 -from osv import fields, osv -from tools.translate import _ -import time -import tools -import logging -_logger = logging.getLogger(__name__) - - -class account_coda_import(osv.osv_memory): - _name = 'account.coda.import' - _description = 'Import CODA File' - _columns = { - 'coda_data': fields.binary('CODA File', required=True), - 'coda_fname': fields.char('CODA Filename', size=128, required=True), - 'note': fields.text('Log'), - } - _defaults = { - 'coda_fname': lambda *a: '', - } - - def coda_parsing(self, cr, uid, ids, context=None, batch=False, codafile=None, codafilename=None): - if context is None: - context = {} - if batch: - print - codafile = str(codafile) - codafilename = codafilename - else: - data = self.browse(cr, uid, ids)[0] - try: - codafile = data.coda_data - codafilename = data.coda_fname - except: - raise osv.except_osv(_('Error!'), _('Wizard in incorrect state. Please hit the Cancel button!')) - return {} - recordlist = unicode(base64.decodestring(codafile), 'windows-1252', 'strict').split('\n') - statements = [] - for line in recordlist: - if not line: - pass - elif line[0] == '0': - #Begin of a new Bank statement - statement = {} - statements.append(statement) - statement['version'] = line[127] - if statement['version'] not in ['1', '2']: - raise osv.except_osv(_('Error R001!'), _('CODA V%s statements are not supported, please contact your bank!') % statement['version']) - statement['globalisation_stack'] = [] - statement['lines'] = [] - statement['date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[5:11]), '%d%m%y')) - statement['separateApplication'] = rmspaces(line[83:88]) - elif line[0] == '1': - #Statement details - if statement['version'] == '1': - statement['accountNumber'] = rmspaces(line[5:17]) - statement['currency'] = rmspaces(line[18:21]) - elif statement['version'] == '2': - if line[1] == '0': # Belgian bank account BBAN structure - statement['accountNumber'] = rmspaces(line[5:17]) - statement['currency'] = rmspaces(line[18:21]) - elif line[1] == '1': # foreign bank account BBAN structure - raise osv.except_osv(_('Error R1001!'), _('Foreign bank accounts with BBAN structure are not supported !')) - elif line[1] == '2': # Belgian bank account IBAN structure - statement['accountNumber'] = rmspaces(line[5:21]) - statement['currency'] = rmspaces(line[39:42]) - elif line[1] == '3': # foreign bank account IBAN structure - raise osv.except_osv(_('Error R1002!'), _('Foreign bank accounts with IBAN structure are not supported !')) - else: # Something else, not supported - raise osv.except_osv(_('Error R1003!'), _('\nUnsupported bank account structure !')) - statement['description'] = rmspaces(line[90:125]) - statement['balance_start'] = float(rmspaces(line[43:58])) / 1000 - statement['balance_start_date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[58:64]), '%d%m%y')) - statement['accountHolder'] = rmspaces(line[64:90]) - statement['paperSeqNumber'] = rmspaces(line[2:5]) - statement['codaSeqNumber'] = rmspaces(line[125:128]) - elif line[0] == '2': - if line[1] == '1': - #New statement line - statementLine = {} - statementLine['type'] = 'general' - statementLine['ref'] = rmspaces(line[2:10]) - statementLine['ref_move'] = rmspaces(line[2:6]) - statementLine['ref_move_detail'] = rmspaces(line[6:10]) - statementLine['sequence'] = len(statement['lines']) + 1 - statementLine['transactionRef'] = rmspaces(line[10:31]) - statementLine['debit'] = line[31] # 0 = Credit, 1 = Debit - statementLine['amount'] = float(rmspaces(line[32:47])) / 1000 - if statementLine['debit'] == '1': - statementLine['amount'] = - statementLine['amount'] - statementLine['transaction_type'] = line[53] - if statementLine['transaction_type'] not in transaction_types: - raise osv.except_osv(_('Error R2001!'), _('The File contains an invalid CODA Transaction Type : %s!') % statementLine['transaction_type']) - statementLine['transactionDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[47:53]), '%d%m%y')) - statementLine['transaction_family'] = rmspaces(line[54:56]) - #TODO Handling severals transactions Family - statementLine['transaction_code'] = rmspaces(line[56:58]) - #TODO Handling severals transactions code - statementLine['transaction_category'] = rmspaces(line[58:61]) - #TODO Handling severals transactions category - statementLine['communication'] = rmspaces(line[62:115]) - #TODO Handling structured communication - statementLine['entryDate'] = rmspaces(line[115:121]) - statementLine['type'] = 'normal' - statementLine['globalisation'] = int(line[124]) - if len(statement['globalisation_stack']) > 0: - statementLine['communication'] = "\n".join([statement['globalisation_stack'][-1]['communication'], statementLine['communication']]) - if statementLine['globalisation'] > 0: - if len(statement['globalisation_stack']) > 0 and statement['globalisation_stack'][-1]['globalisation'] == statementLine['globalisation']: - # Destack - statement['globalisation_stack'].pop() - else: - #Stack - statementLine['type'] = 'globalisation' - statement['globalisation_stack'].append(statementLine) - statement['lines'].append(statementLine) - elif line[1] == '2': - if statement['lines'][-1]['ref'][0:4] != line[2:6]: - raise osv.except_osv(_('Error R2004!'), _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) - statement['lines'][-1]['communication'] += rmspaces(line[10:63]) - statement['lines'][-1]['payment_reference'] = rmspaces(line[63:98]) - statement['lines'][-1]['counterparty_bic'] = rmspaces(line[98:109]) - elif line[1] == '3': - if statement['lines'][-1]['ref'][0:4] != line[2:6]: - raise osv.except_osv(_('Error R2005!'), _('CODA parsing error on movement data record 2.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) - if statement['version'] == '1': - statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) - statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:125]) - statement['lines'][-1]['counterpartyCurrency'] = '' - else: - if line[22] == ' ': - statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) - statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[23:26]) - else: - statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:44]) - statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[44:47]) - statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:82]) - statement['lines'][-1]['communication'] += rmspaces(line[82:125]) - else: - # movement data record 2.x (x != 1,2,3) - raise osv.except_osv(_('Error R2009!'), _('\nMovement data records of type 2.%s are not supported !') % line[1]) - elif line[0] == '3': - if line[1] == '1': - infoLine = {} - infoLine['entryDate'] = statement['lines'][-1]['entryDate'] - infoLine['type'] = 'information' - infoLine['sequence'] = len(statement['lines']) + 1 - infoLine['ref'] = rmspaces(line[2:10]) - infoLine['transactionRef'] = rmspaces(line[10:31]) - infoLine['transaction_type'] = line[31] - infoLine['transaction_family'] = rmspaces(line[32:34]) - infoLine['transaction_code'] = rmspaces(line[34:36]) - infoLine['transaction_category'] = rmspaces(line[36:39]) - infoLine['communication'] = rmspaces(line[40:113]) - infoLine['amount'] = 0.0 - infoLine['type'] = 'information' - statement['lines'].append(infoLine) - elif line[1] == '2': - if infoLine['ref'] != rmspaces(line[2:10]): - raise osv.except_osv(_('Error R3004!'), _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) - statement['lines'][-1]['communication'] += rmspaces(line[10:100]) - elif line[1] == '3': - if infoLine['ref'] != rmspaces(line[2:10]): - raise osv.except_osv(_('Error R3005!'), _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) - statement['lines'][-1]['communication'] += rmspaces(line[10:100]) - elif line[0] == '4': - comm_line = {} - comm_line['type'] = 'communication' - comm_line['sequence'] = len(statement['lines']) + 1 - comm_line['ref'] = rmspaces(line[2:10]) - comm_line['communication'] = rmspaces(line[32:112]) - comm_line['amount'] = 0.0 - comm_line['type'] = 'communication' - statement['lines'].append(comm_line) - elif line[0] == '8': - # new balance record - statement['debit'] = line[41] - statement['paperSeqNumber'] = rmspaces(line[1:4]) - statement['balance_end_real'] = float(rmspaces(line[42:57])) / 1000 - statement['balance_end_realDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[57:63]), '%d%m%y')) - if statement['debit'] == '1': # 1=Debit - statement['balance_end_real'] = - statement['balance_end_real'] - if statement['balance_end_realDate']: - period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['balance_end_realDate']), ('date_stop', '>=', statement['balance_end_realDate'])]) - else: - period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['date']), ('date_stop', '>=', statement['date'])]) - if not period_id and len(period_id) == 0: - raise osv.except_osv(_('Error R0002!'), _("The CODA Statement New Balance date doesn't fall within a defined Accounting Period! Please create the Accounting Period for date %s.") % statement['balance_end_realDate']) - statement['period_id'] = period_id[0] - elif line[0] == '9': - statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000 - statement['balancePlus'] = float(rmspaces(line[37:52])) / 1000 - if not statement['balance_end_real']: - statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin'] - for i, statement in enumerate(statements): - # print '---STATEMENT #' + str(i) + '---' - print statement - data = { - 'name': '[' + statement['date'] + ']' + statement['description'], - 'date': statement['date'], - 'journal_id': 18, - 'period_id': statement['period_id'], - 'balance_start': statement['balance_start'], - 'balance_end_real': statement['balance_end_real'], - 'account_id': 1 - } - statement['id'] = self.pool.get('account.bank.statement').create(cr, uid, data, context=context) - for line in statement['lines']: - if line['type'] == 'normal': - counterparty = [] - if 'counterpartyName' in line: - counterparty.append(line['counterpartyName']) - if 'counterpartyNumber' in line: - counterparty.append(line['counterpartyNumber']) - if len(counterparty) > 0: - counterparty = '[' + ' / '.join(counterparty) + ']' - else: - counterparty = '/' - if line['transaction_type'] in transaction_types: - line['transaction_type'] = transaction_types[line['transaction_type']][1] - if line['transaction_category'] in transaction_categories: - line['transaction_category'] = transaction_categories[line['transaction_category']] - if line['transaction_family'] in transaction_codes: - transaction_family = transaction_codes[line['transaction_family']] - line['transaction_family'] = transaction_family[0] - if line['transaction_code'] in transaction_family[1]: - line['transaction_code'] = transaction_family[1][line['transaction_code']] - note = [] - note.append(_('Counter Party') + ': ' + counterparty) - note.append(_('Communication') + ': ' + line['communication']) - note.append(_('Transaction type') + ': ' + line['transaction_type']) - note.append(_('Transaction family') + ': ' + line['transaction_family']) - note.append(_('Transaction code') + ': ' + line['transaction_code']) - note.append(_('Transaction category') + ': ' + line['transaction_category']) - - try: - if 'counterpartyNumber' in line and int(line['counterpartyNumber']) == 0: - line['counterpartyNumber'] = False - except: - pass - if 'counterpartyNumber' in line and line['counterpartyNumber']: - ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) - if ids and len(ids) > 0: - partner_id = self.pool.get('res.partner.bank').browse(cr, uid, ids[0],context=context).partner_id.id - else: - partner_id = None - - data = { - 'name': line['communication'], - 'note': "\n".join(note), - 'date': line['entryDate'], - 'amount': line['amount'], - # 'type': '', - 'partner_id': partner_id, - 'account_id': 1, - 'statement_id': statement['id'], - # 'analytic_account_id': '', - # 'move_ids': '', - 'ref': line['ref'], - 'sequence': line['sequence'], - } - self.pool.get('account.bank.statement.line').create(cr, uid, data, context=context) - -account_coda_import() - -transaction_types = { - "0": ["", _("Simple amount without detailed data; e.g. : an individual credit transfer [free of charges].")], - "1": ["", _("Amount as totalised by the customer; e.g. a file regrouping payments of wages or payments made to suppliers or a file regrouping collections for which the customer is ]debited or credited with one single amount. As a matter of principle, this type is also used when no detailed data is following [type 5].")], - "5": ["1", _("Detail of 1. Standard procedure is no detailing. However, the customer may ask for detailed data to be included into his file after the overall record [type 1].")], - "2": ["", _("Amount as totalised by the bank; e.g. : the total amount of a series of credit transfers with a structured communication As a matter of principle, this type will also be used when no detailed data [type 6 or 7] is following.")], - "6": ["2", _("Detail of 2. Simple amount without detailed data. Normally, data of this kind comes after type 2. The customer may ask for a separate file containing the detailed data. In that case, one will speak of a ‘separate application’. The records in a separate application keep type 6.")], - "7": ["2", _("Detail of 2. Simple account with detailed data The records in a separate application keep type 7.")], - "9": ["7", _("Detail of 7. The records in a separate application keep type 9.")], - "3": ["", _("Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers.")], - "8": ["3", _("Detail of 3.")], -} - -transaction_codes = { - "00": [_("Undefined transactions"), { - "89": _("Cancellation of a transaction"), - "87": _("Costs refunded"), - "85": _("Correction"), - "83": _("Value correction"), - "39": _("Cancellation of a transaction"), - "37": _("Costs"), - "35": _("Correction"), - "33": _("Value correction"), - "00": _("Undefined transaction") - }], - "01": [_("Domestic or local SEPA credit transfers"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "66": _("Financial centralization"), - "64": _("Transfer to your account"), - "62": _("Unpaid postal order"), - "60": _("Non-presented circular cheque"), - "54": _("Unexecutable transfer order"), - "52": _("Payment in your favour"), - "51": _("Transfer in your favour – initiated by the bank"), - "50": _("Transfer in your favour"), - "49": _("Cancellation or correction"), - "39": _("Your issue circular cheque"), - "37": _("Costs"), - "17": _("Financial centralisation"), - "15": _("Balance due insurance premium"), - "13": _("Transfer from your account"), - "11": _("Your semi-standing order – payment to employees"), - "09": _("Your semi-standing order"), - "07": _("Collective transfer"), - "05": _("Payment of wages etc."), - "03": _("Standing order"), - "02": _("Individual transfer order initiated by the bank"), - "01": _("Individual transfer order]"), - }], - "03": [_("Cheques"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of cheque-related costs"), - "68": _("Credit of a payment via electronic purse"), - "66": _("Remittance of cheque by your branch - credit under usual reserve"), - "64": _("Reversal of settlement of credit card"), - "63": _("Second credit of unpaid cheque"), - "62": _("Reversal of cheque"), - "60": _("Reversal of voucher"), - "58": _("Remittance of cheques, vouchers, etc. credit after collection"), - "56": _("Non-presented certified cheques"), - "52": _("First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve"), - "50": _("Credit of a payment via terminal"), - "49": _("Cancellation or correction"), - "39": _("Provisionally unpaid due to other reason than manual presentation"), - "38": _("Provisionally unpaid"), - "37": _("Cheque-related costs"), - "35": _("Cash advance"), - "19": _("Settlement of credit cards"), - "17": _("Your certified cheque"), - "15": _("Your purchase bank cheque"), - "13": _("Eurocheque written out abroad"), - "11": _("Department store cheque"), - "09": _("Unpaid voucher"), - "07": _("Definitely unpaid cheque"), - "05": _("Payment of voucher"), - "03": _("Your purchase by payment card"), - "01": _("Payment of your cheque"), - }], - "04": [_("Cards"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "68": _("Credit after Proton payments"), - "55": _("Income from payments by GSM"), - "53": _("Cash deposit at an ATM"), - "52": _("Loading GSM cards"), - "51": _("Unloading Proton"), - "50": _("Credit after a payment at a terminal"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "08": _("Payment by means of a payment card outside the Eurozone"), - "07": _("Payment by GSM"), - "06": _("Payment with tank card"), - "05": _("Loading Proton"), - "04": _("Cash withdrawal from an ATM"), - "03": _("Settlement credit cards"), - "02": _("Payment by means of a payment card within the Eurozone"), - "01": _("Loading a GSM card"), - }], - "05": [_("Direct debit"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "58": _("Reversal"), - "56": _("Unexecutable reimbursement"), - "54": _("Reimbursement"), - "52": _("Credit under usual reserve"), - "50": _("Credit after collection"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "05": _("Reimbursement"), - "03": _("Unpaid debt"), - "01": _("Payment"), - }], - "07": [_("Domestic commercial paper"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "86": _("Payment after cession"), - "64": _("Warrant"), - "58": _("Remittance of supplier's bill without guarantee"), - "56": _("Remittance of supplier's bill with guarantee"), - "54": _("Remittance of commercial paper for discount"), - "52": _("Remittance of commercial paper - credit under usual reserve"), - "50": _("Remittance of commercial paper - credit after collection"), - "49": _("Cancellation or correction"), - "39": _("Return of an irregular bill of exchange"), - "37": _("Costs related to commercial paper"), - "14": _("Warrant fallen due"), - "12": _("Safe custody"), - "10": _("Renewal of agreed maturity date"), - "09": _("Agio on supplier's bill"), - "08": _("Payment in advance"), - "07": _("Unpaid commercial paper"), - "06": _("Extension of maturity date"), - "05": _("Commercial paper claimed back"), - "03": _("Payment receipt card"), - "01": _("Payment commercial paper"), - }], - "09": [_("Counter transactions"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Sale of traveller’s cheque"), - "68": _("Difference in payment"), - "66": _("Repurchase of petrol coupons"), - "64": _("Your winning lottery ticket"), - "62": _("Sale of gold/pieces under usual reserve"), - "60": _("Sale of foreign bank notes"), - "58": _("Payment by your branch/agents"), - "56": _("Reserve"), - "54": _("Your payment ATM"), - "52": _("Payment night safe"), - "50": _("Cash payment"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "25": _("Purchase of traveller’s cheque"), - "21": _("Cash withdrawal on card (PROTON)"), - "19": _("Difference in payment"), - "17": _("Purchase of fiscal stamps"), - "15": _("Your purchase of lottery tickets"), - "13": _("Cash withdrawal by your branch or agents"), - "11": _("Your purchase of luncheon vouchers"), - "09": _("Purchase of petrol coupons"), - "07": _("Purchase of gold/pieces"), - "05": _("Purchase of foreign bank notes"), - "03": _("Cash withdrawal by card (ATM)"), - "01": _("Cash withdrawal"), - }], - "11": [_("Securities"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Settlement of securities"), - "68": _("Compensation for missing coupon"), - "66": _("Retrocession of issue commission"), - "64": _("Your issue"), - "62": _("Interim interest on subscription"), - "58": _("Repayable securities from a deposit or delivered at the counter - credit under usual reserve"), - "56": _("Reserve"), - "52": _("Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve"), - "51": _("Tender"), - "50": _("Sale of securities"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "19": _("Regularisation costs"), - "17": _("Management fee"), - "15": _("Interim interest on subscription"), - "13": _("Your repurchase of issue"), - "11": _("Payable coupons/repayable securities"), - "09": _("Settlement of securities"), - "06": _("Share option plan – exercising an option"), - "05": _("Partial payment subscription"), - "04": _("Issues"), - "03": _("Subscription to securities"), - "02": _("Tenders"), - "01": _("Purchase of securities"), - }], - "13": [_("Credit"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Settlement of discount bank acceptance"), - "68": _("Documentary export credits"), - "62": _("Term loan"), - "60": _("Settlement of mortgage loan"), - "56": _("Subsidy"), - "55": _("Fixed advance – interest only"), - "54": _("Fixed advance – capital and interest"), - "50": _("Settlement of instalment credit"), - "49": _("Cancellation or correction"), - "37": _("Credit-related costs"), - "21": _("Other credit applications"), - "19": _("Documentary import credits"), - "15": _("Your repayment hire-purchase and similar claims"), - "13": _("Settlement of bank acceptances"), - "11": _("Your repayment mortgage loan"), - "07": _("Your repayment instalment credits"), - "05": _("Settlement of fixed advance"), - "02": _("Long-term loan"), - "01": _("Short-term loan"), - }], - "30": [_("Various transactions"), { - "99": _("Cancellation or correction"), - "89": _("Undefined transaction"), - "87": _("Reimbursement of costs"), - "83": _("Value (date) correction"), - "55": _("Interest term investment"), - "54": _("Capital and/or interest term investment"), - "52": _("Forward sale of foreign exchange"), - "50": _("Spot sale of foreign exchange"), - "49": _("Cancellation or correction"), - "39": _("Undefined transaction"), - "37": _("Costs"), - "33": _("Value (date) correction"), - "05": _("Capital and/or interest term investment"), - "03": _("Forward purchase of foreign exchange"), - "01": _("Spot purchase of foreign exchange"), - }], - "35": [_("Closing (periodical settlements for interest, costs,…)"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "50": _("Closing"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "01": _("Closing"), - }], - "41": [_("International credit transfers - non-SEPA credit transfers"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "66": _("Financial centralisation (credit)"), - "64": _("Transfer to your account"), - "50": _("Transfer"), - "49": _("Cancellation or correction"), - "38": _("Costs relating to incoming foreign and non-SEPA transfers"), - "37": _("Costs relating to outgoing foreign transfers and non-SEPA transfers"), - "17": _("Financial centralisation (debit)"), - "13": _("Transfer from your account"), - "07": _("Collective transfers"), - "05": _("Collective payments of wages"), - "03": _("Standing order"), - "01": _("Transfer"), - }], - "43": [_("Foreign cheques"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Purchase of traveller’s cheque"), - "62": _("Reversal of cheques"), - "58": _("Remittance of foreign cheque credit after collection"), - "52": _("Remittance of foreign cheque credit under usual reserve"), - "49": _("Cancellation or correction"), - "37": _("Costs relating to payment of foreign cheques"), - "15": _("Purchase of an international bank cheque"), - "07": _("Unpaid foreign cheque"), - "01": _("Payment of a foreign cheque"), - }], - "47": [_("Foreign commercial paper"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "64": _("Warrant"), - "62": _("Remittance of documents abroad - credit after collection"), - "60": _("Remittance of documents abroad - credit under usual reserve"), - "58": _("Idem without guarantee"), - "56": _("Remittance of guaranteed foreign supplier's bill"), - "54": _("Discount abroad"), - "52": _("Remittance of foreign bill credit under usual reserve"), - "50": _("Remittance of foreign bill credit after collection"), - "49": _("Cancellation or correction"), - "37": _("Costs relating to the payment of a foreign bill"), - "14": _("Warrant fallen due"), - "13": _("Discount foreign supplier's bills"), - "11": _("Payment documents abroad"), - "07": _("Unpaid foreign bill"), - "06": _("Extension"), - "05": _("Bill claimed back"), - "01": _("Payment of foreign bill"), - }], - "49": [_("Foreign counter transactions"), {"03": _("ATM withdrawal")}], - "80": [_("Separately charged costs and provisions"), { - "01": _("Guarantee card charges"), - "02": _("Costs relating to electronic output"), - "03": _("Payment card charges"), - "04": _("Costs for holding a documentary cash credit"), - "05": _("Card charges"), - "06": _("Damage relating to bills and cheques"), - "07": _("Insurance costs"), - "08": _("Registering compensation for savings accounts"), - "09": _("Postage"), - "10": _("Purchase of Smartcard"), - "11": _("Costs for the safe custody of correspondence"), - "12": _("Costs for opening a bank guarantee"), - "13": _("Renting of safes"), - "14": _("Handling costs instalment credit"), - "15": _("Night safe"), - "16": _("Bank confirmation to revisor or accountant"), - "17": _("Charge for safe custody"), - "18": _("Trade information"), - "19": _("Special charge for safe custody"), - "20": _("Drawing up a certificate"), - "21": _("Pay-packet charges"), - "22": _("Management/custody"), - "23": _("Research costs"), - "24": _("Participation in and management of interest refund system"), - "25": _("Renting of direct debit box"), - "26": _("Travel insurance premium"), - "27": _("Subscription fee"), - "29": _("Information charges"), - "31": _("Writ service fee"), - "33": _("Miscellaneous fees and commissions"), - "35": _("Costs"), - "37": _("Access right to database"), - "39": _("Surety fee"), - "41": _("Research costs"), - "43": _("Printing of forms"), - "45": _("Documentary credit charges"), - "47": _("Charging fees for transactions"), - "49": _("Cancellation or correction"), - "99": _("Cancellation or correction"), - }], -} - -transaction_categories = { - "000": _("Net amount"), - "001": _("Interest received"), - "002": _("Interest paid"), - "003": _("Credit commission"), - "004": _("Postage"), - "005": _("Renting of letterbox"), - "006": _("Various fees/commissions"), - "007": _("Access right to database"), - "008": _("Information charges"), - "009": _("Travelling expenses"), - "010": _("Writ service fee"), - "011": _("VAT"), - "012": _("Exchange commission"), - "013": _("Payment commission"), - "014": _("Collection commission"), - "015": _("Correspondent charges"), - "016": _("BLIW/IBLC dues"), - "017": _("Research costs"), - "018": _("Tental guarantee charges"), - "019": _("Tax on physical delivery"), - "020": _("Costs of physical delivery"), - "021": _("Costs for drawing up a bank cheque"), - "022": _("Priority costs"), - "023": _("Exercising fee"), - "024": _("Growth premium"), - "025": _("Individual entry for exchange charges"), - "026": _("Handling commission"), - "027": _("Charges for unpaid bills"), - "028": _("Fidelity premium"), - "029": _("Protest charges"), - "030": _("Account insurance"), - "031": _("Charges foreign cheque"), - "032": _("Drawing up a circular cheque"), - "033": _("Charges for a foreign bill"), - "034": _("Reinvestment fee"), - "035": _("Charges foreign documentary bill"), - "036": _("Costs relating to a refused cheque"), - "037": _("Commission for handling charges"), - "039": _("Telecommunications"), - "041": _("Credit card costs"), - "042": _("Payment card costs"), - "043": _("Insurance costs"), - "045": _("Handling costs"), - "047": _("Charges extension bill"), - "049": _("Fiscal stamps/stamp duty"), - "050": _("Capital term investment"), - "051": _("Withholding tax"), - "052": _("Residence state tax"), - "053": _("Printing of forms"), - "055": _("Repayment loan or credit capital"), - "057": _("Interest subsidy"), - "058": _("Capital premium"), - "059": _("Default interest"), - "061": _("Charging fees for transactions"), - "063": _("Rounding differences"), - "065": _("Interest payment advice"), - "066": _("Fixed loan advance - reimbursement"), - "067": _("Fixed loan advance - extension"), - "068": _("Countervalue of an entry"), - "069": _("Forward arbitrage contracts : sum to be supplied by customer"), - "070": _("Forward arbitrage contracts : sum to be supplied by bank"), - "071": _("Fixed loan advance - availability"), - "072": _("Countervalue of commission to third party"), - "073": _("Costs of ATM abroad"), - "074": _("Mailing costs"), - "100": _("Gross amount"), - "200": _("Overall documentary credit charges"), - "201": _("Advice notice commission"), - "202": _("Advising commission | Additional advising commission"), - "203": _("Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission"), - "204": _("Amendment fee"), - "205": _("Documentary payment commission | Document commission | Drawdown fee | Negotiation fee"), - "206": _("Surety fee/payment under reserve"), - "207": _("Non-conformity fee"), - "208": _("Commitment fee deferred payment"), - "209": _("Transfer commission"), - "210": _("Commitment fee"), - "211": _("Credit arrangement fee | Additional credit arrangement fee"), - "212": _("Warehousing fee"), - "213": _("Financing fee"), - "214": _("Issue commission (delivery order)"), - "400": _("Acceptance fee"), - "401": _("Visa charges"), - "402": _("Certification costs"), - "403": _("Minimum discount rate"), - "404": _("Discount commission"), - "405": _("Bill guarantee commission"), - "406": _("Collection charges"), - "407": _("Costs Article 45"), - "408": _("Cover commission"), - "409": _("Safe deposit charges"), - "410": _("Reclamation charges"), - "411": _("Fixed collection charge"), - "412": _("Advice of expiry charges"), - "413": _("Acceptance charges"), - "414": _("Regularisation charges"), - "415": _("Surety fee"), - "416": _("Charges for the deposit of security"), - "418": _("Endorsement commission"), - "419": _("Bank service fee"), - "420": _("Retention charges"), - "425": _("Foreign broker's commission"), - "426": _("Belgian broker's commission"), - "427": _("Belgian Stock Exchange tax"), - "428": _("Interest accrued"), - "429": _("Foreign Stock Exchange tax"), - "430": _("Recovery of foreign tax"), - "431": _("Delivery of a copy"), -} - - -def rmspaces(s): - return " ".join(s.split()) - - - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 819a8f3887ed5ba29930ce40131e4a83648694c9 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Wed, 5 Dec 2012 19:02:02 +0100 Subject: [PATCH 061/163] [FIX]name missing in tree bank statement line bzr revid: dle@openerp.com-20121205180202-amy4yrqotuu0ta5e --- addons/account/account_view.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 562c1ad6fa1..235ded29094 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -574,6 +574,7 @@ + From 28b988940f65d2e114442cfbe57a27a1bac83252 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Wed, 5 Dec 2012 20:21:43 +0100 Subject: [PATCH 062/163] [FIX]Removing _(translate) from transaction code, family, categories + Matching bank account number bzr revid: dle@openerp.com-20121205192143-9qxazjf743z42ycw --- .../wizard/account_coda_import.py | 898 +++++++++--------- 1 file changed, 450 insertions(+), 448 deletions(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 0bde26e1f44..2286caf8f68 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -45,7 +45,6 @@ class account_coda_import(osv.osv_memory): if context is None: context = {} if batch: - print codafile = str(codafile) codafilename = codafilename else: @@ -54,7 +53,7 @@ class account_coda_import(osv.osv_memory): codafile = data.coda_data codafilename = data.coda_fname except: - raise osv.except_osv(_('Error!'), _('Wizard in incorrect state. Please hit the Cancel button!')) + raise osv.except_osv(_('Error'), _('Wizard in incorrect state. Please hit the Cancel button')) return {} recordlist = unicode(base64.decodestring(codafile), 'windows-1252', 'strict').split('\n') statements = [] @@ -67,7 +66,7 @@ class account_coda_import(osv.osv_memory): statements.append(statement) statement['version'] = line[127] if statement['version'] not in ['1', '2']: - raise osv.except_osv(_('Error R001!'), _('CODA V%s statements are not supported, please contact your bank!') % statement['version']) + raise osv.except_osv(_('Error') + 'R001', _('CODA V%s statements are not supported, please contact your bank') % statement['version']) statement['globalisation_stack'] = [] statement['lines'] = [] statement['date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[5:11]), '%d%m%y')) @@ -75,21 +74,31 @@ class account_coda_import(osv.osv_memory): elif line[0] == '1': #Statement details if statement['version'] == '1': - statement['accountNumber'] = rmspaces(line[5:17]) + statement['acc_number'] = rmspaces(line[5:17]) statement['currency'] = rmspaces(line[18:21]) elif statement['version'] == '2': if line[1] == '0': # Belgian bank account BBAN structure - statement['accountNumber'] = rmspaces(line[5:17]) + statement['acc_number'] = rmspaces(line[5:17]) statement['currency'] = rmspaces(line[18:21]) elif line[1] == '1': # foreign bank account BBAN structure - raise osv.except_osv(_('Error R1001!'), _('Foreign bank accounts with BBAN structure are not supported !')) + raise osv.except_osv(_('Error') + 'R1001', _('Foreign bank accounts with BBAN structure are not supported ')) elif line[1] == '2': # Belgian bank account IBAN structure - statement['accountNumber'] = rmspaces(line[5:21]) + statement['acc_number'] = rmspaces(line[5:21]) statement['currency'] = rmspaces(line[39:42]) elif line[1] == '3': # foreign bank account IBAN structure - raise osv.except_osv(_('Error R1002!'), _('Foreign bank accounts with IBAN structure are not supported !')) + raise osv.except_osv(_('Error') + 'R1002', _('Foreign bank accounts with IBAN structure are not supported ')) else: # Something else, not supported - raise osv.except_osv(_('Error R1003!'), _('Unsupported bank account structure !')) + raise osv.except_osv(_('Error') + 'R1003', _('Unsupported bank account structure ')) + ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', statement['acc_number'])]) + not_found_except = osv.except_osv(_('Error') + 'R1004', _("No matching CODA Bank Account Configuration record found. Please check if the 'Bank Account Number' and 'Currency' fields of your configuration record match with '%s' and '%s'.") % (statement['acc_number'], statement['currency'])) + if ids and len(ids) > 0: + bank_accs = self.pool.get('res.partner.bank').browse(cr, uid, ids) + for bank_acc in bank_accs: + statement['journal_id'] = bank_acc.journal_id + if (statement['journal_id'].currency and statement['journal_id'].currency.name != statement['currency']) and (not statement['journal_id'].currency and statement['journal_id'].company_id.currency_id.name != statement['currency']): + raise not_found_except + else: + raise not_found_except statement['description'] = rmspaces(line[90:125]) statement['balance_start'] = float(rmspaces(line[43:58])) / 1000 statement['balance_start_date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[58:64]), '%d%m%y')) @@ -112,16 +121,12 @@ class account_coda_import(osv.osv_memory): statementLine['amount'] = - statementLine['amount'] statementLine['transaction_type'] = line[53] if statementLine['transaction_type'] not in transaction_types: - raise osv.except_osv(_('Error R2001!'), _('The File contains an invalid CODA Transaction Type : %s!') % statementLine['transaction_type']) + raise osv.except_osv(_('Error') + 'R2001', _('The File contains an invalid CODA Transaction Type : %s') % statementLine['transaction_type']) statementLine['transactionDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[47:53]), '%d%m%y')) statementLine['transaction_family'] = rmspaces(line[54:56]) - #TODO Handling severals transactions Family statementLine['transaction_code'] = rmspaces(line[56:58]) - #TODO Handling severals transactions code statementLine['transaction_category'] = rmspaces(line[58:61]) - #TODO Handling severals transactions category statementLine['communication'] = rmspaces(line[62:115]) - #TODO Handling structured communication statementLine['entryDate'] = rmspaces(line[115:121]) statementLine['type'] = 'normal' statementLine['globalisation'] = int(line[124]) @@ -138,13 +143,13 @@ class account_coda_import(osv.osv_memory): statement['lines'].append(statementLine) elif line[1] == '2': if statement['lines'][-1]['ref'][0:4] != line[2:6]: - raise osv.except_osv(_('Error R2004!'), _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + raise osv.except_osv(_('Error') + 'R2004', _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) statement['lines'][-1]['communication'] += rmspaces(line[10:63]) statement['lines'][-1]['payment_reference'] = rmspaces(line[63:98]) statement['lines'][-1]['counterparty_bic'] = rmspaces(line[98:109]) elif line[1] == '3': if statement['lines'][-1]['ref'][0:4] != line[2:6]: - raise osv.except_osv(_('Error R2005!'), _('CODA parsing error on movement data record 2.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + raise osv.except_osv(_('Error') + 'R2005', _('CODA parsing error on movement data record 2.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) if statement['version'] == '1': statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:125]) @@ -160,7 +165,7 @@ class account_coda_import(osv.osv_memory): statement['lines'][-1]['communication'] += rmspaces(line[82:125]) else: # movement data record 2.x (x != 1,2,3) - raise osv.except_osv(_('Error R2009!'), _('\nMovement data records of type 2.%s are not supported !') % line[1]) + raise osv.except_osv(_('Error') + 'R2006', _('\nMovement data records of type 2.%s are not supported ') % line[1]) elif line[0] == '3': if line[1] == '1': infoLine = {} @@ -179,11 +184,11 @@ class account_coda_import(osv.osv_memory): statement['lines'].append(infoLine) elif line[1] == '2': if infoLine['ref'] != rmspaces(line[2:10]): - raise osv.except_osv(_('Error R3004!'), _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + raise osv.except_osv(_('Error') + 'R3004', _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) statement['lines'][-1]['communication'] += rmspaces(line[10:100]) elif line[1] == '3': if infoLine['ref'] != rmspaces(line[2:10]): - raise osv.except_osv(_('Error R3005!'), _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) + raise osv.except_osv(_('Error') + 'R3005', _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) statement['lines'][-1]['communication'] += rmspaces(line[10:100]) elif line[0] == '4': comm_line = {} @@ -207,7 +212,7 @@ class account_coda_import(osv.osv_memory): else: period_id = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', statement['date']), ('date_stop', '>=', statement['date'])]) if not period_id and len(period_id) == 0: - raise osv.except_osv(_('Error R0002!'), _("The CODA Statement New Balance date doesn't fall within a defined Accounting Period! Please create the Accounting Period for date %s.") % statement['balance_end_realDate']) + raise osv.except_osv(_('Error') + 'R0002', _("The CODA Statement New Balance date doesn't fall within a defined Accounting Period! Please create the Accounting Period for date %s.") % statement['balance_end_realDate']) statement['period_id'] = period_id[0] elif line[0] == '9': statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000 @@ -215,16 +220,13 @@ class account_coda_import(osv.osv_memory): if not statement['balance_end_real']: statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin'] for i, statement in enumerate(statements): - # print '---STATEMENT #' + str(i) + '---' - print statement data = { 'name': '[' + statement['date'] + ']' + statement['description'], 'date': statement['date'], - 'journal_id': 18, + 'journal_id': statement['journal_id'].id, 'period_id': statement['period_id'], 'balance_start': statement['balance_start'], 'balance_end_real': statement['balance_end_real'], - 'account_id': 1 } statement['id'] = self.pool.get('account.bank.statement').create(cr, uid, data, context=context) for line in statement['lines']: @@ -264,7 +266,7 @@ class account_coda_import(osv.osv_memory): if 'counterpartyNumber' in line and line['counterpartyNumber']: ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) if ids and len(ids) > 0: - partner_id = self.pool.get('res.partner.bank').browse(cr, uid, ids[0],context=context).partner_id.id + partner_id = self.pool.get('res.partner.bank').browse(cr, uid, ids[0], context=context).partner_id.id else: partner_id = None @@ -275,7 +277,7 @@ class account_coda_import(osv.osv_memory): 'amount': line['amount'], # 'type': '', 'partner_id': partner_id, - 'account_id': 1, + 'account_id': 1, # TODO 'statement_id': statement['id'], # 'analytic_account_id': '', # 'move_ids': '', @@ -287,449 +289,449 @@ class account_coda_import(osv.osv_memory): account_coda_import() transaction_types = { - "0": ["", _("Simple amount without detailed data; e.g. : an individual credit transfer [free of charges].")], - "1": ["", _("Amount as totalised by the customer; e.g. a file regrouping payments of wages or payments made to suppliers or a file regrouping collections for which the customer is ]debited or credited with one single amount. As a matter of principle, this type is also used when no detailed data is following [type 5].")], - "5": ["1", _("Detail of 1. Standard procedure is no detailing. However, the customer may ask for detailed data to be included into his file after the overall record [type 1].")], - "2": ["", _("Amount as totalised by the bank; e.g. : the total amount of a series of credit transfers with a structured communication As a matter of principle, this type will also be used when no detailed data [type 6 or 7] is following.")], - "6": ["2", _("Detail of 2. Simple amount without detailed data. Normally, data of this kind comes after type 2. The customer may ask for a separate file containing the detailed data. In that case, one will speak of a ‘separate application’. The records in a separate application keep type 6.")], - "7": ["2", _("Detail of 2. Simple account with detailed data The records in a separate application keep type 7.")], - "9": ["7", _("Detail of 7. The records in a separate application keep type 9.")], - "3": ["", _("Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers.")], - "8": ["3", _("Detail of 3.")], + "0": ["", "Simple amount without detailed data; e.g. : an individual credit transfer [free of charges]."], + "1": ["", "Amount as totalised by the customer; e.g. a file regrouping payments of wages or payments made to suppliers or a file regrouping collections for which the customer is ]debited or credited with one single amount. As a matter of principle, this type is also used when no detailed data is following [type 5]."], + "5": ["1", "Detail of 1. Standard procedure is no detailing. However, the customer may ask for detailed data to be included into his file after the overall record [type 1]."], + "2": ["", "Amount as totalised by the bank; e.g. : the total amount of a series of credit transfers with a structured communication As a matter of principle, this type will also be used when no detailed data [type 6 or 7] is following."], + "6": ["2", "Detail of 2. Simple amount without detailed data. Normally, data of this kind comes after type 2. The customer may ask for a separate file containing the detailed data. In that case, one will speak of a ‘separate application’. The records in a separate application keep type 6."], + "7": ["2", "Detail of 2. Simple account with detailed data The records in a separate application keep type 7."], + "9": ["7", "Detail of 7. The records in a separate application keep type 9."], + "3": ["", "Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers."], + "8": ["3", "Detail of 3."], } transaction_codes = { - "00": [_("Undefined transactions"), { - "89": _("Cancellation of a transaction"), - "87": _("Costs refunded"), - "85": _("Correction"), - "83": _("Value correction"), - "39": _("Cancellation of a transaction"), - "37": _("Costs"), - "35": _("Correction"), - "33": _("Value correction"), - "00": _("Undefined transaction") + "00": ["Undefined transactions", { + "89": "Cancellation of a transaction", + "87": "Costs refunded", + "85": "Correction", + "83": "Value correction", + "39": "Cancellation of a transaction", + "37": "Costs", + "35": "Correction", + "33": "Value correction", + "00": "Undefined transaction", }], - "01": [_("Domestic or local SEPA credit transfers"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "66": _("Financial centralization"), - "64": _("Transfer to your account"), - "62": _("Unpaid postal order"), - "60": _("Non-presented circular cheque"), - "54": _("Unexecutable transfer order"), - "52": _("Payment in your favour"), - "51": _("Transfer in your favour – initiated by the bank"), - "50": _("Transfer in your favour"), - "49": _("Cancellation or correction"), - "39": _("Your issue circular cheque"), - "37": _("Costs"), - "17": _("Financial centralisation"), - "15": _("Balance due insurance premium"), - "13": _("Transfer from your account"), - "11": _("Your semi-standing order – payment to employees"), - "09": _("Your semi-standing order"), - "07": _("Collective transfer"), - "05": _("Payment of wages etc."), - "03": _("Standing order"), - "02": _("Individual transfer order initiated by the bank"), - "01": _("Individual transfer order]"), + "01": ["Domestic or local SEPA credit transfers", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "66": "Financial centralization", + "64": "Transfer to your account", + "62": "Unpaid postal order", + "60": "Non-presented circular cheque", + "54": "Unexecutable transfer order", + "52": "Payment in your favour", + "51": "Transfer in your favour – initiated by the bank", + "50": "Transfer in your favour", + "49": "Cancellation or correction", + "39": "Your issue circular cheque", + "37": "Costs", + "17": "Financial centralisation", + "15": "Balance due insurance premium", + "13": "Transfer from your account", + "11": "Your semi-standing order – payment to employees", + "09": "Your semi-standing order", + "07": "Collective transfer", + "05": "Payment of wages etc.", + "03": "Standing order", + "02": "Individual transfer order initiated by the bank", + "01": "Individual transfer order", }], - "03": [_("Cheques"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of cheque-related costs"), - "68": _("Credit of a payment via electronic purse"), - "66": _("Remittance of cheque by your branch - credit under usual reserve"), - "64": _("Reversal of settlement of credit card"), - "63": _("Second credit of unpaid cheque"), - "62": _("Reversal of cheque"), - "60": _("Reversal of voucher"), - "58": _("Remittance of cheques, vouchers, etc. credit after collection"), - "56": _("Non-presented certified cheques"), - "52": _("First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve"), - "50": _("Credit of a payment via terminal"), - "49": _("Cancellation or correction"), - "39": _("Provisionally unpaid due to other reason than manual presentation"), - "38": _("Provisionally unpaid"), - "37": _("Cheque-related costs"), - "35": _("Cash advance"), - "19": _("Settlement of credit cards"), - "17": _("Your certified cheque"), - "15": _("Your purchase bank cheque"), - "13": _("Eurocheque written out abroad"), - "11": _("Department store cheque"), - "09": _("Unpaid voucher"), - "07": _("Definitely unpaid cheque"), - "05": _("Payment of voucher"), - "03": _("Your purchase by payment card"), - "01": _("Payment of your cheque"), + "03": ["Cheques", { + "99": "Cancellation or correction", + "87": "Reimbursement of cheque-related costs", + "68": "Credit of a payment via electronic purse", + "66": "Remittance of cheque by your branch - credit under usual reserve", + "64": "Reversal of settlement of credit card", + "63": "Second credit of unpaid cheque", + "62": "Reversal of cheque", + "60": "Reversal of voucher", + "58": "Remittance of cheques, vouchers, etc. credit after collection", + "56": "Non-presented certified cheques", + "52": "First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve", + "50": "Credit of a payment via terminal", + "49": "Cancellation or correction", + "39": "Provisionally unpaid due to other reason than manual presentation", + "38": "Provisionally unpaid", + "37": "Cheque-related costs", + "35": "Cash advance", + "19": "Settlement of credit cards", + "17": "Your certified cheque", + "15": "Your purchase bank cheque", + "13": "Eurocheque written out abroad", + "11": "Department store cheque", + "09": "Unpaid voucher", + "07": "Definitely unpaid cheque", + "05": "Payment of voucher", + "03": "Your purchase by payment card", + "01": "Payment of your cheque", }], - "04": [_("Cards"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "68": _("Credit after Proton payments"), - "55": _("Income from payments by GSM"), - "53": _("Cash deposit at an ATM"), - "52": _("Loading GSM cards"), - "51": _("Unloading Proton"), - "50": _("Credit after a payment at a terminal"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "08": _("Payment by means of a payment card outside the Eurozone"), - "07": _("Payment by GSM"), - "06": _("Payment with tank card"), - "05": _("Loading Proton"), - "04": _("Cash withdrawal from an ATM"), - "03": _("Settlement credit cards"), - "02": _("Payment by means of a payment card within the Eurozone"), - "01": _("Loading a GSM card"), + "04": ["Cards", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "68": "Credit after Proton payments", + "55": "Income from payments by GSM", + "53": "Cash deposit at an ATM", + "52": "Loading GSM cards", + "51": "Unloading Proton", + "50": "Credit after a payment at a terminal", + "49": "Cancellation or correction", + "37": "Costs", + "08": "Payment by means of a payment card outside the Eurozone", + "07": "Payment by GSM", + "06": "Payment with tank card", + "05": "Loading Proton", + "04": "Cash withdrawal from an ATM", + "03": "Settlement credit cards", + "02": "Payment by means of a payment card within the Eurozone", + "01": "Loading a GSM card", }], - "05": [_("Direct debit"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "58": _("Reversal"), - "56": _("Unexecutable reimbursement"), - "54": _("Reimbursement"), - "52": _("Credit under usual reserve"), - "50": _("Credit after collection"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "05": _("Reimbursement"), - "03": _("Unpaid debt"), - "01": _("Payment"), + "05": ["Direct debit", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "58": "Reversal", + "56": "Unexecutable reimbursement", + "54": "Reimbursement", + "52": "Credit under usual reserve", + "50": "Credit after collection", + "49": "Cancellation or correction", + "37": "Costs", + "05": "Reimbursement", + "03": "Unpaid debt", + "01": "Payment", }], - "07": [_("Domestic commercial paper"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "86": _("Payment after cession"), - "64": _("Warrant"), - "58": _("Remittance of supplier's bill without guarantee"), - "56": _("Remittance of supplier's bill with guarantee"), - "54": _("Remittance of commercial paper for discount"), - "52": _("Remittance of commercial paper - credit under usual reserve"), - "50": _("Remittance of commercial paper - credit after collection"), - "49": _("Cancellation or correction"), - "39": _("Return of an irregular bill of exchange"), - "37": _("Costs related to commercial paper"), - "14": _("Warrant fallen due"), - "12": _("Safe custody"), - "10": _("Renewal of agreed maturity date"), - "09": _("Agio on supplier's bill"), - "08": _("Payment in advance"), - "07": _("Unpaid commercial paper"), - "06": _("Extension of maturity date"), - "05": _("Commercial paper claimed back"), - "03": _("Payment receipt card"), - "01": _("Payment commercial paper"), + "07": ["Domestic commercial paper", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "86": "Payment after cession", + "64": "Warrant", + "58": "Remittance of supplier's bill without guarantee", + "56": "Remittance of supplier's bill with guarantee", + "54": "Remittance of commercial paper for discount", + "52": "Remittance of commercial paper - credit under usual reserve", + "50": "Remittance of commercial paper - credit after collection", + "49": "Cancellation or correction", + "39": "Return of an irregular bill of exchange", + "37": "Costs related to commercial paper", + "14": "Warrant fallen due", + "12": "Safe custody", + "10": "Renewal of agreed maturity date", + "09": "Agio on supplier's bill", + "08": "Payment in advance", + "07": "Unpaid commercial paper", + "06": "Extension of maturity date", + "05": "Commercial paper claimed back", + "03": "Payment receipt card", + "01": "Payment commercial paper", }], - "09": [_("Counter transactions"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Sale of traveller’s cheque"), - "68": _("Difference in payment"), - "66": _("Repurchase of petrol coupons"), - "64": _("Your winning lottery ticket"), - "62": _("Sale of gold/pieces under usual reserve"), - "60": _("Sale of foreign bank notes"), - "58": _("Payment by your branch/agents"), - "56": _("Reserve"), - "54": _("Your payment ATM"), - "52": _("Payment night safe"), - "50": _("Cash payment"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "25": _("Purchase of traveller’s cheque"), - "21": _("Cash withdrawal on card (PROTON)"), - "19": _("Difference in payment"), - "17": _("Purchase of fiscal stamps"), - "15": _("Your purchase of lottery tickets"), - "13": _("Cash withdrawal by your branch or agents"), - "11": _("Your purchase of luncheon vouchers"), - "09": _("Purchase of petrol coupons"), - "07": _("Purchase of gold/pieces"), - "05": _("Purchase of foreign bank notes"), - "03": _("Cash withdrawal by card (ATM)"), - "01": _("Cash withdrawal"), + "09": ["Counter transactions", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "70": "Sale of traveller’s cheque", + "68": "Difference in payment", + "66": "Repurchase of petrol coupons", + "64": "Your winning lottery ticket", + "62": "Sale of gold/pieces under usual reserve", + "60": "Sale of foreign bank notes", + "58": "Payment by your branch/agents", + "56": "Reserve", + "54": "Your payment ATM", + "52": "Payment night safe", + "50": "Cash payment", + "49": "Cancellation or correction", + "37": "Costs", + "25": "Purchase of traveller’s cheque", + "21": "Cash withdrawal on card (PROTON)", + "19": "Difference in payment", + "17": "Purchase of fiscal stamps", + "15": "Your purchase of lottery tickets", + "13": "Cash withdrawal by your branch or agents", + "11": "Your purchase of luncheon vouchers", + "09": "Purchase of petrol coupons", + "07": "Purchase of gold/pieces", + "05": "Purchase of foreign bank notes", + "03": "Cash withdrawal by card (ATM)", + "01": "Cash withdrawal", }], - "11": [_("Securities"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Settlement of securities"), - "68": _("Compensation for missing coupon"), - "66": _("Retrocession of issue commission"), - "64": _("Your issue"), - "62": _("Interim interest on subscription"), - "58": _("Repayable securities from a deposit or delivered at the counter - credit under usual reserve"), - "56": _("Reserve"), - "52": _("Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve"), - "51": _("Tender"), - "50": _("Sale of securities"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "19": _("Regularisation costs"), - "17": _("Management fee"), - "15": _("Interim interest on subscription"), - "13": _("Your repurchase of issue"), - "11": _("Payable coupons/repayable securities"), - "09": _("Settlement of securities"), - "06": _("Share option plan – exercising an option"), - "05": _("Partial payment subscription"), - "04": _("Issues"), - "03": _("Subscription to securities"), - "02": _("Tenders"), - "01": _("Purchase of securities"), + "11": ["Securities", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "70": "Settlement of securities", + "68": "Compensation for missing coupon", + "66": "Retrocession of issue commission", + "64": "Your issue", + "62": "Interim interest on subscription", + "58": "Repayable securities from a deposit or delivered at the counter - credit under usual reserve", + "56": "Reserve", + "52": "Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve", + "51": "Tender", + "50": "Sale of securities", + "49": "Cancellation or correction", + "37": "Costs", + "19": "Regularisation costs", + "17": "Management fee", + "15": "Interim interest on subscription", + "13": "Your repurchase of issue", + "11": "Payable coupons/repayable securities", + "09": "Settlement of securities", + "06": "Share option plan – exercising an option", + "05": "Partial payment subscription", + "04": "Issues", + "03": "Subscription to securities", + "02": "Tenders", + "01": "Purchase of securities", }], - "13": [_("Credit"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Settlement of discount bank acceptance"), - "68": _("Documentary export credits"), - "62": _("Term loan"), - "60": _("Settlement of mortgage loan"), - "56": _("Subsidy"), - "55": _("Fixed advance – interest only"), - "54": _("Fixed advance – capital and interest"), - "50": _("Settlement of instalment credit"), - "49": _("Cancellation or correction"), - "37": _("Credit-related costs"), - "21": _("Other credit applications"), - "19": _("Documentary import credits"), - "15": _("Your repayment hire-purchase and similar claims"), - "13": _("Settlement of bank acceptances"), - "11": _("Your repayment mortgage loan"), - "07": _("Your repayment instalment credits"), - "05": _("Settlement of fixed advance"), - "02": _("Long-term loan"), - "01": _("Short-term loan"), + "13": ["Credit", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "70": "Settlement of discount bank acceptance", + "68": "Documentary export credits", + "62": "Term loan", + "60": "Settlement of mortgage loan", + "56": "Subsidy", + "55": "Fixed advance – interest only", + "54": "Fixed advance – capital and interest", + "50": "Settlement of instalment credit", + "49": "Cancellation or correction", + "37": "Credit-related costs", + "21": "Other credit applications", + "19": "Documentary import credits", + "15": "Your repayment hire-purchase and similar claims", + "13": "Settlement of bank acceptances", + "11": "Your repayment mortgage loan", + "07": "Your repayment instalment credits", + "05": "Settlement of fixed advance", + "02": "Long-term loan", + "01": "Short-term loan", }], - "30": [_("Various transactions"), { - "99": _("Cancellation or correction"), - "89": _("Undefined transaction"), - "87": _("Reimbursement of costs"), - "83": _("Value (date) correction"), - "55": _("Interest term investment"), - "54": _("Capital and/or interest term investment"), - "52": _("Forward sale of foreign exchange"), - "50": _("Spot sale of foreign exchange"), - "49": _("Cancellation or correction"), - "39": _("Undefined transaction"), - "37": _("Costs"), - "33": _("Value (date) correction"), - "05": _("Capital and/or interest term investment"), - "03": _("Forward purchase of foreign exchange"), - "01": _("Spot purchase of foreign exchange"), + "30": ["Various transactions", { + "99": "Cancellation or correction", + "89": "Undefined transaction", + "87": "Reimbursement of costs", + "83": "Value (date) correction", + "55": "Interest term investment", + "54": "Capital and/or interest term investment", + "52": "Forward sale of foreign exchange", + "50": "Spot sale of foreign exchange", + "49": "Cancellation or correction", + "39": "Undefined transaction", + "37": "Costs", + "33": "Value (date) correction", + "05": "Capital and/or interest term investment", + "03": "Forward purchase of foreign exchange", + "01": "Spot purchase of foreign exchange", }], - "35": [_("Closing (periodical settlements for interest, costs,…)"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "50": _("Closing"), - "49": _("Cancellation or correction"), - "37": _("Costs"), - "01": _("Closing"), + "35": ["Closing (periodical settlements for interest, costs,…)", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "50": "Closing", + "49": "Cancellation or correction", + "37": "Costs", + "01": "Closing", }], - "41": [_("International credit transfers - non-SEPA credit transfers"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "66": _("Financial centralisation (credit)"), - "64": _("Transfer to your account"), - "50": _("Transfer"), - "49": _("Cancellation or correction"), - "38": _("Costs relating to incoming foreign and non-SEPA transfers"), - "37": _("Costs relating to outgoing foreign transfers and non-SEPA transfers"), - "17": _("Financial centralisation (debit)"), - "13": _("Transfer from your account"), - "07": _("Collective transfers"), - "05": _("Collective payments of wages"), - "03": _("Standing order"), - "01": _("Transfer"), + "41": ["International credit transfers - non-SEPA credit transfers", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "66": "Financial centralisation (credit)", + "64": "Transfer to your account", + "50": "Transfer", + "49": "Cancellation or correction", + "38": "Costs relating to incoming foreign and non-SEPA transfers", + "37": "Costs relating to outgoing foreign transfers and non-SEPA transfers", + "17": "Financial centralisation (debit)", + "13": "Transfer from your account", + "07": "Collective transfers", + "05": "Collective payments of wages", + "03": "Standing order", + "01": "Transfer", }], - "43": [_("Foreign cheques"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "70": _("Purchase of traveller’s cheque"), - "62": _("Reversal of cheques"), - "58": _("Remittance of foreign cheque credit after collection"), - "52": _("Remittance of foreign cheque credit under usual reserve"), - "49": _("Cancellation or correction"), - "37": _("Costs relating to payment of foreign cheques"), - "15": _("Purchase of an international bank cheque"), - "07": _("Unpaid foreign cheque"), - "01": _("Payment of a foreign cheque"), + "43": ["Foreign cheques", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "70": "Purchase of traveller’s cheque", + "62": "Reversal of cheques", + "58": "Remittance of foreign cheque credit after collection", + "52": "Remittance of foreign cheque credit under usual reserve", + "49": "Cancellation or correction", + "37": "Costs relating to payment of foreign cheques", + "15": "Purchase of an international bank cheque", + "07": "Unpaid foreign cheque", + "01": "Payment of a foreign cheque", }], - "47": [_("Foreign commercial paper"), { - "99": _("Cancellation or correction"), - "87": _("Reimbursement of costs"), - "64": _("Warrant"), - "62": _("Remittance of documents abroad - credit after collection"), - "60": _("Remittance of documents abroad - credit under usual reserve"), - "58": _("Idem without guarantee"), - "56": _("Remittance of guaranteed foreign supplier's bill"), - "54": _("Discount abroad"), - "52": _("Remittance of foreign bill credit under usual reserve"), - "50": _("Remittance of foreign bill credit after collection"), - "49": _("Cancellation or correction"), - "37": _("Costs relating to the payment of a foreign bill"), - "14": _("Warrant fallen due"), - "13": _("Discount foreign supplier's bills"), - "11": _("Payment documents abroad"), - "07": _("Unpaid foreign bill"), - "06": _("Extension"), - "05": _("Bill claimed back"), - "01": _("Payment of foreign bill"), + "47": ["Foreign commercial paper", { + "99": "Cancellation or correction", + "87": "Reimbursement of costs", + "64": "Warrant", + "62": "Remittance of documents abroad - credit after collection", + "60": "Remittance of documents abroad - credit under usual reserve", + "58": "Idem without guarantee", + "56": "Remittance of guaranteed foreign supplier's bill", + "54": "Discount abroad", + "52": "Remittance of foreign bill credit under usual reserve", + "50": "Remittance of foreign bill credit after collection", + "49": "Cancellation or correction", + "37": "Costs relating to the payment of a foreign bill", + "14": "Warrant fallen due", + "13": "Discount foreign supplier's bills", + "11": "Payment documents abroad", + "07": "Unpaid foreign bill", + "06": "Extension", + "05": "Bill claimed back", + "01": "Payment of foreign bill", }], - "49": [_("Foreign counter transactions"), {"03": _("ATM withdrawal")}], - "80": [_("Separately charged costs and provisions"), { - "01": _("Guarantee card charges"), - "02": _("Costs relating to electronic output"), - "03": _("Payment card charges"), - "04": _("Costs for holding a documentary cash credit"), - "05": _("Card charges"), - "06": _("Damage relating to bills and cheques"), - "07": _("Insurance costs"), - "08": _("Registering compensation for savings accounts"), - "09": _("Postage"), - "10": _("Purchase of Smartcard"), - "11": _("Costs for the safe custody of correspondence"), - "12": _("Costs for opening a bank guarantee"), - "13": _("Renting of safes"), - "14": _("Handling costs instalment credit"), - "15": _("Night safe"), - "16": _("Bank confirmation to revisor or accountant"), - "17": _("Charge for safe custody"), - "18": _("Trade information"), - "19": _("Special charge for safe custody"), - "20": _("Drawing up a certificate"), - "21": _("Pay-packet charges"), - "22": _("Management/custody"), - "23": _("Research costs"), - "24": _("Participation in and management of interest refund system"), - "25": _("Renting of direct debit box"), - "26": _("Travel insurance premium"), - "27": _("Subscription fee"), - "29": _("Information charges"), - "31": _("Writ service fee"), - "33": _("Miscellaneous fees and commissions"), - "35": _("Costs"), - "37": _("Access right to database"), - "39": _("Surety fee"), - "41": _("Research costs"), - "43": _("Printing of forms"), - "45": _("Documentary credit charges"), - "47": _("Charging fees for transactions"), - "49": _("Cancellation or correction"), - "99": _("Cancellation or correction"), + "49": ["Foreign counter transactions", {"03": "ATM withdrawal"}], + "80": ["Separately charged costs and provisions", { + "01": "Guarantee card charges", + "02": "Costs relating to electronic output", + "03": "Payment card charges", + "04": "Costs for holding a documentary cash credit", + "05": "Card charges", + "06": "Damage relating to bills and cheques", + "07": "Insurance costs", + "08": "Registering compensation for savings accounts", + "09": "Postage", + "10": "Purchase of Smartcard", + "11": "Costs for the safe custody of correspondence", + "12": "Costs for opening a bank guarantee", + "13": "Renting of safes", + "14": "Handling costs instalment credit", + "15": "Night safe", + "16": "Bank confirmation to revisor or accountant", + "17": "Charge for safe custody", + "18": "Trade information", + "19": "Special charge for safe custody", + "20": "Drawing up a certificate", + "21": "Pay-packet charges", + "22": "Management/custody", + "23": "Research costs", + "24": "Participation in and management of interest refund system", + "25": "Renting of direct debit box", + "26": "Travel insurance premium", + "27": "Subscription fee", + "29": "Information charges", + "31": "Writ service fee", + "33": "Miscellaneous fees and commissions", + "35": "Costs", + "37": "Access right to database", + "39": "Surety fee", + "41": "Research costs", + "43": "Printing of forms", + "45": "Documentary credit charges", + "47": "Charging fees for transactions", + "49": "Cancellation or correction", + "99": "Cancellation or correction", }], } transaction_categories = { - "000": _("Net amount"), - "001": _("Interest received"), - "002": _("Interest paid"), - "003": _("Credit commission"), - "004": _("Postage"), - "005": _("Renting of letterbox"), - "006": _("Various fees/commissions"), - "007": _("Access right to database"), - "008": _("Information charges"), - "009": _("Travelling expenses"), - "010": _("Writ service fee"), - "011": _("VAT"), - "012": _("Exchange commission"), - "013": _("Payment commission"), - "014": _("Collection commission"), - "015": _("Correspondent charges"), - "016": _("BLIW/IBLC dues"), - "017": _("Research costs"), - "018": _("Tental guarantee charges"), - "019": _("Tax on physical delivery"), - "020": _("Costs of physical delivery"), - "021": _("Costs for drawing up a bank cheque"), - "022": _("Priority costs"), - "023": _("Exercising fee"), - "024": _("Growth premium"), - "025": _("Individual entry for exchange charges"), - "026": _("Handling commission"), - "027": _("Charges for unpaid bills"), - "028": _("Fidelity premium"), - "029": _("Protest charges"), - "030": _("Account insurance"), - "031": _("Charges foreign cheque"), - "032": _("Drawing up a circular cheque"), - "033": _("Charges for a foreign bill"), - "034": _("Reinvestment fee"), - "035": _("Charges foreign documentary bill"), - "036": _("Costs relating to a refused cheque"), - "037": _("Commission for handling charges"), - "039": _("Telecommunications"), - "041": _("Credit card costs"), - "042": _("Payment card costs"), - "043": _("Insurance costs"), - "045": _("Handling costs"), - "047": _("Charges extension bill"), - "049": _("Fiscal stamps/stamp duty"), - "050": _("Capital term investment"), - "051": _("Withholding tax"), - "052": _("Residence state tax"), - "053": _("Printing of forms"), - "055": _("Repayment loan or credit capital"), - "057": _("Interest subsidy"), - "058": _("Capital premium"), - "059": _("Default interest"), - "061": _("Charging fees for transactions"), - "063": _("Rounding differences"), - "065": _("Interest payment advice"), - "066": _("Fixed loan advance - reimbursement"), - "067": _("Fixed loan advance - extension"), - "068": _("Countervalue of an entry"), - "069": _("Forward arbitrage contracts : sum to be supplied by customer"), - "070": _("Forward arbitrage contracts : sum to be supplied by bank"), - "071": _("Fixed loan advance - availability"), - "072": _("Countervalue of commission to third party"), - "073": _("Costs of ATM abroad"), - "074": _("Mailing costs"), - "100": _("Gross amount"), - "200": _("Overall documentary credit charges"), - "201": _("Advice notice commission"), - "202": _("Advising commission | Additional advising commission"), - "203": _("Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission"), - "204": _("Amendment fee"), - "205": _("Documentary payment commission | Document commission | Drawdown fee | Negotiation fee"), - "206": _("Surety fee/payment under reserve"), - "207": _("Non-conformity fee"), - "208": _("Commitment fee deferred payment"), - "209": _("Transfer commission"), - "210": _("Commitment fee"), - "211": _("Credit arrangement fee | Additional credit arrangement fee"), - "212": _("Warehousing fee"), - "213": _("Financing fee"), - "214": _("Issue commission (delivery order)"), - "400": _("Acceptance fee"), - "401": _("Visa charges"), - "402": _("Certification costs"), - "403": _("Minimum discount rate"), - "404": _("Discount commission"), - "405": _("Bill guarantee commission"), - "406": _("Collection charges"), - "407": _("Costs Article 45"), - "408": _("Cover commission"), - "409": _("Safe deposit charges"), - "410": _("Reclamation charges"), - "411": _("Fixed collection charge"), - "412": _("Advice of expiry charges"), - "413": _("Acceptance charges"), - "414": _("Regularisation charges"), - "415": _("Surety fee"), - "416": _("Charges for the deposit of security"), - "418": _("Endorsement commission"), - "419": _("Bank service fee"), - "420": _("Retention charges"), - "425": _("Foreign broker's commission"), - "426": _("Belgian broker's commission"), - "427": _("Belgian Stock Exchange tax"), - "428": _("Interest accrued"), - "429": _("Foreign Stock Exchange tax"), - "430": _("Recovery of foreign tax"), - "431": _("Delivery of a copy"), + "000": "Net amount", + "001": "Interest received", + "002": "Interest paid", + "003": "Credit commission", + "004": "Postage", + "005": "Renting of letterbox", + "006": "Various fees/commissions", + "007": "Access right to database", + "008": "Information charges", + "009": "Travelling expenses", + "010": "Writ service fee", + "011": "VAT", + "012": "Exchange commission", + "013": "Payment commission", + "014": "Collection commission", + "015": "Correspondent charges", + "016": "BLIW/IBLC dues", + "017": "Research costs", + "018": "Tental guarantee charges", + "019": "Tax on physical delivery", + "020": "Costs of physical delivery", + "021": "Costs for drawing up a bank cheque", + "022": "Priority costs", + "023": "Exercising fee", + "024": "Growth premium", + "025": "Individual entry for exchange charges", + "026": "Handling commission", + "027": "Charges for unpaid bills", + "028": "Fidelity premium", + "029": "Protest charges", + "030": "Account insurance", + "031": "Charges foreign cheque", + "032": "Drawing up a circular cheque", + "033": "Charges for a foreign bill", + "034": "Reinvestment fee", + "035": "Charges foreign documentary bill", + "036": "Costs relating to a refused cheque", + "037": "Commission for handling charges", + "039": "Telecommunications", + "041": "Credit card costs", + "042": "Payment card costs", + "043": "Insurance costs", + "045": "Handling costs", + "047": "Charges extension bill", + "049": "Fiscal stamps/stamp duty", + "050": "Capital term investment", + "051": "Withholding tax", + "052": "Residence state tax", + "053": "Printing of forms", + "055": "Repayment loan or credit capital", + "057": "Interest subsidy", + "058": "Capital premium", + "059": "Default interest", + "061": "Charging fees for transactions", + "063": "Rounding differences", + "065": "Interest payment advice", + "066": "Fixed loan advance - reimbursement", + "067": "Fixed loan advance - extension", + "068": "Countervalue of an entry", + "069": "Forward arbitrage contracts : sum to be supplied by customer", + "070": "Forward arbitrage contracts : sum to be supplied by bank", + "071": "Fixed loan advance - availability", + "072": "Countervalue of commission to third party", + "073": "Costs of ATM abroad", + "074": "Mailing costs", + "100": "Gross amount", + "200": "Overall documentary credit charges", + "201": "Advice notice commission", + "202": "Advising commission | Additional advising commission", + "203": "Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission", + "204": "Amendment fee", + "205": "Documentary payment commission | Document commission | Drawdown fee | Negotiation fee", + "206": "Surety fee/payment under reserve", + "207": "Non-conformity fee", + "208": "Commitment fee deferred payment", + "209": "Transfer commission", + "210": "Commitment fee", + "211": "Credit arrangement fee | Additional credit arrangement fee", + "212": "Warehousing fee", + "213": "Financing fee", + "214": "Issue commission (delivery order)", + "400": "Acceptance fee", + "401": "Visa charges", + "402": "Certification costs", + "403": "Minimum discount rate", + "404": "Discount commission", + "405": "Bill guarantee commission", + "406": "Collection charges", + "407": "Costs Article 45", + "408": "Cover commission", + "409": "Safe deposit charges", + "410": "Reclamation charges", + "411": "Fixed collection charge", + "412": "Advice of expiry charges", + "413": "Acceptance charges", + "414": "Regularisation charges", + "415": "Surety fee", + "416": "Charges for the deposit of security", + "418": "Endorsement commission", + "419": "Bank service fee", + "420": "Retention charges", + "425": "Foreign broker's commission", + "426": "Belgian broker's commission", + "427": "Belgian Stock Exchange tax", + "428": "Interest accrued", + "429": "Foreign Stock Exchange tax", + "430": "Recovery of foreign tax", + "431": "Delivery of a copy", } From df4665fcd2d52a12bf5a36955334e852d9195612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 6 Dec 2012 10:16:48 +0100 Subject: [PATCH 063/163] [IMP] [CLEAN] [REVIEW] field._properties -> isinstance(field, fields.function). bzr revid: tde@openerp.com-20121206091648-vmy2ghr293reoxn6 --- openerp/osv/expression.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 9078cf5c42c..c4c7f4400ea 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -137,6 +137,7 @@ import logging import traceback import openerp.modules +from openerp.osv import fields from openerp.osv.orm import MAGIC_COLUMNS import openerp.tools as tools @@ -814,12 +815,13 @@ class expression(object): leaf.leaf = ('id', 'in', table_ids) leafs_to_stack.append(leaf) - # ---------------------------------------- + # ------------------------------------------------- # FUNCTION FIELD - # -> not stored, get the result of fnct_search - # ---------------------------------------- + # -> not stored: error if no _fnct_search, otherwise handle the result domain + # -> stored: management done in the remaining of parsing + # ------------------------------------------------- - elif field._properties and not field.store and not field._fnct_search: + elif isinstance(field, fields.function) and not field.store and not field._fnct_search: # this is a function field that is not stored # the function field doesn't provide a search function and doesn't store # values in the database, so we must ignore it : we generate a dummy leaf @@ -833,7 +835,7 @@ class expression(object): _logger.debug(''.join(traceback.format_stack())) leafs_to_stack.append(leaf) - elif field._properties and not field.store: + elif isinstance(field, fields.function) and not field.store: # this is a function field that is not stored fct_domain = field.search(cr, uid, working_table, left, [leaf.leaf], context=context) if not fct_domain: From a0b8a58174a0c5f5d0104f99a8b07abac7ca2109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 6 Dec 2012 10:27:45 +0100 Subject: [PATCH 064/163] [IMP] [REVIEW] _auto_join on many2many now raises a NotImplementedError; added a test case for that. bzr revid: tde@openerp.com-20121206092745-a8t62khs4x37db1g --- openerp/addons/base/tests/test_expression.py | 11 ++++++++++- openerp/osv/expression.py | 3 +-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/tests/test_expression.py b/openerp/addons/base/tests/test_expression.py index 2bfd8ade1c9..a8b69ac8c06 100644 --- a/openerp/addons/base/tests/test_expression.py +++ b/openerp/addons/base/tests/test_expression.py @@ -126,9 +126,10 @@ class test_expression(common.TransactionCase): # Get test columns partner_state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state partner_parent_id_col = partner_obj._columns.get('parent_id') # many2one on res.partner to res.partner + state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country partner_child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner partner_bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank - state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country + category_id_col = partner_obj._columns.get('category_id') # many2many on res.partner to res.partner.category # Get the first bank account type to be able to create a res.partner.bank bank_type = bank_obj._bank_type_get(cr, uid)[0] @@ -146,6 +147,14 @@ class test_expression(common.TransactionCase): b_ab = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ab, 'acc_number': '5678'}) b_ba = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ba, 'acc_number': '9876'}) + # ---------------------------------------- + # Test1: basics about the attribute + # ---------------------------------------- + + category_id_col._auto_join = True + self.assertRaises(NotImplementedError, partner_obj.search, cr, uid, [('category_id.name', '=', 'foo')]) + category_id_col._auto_join = False + # ---------------------------------------- # Test1: one2many # ---------------------------------------- diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index c4c7f4400ea..383e70dccfa 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -800,8 +800,7 @@ class expression(object): leafs_to_stack.append(self.create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) elif len(field_path) > 1 and field._auto_join: - assert False, \ - '_auto_join attribute on something else than a many2one or one2many is currently not supported' + raise NotImplementedError('_auto_join attribute not supported on many2many field %s' % (left)) elif len(field_path) > 1 and field._type == 'many2one': right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) From 7232c1f986718bf9808af4d625dd163637cb3ac1 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 12:18:16 +0100 Subject: [PATCH 065/163] [DEL]Useless dependances + [ADD]Statement journal depending on bank account, statement line account depending on bank accont or partner if setted, statement line type bzr revid: dle@openerp.com-20121206111816-c0t7mfy1x6seezev --- addons/l10n_be_coda/__openerp__.py | 2 +- .../wizard/account_coda_import.py | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/addons/l10n_be_coda/__openerp__.py b/addons/l10n_be_coda/__openerp__.py index 14e1bf6e443..0cb29bcc002 100644 --- a/addons/l10n_be_coda/__openerp__.py +++ b/addons/l10n_be_coda/__openerp__.py @@ -90,7 +90,7 @@ V2.2 specifications. If required, you can manually adjust the descriptions via the CODA configuration menu. ''', 'images' : ['images/coda_logs.jpeg','images/import_coda_logs.jpeg'], - 'depends': ['account_voucher','base_iban', 'l10n_be_invoice_bba', 'account_bank_statement_extensions'], + 'depends': ['account_voucher','base_iban', 'l10n_be_invoice_bba',], 'demo': [], 'data': [ 'l10n_be_coda_wizard.xml', diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 2286caf8f68..eac8f83e6da 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -262,25 +262,39 @@ class account_coda_import(osv.osv_memory): line['counterpartyNumber'] = False except: pass + partner = None partner_id = None if 'counterpartyNumber' in line and line['counterpartyNumber']: ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) if ids and len(ids) > 0: - partner_id = self.pool.get('res.partner.bank').browse(cr, uid, ids[0], context=context).partner_id.id + partner = self.pool.get('res.partner.bank').browse(cr, uid, ids[0], context=context).partner_id + partner_id = partner.id + if partner: + if partner.customer: + line['type'] = 'customer' else: - partner_id = None + line['type'] = 'supplier' + if line['debit'] == '1': + line['account'] = partner.property_account_payable.id + else: + line['account'] = partner.property_account_receivable.id + else: + line['type'] = 'general' + if line['debit'] == '1': + line['account'] = statement['journal_id'].default_debit_account_id.id + else: + line['account'] = statement['journal_id'].default_credit_account_id.id + data = { 'name': line['communication'], 'note': "\n".join(note), 'date': line['entryDate'], 'amount': line['amount'], - # 'type': '', + 'type': line['type'], 'partner_id': partner_id, - 'account_id': 1, # TODO + 'account_id': line['account'], 'statement_id': statement['id'], - # 'analytic_account_id': '', - # 'move_ids': '', 'ref': line['ref'], 'sequence': line['sequence'], } From d8a949edffc9e3f973680b4bd95f49f7a1e114b1 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 12:27:02 +0100 Subject: [PATCH 066/163] [ADD]Structured communications bzr revid: dle@openerp.com-20121206112702-ii47dx25r7amegrq --- addons/l10n_be_coda/wizard/account_coda_import.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index eac8f83e6da..fdabf9e8615 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -126,7 +126,11 @@ class account_coda_import(osv.osv_memory): statementLine['transaction_family'] = rmspaces(line[54:56]) statementLine['transaction_code'] = rmspaces(line[56:58]) statementLine['transaction_category'] = rmspaces(line[58:61]) - statementLine['communication'] = rmspaces(line[62:115]) + if line[61] == '1': + #Structured communication + statementLine['communication'] = '+++' + line[65:68] + '/' + line[68:72] + '/' + line[72:77] + '+++' + else: + statementLine['communication'] = rmspaces(line[62:115]) statementLine['entryDate'] = rmspaces(line[115:121]) statementLine['type'] = 'normal' statementLine['globalisation'] = int(line[124]) From 0fc6e5480bef93c8729d39c04444c22fd1b6a3fa Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 16:12:07 +0100 Subject: [PATCH 067/163] [FIX]Name field displayed back in bank statement form (instead of displaying notes), handling structured communication types, defining account depending on partner found thanks to invoice or bank account bzr revid: dle@openerp.com-20121206151207-o8zxzfoybmlv3u6b --- addons/account/account_view.xml | 3 +- .../wizard/account_coda_import.py | 140 +++++++++++++----- 2 files changed, 106 insertions(+), 37 deletions(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 7d18961a5a3..6d3519cc461 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -574,9 +574,8 @@ - - + diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index fdabf9e8615..d0ecefa6a9b 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -128,8 +128,12 @@ class account_coda_import(osv.osv_memory): statementLine['transaction_category'] = rmspaces(line[58:61]) if line[61] == '1': #Structured communication + statementLine['communication_struct'] = True + statementLine['communication_type'] = line[62:65] statementLine['communication'] = '+++' + line[65:68] + '/' + line[68:72] + '/' + line[72:77] + '+++' else: + #Non-structured communication + statementLine['communication_struct'] = False statementLine['communication'] = rmspaces(line[62:115]) statementLine['entryDate'] = rmspaces(line[115:121]) statementLine['type'] = 'normal' @@ -156,7 +160,8 @@ class account_coda_import(osv.osv_memory): raise osv.except_osv(_('Error') + 'R2005', _('CODA parsing error on movement data record 2.3, seq nr %s! Please report this issue via your OpenERP support channel.') % line[2:10]) if statement['version'] == '1': statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22]) - statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:125]) + statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:73]) + statement['lines'][-1]['counterpartyAddress'] = rmspaces(line[73:125]) statement['lines'][-1]['counterpartyCurrency'] = '' else: if line[22] == ' ': @@ -235,15 +240,76 @@ class account_coda_import(osv.osv_memory): statement['id'] = self.pool.get('account.bank.statement').create(cr, uid, data, context=context) for line in statement['lines']: if line['type'] == 'normal': + note = [] counterparty = [] if 'counterpartyName' in line: counterparty.append(line['counterpartyName']) - if 'counterpartyNumber' in line: + try: + if 'counterpartyNumber' in line and int(line['counterpartyNumber']) == 0: + line['counterpartyNumber'] = False + except: + pass + if 'counterpartyNumber' in line and line['counterpartyNumber']: counterparty.append(line['counterpartyNumber']) if len(counterparty) > 0: counterparty = '[' + ' / '.join(counterparty) + ']' else: counterparty = '/' + note.append(_('Counter Party') + ': ' + counterparty) + + partner = None + partner_id = None + invoice = False + if line['communication_struct'] and 'communication_type' in line and line['communication_type'] == '101': + ids = self.pool.get('account.invoice').search(cr, uid, [('reference', '=', line['communication']), ('reference_type', '=', 'bba')]) + if ids: + invoice = self.pool.get('account.invoice').browse(cr, uid, ids[0]) + partner = invoice.partner_id + partner_id = partner.id + if invoice.type in ['in_invoice', 'in_refund']: + line['type'] = 'supplier' + else: + line['type'] = 'customer' + if 'counterpartyNumber' in line and line['counterpartyNumber']: + ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) + if ids and len(ids) > 0: + partner = self.pool.get('res.partner.bank').browse(cr, uid, ids[0], context=context).partner_id + partner_id = partner.id + if not invoice: + if partner.customer and line['debit'] == '0': + line['type'] = 'customer' + elif partner.supplier and line['debit'] == '1': + line['type'] = 'supplier' + else: + line['type'] = 'general' + # if line['debit'] == '1': + # line['account'] = partner.property_account_payable.id + # else: + # line['account'] = partner.property_account_receivable.id + if partner: + if line['type'] == 'customer': + line['account'] = partner.property_account_receivable.id + elif line['type'] == 'supplier': + line['account'] = partner.property_account_payable.id + else: + if line['debit'] == '1': + line['account'] = partner.property_account_payable.id + else: + line['account'] = partner.property_account_receivable.id + note.append(_('Communication') + ': ' + line['communication']) + if not partner: + line['type'] = 'general' + if line['debit'] == '1': + line['account'] = statement['journal_id'].default_debit_account_id.id + else: + line['account'] = statement['journal_id'].default_credit_account_id.id + note.append(_('Communication') + ': ' + line['communication']) + if 'communication_type' in line: + if line['communication_type'] in communication_types: + line['communication_type'] = communication_types[line['communication_type']] + else: + line['communication_type'] = 'Unknown' + note.append(_('Communication Type') + ': ' + line['communication_type']) if line['transaction_type'] in transaction_types: line['transaction_type'] = transaction_types[line['transaction_type']][1] if line['transaction_category'] in transaction_categories: @@ -253,45 +319,13 @@ class account_coda_import(osv.osv_memory): line['transaction_family'] = transaction_family[0] if line['transaction_code'] in transaction_family[1]: line['transaction_code'] = transaction_family[1][line['transaction_code']] - note = [] - note.append(_('Counter Party') + ': ' + counterparty) - note.append(_('Communication') + ': ' + line['communication']) note.append(_('Transaction type') + ': ' + line['transaction_type']) note.append(_('Transaction family') + ': ' + line['transaction_family']) note.append(_('Transaction code') + ': ' + line['transaction_code']) note.append(_('Transaction category') + ': ' + line['transaction_category']) - try: - if 'counterpartyNumber' in line and int(line['counterpartyNumber']) == 0: - line['counterpartyNumber'] = False - except: - pass - partner = None - partner_id = None - if 'counterpartyNumber' in line and line['counterpartyNumber']: - ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) - if ids and len(ids) > 0: - partner = self.pool.get('res.partner.bank').browse(cr, uid, ids[0], context=context).partner_id - partner_id = partner.id - if partner: - if partner.customer: - line['type'] = 'customer' - else: - line['type'] = 'supplier' - if line['debit'] == '1': - line['account'] = partner.property_account_payable.id - else: - line['account'] = partner.property_account_receivable.id - else: - line['type'] = 'general' - if line['debit'] == '1': - line['account'] = statement['journal_id'].default_debit_account_id.id - else: - line['account'] = statement['journal_id'].default_credit_account_id.id - - data = { - 'name': line['communication'], + 'name': counterparty + '\n' + line['communication'], 'note': "\n".join(note), 'date': line['entryDate'], 'amount': line['amount'], @@ -752,6 +786,42 @@ transaction_categories = { "431": "Delivery of a copy", } +communication_types = { + "001": "Data concerning the counterparty", + "002": "Communication of the bank", + "003": "RBP data", + "004": "Counterparty’s banker", + "005": "Data concerning the correspondent", + "006": "Information concerning the detail amount", + "007": "Information concerning the detail cash", + "008": "Identification of the de ultimate beneficiary/creditor (SEPA SCT/SDD)", + "009": "Identification of the de ultimate ordering customer/debtor (SEPA SCT/SDD)", + "010": "Information pertaining to sale or purchase of securities", + "011": "Information pertaining to coupons", + "100": "(SEPA) payment with a structured format communication applying the ISO standard 11649: Structured creditor reference to remittan", + "101": "Credit transfer or cash payment with structured format communication", + "102": "Credit transfer or cash payment with reconstituted structured format communication", + "103": "number (e.g. of the cheque, of the card, etc.)", + "104": "Equivalent in EUR", + "105": "original amount of the transaction", + "106": "Method of calculation (VAT, withholding tax on income, commission, etc.)", + "107": "Direct debit – DOM’80", + "108": "Closing", + "111": "POS credit – Globalisation", + "112": "ATM payment (usually Eurocheque card)", + "113": "ATM/POS debit", + "114": "POS credit - individual transaction", + "115": "Terminal cash deposit", + "120": "Correction of a transaction", + "121": "Commercial bills", + "122": "Bills - calculation of interest", + "123": "Fees and commissions", + "124": "Number of the credit card", + "125": "Credit", + "126": "Term investments", + "127": "European direct debit (SEPA)", +} + def rmspaces(s): return " ".join(s.split()) From 512a5c5ed6eb135b6005b549e1c93500bb6c1b1d Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 16:12:54 +0100 Subject: [PATCH 068/163] [DEL]Useless comment bzr revid: dle@openerp.com-20121206151254-qtedm28bxagp4shy --- addons/l10n_be_coda/wizard/account_coda_import.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index d0ecefa6a9b..5e6df14ffb4 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -282,10 +282,6 @@ class account_coda_import(osv.osv_memory): line['type'] = 'supplier' else: line['type'] = 'general' - # if line['debit'] == '1': - # line['account'] = partner.property_account_payable.id - # else: - # line['account'] = partner.property_account_receivable.id if partner: if line['type'] == 'customer': line['account'] = partner.property_account_receivable.id From 15b03bb0b684c4118adca60844ddcaaad3244e3b Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 16:55:24 +0100 Subject: [PATCH 069/163] [FIX]Name and note field not well structured bzr revid: dle@openerp.com-20121206155524-hha9r6ab931b3cj9 --- .../wizard/account_coda_import.py | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 5e6df14ffb4..aab468adcc9 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -241,21 +241,23 @@ class account_coda_import(osv.osv_memory): for line in statement['lines']: if line['type'] == 'normal': note = [] - counterparty = [] - if 'counterpartyName' in line: - counterparty.append(line['counterpartyName']) - try: - if 'counterpartyNumber' in line and int(line['counterpartyNumber']) == 0: - line['counterpartyNumber'] = False - except: - pass - if 'counterpartyNumber' in line and line['counterpartyNumber']: - counterparty.append(line['counterpartyNumber']) - if len(counterparty) > 0: - counterparty = '[' + ' / '.join(counterparty) + ']' + if 'counterpartyName' in line and line['counterpartyName'] != '': + note.append(_('Counter Party') + ': ' + line['counterpartyName']) else: - counterparty = '/' - note.append(_('Counter Party') + ': ' + counterparty) + line['counterpartyName'] = False + if 'counterpartyNumber' in line and line['counterpartyNumber'] != '': + try: + if int(line['counterpartyNumber']) == 0: + line['counterpartyNumber'] = False + except: + pass + if line['counterpartyNumber']: + note.append(_('Counter Party Account') + ': ' + line['counterpartyNumber']) + else: + line['counterpartyNumber'] = False + + if 'counterpartyAddress' in line and line['counterpartyAddress'] != '': + note.append(_('Counter Party Address') + ': ' + line['counterpartyAddress']) partner = None partner_id = None @@ -292,7 +294,6 @@ class account_coda_import(osv.osv_memory): line['account'] = partner.property_account_payable.id else: line['account'] = partner.property_account_receivable.id - note.append(_('Communication') + ': ' + line['communication']) if not partner: line['type'] = 'general' if line['debit'] == '1': @@ -321,7 +322,7 @@ class account_coda_import(osv.osv_memory): note.append(_('Transaction category') + ': ' + line['transaction_category']) data = { - 'name': counterparty + '\n' + line['communication'], + 'name': "\n".join(filter(None, [line['counterpartyName'], line['communication']])), 'note': "\n".join(note), 'date': line['entryDate'], 'amount': line['amount'], From 8f9ff4d19acd91ec63cd6a478ebaa1b2f677d6c4 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 16:59:37 +0100 Subject: [PATCH 070/163] [FIX]Entry date not parsed by strftime :( bzr revid: dle@openerp.com-20121206155937-8ngexk7iulkt04va --- addons/l10n_be_coda/wizard/account_coda_import.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index aab468adcc9..81bd2458496 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -135,7 +135,7 @@ class account_coda_import(osv.osv_memory): #Non-structured communication statementLine['communication_struct'] = False statementLine['communication'] = rmspaces(line[62:115]) - statementLine['entryDate'] = rmspaces(line[115:121]) + statementLine['entryDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[115:121]), '%d%m%y')) statementLine['type'] = 'normal' statementLine['globalisation'] = int(line[124]) if len(statement['globalisation_stack']) > 0 and statementLine['communication'] != '': From bb57752f0a930647ee2205aef3759bac466e132d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 6 Dec 2012 17:21:28 +0100 Subject: [PATCH 071/163] [IMP] [CLEAN] [REVIEW] expression: udpated domain management. Added pop and push methods in parse to hide the internal plumbery. Cleaned some comments, deleted dead/unnecessary code, updated some comments. to_ids and childof_domain back in parse. Added generate_table_alias, method that should be used everywhere if possible when generating table name or aliases for sql conditions and things like that. bzr revid: tde@openerp.com-20121206162128-1qol201os1xztlz5 --- openerp/osv/expression.py | 352 ++++++++++++++++++-------------------- 1 file changed, 171 insertions(+), 181 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 383e70dccfa..8967d9f254a 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -313,6 +313,37 @@ def distribute_not(domain): # Generic leaf manipulation # -------------------------------------------------- +def _quote(to_quote): + if '"' not in to_quote: + return '"%s"' % to_quote + return to_quote + + +def generate_table_alias(src_model, joined_tables=[]): + """ Generate a standard table alias name. An alias is generated as following: + - the base is the source model table name + - then, each joined table is added in the alias using a 'link field name' + that is used to render unique aliases for a given path + Examples: + - src_model=res.users, join_tables=[]: + alias = '"res_users"' + - src_model=res.users, join_tables=[(res.partner, 'parent_id')] + alias = '"res_partner" as "res_users__parent_id"' + + :param model src_model: model source of the alias + :param list join_tables: list of tuples + (dst_model, link_field) + + :return tuple: (table alias, alias statement for from clause with quotes added) + """ + alias = src_model._table + if not joined_tables: + return ('%s' % alias, '%s' % _quote(alias)) + for link in joined_tables: + alias += '__' + link[1] + return ('%s' % alias, '%s as %s' % (_quote(joined_tables[-1][0]._table), _quote(alias))) + + def normalize_leaf(element): """ Change a term's operator to some canonical form, simplifying later processing. """ @@ -416,33 +447,12 @@ class ExtendedLeaf(object): for item in self.context_stack: self._tables.append(item[0]) self._tables.append(table) - if self.is_operator(): - self.elements = self.leaf, None, None - elif self.is_true_leaf() or self.is_false_leaf(): - # because we consider left as a string - self.elements = ('%s' % leaf[0], leaf[1], leaf[2]) - else: - self.elements = leaf - self.field_path = self.elements[0].split('.', 1) - self.field = self.table._columns.get(self.field_path[0]) - if self.field and self.field._obj: - self.relational_table = self.table.pool.get(self.field._obj) - else: - self.relational_table = None # check validity self.check_leaf() def __str__(self): return '' % (str(self.leaf), self.table._table, ','.join(self._get_context_debug())) - # def create_substitution_leaf(self, new_leaf, new_table=None): - # if new_table is None: - # new_table = self.table - # return ExtendedLeaf(new_leaf, new_table, self.context_stack) - - # def create_sibling_leaf(self, new_leaf): - # pass - # -------------------------------------------------- # Join / Context manipulation # running examples: @@ -488,42 +498,48 @@ class ExtendedLeaf(object): # i.e.: many2one: 'state_id': current field name # -------------------------------------------------- - def _generate_alias(self): - alias = self._tables[0]._table - for context in self.context_stack: - alias += '__' + context[4] + def generate_alias(self): + links = [(context[1], context[4]) for context in self.context_stack] + alias, alias_statement = generate_table_alias(self._tables[0], links) return alias - def add_join_context(self, context_field_name, src_table_link_name, dst_table, dst_table_link_name): - """ See above comments for more details. A join context is a tuple structure - holding the following elements: (src_table (self.table), src_table_link_name, - dst_table, dst_table_link_name, context_field_name) + def add_join_context(self, table, lhs_col, table_col, link): + """ See above comments for more details. A join context is a tuple like: + ``(lhs, table, lhs_col, col, link)`` + where + - lhs is the source table (self.table) + - table is the destination table + - lsh_col is the source table column name used for the condition + - table_col is the destination table column name used for the condition + - link is the field name source of the join used as context to + generate the destination table alias + After adding the join, the table of the current leaf is updated. """ - self.context_stack.append((self.table, src_table_link_name, dst_table, dst_table_link_name, context_field_name)) - self._tables.append(dst_table) - self.table = dst_table + self.context_stack.append((self.table, table, lhs_col, table_col, link)) + self._tables.append(table) + self.table = table def get_join_conditions(self): - names = [] + conditions = [] alias = self._tables[0]._table for context in self.context_stack: previous_alias = alias alias += '__' + context[4] - names.append('%s."%s"=%s."%s"' % (previous_alias, context[1], alias, context[3])) - return names + conditions.append('"%s"."%s"="%s"."%s"' % (previous_alias, context[2], alias, context[3])) + return conditions def get_tables(self): tables = set() alias = self._tables[0]._table for context in self.context_stack: alias += '__' + context[4] - table_full_alias = '"%s" as %s' % (context[2]._table, alias) + table_full_alias = '"%s" as "%s"' % (context[1]._table, alias) tables.add(table_full_alias) return tables def _get_context_debug(self): - names = ['%s."%s"=%s."%s" (%s)' % (table[0]._table, table[1], table[2]._table, table[3], table[4]) for table in self.context_stack] + names = ['"%s"."%s"="%s"."%s" (%s)' % (item[0]._table, item[2], item[1]._table, item[3], item[4]) for item in self.context_stack] return names # -------------------------------------------------- @@ -542,12 +558,6 @@ class ExtendedLeaf(object): if not is_operator(self.leaf) and not is_leaf(self.leaf, True): raise ValueError("Invalid leaf %s" % str(self.leaf)) - # if self.is_leaf() and not (self.is_true_leaf() or self.is_false_leaf()) \ - # and not self.field and not self.field_path[0] in self.table._inherit_fields \ - # and not (self.leaf[0] == 'id' and self.leaf[1] == 'child_of') \ - # and not (self.field_path[0] in MAGIC_COLUMNS): - # raise ValueError("Invalid field %r in leaf %r" % (self.leaf[0], self.leaf)) - def is_operator(self): return is_operator(self.leaf) @@ -598,54 +608,6 @@ class expression(object): # parse the domain expression self.parse(cr, uid, context=context) - # ---------------------------------------- - # Tools for domain manipulation - # ---------------------------------------- - - def to_ids(self, cr, uid, value, relational_table, context=None, limit=None): - """ Normalize a single id or name, or a list of those, into a list of ids - :param {int,long,basestring,list,tuple} value: - if int, long -> return [value] - if basestring, convert it into a list of basestrings, then - if list of basestring -> - perform a name_search on relational_table for each name - return the list of related ids - """ - names = [] - if isinstance(value, basestring): - names = [value] - elif value and isinstance(value, (tuple, list)) and all(isinstance(item, basestring) for item in value): - names = value - elif isinstance(value, (int, long)): - return [value] - if names: - name_get_list = [name_get[0] for name in names for name_get in relational_table.name_search(cr, uid, name, [], 'ilike', context=context, limit=limit)] - return list(set(name_get_list)) - return list(value) - - def child_of_domain(self, cr, uid, left, ids, left_model, parent=None, prefix='', context=None): - """ Return a domain implementing the child_of operator for [(left,child_of,ids)], - either as a range using the parent_left/right tree lookup fields - (when available), or as an expanded [(left,in,child_ids)] """ - if left_model._parent_store and (not left_model.pool._init): - # TODO: Improve where joins are implemented for many with '.', replace by: - # doms += ['&',(prefix+'.parent_left','<',o.parent_right),(prefix+'.parent_left','>=',o.parent_left)] - doms = [] - for o in left_model.browse(cr, uid, ids, context=context): - if doms: - doms.insert(0, OR_OPERATOR) - doms += [AND_OPERATOR, ('parent_left', '<', o.parent_right), ('parent_left', '>=', o.parent_left)] - if prefix: - return [(left, 'in', left_model.search(cr, uid, doms, context=context))] - return doms - else: - def recursive_children(ids, model, parent_field): - if not ids: - return [] - ids2 = model.search(cr, uid, [(parent_field, 'in', ids)], context=context) - return ids + recursive_children(ids2, model, parent_field) - return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] - # ---------------------------------------- # Leafs management # ---------------------------------------- @@ -662,16 +624,6 @@ class expression(object): tables.append(table_name) return tables - def create_substitution_leaf(self, leaf, new_elements, new_table=None): - if new_table is None: - new_table = leaf.table - new_context_stack = [tuple(context) for context in leaf.context_stack] - new_leaf = ExtendedLeaf(new_elements, new_table, context_stack=new_context_stack) - return new_leaf - - def create_sibling_leaf(self, leaf, new_elements): - pass - # ---------------------------------------- # Parsing # ---------------------------------------- @@ -694,22 +646,78 @@ class expression(object): :var obj relational_table: relational table of a field (field._obj) ex: res_partner.bank_ids -> res_partner_bank """ - result = [] - stack = [ExtendedLeaf(leaf, self.root_table) for leaf in self.expression] - while stack: + def to_ids(value, relational_table, context=None, limit=None): + """ Normalize a single id or name, or a list of those, into a list of ids + :param {int,long,basestring,list,tuple} value: + if int, long -> return [value] + if basestring, convert it into a list of basestrings, then + if list of basestring -> + perform a name_search on relational_table for each name + return the list of related ids + """ + names = [] + if isinstance(value, basestring): + names = [value] + elif value and isinstance(value, (tuple, list)) and all(isinstance(item, basestring) for item in value): + names = value + elif isinstance(value, (int, long)): + return [value] + if names: + name_get_list = [name_get[0] for name in names for name_get in relational_table.name_search(cr, uid, name, [], 'ilike', context=context, limit=limit)] + return list(set(name_get_list)) + return list(value) + + def child_of_domain(left, ids, left_model, parent=None, prefix='', context=None): + """ Return a domain implementing the child_of operator for [(left,child_of,ids)], + either as a range using the parent_left/right tree lookup fields + (when available), or as an expanded [(left,in,child_ids)] """ + if left_model._parent_store and (not left_model.pool._init): + # TODO: Improve where joins are implemented for many with '.', replace by: + # doms += ['&',(prefix+'.parent_left','<',o.parent_right),(prefix+'.parent_left','>=',o.parent_left)] + doms = [] + for o in left_model.browse(cr, uid, ids, context=context): + if doms: + doms.insert(0, OR_OPERATOR) + doms += [AND_OPERATOR, ('parent_left', '<', o.parent_right), ('parent_left', '>=', o.parent_left)] + if prefix: + return [(left, 'in', left_model.search(cr, uid, doms, context=context))] + return doms + else: + def recursive_children(ids, model, parent_field): + if not ids: + return [] + ids2 = model.search(cr, uid, [(parent_field, 'in', ids)], context=context) + return ids + recursive_children(ids2, model, parent_field) + return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] + + def create_substitution_leaf(leaf, new_elements, new_table=None): + if new_table is None: + new_table = leaf.table + new_context_stack = [tuple(context) for context in leaf.context_stack] + new_leaf = ExtendedLeaf(new_elements, new_table, context_stack=new_context_stack) + return new_leaf + + def pop(): + return self.stack.pop() + + def push(leaf): + self.stack.append(leaf) + + def push_result(leaf): + self.result.append(leaf) + + self.result = [] + self.stack = [ExtendedLeaf(leaf, self.root_table) for leaf in self.expression] + # process from right to left; expression is from left to right + self.stack.reverse() + + while self.stack: # Get the next leaf to process - leaf = stack.pop(0) - leafs_to_stack = [] - results_to_stack = [] + leaf = pop() # Get working variables working_table = leaf.table - # left, operator, right = leaf.elements - # field_path = leaf.field_path - # field = leaf.field - # relational_table = leaf.relational_table - if leaf.is_operator(): left, operator, right = leaf.leaf, None, None elif leaf.is_true_leaf() or leaf.is_false_leaf(): @@ -717,11 +725,8 @@ class expression(object): left, operator, right = ('%s' % leaf.leaf[0], leaf.leaf[1], leaf.leaf[2]) else: left, operator, right = leaf.leaf - # field_path = leaf.field_path - # field = leaf.field field_path = left.split('.', 1) field = working_table._columns.get(field_path[0]) - if field and field._obj: relational_table = working_table.pool.get(field._obj) else: @@ -734,10 +739,8 @@ class expression(object): # -> add directly to result # ---------------------------------------- - if leaf.is_operator(): - results_to_stack.append(leaf) - elif leaf.is_true_leaf() or leaf.is_false_leaf(): - results_to_stack.append(leaf) + if leaf.is_operator() or leaf.is_true_leaf() or leaf.is_false_leaf(): + push_result(leaf) # ---------------------------------------- # FIELD NOT FOUND @@ -755,16 +758,18 @@ class expression(object): # { 'field_name': ('parent_model', 'm2o_field_to_reach_parent', # field_column_obj, origina_parent_model), ... } next_table = working_table.pool.get(working_table._inherit_fields[field_path[0]][0]) - leaf.add_join_context(working_table._inherits[next_table._name], working_table._inherits[next_table._name], next_table, 'id') - leafs_to_stack.append(leaf) + leaf.add_join_context(next_table, working_table._inherits[next_table._name], 'id', working_table._inherits[next_table._name]) + push(leaf) elif not field and left == 'id' and operator == 'child_of': - ids2 = self.to_ids(cr, uid, right, working_table, context) - dom = self.child_of_domain(cr, uid, left, ids2, working_table) - leafs_to_stack += [self.create_substitution_leaf(leaf, dom_leaf, working_table) for dom_leaf in dom] + ids2 = to_ids(right, working_table, context) + dom = child_of_domain(left, ids2, working_table) + for dom_leaf in reversed(dom): + new_leaf = create_substitution_leaf(leaf, dom_leaf, working_table) + push(new_leaf) elif not field and field_path[0] in MAGIC_COLUMNS: - results_to_stack.append(leaf) + push_result(leaf) elif not field: raise ValueError("Invalid field %r in leaf %r" % (left, str(leaf))) @@ -784,20 +789,19 @@ class expression(object): elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: # res_partner.state_id = res_partner__state_id.id - leaf.add_join_context(field_path[0], field_path[0], relational_table, 'id') - leafs_to_stack.append(self.create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) + leaf.add_join_context(relational_table, field_path[0], 'id', field_path[0]) + push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) elif len(field_path) > 1 and field._type == 'one2many' and field._auto_join: # res_partner.id = res_partner__bank_ids.partner_id - leaf.add_join_context(field_path[0], 'id', relational_table, field._fields_id) + leaf.add_join_context(relational_table, 'id', field._fields_id, field_path[0]) domain = field._domain(working_table) if callable(field._domain) else field._domain + push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) if domain: domain = normalize_domain(domain) - leafs_to_stack.append(self.create_substitution_leaf(leaf, AND_OPERATOR, relational_table)) - for elem in domain: - leafs_to_stack.append(self.create_substitution_leaf(leaf, elem, relational_table)) - print '--> appending %s' % str(leafs_to_stack[-1]) - leafs_to_stack.append(self.create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) + for elem in reversed(domain): + push(create_substitution_leaf(leaf, elem, relational_table)) + push(create_substitution_leaf(leaf, AND_OPERATOR, relational_table)) elif len(field_path) > 1 and field._auto_join: raise NotImplementedError('_auto_join attribute not supported on many2many field %s' % (left)) @@ -805,14 +809,14 @@ class expression(object): elif len(field_path) > 1 and field._type == 'many2one': right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) leaf.leaf = (field_path[0], 'in', right_ids) - leafs_to_stack.append(leaf) + push(leaf) # Making search easier when there is a left operand as field.o2m or field.m2m elif len(field_path) > 1 and field._type in ['many2many', 'one2many']: right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) table_ids = working_table.search(cr, uid, [(field_path[0], 'in', right_ids)], context=dict(context, active_test=False)) leaf.leaf = ('id', 'in', table_ids) - leafs_to_stack.append(leaf) + push(leaf) # ------------------------------------------------- # FUNCTION FIELD @@ -832,30 +836,31 @@ class expression(object): # avoid compiling stack trace if not needed if _logger.isEnabledFor(logging.DEBUG): _logger.debug(''.join(traceback.format_stack())) - leafs_to_stack.append(leaf) + push(leaf) elif isinstance(field, fields.function) and not field.store: # this is a function field that is not stored fct_domain = field.search(cr, uid, working_table, left, [leaf.leaf], context=context) if not fct_domain: leaf.leaf = TRUE_LEAF - leafs_to_stack.append(leaf) + push(leaf) else: # we assume that the expression is valid # we create a dummy leaf for forcing the parsing of the resulting expression - leafs_to_stack.append(self.create_substitution_leaf(leaf, AND_OPERATOR, working_table)) - leafs_to_stack.append(self.create_substitution_leaf(leaf, TRUE_LEAF, working_table)) - for domain_element in fct_domain: - leafs_to_stack.append(self.create_substitution_leaf(leaf, domain_element, working_table)) + for domain_element in reversed(fct_domain): + push(create_substitution_leaf(leaf, domain_element, working_table)) + # self.push(create_substitution_leaf(leaf, TRUE_LEAF, working_table)) + # self.push(create_substitution_leaf(leaf, AND_OPERATOR, working_table)) # Applying recursivity on field(one2many) elif field._type == 'one2many' and operator == 'child_of': - ids2 = self.to_ids(cr, uid, right, relational_table, context) + ids2 = to_ids(right, relational_table, context) if field._obj != working_table._name: - dom = self.child_of_domain(cr, uid, left, ids2, relational_table, prefix=field._obj) + dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) else: - dom = self.child_of_domain(cr, uid, 'id', ids2, working_table, parent=left) - leafs_to_stack += [self.create_substitution_leaf(leaf, dom_leaf, working_table) for dom_leaf in dom] + dom = child_of_domain('id', ids2, working_table, parent=left) + for dom_leaf in reversed(dom): + push(create_substitution_leaf(leaf, dom_leaf, working_table)) elif field._type == 'one2many': call_null = True @@ -874,17 +879,17 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null = False - leafs_to_stack.append(self.create_substitution_leaf(leaf, FALSE_LEAF, working_table)) + push(create_substitution_leaf(leaf, FALSE_LEAF, working_table)) else: ids2 = select_from_where(cr, field._fields_id, relational_table._table, 'id', ids2, operator) if ids2: call_null = False o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', o2m_op, ids2), working_table)) + push(create_substitution_leaf(leaf, ('id', o2m_op, ids2), working_table)) if call_null: o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)), working_table)) + push(create_substitution_leaf(leaf, ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)), working_table)) elif field._type == 'many2many': rel_table, rel_id1, rel_id2 = field._sql_names(working_table) @@ -895,10 +900,10 @@ class expression(object): return ids return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator) - ids2 = self.to_ids(cr, uid, right, relational_table, context) - dom = self.child_of_domain(cr, uid, 'id', ids2, relational_table) + ids2 = to_ids(right, relational_table, context) + dom = child_of_domain('id', ids2, relational_table) ids2 = relational_table.search(cr, uid, dom, context=context) - leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), working_table)) + push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), working_table)) else: call_null_m2m = True if right is not False: @@ -915,26 +920,27 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null_m2m = False - leafs_to_stack.append(self.create_substitution_leaf(leaf, FALSE_LEAF, working_table)) + push(create_substitution_leaf(leaf, FALSE_LEAF, working_table)) else: operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_table)) + push(create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_table)) if call_null_m2m: m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_table)) + push(create_substitution_leaf(leaf, ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_table)) elif field._type == 'many2one': if operator == 'child_of': - ids2 = self.to_ids(cr, uid, right, relational_table, context) + ids2 = to_ids(right, relational_table, context) if field._obj != working_table._name: - dom = self.child_of_domain(cr, uid, left, ids2, relational_table, prefix=field._obj) + dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) else: - dom = self.child_of_domain(cr, uid, 'id', ids2, working_table, parent=left) - leafs_to_stack += [self.create_substitution_leaf(leaf, dom_leaf, working_table) for dom_leaf in dom] + dom = child_of_domain('id', ids2, working_table, parent=left) + for dom_leaf in reversed(dom): + push(create_substitution_leaf(leaf, dom_leaf, working_table)) else: def _get_expression(relational_table, cr, uid, left, right, operator, context=None): if context is None: @@ -958,10 +964,10 @@ class expression(object): # resolve string-based m2o criterion into IDs if isinstance(right, basestring) or \ right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): - leafs_to_stack.append(self.create_substitution_leaf(leaf, _get_expression(relational_table, cr, uid, left, right, operator, context=context), working_table)) + push(create_substitution_leaf(leaf, _get_expression(relational_table, cr, uid, left, right, operator, context=context), working_table)) else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() - results_to_stack.append(leaf) + push_result(leaf) else: # other field type @@ -973,7 +979,7 @@ class expression(object): elif operator in ('<', '<='): right += ' 23:59:59' - leafs_to_stack.append(self.create_substitution_leaf(leaf, (left, operator, right), working_table)) + push(create_substitution_leaf(leaf, (left, operator, right), working_table)) elif field.translate: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') @@ -1008,30 +1014,15 @@ class expression(object): right, right, ] - leafs_to_stack.append(self.create_substitution_leaf(leaf, ('id', 'inselect', (subselect, params)), working_table)) + push(create_substitution_leaf(leaf, ('id', 'inselect', (subselect, params)), working_table)) else: - results_to_stack.append(leaf) - - # ---------------------------------------- - # END OF PROCESS OF CURRENT LEAF - # -> results_to_stack elements are added in result - # -> leafs_to_stack elements are inserted back in the processed - # stack to be immediately processed - # ---------------------------------------- - - leafs_to_stack.reverse() - for leaf in results_to_stack: - result.append(leaf) - for leaf in leafs_to_stack: - stack.insert(0, leaf) + push_result(leaf) # ---------------------------------------- # END OF PARSING FULL DOMAIN # ---------------------------------------- - self.result = result - # Generate joins joins = set() for leaf in self.result: @@ -1047,10 +1038,9 @@ class expression(object): assert operator in (TERM_OPERATORS + ('inselect',)), \ "Invalid operator %r in domain term %r" % (operator, leaf) assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in table._all_columns \ - or left in MAGIC_COLUMNS, \ - "Invalid field %r in domain term %r" % (left, leaf) + or left in MAGIC_COLUMNS, "Invalid field %r in domain term %r" % (left, leaf) - table_alias = '"%s"' % (eleaf._generate_alias()) + table_alias = '"%s"' % (eleaf.generate_alias()) if leaf == TRUE_LEAF: query = 'TRUE' From d588388ae4a33ee836e7ebbd0a764e3081d0bba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 6 Dec 2012 17:22:19 +0100 Subject: [PATCH 072/163] [IMP] [CLEAN] expression.parse: updated and cleaned a bit the tests. Removed print statements. bzr revid: tde@openerp.com-20121206162219-n1c48dkjghc4nu63 --- openerp/addons/base/tests/test_expression.py | 98 ++++++-------------- 1 file changed, 30 insertions(+), 68 deletions(-) diff --git a/openerp/addons/base/tests/test_expression.py b/openerp/addons/base/tests/test_expression.py index a8b69ac8c06..37fa24f5b1c 100644 --- a/openerp/addons/base/tests/test_expression.py +++ b/openerp/addons/base/tests/test_expression.py @@ -147,26 +147,23 @@ class test_expression(common.TransactionCase): b_ab = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ab, 'acc_number': '5678'}) b_ba = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ba, 'acc_number': '9876'}) - # ---------------------------------------- + # -------------------------------------------------- # Test1: basics about the attribute - # ---------------------------------------- + # -------------------------------------------------- category_id_col._auto_join = True self.assertRaises(NotImplementedError, partner_obj.search, cr, uid, [('category_id.name', '=', 'foo')]) category_id_col._auto_join = False - # ---------------------------------------- - # Test1: one2many - # ---------------------------------------- + # -------------------------------------------------- + # Test2: one2many + # -------------------------------------------------- name_test = 'test_a' # Do: one2many without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', name_test)]) - for query in self.query_list: - print query - print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_aa]), "_auto_join off: ('bank_ids.name', 'like', '..'): incorrect result") @@ -191,9 +188,6 @@ class test_expression(common.TransactionCase): # Do: cascaded one2many without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) - for query in self.query_list: - print query - print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_a, p_b]), "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]): incorrect result") @@ -205,22 +199,20 @@ class test_expression(common.TransactionCase): partner_bank_ids_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', 'test_a')]) - # for query in self.query_list: - # print query # Test result self.assertEqual(set(partner_ids), set([p_aa]), "_auto_join on: ('bank_ids.name', 'like', '..') incorrect result") - # # Test produced queries + # Test produced queries self.assertEqual(len(self.query_list), 1, "_auto_join on: ('bank_ids.name', 'like', '..') should produce 1 query") sql_query = self.query_list[0].get_sql() self.assertIn('"res_partner"', sql_query[0], "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect main table") - self.assertIn('"res_partner_bank" as res_partner__bank_ids', sql_query[0], + self.assertIn('"res_partner_bank" as "res_partner__bank_ids"', sql_query[0], "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join") self.assertIn('"res_partner__bank_ids"."name" like %s', sql_query[1], "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect where condition") - self.assertIn('res_partner."id"=res_partner__bank_ids."partner_id"', sql_query[1], + self.assertIn('"res_partner"."id"="res_partner__bank_ids"."partner_id"', sql_query[1], "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join condition") self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect parameter") @@ -228,24 +220,17 @@ class test_expression(common.TransactionCase): # Do: one2many with _auto_join, test final leaf is an id self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('bank_ids.id', 'in', [b_aa, b_ab])]) - for query in self.query_list: - print query - print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_aa, p_ab]), "_auto_join on: ('bank_ids.id', 'in', [..]) incorrect result") - # # Test produced queries + # Test produced queries self.assertEqual(len(self.query_list), 1, "_auto_join on: ('bank_ids.id', 'in', [..]) should produce 1 query") sql_query = self.query_list[0].get_sql() self.assertIn('"res_partner"', sql_query[0], "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect main table") - self.assertIn('"res_partner_bank" as res_partner__bank_ids', sql_query[0], - "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect join") self.assertIn('"res_partner__bank_ids"."id" in (%s,%s)', sql_query[1], "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect where condition") - self.assertIn('res_partner."id"=res_partner__bank_ids."partner_id"', sql_query[1], - "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect join condition") self.assertEqual(set([b_aa, b_ab]), set(sql_query[2]), "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect parameter") @@ -253,9 +238,6 @@ class test_expression(common.TransactionCase): partner_child_ids_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) - for query in self.query_list: - print query - print '----------------------' # Test result self.assertEqual(set(partner_ids), set([p_a, p_b]), "_auto_join on: ('child_ids.bank_ids.id', 'not in', [..]): incorrect result") @@ -265,31 +247,28 @@ class test_expression(common.TransactionCase): sql_query = self.query_list[0].get_sql() self.assertIn('"res_partner"', sql_query[0], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) incorrect main table") - self.assertIn('"res_partner" as res_partner__child_ids', sql_query[0], + self.assertIn('"res_partner" as "res_partner__child_ids"', sql_query[0], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") - self.assertIn('"res_partner_bank" as res_partner__child_ids__bank_ids', sql_query[0], + self.assertIn('"res_partner_bank" as "res_partner__child_ids__bank_ids"', sql_query[0], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") self.assertIn('"res_partner__child_ids__bank_ids"."id" in (%s,%s)', sql_query[1], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect where condition") - self.assertIn('res_partner."id"=res_partner__child_ids."parent_id"', sql_query[1], + self.assertIn('"res_partner"."id"="res_partner__child_ids"."parent_id"', sql_query[1], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") - self.assertIn('res_partner__child_ids."id"=res_partner__child_ids__bank_ids."partner_id"', sql_query[1], + self.assertIn('"res_partner__child_ids"."id"="res_partner__child_ids__bank_ids"."partner_id"', sql_query[1], "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") self.assertEqual(set([b_aa, b_ba]), set(sql_query[2]), "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect parameter") - # ---------------------------------------- - # Test2: many2one - # ---------------------------------------- + # -------------------------------------------------- + # Test3: many2one + # -------------------------------------------------- name_test = 'US' # Do: many2one without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) - for query in self.query_list: - print query - print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join off: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -301,9 +280,6 @@ class test_expression(common.TransactionCase): partner_state_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) - for query in self.query_list: - print query - print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -320,11 +296,11 @@ class test_expression(common.TransactionCase): sql_query = self.query_list[1].get_sql() self.assertIn('"res_partner"', sql_query[0], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") - self.assertIn('"res_country_state" as res_partner__state_id', sql_query[0], + self.assertIn('"res_country_state" as "res_partner__state_id"', sql_query[0], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join") self.assertIn('"res_partner__state_id"."country_id" in (%s)', sql_query[1], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") - self.assertIn('res_partner."state_id"=res_partner__state_id."id"', sql_query[1], + self.assertIn('"res_partner"."state_id"="res_partner__state_id"."id"', sql_query[1], "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join condition") # Do: many2one with 1 _auto_join on the second many2one @@ -332,9 +308,6 @@ class test_expression(common.TransactionCase): state_country_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) - for query in self.query_list: - print query - print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -345,11 +318,11 @@ class test_expression(common.TransactionCase): sql_query = self.query_list[0].get_sql() self.assertIn('"res_country_state"', sql_query[0], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") - self.assertIn('"res_country" as res_country_state__country_id', sql_query[0], + self.assertIn('"res_country" as "res_country_state__country_id"', sql_query[0], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join") self.assertIn('"res_country_state__country_id"."code" like %s', sql_query[1], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") - self.assertIn('res_country_state."country_id"=res_country_state__country_id."id"', sql_query[1], + self.assertIn('"res_country_state"."country_id"="res_country_state__country_id"."id"', sql_query[1], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join condition") self.assertEqual(['%' + name_test + '%'], sql_query[2], "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") @@ -365,8 +338,6 @@ class test_expression(common.TransactionCase): state_country_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) - for query in self.query_list: - print query # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), "_auto_join on: ('state_id.country_id.code', 'like', '..') incorrect result") @@ -376,22 +347,22 @@ class test_expression(common.TransactionCase): sql_query = self.query_list[0].get_sql() self.assertIn('"res_partner"', sql_query[0], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect main table") - self.assertIn('"res_country_state" as res_partner__state_id', sql_query[0], + self.assertIn('"res_country_state" as "res_partner__state_id"', sql_query[0], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") - self.assertIn('"res_country" as res_partner__state_id__country_id', sql_query[0], + self.assertIn('"res_country" as "res_partner__state_id__country_id"', sql_query[0], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") self.assertIn('"res_partner__state_id__country_id"."code" like %s', sql_query[1], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect where condition") - self.assertIn('res_partner."state_id"=res_partner__state_id."id"', sql_query[1], + self.assertIn('"res_partner"."state_id"="res_partner__state_id"."id"', sql_query[1], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") - self.assertIn('res_partner__state_id."country_id"=res_partner__state_id__country_id."id"', sql_query[1], + self.assertIn('"res_partner__state_id"."country_id"="res_partner__state_id__country_id"."id"', sql_query[1], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") self.assertEqual(['%' + name_test + '%'], sql_query[2], "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect parameter") - # ---------------------------------------- - # Test3: domain attribute on one2many fields - # ---------------------------------------- + # -------------------------------------------------- + # Test4: domain attribute on one2many fields + # -------------------------------------------------- partner_child_ids_col._auto_join = True partner_bank_ids_col._auto_join = True @@ -400,10 +371,6 @@ class test_expression(common.TransactionCase): # Do: 2 cascaded one2many with _auto_join, test final leaf is an id self._reinit_mock() partner_ids = partner_obj.search(cr, uid, ['&', (1, '=', 1), ('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) - for query in self.query_list: - print query - print partner_ids - print '--------------------' # Test result: at least one of our added data self.assertTrue(set([p_a]).issubset(set(partner_ids)), "_auto_join on one2many with domains incorrect result") @@ -414,7 +381,7 @@ class test_expression(common.TransactionCase): self.assertIn('"res_partner__child_ids__bank_ids"."acc_number" like %s', sql_query[1], "_auto_join on one2many with domains incorrect result") # TDE TODO: check first domain has a correct table name - self.assertIn('"res_partner__child_ids__bank_ids"."acc_number" like %s', sql_query[1], + self.assertIn('"res_partner__child_ids"."name" = %s', sql_query[1], "_auto_join on one2many with domains incorrect result") partner_child_ids_col._domain = lambda self: [('name', '=', '__%s' % self._name)] @@ -425,7 +392,7 @@ class test_expression(common.TransactionCase): "_auto_join on one2many with domains incorrect result") # ---------------------------------------- - # Test4: result-based tests + # Test5: result-based tests # ---------------------------------------- partner_bank_ids_col._auto_join = False @@ -439,9 +406,6 @@ class test_expression(common.TransactionCase): # Do: ('child_ids.state_id.country_id.code', 'like', '..') without _auto_join self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) - for query in self.query_list: - print query - print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") @@ -455,9 +419,6 @@ class test_expression(common.TransactionCase): state_country_id_col._auto_join = True self._reinit_mock() partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) - for query in self.query_list: - print query - print '----------------------' # Test result: at least our added data + demo data self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") @@ -469,6 +430,7 @@ class test_expression(common.TransactionCase): partner_bank_ids_col._auto_join = False partner_child_ids_col._auto_join = False partner_state_id_col._auto_join = False + partner_parent_id_col._auto_join = False state_country_id_col._auto_join = False BaseModel._where_calc = self._base_model_where_calc From f876c1993068b4087e5d49a536da118db40f7e50 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 17:49:28 +0100 Subject: [PATCH 073/163] [ADD]Create voucher bzr revid: dle@openerp.com-20121206164928-axdnk309y2o3zwrr --- .../wizard/account_coda_import.py | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 81bd2458496..f1fcc8fd760 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -258,6 +258,7 @@ class account_coda_import(osv.osv_memory): if 'counterpartyAddress' in line and line['counterpartyAddress'] != '': note.append(_('Counter Party Address') + ': ' + line['counterpartyAddress']) + line['name'] = "\n".join(filter(None, [line['counterpartyName'], line['communication']])) partner = None partner_id = None @@ -268,10 +269,29 @@ class account_coda_import(osv.osv_memory): invoice = self.pool.get('account.invoice').browse(cr, uid, ids[0]) partner = invoice.partner_id partner_id = partner.id - if invoice.type in ['in_invoice', 'in_refund']: + # voucher_vals = { + # 'type': line['type'] == 'supplier' and 'payment' or 'receipt', + # 'name': line_name, + # 'partner_id': line['partner_id'], + # 'journal_id': statement['journal_id'], + # 'account_id': journal.default_credit_account_id.id, + # 'company_id': journal.company_id.id, + # 'currency_id': journal.company_id.currency_id.id, + # 'date': line['entry_date'], + # 'amount': abs(line['amount']), + # 'period_id': statement['period_id'], + # } + context = {'line_type': line['type'], 'default_type': line['amount'] < 0 and 'payment' or 'receipt', 'type': line['amount'] < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': statement['journal_id'].id, 'default_amount': abs(line['amount']), 'default_reference': line['ref'], 'default_date': line['entryDate'], 'default_name': line['name'], 'default_active': False} + if invoice.type in ['in_invoice', 'in_refund'] and line['debit'] == '1': line['type'] = 'supplier' - else: + print 'Supplier' + print self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_payable.id}, context=context) + elif invoice.type in ['out_invoice'] and line['debit'] == '0': line['type'] = 'customer' + print 'Customer' + print self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_receivable.id}, context=context) + else: + line['type'] = 'general' if 'counterpartyNumber' in line and line['counterpartyNumber']: ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) if ids and len(ids) > 0: @@ -322,7 +342,7 @@ class account_coda_import(osv.osv_memory): note.append(_('Transaction category') + ': ' + line['transaction_category']) data = { - 'name': "\n".join(filter(None, [line['counterpartyName'], line['communication']])), + 'name': line['name'], 'note': "\n".join(note), 'date': line['entryDate'], 'amount': line['amount'], From 6cb854df33e7ec5f543c9c13a68065b4a9b288b5 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 6 Dec 2012 18:35:30 +0100 Subject: [PATCH 074/163] [ADD]Voucher creation bzr revid: dle@openerp.com-20121206173530-s46asy6pomk6if4t --- .../wizard/account_coda_import.py | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index f1fcc8fd760..6de8bdc8104 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -269,27 +269,22 @@ class account_coda_import(osv.osv_memory): invoice = self.pool.get('account.invoice').browse(cr, uid, ids[0]) partner = invoice.partner_id partner_id = partner.id - # voucher_vals = { - # 'type': line['type'] == 'supplier' and 'payment' or 'receipt', - # 'name': line_name, - # 'partner_id': line['partner_id'], - # 'journal_id': statement['journal_id'], - # 'account_id': journal.default_credit_account_id.id, - # 'company_id': journal.company_id.id, - # 'currency_id': journal.company_id.currency_id.id, - # 'date': line['entry_date'], - # 'amount': abs(line['amount']), - # 'period_id': statement['period_id'], - # } - context = {'line_type': line['type'], 'default_type': line['amount'] < 0 and 'payment' or 'receipt', 'type': line['amount'] < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': statement['journal_id'].id, 'default_amount': abs(line['amount']), 'default_reference': line['ref'], 'default_date': line['entryDate'], 'default_name': line['name'], 'default_active': False} + context = { + 'default_partner_id': partner_id, + 'default_amount': abs(line['amount']), + 'default_number': invoice.name, + 'close_after_process': True, + 'invoice_type': invoice.type, + 'invoice_id': invoice.id, + 'default_type': invoice.type in ['out_invoice', 'out_refund'] and 'receipt' or 'payment', + 'type': invoice.type in ['out_invoice', 'out_refund'] and 'receipt' or 'payment' + } if invoice.type in ['in_invoice', 'in_refund'] and line['debit'] == '1': line['type'] = 'supplier' - print 'Supplier' - print self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_payable.id}, context=context) + line['voucher_id'] = self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_payable.id, 'journal_id': statement['journal_id'].id}, context=context) elif invoice.type in ['out_invoice'] and line['debit'] == '0': line['type'] = 'customer' - print 'Customer' - print self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_receivable.id}, context=context) + line['voucher_id'] = self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_receivable.id, 'journal_id': statement['journal_id'].id}, context=context) else: line['type'] = 'general' if 'counterpartyNumber' in line and line['counterpartyNumber']: @@ -340,7 +335,8 @@ class account_coda_import(osv.osv_memory): note.append(_('Transaction family') + ': ' + line['transaction_family']) note.append(_('Transaction code') + ': ' + line['transaction_code']) note.append(_('Transaction category') + ': ' + line['transaction_category']) - + if 'voucher_id' not in line: + line['voucher_id'] = None data = { 'name': line['name'], 'note': "\n".join(note), @@ -352,6 +348,7 @@ class account_coda_import(osv.osv_memory): 'statement_id': statement['id'], 'ref': line['ref'], 'sequence': line['sequence'], + 'voucher_id': line['voucher_id'], } self.pool.get('account.bank.statement.line').create(cr, uid, data, context=context) From 98e87a51aef5c7457c444334f3f5270cbb947ba3 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 7 Dec 2012 09:09:46 +0100 Subject: [PATCH 075/163] [IMP] attachment: sidebar rendering of tipsy in html mode, and error fix bzr revid: chm@openerp.com-20121207080946-f7zr853hvdhdrsk0 --- addons/web/controllers/main.py | 2 +- addons/web/static/src/css/base.css | 3 +++ addons/web/static/src/css/base.sass | 3 +++ addons/web/static/src/js/view_form.js | 5 +++-- addons/web/static/src/js/views.js | 14 ++++++++------ addons/web/static/src/xml/base.xml | 18 +++++++++++++++++- 6 files changed, 35 insertions(+), 10 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 3f35b3f44ea..8e6635c7757 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1349,7 +1349,7 @@ class Binary(openerpweb.Controller): 'id': attachment_id } except Exception,e: - args = {'erorr':e.faultCode.split('--')[1],'title':e.faultCode.split('--')[0]} + args = {'error':e.faultCode } return out % (simplejson.dumps(callback), simplejson.dumps(args)) class Action(openerpweb.Controller): diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index a71a071db3b..8ced4950bc7 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -703,6 +703,9 @@ display: block; color: #4c4c4c; text-decoration: none; + width: 200px; + text-overflow: ellipsis; + overflow: hidden; } .openerp .oe_dropdown_menu > li > a:hover { text-decoration: none; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index f634452a7ee..04d5fb07c8a 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -598,6 +598,9 @@ $sheet-padding: 16px display: block color: #4c4c4c text-decoration: none + width: 200px + text-overflow: ellipsis + overflow: hidden &:hover text-decoration: none .oe_dropdown_arrow:after diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 3703503d029..99fb754e74e 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -5143,9 +5143,10 @@ instance.web.form.FieldMany2ManyBinaryMultiFiles = instance.web.form.AbstractFie // TODO : activate send on wizard and form - if (result.erorr || !result.id ) { + if (result.error || !result.id ) { - this.do_warn(result.title, result.erorr); + console.log(result.error); + this.do_warn(result.error.split('---')[0], result.error.split('---')[1]); files = _.filter(files, function (val) { return !val.upload; }); } else { diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 4e46df5ccd6..5d152db1f60 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1033,6 +1033,11 @@ instance.web.Sidebar = instance.web.Widget.extend({ this.$('.oe_form_dropdown_section').each(function() { $(this).toggle(!!$(this).find('li').length); }); + + self.$("[title]").tipsy({ + 'html': true, + 'delayIn': 500, + }) }, /** * For each item added to the section: @@ -1120,7 +1125,7 @@ instance.web.Sidebar = instance.web.Widget.extend({ var self = this; this.dataset = dataset; this.model_id = model_id; - if (args && args[0]["erorr"]) { + if (args && args[0]["error"]) { instance.web.dialog($('
'),{ modal: true, title: "OpenERP " + _.str.capitalize(args[0]["title"]), @@ -1129,7 +1134,7 @@ instance.web.Sidebar = instance.web.Widget.extend({ click: function(){ $(this).dialog("close"); }}] - }).html(args[0]["erorr"]); + }).html(args[0]["error"]); } if (!model_id) { this.on_attachments_loaded([]); @@ -1144,13 +1149,10 @@ instance.web.Sidebar = instance.web.Widget.extend({ var items = []; var prefix = this.session.url('/web/binary/saveas', {model: 'ir.attachment', field: 'datas', filename_field: 'name'}); _.each(attachments,function(a) { - a.label = a.name.length > 25 ? a.name.substr(0,25) + '...' : a.name; + a.label = a.name; if(a.type === "binary") { a.url = prefix + '&id=' + a.id + '&t=' + (new Date().getTime()); } - a.title = _t("Attachment :") + '\n ' + a.name + '\n' + - (a.create_uid && a.create_uid[0] ? _t("Created by :") + '\n ' + a.create_uid[1] + ' ' + instance.web.format_value(a.create_date, {type:"datetime"}) : '') + - (a.create_uid && a.write_uid && a.create_uid[0] != a.write_uid[0] ? '\n' + _t("Modified by :") + '\n ' + a.write_uid[1] + ' ' + instance.web.format_value(a.write_date, {type:"datetime"}) : ''); }); self.items['files'] = attachments; self.redraw(); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 62d8a872f25..09249c11ea5 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -594,7 +594,23 @@
  • - + + + Attachment :
    + + + +
    + Created by :
    + + + +
    + Modified by :
    + + +
    +
    x From 84ac690b92d92b9ed2ce0c54ae3dfe70dd2fda47 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 7 Dec 2012 09:46:10 +0100 Subject: [PATCH 076/163] [IMP] mail: fix attachment error bzr revid: chm@openerp.com-20121207084610-979a5om26shed1ak --- addons/mail/static/src/js/mail.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 2d5d3e34475..12e83f8fccf 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -422,12 +422,11 @@ openerp.mail = function (session) { on_attachment_loaded: function (event, result) { if (result.erorr || !result.id ) { - - this.do_warn(result.title, result.erorr); + var error_title = result.error.split('\n')[0]; + var error_content = result.error.replace(/^.*\n/, ''); + this.do_warn(error_title, error_content); this.attachment_ids = _.filter(this.attachment_ids, function (val) { return !val.upload; }); - } else { - for (var i in this.attachment_ids) { if (this.attachment_ids[i].filename == result.filename && this.attachment_ids[i].upload) { this.attachment_ids[i]={ @@ -438,10 +437,8 @@ openerp.mail = function (session) { }; } } - } this.display_attachments(); - var $input = this.$('input.oe_form_binary_file'); $input.after($input.clone(true)).remove(); this.$(".oe_attachment_file").show(); From f8c206b1b885d33286299d620c55bdcd9176b16e Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 7 Dec 2012 10:09:41 +0100 Subject: [PATCH 077/163] [IMP] mail: display message attachment error bzr revid: chm@openerp.com-20121207090941-65b2vgwy066wlsmg --- addons/mail/static/src/js/mail.js | 4 +--- addons/mail/static/src/xml/mail.xml | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 12e83f8fccf..e1625089a51 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -422,9 +422,7 @@ openerp.mail = function (session) { on_attachment_loaded: function (event, result) { if (result.erorr || !result.id ) { - var error_title = result.error.split('\n')[0]; - var error_content = result.error.replace(/^.*\n/, ''); - this.do_warn(error_title, error_content); + this.do_warn( session.web.qweb.render('mail.error_upload'), result.error); this.attachment_ids = _.filter(this.attachment_ids, function (val) { return !val.upload; }); } else { for (var i in this.attachment_ids) { diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index cca908a5d98..f10770a27e1 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -179,6 +179,11 @@
    No messages.
    + + Uploading error + Uploading error + Please, wait while the file is uploading. _inherits_join_calc' current_table = self + parent_alias = current_table._table while field in current_table._inherit_fields and not field in current_table._columns: parent_model_name = current_table._inherit_fields[field][0] parent_table = self.pool.get(parent_model_name) - self._inherits_join_add(current_table, parent_model_name, query) + parent_alias = self._inherits_join_add(current_table, parent_model_name, query) current_table = parent_table - return '"%s".%s' % (current_table._table, field) + return '%s."%s"' % (parent_alias, field) def _parent_store_compute(self, cr): if not self._parent_store: @@ -4659,28 +4663,49 @@ class BaseModel(object): :param query: the current query object """ def apply_rule(added_clause, added_params, added_tables, parent_model=None, child_object=None): + """ :param string parent_model: string of the parent model + :param model child_object: model object, base of the rule application + """ if added_clause: + print '--> _apply_ir_rules.apply_rule,', added_clause, added_params, added_tables, parent_model, child_object if parent_model and child_object: + print '\t... calling inherits-Join_add with parent_model %s, child_object %s' % (parent_model, child_object) # as inherited rules are being applied, we need to add the missing JOIN # to reach the parent table (if it was not JOINed yet in the query) - child_object._inherits_join_add(child_object, parent_model, query) + parent_alias = child_object._inherits_join_add(child_object, parent_model, query) + # inherited rules are applied on the external table -> need to get the alias and replace + parent_table = self.pool.get(parent_model)._table + print parent_table, parent_alias + added_clause = [clause.replace('"%s"' % parent_table, '"%s"' % parent_alias) for clause in added_clause] + # not sure of myself here (in the ORM, this statment is quite cool) + new_tables = [] + for table in added_tables: + if table == '"%s"' % (parent_table): + new_table = '"%s" as "%s"' % (parent_table, parent_alias) + else: + new_table = table.replace('"%s"' % parent_table, '"%s"' % parent_alias) + new_tables.append(new_table) + added_tables = new_tables + print '\t... adding tables %s, clause %s (params %s)' % (added_tables, added_clause, added_params) query.where_clause += added_clause query.where_clause_params += added_params for table in added_tables: - quoted_table_name = '%s' % (table) - if quoted_table_name not in query.tables: - query.tables.append(quoted_table_name) + print '\t... adding table %s in %s' % (table, query.tables) + if table not in query.tables: + query.tables.append(table) return True return False # apply main rules on the object rule_obj = self.pool.get('ir.rule') - apply_rule(*rule_obj.domain_get(cr, uid, self._name, mode, context=context)) + rule_where_clause, rule_where_clause_params, rule_tables = rule_obj.domain_get(cr, uid, self._name, mode, context=context) + apply_rule(rule_where_clause, rule_where_clause_params, rule_tables) # apply ir.rules from the parents (through _inherits) for inherited_model in self._inherits: - kwargs = dict(parent_model=inherited_model, child_object=self) #workaround for python2.5 - apply_rule(*rule_obj.domain_get(cr, uid, inherited_model, mode, context=context), **kwargs) + rule_where_clause, rule_where_clause_params, rule_tables = rule_obj.domain_get(cr, uid, inherited_model, mode, context=context) + apply_rule(rule_where_clause, rule_where_clause_params, rule_tables, + parent_model=inherited_model, child_object=self) def _generate_m2o_order_by(self, order_field, query): """ @@ -4690,6 +4715,7 @@ class BaseModel(object): :return: the qualified field name to use in an ORDER BY clause to sort by ``order_field`` """ + print '_generate_m2o_order_by' if order_field not in self._columns and order_field in self._inherit_fields: # also add missing joins for reaching the table containing the m2o field qualified_field = self._inherits_join_calc(order_field, query) @@ -4715,17 +4741,16 @@ class BaseModel(object): # extract the field names, to be able to qualify them and add desc/asc m2o_order_list = [] for order_part in m2o_order.split(","): - m2o_order_list.append(order_part.strip().split(" ",1)[0].strip()) + m2o_order_list.append(order_part.strip().split(" ", 1)[0].strip()) m2o_order = m2o_order_list # Join the dest m2o table if it's not joined yet. We use [LEFT] OUTER join here # as we don't want to exclude results that have NULL values for the m2o - src_table, src_field = qualified_field.replace('"','').split('.', 1) - query.join((src_table, dest_model._table, src_field, 'id'), outer=True) - qualify = lambda field: '"%s"."%s"' % (dest_model._table, field) + src_table, src_field = qualified_field.replace('"', '').split('.', 1) + dst_alias = query.add_join((src_table, dest_model._table, src_field, 'id'), outer=True) + qualify = lambda field: '"%s"."%s"' % (dst_alias, field) return map(qualify, m2o_order) if isinstance(m2o_order, list) else qualify(m2o_order) - def _generate_order_by(self, order_spec, query): """ Attempt to consruct an appropriate ORDER BY clause based on order_spec, which must be @@ -4742,9 +4767,9 @@ class BaseModel(object): subelems.append(' ') order_list.append('"%s"."%s" %s' % (table, subelems[0], subelems[1])) return order_list - order_by_clause = ','.join(_split_order(self._order, self._table)) if order_spec: + print '-->_generate_order_by beginning' order_by_elements = [] self._check_qorder(order_spec) for order_part in order_spec.split(','): @@ -4761,7 +4786,7 @@ class BaseModel(object): elif order_column._type == 'many2one': inner_clause = self._generate_m2o_order_by(order_field, query) else: - continue # ignore non-readable or "non-joinable" fields + continue # ignore non-readable or "non-joinable" fields elif order_field in self._inherit_fields: parent_obj = self.pool.get(self._inherit_fields[order_field][3]) order_column = parent_obj._columns[order_field] @@ -4770,7 +4795,7 @@ class BaseModel(object): elif order_column._type == 'many2one': inner_clause = self._generate_m2o_order_by(order_field, query) else: - continue # ignore non-readable or "non-joinable" fields + continue # ignore non-readable or "non-joinable" fields if inner_clause: if isinstance(inner_clause, list): for clause in inner_clause: @@ -4779,6 +4804,7 @@ class BaseModel(object): order_by_elements.append("%s %s" % (inner_clause, order_direction)) if order_by_elements: order_by_clause = ",".join(order_by_elements) + print '-->_generate_order_by ending' return order_by_clause and (' ORDER BY %s ' % order_by_clause) or '' diff --git a/openerp/osv/query.py b/openerp/osv/query.py index d32ea73b29d..a07def36a31 100644 --- a/openerp/osv/query.py +++ b/openerp/osv/query.py @@ -21,12 +21,21 @@ #.apidoc title: Query object + def _quote(to_quote): if '"' not in to_quote: return '"%s"' % to_quote return to_quote +def _get_alias_from_statement(string): + if len(string.split(' as ')) > 1: + alias = string.split(' as ')[1].replace('"', '') + else: + alias = string.replace('"', '') + return alias + + class Query(object): """ Dumb implementation of a Query object, using 3 string lists so far @@ -44,6 +53,9 @@ class Query(object): # holds the list of tables joined using default JOIN. # the table names are stored double-quoted (backwards compatibility) self.tables = tables or [] + # holds a mapping of table aliases: + # self._table_alias_mapping = {'alias_1': 'table_name'} + self._table_alias_mapping = {} # holds the list of WHERE clause elements, to be joined with # 'AND' when generating the final query @@ -67,7 +79,110 @@ class Query(object): # LEFT JOIN "table_c" ON ("table_a"."table_a_col2" = "table_c"."table_c_col") self.joins = joins or {} - def join(self, connection, outer=False): + def _add_table_alias(self, table_alias): + pass + + def _get_table_aliases(self): + aliases = [] + for table in self.tables: + if len(table.split(' as ')) > 1: + aliases.append(table.split(' as ')[1].replace('"', '')) + else: + aliases.append(table.replace('"', '')) + # print '--', aliases + return aliases + + def _get_alias_mapping(self): + mapping = {} + aliases = self._get_table_aliases() + for alias in aliases: + for table in self.tables: + if '"%s"' % (alias) in table: + mapping.setdefault(alias, table) + return mapping + + def add_new_join(self, connection, implicit=True, outer=False): + """ Join a destination table to the current table. + + :param implicit: False if the join is an explicit join. This allows + to fall back on the previous implementation of ``join`` before + OpenERP 7.0. It therefore adds the JOIN specified in ``connection`` + If True, the join is done implicitely, by adding the table alias + in the from clause and the join condition in the where clause + of the query. + :param connection: a tuple ``(lhs, table, lhs_col, col, link)``. + The join corresponds to the SQL equivalent of:: + + (lhs.lhs_col = table.col) + + Note that all connection elements are strings. Please refer to expression.py for more details about joins. + + :param outer: True if a LEFT OUTER JOIN should be used, if possible + (no promotion to OUTER JOIN is supported in case the JOIN + was already present in the query, as for the moment + implicit INNER JOINs are only connected from NON-NULL + columns so it would not be correct (e.g. for + ``_inherits`` or when a domain criterion explicitly + adds filtering) + """ + from openerp.osv.expression import generate_table_alias + (lhs, table, lhs_col, col, link) = connection + alias, alias_statement = generate_table_alias(lhs._table, [(table._table, link)]) + + if implicit: + print '\t\t... Query: trying to add %s in %s (received %s)' % (alias_statement, self.tables, connection) + if alias_statement not in self.tables: + self.tables.append(alias_statement) + condition = '("%s"."%s" = "%s"."%s")' % (lhs._table, lhs_col, alias, col) + print '\t\t... added %s' % (condition) + self.where_clause.append(condition) + return alias + else: + (lhs, table, lhs_col, col) = connection + lhs = _quote(lhs) + table = _quote(table) + print connection + aliases = [] + for table in self.tables: + if len(table.split(' as ')) > 1: + aliases.append(table.split(' as ')[1]) + else: + aliases.append(table) + print '--', aliases + aliases = [table.split(' as ') for table in self.tables] + assert lhs in self.aliases, "Left-hand-side table %s must already be part of the query tables %s!" % (lhs, str(self.tables)) + if table in self.tables: + # already joined, must ignore (promotion to outer and multiple joins not supported yet) + pass + else: + # add JOIN + self.tables.append(table) + self.joins.setdefault(lhs, []).append((table, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) + return self + + def add_implicit_join(self, connection): + """ Adds an implicit join. This means that left-hand table is added to the + Query.tables (adding a table in the from clause), and that a join + condition is added in Query.where_clause. + + Implicit joins use expression.generate_table_alias to generate the + alias the the joined table. + + :param connection: a tuple``(lhs, table, lhs_col, col, link)`` Please + refer to expression.py for more details about joins. + """ + from openerp.osv.expression import generate_table_alias + (lhs, table, lhs_col, col, link) = connection + alias, alias_statement = generate_table_alias(lhs._table, [(table._table, link)]) + print '\t\t... Query: trying to add %s in %s (received %s)' % (alias_statement, self.tables, connection) + if alias_statement not in self.tables: + self.tables.append(alias_statement) + condition = '("%s"."%s" = "%s"."%s")' % (lhs._table, lhs_col, alias, col) + print '\t\t... added %s' % (condition) + self.where_clause.append(condition) + return alias + + def add_join(self, connection, outer=False): """Adds the JOIN specified in ``connection``. :param connection: a tuple ``(lhs, table, lhs_col, col)``. @@ -75,6 +190,8 @@ class Query(object): (lhs.lhs_col = table.col) + Note that all connection elements are strings. + :param outer: True if a LEFT OUTER JOIN should be used, if possible (no promotion to OUTER JOIN is supported in case the JOIN was already present in the query, as for the moment @@ -83,36 +200,52 @@ class Query(object): ``_inherits`` or when a domain criterion explicitly adds filtering) """ + from openerp.osv.expression import generate_table_alias (lhs, table, lhs_col, col) = connection - lhs = _quote(lhs) - table = _quote(table) - assert lhs in self.tables, "Left-hand-side table must already be part of the query!" - if table in self.tables: + # lhs = _quote(lhs) + # table = _quote(table) + print '\t\t... Query.add_join(): adding connection %s' % str(connection) + + aliases = self._get_table_aliases() + + assert lhs in aliases, "Left-hand-side table %s must already be part of the query tables %s!" % (lhs, str(self.tables)) + + rhs, rhs_statement = generate_table_alias(lhs, [(connection[1], connection[2])]) + print rhs, rhs_statement + + if rhs_statement in self.tables: # already joined, must ignore (promotion to outer and multiple joins not supported yet) pass else: # add JOIN - self.tables.append(table) - self.joins.setdefault(lhs, []).append((table, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) - return self + self.tables.append(rhs_statement) + self.joins.setdefault(lhs, []).append((rhs, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) + return rhs def get_sql(self): """Returns (query_from, query_where, query_params)""" query_from = '' tables_to_process = list(self.tables) + alias_mapping = self._get_alias_mapping() + + # print 'tables_to_process %s' % (tables_to_process) + # print 'self.joins %s' % (self.joins) + # print 'alias_mapping %s' % (alias_mapping) + def add_joins_for_table(table, query_from): for (dest_table, lhs_col, col, join) in self.joins.get(table, []): - tables_to_process.remove(dest_table) - query_from += ' %s %s ON (%s."%s" = %s."%s")' % \ - (join, dest_table, table, lhs_col, dest_table, col) + # print dest_table + tables_to_process.remove(alias_mapping[dest_table]) + query_from += ' %s %s ON ("%s"."%s" = "%s"."%s")' % \ + (join, alias_mapping[dest_table], table, lhs_col, dest_table, col) query_from = add_joins_for_table(dest_table, query_from) return query_from for table in tables_to_process: query_from += table - if table in self.joins: - query_from = add_joins_for_table(table, query_from) + if _get_alias_from_statement(table) in self.joins: + query_from = add_joins_for_table(_get_alias_from_statement(table), query_from) query_from += ',' query_from = query_from[:-1] # drop last comma return (query_from, " AND ".join(self.where_clause), self.where_clause_params) diff --git a/openerp/test/test_osv.py b/openerp/test/test_osv.py index d3ff75c03d5..2db9cec1cbd 100644 --- a/openerp/test/test_osv.py +++ b/openerp/test/test_osv.py @@ -28,8 +28,8 @@ class QueryTestCase(unittest.TestCase): query = Query() query.tables.extend(['"product_product"','"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.join(("product_product", "res_user", "user_id", "id"), outer=True) # outer join + query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join + query.add_join(("product_product", "res_user", "user_id", "id"), outer=True) # outer join self.assertEquals(query.get_sql()[0].strip(), """"product_product" LEFT JOIN "res_user" ON ("product_product"."user_id" = "res_user"."id"),"product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) @@ -38,8 +38,8 @@ class QueryTestCase(unittest.TestCase): query = Query() query.tables.extend(['"product_product"','"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join + query.add_join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join self.assertEquals(query.get_sql()[0].strip(), """"product_product","product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") LEFT JOIN "res_user" ON ("product_category"."user_id" = "res_user"."id")""".strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) @@ -48,8 +48,8 @@ class QueryTestCase(unittest.TestCase): query = Query() query.tables.extend(['"product_product"','"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join + query.add_join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join query.tables.append('"account.account"') query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join self.assertEquals(query.get_sql()[0].strip(), From 390ff1540fb8eef5228e10a74d9aa2c88daa886a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 7 Dec 2012 13:37:27 +0100 Subject: [PATCH 082/163] [CLEAN] expression.py: cleaned and added comments, var names (table -> model notably). bzr revid: tde@openerp.com-20121207123727-md65da41863y827e --- openerp/osv/expression.py | 331 ++++++++++++++++++++------------------ 1 file changed, 173 insertions(+), 158 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 526b09ccda2..703b7503387 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -325,7 +325,7 @@ def generate_table_alias(src_table_alias, joined_tables=[]): - then, each joined table is added in the alias using a 'link field name' that is used to render unique aliases for a given path - returns a tuple composed of the alias, and the full table alias to be - added in a from condition + added in a from condition with quoting done Examples: - src_table_alias='res_users', join_tables=[]: alias = ('res_users','"res_users"') @@ -336,7 +336,7 @@ def generate_table_alias(src_table_alias, joined_tables=[]): :param list join_tables: list of tuples (dst_model, link_field) - :return tuple: (table alias, alias statement for from clause with quotes added) + :return tuple: (table_alias, alias statement for from clause with quotes added) """ alias = src_table_alias if not joined_tables: @@ -366,11 +366,10 @@ def normalize_leaf(element): def is_operator(element): - """Test whether an object is a valid domain operator. """ + """ Test whether an object is a valid domain operator. """ return isinstance(element, basestring) and element in DOMAIN_OPERATORS -# TODO change the share wizard to use this function. def is_leaf(element, internal=False): """ Test whether an object is a valid domain term: - is a list or tuple @@ -380,6 +379,8 @@ def is_leaf(element, internal=False): :param tuple element: a leaf in form (left, operator, right) :param boolean internal: allow or not the 'inselect' internal operator in the term. This should be always left to False. + + Note: OLD TODO change the share wizard to use this function. """ INTERNAL_OPS = TERM_OPERATORS + ('<>',) if internal: @@ -421,39 +422,10 @@ def select_distinct_from_where_not_null(cr, select_field, from_table): # ------------------------------------------------- class ExtendedLeaf(object): - - def __init__(self, leaf, table, context_stack=None): - """ Initialize the ExtendedLeaf - - :attr [string, tuple] leaf: operator or tuple-formatted domain - expression - :attr object table: table object - :attr list _tables: list of chained table objects, updated when - adding joins - :attr tuple elements: manipulation-friendly leaf - :attr object field: field obj, taken from table, not necessarily - found (inherits, 'id') - :attr list field_path: exploded left of elements - (partner_id.name -> ['partner_id', 'name']) - :attr object relational_table: distant table for relational fields - """ - assert table, 'Invalid leaf creation without table' - self.context_stack = context_stack or [] - # validate the leaf - self.leaf = leaf - # normalize the leaf's operator - self.normalize_leaf() - # set working variables; handle the context stack and previous tables - self.table = table - self._tables = [] - for item in self.context_stack: - self._tables.append(item[0]) - self._tables.append(table) - # check validity - self.check_leaf() - - def __str__(self): - return '' % (str(self.leaf), self.table._table, ','.join(self._get_context_debug())) + """ Class wrapping a domain leaf, and giving some services and management + features on it. In particular it managed join contexts to be able to + construct queries through multiple models. + """ # -------------------------------------------------- # Join / Context manipulation @@ -500,32 +472,61 @@ class ExtendedLeaf(object): # i.e.: many2one: 'state_id': current field name # -------------------------------------------------- + def __init__(self, leaf, model, join_context=None): + """ Initialize the ExtendedLeaf + + :attr [string, tuple] leaf: operator or tuple-formatted domain + expression + :attr obj model: current working model + :attr list _models: list of chained models, updated when + adding joins + :attr list join_context: list of join contexts. This is a list of + tuples like ``(lhs, table, lhs_col, col, link)`` + :param obj lhs: source (left hand) model + :param obj model: destination (right hand) model + :param string lhs_col: source model column for join condition + :param string col: destination model column for join condition + :param link: link column between source and destination model + that is not necessarily (but generally) a real column used + in the condition (i.e. in many2one); this link is used to + compute aliases + """ + assert model, 'Invalid leaf creation without table' + self.join_context = join_context or [] + self.leaf = leaf + # normalize the leaf's operator + self.normalize_leaf() + # set working variables; handle the context stack and previous tables + self.model = model + self._models = [] + for item in self.join_context: + self._models.append(item[0]) + self._models.append(model) + # check validity + self.check_leaf() + + def __str__(self): + return '' % (str(self.leaf), self.model._table, ','.join(self._get_context_debug())) + def generate_alias(self): - links = [(context[1]._table, context[4]) for context in self.context_stack] - alias, alias_statement = generate_table_alias(self._tables[0]._table, links) + links = [(context[1]._table, context[4]) for context in self.join_context] + alias, alias_statement = generate_table_alias(self._models[0]._table, links) return alias - def add_join_context(self, table, lhs_col, table_col, link): + def add_join_context(self, model, lhs_col, table_col, link): """ See above comments for more details. A join context is a tuple like: - ``(lhs, table, lhs_col, col, link)`` - where - - lhs is the source table (self.table) - - table is the destination table - - lsh_col is the source table column name used for the condition - - table_col is the destination table column name used for the condition - - link is the field name source of the join used as context to - generate the destination table alias + ``(lhs, model, lhs_col, col, link)`` - After adding the join, the table of the current leaf is updated. + After adding the join, the model of the current leaf is updated. """ - self.context_stack.append((self.table, table, lhs_col, table_col, link)) - self._tables.append(table) - self.table = table + self.join_context.append((self.model, model, lhs_col, table_col, link)) + self._models.append(model) + self.model = model def get_join_conditions(self): conditions = [] - alias = self._tables[0]._table - for context in self.context_stack: + alias = self._models[0]._table + for context in self.join_context: previous_alias = alias alias += '__' + context[4] conditions.append('"%s"."%s"="%s"."%s"' % (previous_alias, context[2], alias, context[3])) @@ -533,15 +534,15 @@ class ExtendedLeaf(object): def get_tables(self): tables = set() - alias = self._tables[0]._table - for context in self.context_stack: - alias += '__' + context[4] - table_full_alias = '"%s" as "%s"' % (context[1]._table, alias) - tables.add(table_full_alias) + links = [] + for context in self.join_context: + links.append((context[1]._table, context[4])) + alias, alias_statement = generate_table_alias(self._models[0]._table, links) + tables.add(alias_statement) return tables def _get_context_debug(self): - names = ['"%s"."%s"="%s"."%s" (%s)' % (item[0]._table, item[2], item[1]._table, item[3], item[4]) for item in self.context_stack] + names = ['"%s"."%s"="%s"."%s" (%s)' % (item[0]._table, item[2], item[1]._table, item[3], item[4]) for item in self.join_context] return names # -------------------------------------------------- @@ -589,20 +590,19 @@ class expression(object): right after initialization. :param exp: expression (using domain ('foo', '=', 'bar' format)) - :param table: root table object + :param table: root model :attr list result: list that will hold the result of the parsing as a list of ExtendedLeaf :attr list joins: list of join conditions, such as (res_country_state."id" = res_partner."state_id") - :attr root_table: base table for the query + :attr root_model: base model for the query :attr list expression: the domain expression, that will be normalized and prepared """ self.has_unaccent = openerp.modules.registry.RegistryManager.get(cr.dbname).has_unaccent - self.result = [] self.joins = [] - self.root_table = table + self.root_model = table # normalize and prepare the expression for parsing self.expression = distribute_not(normalize_domain(exp)) @@ -621,7 +621,7 @@ class expression(object): for table in leaf.get_tables(): if table not in tables: tables.append(table) - table_name = '"%s"' % self.root_table._table + table_name = _quote(self.root_model._table) if table_name not in tables: tables.append(table_name) return tables @@ -633,29 +633,30 @@ class expression(object): def parse(self, cr, uid, context): """ Transform the leaves of the expression - The principle is to pop elements from the left of a leaf stack. Each - leaf is processed. The processing is a if/elif list of various cases - that appear in the leafs (many2one, function fields, ...). Two results - can appear at the end of a leaf processing: - - the leaf is modified or new leafs introduced in the domain: they - are added at the left of the stack, to be processed next + The principle is to pop elements from a leaf stack one at a time. + Each leaf is processed. The processing is a if/elif list of various + cases that appear in the leafs (many2one, function fields, ...). + Two things can happen as a processing result: + - the leaf has been modified and/or new leafs have to be introduced + in the expression; they are pushed into the leaf stack, to be + processed right after - the leaf is added to the result - Some var explanation: - :var obj working_table: table object, table containing the field + Some internal var explanation: + :var obj working_model: model object, model containing the field (the name provided in the left operand) :var list field_path: left operand seen as a path (foo.bar -> [foo, bar]) - :var obj relational_table: relational table of a field (field._obj) - ex: res_partner.bank_ids -> res_partner_bank + :var obj relational_model: relational model of a field (field._obj) + ex: res_partner.bank_ids -> res.partner.bank """ - def to_ids(value, relational_table, context=None, limit=None): + def to_ids(value, relational_model, context=None, limit=None): """ Normalize a single id or name, or a list of those, into a list of ids :param {int,long,basestring,list,tuple} value: if int, long -> return [value] if basestring, convert it into a list of basestrings, then if list of basestring -> - perform a name_search on relational_table for each name + perform a name_search on relational_model for each name return the list of related ids """ names = [] @@ -666,7 +667,7 @@ class expression(object): elif isinstance(value, (int, long)): return [value] if names: - name_get_list = [name_get[0] for name in names for name_get in relational_table.name_search(cr, uid, name, [], 'ilike', context=context, limit=limit)] + name_get_list = [name_get[0] for name in names for name_get in relational_model.name_search(cr, uid, name, [], 'ilike', context=context, limit=limit)] return list(set(name_get_list)) return list(value) @@ -693,24 +694,31 @@ class expression(object): return ids + recursive_children(ids2, model, parent_field) return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] - def create_substitution_leaf(leaf, new_elements, new_table=None): - if new_table is None: - new_table = leaf.table - new_context_stack = [tuple(context) for context in leaf.context_stack] - new_leaf = ExtendedLeaf(new_elements, new_table, context_stack=new_context_stack) + def create_substitution_leaf(leaf, new_elements, new_model=None): + """ From a leaf, create a new leaf (based on the new_elements tuple + and new_model), that will have the same join context. Used to + insert equivalent leafs in the processing stack. """ + if new_model is None: + new_model = leaf.model + new_join_context = [tuple(context) for context in leaf.join_context] + new_leaf = ExtendedLeaf(new_elements, new_model, join_context=new_join_context) return new_leaf def pop(): + """ Pop a leaf to process. """ return self.stack.pop() def push(leaf): + """ Push a leaf to be processed right after. """ self.stack.append(leaf) def push_result(leaf): + """ Push a leaf to the results. This leaf has been fully processed + and validated. """ self.result.append(leaf) self.result = [] - self.stack = [ExtendedLeaf(leaf, self.root_table) for leaf in self.expression] + self.stack = [ExtendedLeaf(leaf, self.root_model) for leaf in self.expression] # process from right to left; expression is from left to right self.stack.reverse() @@ -719,7 +727,7 @@ class expression(object): leaf = pop() # Get working variables - working_table = leaf.table + working_model = leaf.model if leaf.is_operator(): left, operator, right = leaf.leaf, None, None elif leaf.is_true_leaf() or leaf.is_false_leaf(): @@ -728,11 +736,11 @@ class expression(object): else: left, operator, right = leaf.leaf field_path = left.split('.', 1) - field = working_table._columns.get(field_path[0]) + field = working_model._columns.get(field_path[0]) if field and field._obj: - relational_table = working_table.pool.get(field._obj) + relational_model = working_model.pool.get(field._obj) else: - relational_table = None + relational_model = None # ---------------------------------------- # SIMPLE CASE @@ -746,7 +754,7 @@ class expression(object): # ---------------------------------------- # FIELD NOT FOUND - # -> from inherits'd fields -> work on the related table, and add + # -> from inherits'd fields -> work on the related model, and add # a join condition # -> ('id', 'child_of', '..') -> use a 'to_ids' # -> but is one on the _log_access special fields, add directly to @@ -755,19 +763,19 @@ class expression(object): # -> else: crash # ---------------------------------------- - elif not field and field_path[0] in working_table._inherit_fields: + elif not field and field_path[0] in working_model._inherit_fields: # comments about inherits'd fields # { 'field_name': ('parent_model', 'm2o_field_to_reach_parent', # field_column_obj, origina_parent_model), ... } - next_table = working_table.pool.get(working_table._inherit_fields[field_path[0]][0]) - leaf.add_join_context(next_table, working_table._inherits[next_table._name], 'id', working_table._inherits[next_table._name]) + next_model = working_model.pool.get(working_model._inherit_fields[field_path[0]][0]) + leaf.add_join_context(next_model, working_model._inherits[next_model._name], 'id', working_model._inherits[next_model._name]) push(leaf) elif not field and left == 'id' and operator == 'child_of': - ids2 = to_ids(right, working_table, context) - dom = child_of_domain(left, ids2, working_table) + ids2 = to_ids(right, working_model, context) + dom = child_of_domain(left, ids2, working_model) for dom_leaf in reversed(dom): - new_leaf = create_substitution_leaf(leaf, dom_leaf, working_table) + new_leaf = create_substitution_leaf(leaf, dom_leaf, working_model) push(new_leaf) elif not field and field_path[0] in MAGIC_COLUMNS: @@ -791,32 +799,32 @@ class expression(object): elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: # res_partner.state_id = res_partner__state_id.id - leaf.add_join_context(relational_table, field_path[0], 'id', field_path[0]) - push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) + leaf.add_join_context(relational_model, field_path[0], 'id', field_path[0]) + push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_model)) elif len(field_path) > 1 and field._type == 'one2many' and field._auto_join: # res_partner.id = res_partner__bank_ids.partner_id - leaf.add_join_context(relational_table, 'id', field._fields_id, field_path[0]) - domain = field._domain(working_table) if callable(field._domain) else field._domain - push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table)) + leaf.add_join_context(relational_model, 'id', field._fields_id, field_path[0]) + domain = field._domain(working_model) if callable(field._domain) else field._domain + push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_model)) if domain: domain = normalize_domain(domain) for elem in reversed(domain): - push(create_substitution_leaf(leaf, elem, relational_table)) - push(create_substitution_leaf(leaf, AND_OPERATOR, relational_table)) + push(create_substitution_leaf(leaf, elem, relational_model)) + push(create_substitution_leaf(leaf, AND_OPERATOR, relational_model)) elif len(field_path) > 1 and field._auto_join: raise NotImplementedError('_auto_join attribute not supported on many2many field %s' % (left)) elif len(field_path) > 1 and field._type == 'many2one': - right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) + right_ids = relational_model.search(cr, uid, [(field_path[1], operator, right)], context=context) leaf.leaf = (field_path[0], 'in', right_ids) push(leaf) # Making search easier when there is a left operand as field.o2m or field.m2m elif len(field_path) > 1 and field._type in ['many2many', 'one2many']: - right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context) - table_ids = working_table.search(cr, uid, [(field_path[0], 'in', right_ids)], context=dict(context, active_test=False)) + right_ids = relational_model.search(cr, uid, [(field_path[1], operator, right)], context=context) + table_ids = working_model.search(cr, uid, [(field_path[0], 'in', right_ids)], context=dict(context, active_test=False)) leaf.leaf = ('id', 'in', table_ids) push(leaf) @@ -842,7 +850,7 @@ class expression(object): elif isinstance(field, fields.function) and not field.store: # this is a function field that is not stored - fct_domain = field.search(cr, uid, working_table, left, [leaf.leaf], context=context) + fct_domain = field.search(cr, uid, working_model, left, [leaf.leaf], context=context) if not fct_domain: leaf.leaf = TRUE_LEAF push(leaf) @@ -850,26 +858,30 @@ class expression(object): # we assume that the expression is valid # we create a dummy leaf for forcing the parsing of the resulting expression for domain_element in reversed(fct_domain): - push(create_substitution_leaf(leaf, domain_element, working_table)) - # self.push(create_substitution_leaf(leaf, TRUE_LEAF, working_table)) - # self.push(create_substitution_leaf(leaf, AND_OPERATOR, working_table)) + push(create_substitution_leaf(leaf, domain_element, working_model)) + # self.push(create_substitution_leaf(leaf, TRUE_LEAF, working_model)) + # self.push(create_substitution_leaf(leaf, AND_OPERATOR, working_model)) + + # ------------------------------------------------- + # RELATIONAL FIELDS + # ------------------------------------------------- # Applying recursivity on field(one2many) elif field._type == 'one2many' and operator == 'child_of': - ids2 = to_ids(right, relational_table, context) - if field._obj != working_table._name: - dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) + ids2 = to_ids(right, relational_model, context) + if field._obj != working_model._name: + dom = child_of_domain(left, ids2, relational_model, prefix=field._obj) else: - dom = child_of_domain('id', ids2, working_table, parent=left) + dom = child_of_domain('id', ids2, working_model, parent=left) for dom_leaf in reversed(dom): - push(create_substitution_leaf(leaf, dom_leaf, working_table)) + push(create_substitution_leaf(leaf, dom_leaf, working_model)) elif field._type == 'one2many': call_null = True if right is not False: if isinstance(right, basestring): - ids2 = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, context=context, limit=None)] + ids2 = [x[0] for x in relational_model.name_search(cr, uid, right, [], operator, context=context, limit=None)] if ids2: operator = 'in' else: @@ -881,36 +893,36 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null = False - push(create_substitution_leaf(leaf, FALSE_LEAF, working_table)) + push(create_substitution_leaf(leaf, FALSE_LEAF, working_model)) else: - ids2 = select_from_where(cr, field._fields_id, relational_table._table, 'id', ids2, operator) + ids2 = select_from_where(cr, field._fields_id, relational_model._table, 'id', ids2, operator) if ids2: call_null = False o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - push(create_substitution_leaf(leaf, ('id', o2m_op, ids2), working_table)) + push(create_substitution_leaf(leaf, ('id', o2m_op, ids2), working_model)) if call_null: o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - push(create_substitution_leaf(leaf, ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_table._table)), working_table)) + push(create_substitution_leaf(leaf, ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_model._table)), working_model)) elif field._type == 'many2many': - rel_table, rel_id1, rel_id2 = field._sql_names(working_table) + rel_table, rel_id1, rel_id2 = field._sql_names(working_model) #FIXME if operator == 'child_of': def _rec_convert(ids): - if relational_table == working_table: + if relational_model == working_model: return ids return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator) - ids2 = to_ids(right, relational_table, context) - dom = child_of_domain('id', ids2, relational_table) - ids2 = relational_table.search(cr, uid, dom, context=context) - push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), working_table)) + ids2 = to_ids(right, relational_model, context) + dom = child_of_domain('id', ids2, relational_model) + ids2 = relational_model.search(cr, uid, dom, context=context) + push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), working_model)) else: call_null_m2m = True if right is not False: if isinstance(right, basestring): - res_ids = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, context=context)] + res_ids = [x[0] for x in relational_model.name_search(cr, uid, right, [], operator, context=context)] if res_ids: operator = 'in' else: @@ -922,29 +934,29 @@ class expression(object): if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null_m2m = False - push(create_substitution_leaf(leaf, FALSE_LEAF, working_table)) + push(create_substitution_leaf(leaf, FALSE_LEAF, working_model)) else: operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - push(create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_table)) + push(create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_model)) if call_null_m2m: m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - push(create_substitution_leaf(leaf, ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_table)) + push(create_substitution_leaf(leaf, ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_model)) elif field._type == 'many2one': if operator == 'child_of': - ids2 = to_ids(right, relational_table, context) - if field._obj != working_table._name: - dom = child_of_domain(left, ids2, relational_table, prefix=field._obj) + ids2 = to_ids(right, relational_model, context) + if field._obj != working_model._name: + dom = child_of_domain(left, ids2, relational_model, prefix=field._obj) else: - dom = child_of_domain('id', ids2, working_table, parent=left) + dom = child_of_domain('id', ids2, working_model, parent=left) for dom_leaf in reversed(dom): - push(create_substitution_leaf(leaf, dom_leaf, working_table)) + push(create_substitution_leaf(leaf, dom_leaf, working_model)) else: - def _get_expression(relational_table, cr, uid, left, right, operator, context=None): + def _get_expression(relational_model, cr, uid, left, right, operator, context=None): if context is None: context = {} c = context.copy() @@ -959,29 +971,32 @@ class expression(object): operator = dict_op[operator] elif isinstance(right, list) and operator in ['!=', '=']: # for domain (FIELD,'=',['value1','value2']) operator = dict_op[operator] - res_ids = [x[0] for x in relational_table.name_search(cr, uid, right, [], operator, limit=None, context=c)] + res_ids = [x[0] for x in relational_model.name_search(cr, uid, right, [], operator, limit=None, context=c)] if operator in NEGATIVE_TERM_OPERATORS: res_ids.append(False) # TODO this should not be appended if False was in 'right' return (left, 'in', res_ids) # resolve string-based m2o criterion into IDs if isinstance(right, basestring) or \ right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): - push(create_substitution_leaf(leaf, _get_expression(relational_table, cr, uid, left, right, operator, context=context), working_table)) + push(create_substitution_leaf(leaf, _get_expression(relational_model, cr, uid, left, right, operator, context=context), working_model)) else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() push_result(leaf) - else: - # other field type - # add the time part to datetime field when it's not there: - if field._type == 'datetime' and right and len(right) == 10: + # ------------------------------------------------- + # OTHER FIELDS + # -> datetime fields: manage time part of the datetime + # field when it is not there + # -> manage translatable fields + # ------------------------------------------------- + else: + if field._type == 'datetime' and right and len(right) == 10: if operator in ('>', '>='): right += ' 00:00:00' elif operator in ('<', '<='): right += ' 23:59:59' - - push(create_substitution_leaf(leaf, (left, operator, right), working_table)) + push(create_substitution_leaf(leaf, (left, operator, right), working_model)) elif field.translate: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') @@ -1001,45 +1016,45 @@ class expression(object): subselect += ' AND value ' + sql_operator + ' ' + " (" + instr + ")" \ ') UNION (' \ ' SELECT id' \ - ' FROM "' + working_table._table + '"' \ + ' FROM "' + working_model._table + '"' \ ' WHERE "' + left + '" ' + sql_operator + ' ' + " (" + instr + "))" else: subselect += ' AND value ' + sql_operator + instr + \ ') UNION (' \ ' SELECT id' \ - ' FROM "' + working_table._table + '"' \ + ' FROM "' + working_model._table + '"' \ ' WHERE "' + left + '" ' + sql_operator + instr + ")" - params = [working_table._name + ',' + left, + params = [working_model._name + ',' + left, context.get('lang', False) or 'en_US', 'model', right, right, ] - push(create_substitution_leaf(leaf, ('id', 'inselect', (subselect, params)), working_table)) + push(create_substitution_leaf(leaf, ('id', 'inselect', (subselect, params)), working_model)) else: push_result(leaf) # ---------------------------------------- # END OF PARSING FULL DOMAIN + # -> generate joins # ---------------------------------------- - # Generate joins joins = set() for leaf in self.result: joins |= set(leaf.get_join_conditions()) self.joins = list(joins) def __leaf_to_sql(self, eleaf): - table = eleaf.table + model = eleaf.model leaf = eleaf.leaf left, operator, right = leaf # final sanity checks - should never fail assert operator in (TERM_OPERATORS + ('inselect',)), \ "Invalid operator %r in domain term %r" % (operator, leaf) - assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in table._all_columns \ + assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in model._all_columns \ or left in MAGIC_COLUMNS, "Invalid field %r in domain term %r" % (left, leaf) table_alias = '"%s"' % (eleaf.generate_alias()) @@ -1079,7 +1094,7 @@ class expression(object): if left == 'id': instr = ','.join(['%s'] * len(params)) else: - instr = ','.join([table._columns[left]._symbol_set[0]] * len(params)) + instr = ','.join([model._columns[left]._symbol_set[0]] * len(params)) query = '(%s."%s" %s (%s))' % (table_alias, left, operator, instr) else: # The case for (left, 'in', []) or (left, 'not in', []). @@ -1094,7 +1109,7 @@ class expression(object): else: # Must not happen raise ValueError("Invalid domain term %r" % (leaf,)) - elif right == False and (left in table._columns) and table._columns[left]._type == "boolean" and (operator == '='): + elif right == False and (left in model._columns) and model._columns[left]._type == "boolean" and (operator == '='): query = '(%s."%s" IS NULL or %s."%s" = false )' % (table_alias, left, table_alias, left) params = [] @@ -1102,7 +1117,7 @@ class expression(object): query = '%s."%s" IS NULL ' % (table_alias, left) params = [] - elif right == False and (left in table._columns) and table._columns[left]._type == "boolean" and (operator == '!='): + elif right == False and (left in model._columns) and model._columns[left]._type == "boolean" and (operator == '!='): query = '(%s."%s" IS NOT NULL and %s."%s" != false)' % (table_alias, left, table_alias, left) params = [] @@ -1117,7 +1132,7 @@ class expression(object): params = [] else: # '=?' behaves like '=' in other cases - query, params = self.__leaf_to_sql((left, '=', right), table) + query, params = self.__leaf_to_sql((left, '=', right), model) elif left == 'id': query = '%s.id %s %%s' % (table_alias, operator) @@ -1127,8 +1142,8 @@ class expression(object): need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') sql_operator = {'=like': 'like', '=ilike': 'ilike'}.get(operator, operator) - if left in table._columns: - format = need_wildcard and '%s' or table._columns[left]._symbol_set[0] + if left in model._columns: + format = need_wildcard and '%s' or model._columns[left]._symbol_set[0] if self.has_unaccent and sql_operator in ('ilike', 'not ilike'): query = '(unaccent(%s."%s") %s unaccent(%s))' % (table_alias, left, sql_operator, format) else: @@ -1149,8 +1164,8 @@ class expression(object): str_utf8 = str(right) params = '%%%s%%' % str_utf8 add_null = not str_utf8 - elif left in table._columns: - params = table._columns[left]._symbol_set[1](right) + elif left in model._columns: + params = model._columns[left]._symbol_set[1](right) if add_null: query = '(%s OR %s."%s" IS NULL)' % (query, table_alias, left) From bee5426c7093e3292441a214882e0207b7f9d8b0 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 7 Dec 2012 13:58:38 +0100 Subject: [PATCH 083/163] [FIX]Voucher and voucher line bzr revid: dle@openerp.com-20121207125838-n36yyge5d1vm65ir --- .../wizard/account_coda_import.py | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 6de8bdc8104..97d99b89e83 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -269,24 +269,47 @@ class account_coda_import(osv.osv_memory): invoice = self.pool.get('account.invoice').browse(cr, uid, ids[0]) partner = invoice.partner_id partner_id = partner.id - context = { - 'default_partner_id': partner_id, - 'default_amount': abs(line['amount']), - 'default_number': invoice.name, - 'close_after_process': True, - 'invoice_type': invoice.type, - 'invoice_id': invoice.id, - 'default_type': invoice.type in ['out_invoice', 'out_refund'] and 'receipt' or 'payment', - 'type': invoice.type in ['out_invoice', 'out_refund'] and 'receipt' or 'payment' - } + if invoice.type in ['in_invoice', 'in_refund'] and line['debit'] == '1': line['type'] = 'supplier' - line['voucher_id'] = self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_payable.id, 'journal_id': statement['journal_id'].id}, context=context) - elif invoice.type in ['out_invoice'] and line['debit'] == '0': + elif invoice.type in ['out_invoice', 'out_refund'] and line['debit'] == '0': line['type'] = 'customer' - line['voucher_id'] = self.pool.get('account.voucher').create(cr, uid, {'account_id': partner.property_account_receivable.id, 'journal_id': statement['journal_id'].id}, context=context) else: line['type'] = 'general' + line['reconcile'] = False + if invoice.type in ['in_invoice', 'out_invoice']: + iml_ids = self.pool.get('account.move.line').search(cr, uid, [('move_id', '=', invoice.move_id.id), ('reconcile_id', '=', False), ('account_id.reconcile', '=', True)]) + if iml_ids: + line['reconcile'] = iml_ids[0] + if line['reconcile']: + voucher_vals = { + 'type': line['type'] == 'supplier' and 'payment' or 'receipt', + 'name': line['name'], + 'partner_id': partner_id, + 'journal_id': statement['journal_id'].id, + 'account_id': statement['journal_id'].default_credit_account_id.id, + 'company_id': statement['journal_id'].company_id.id, + 'currency_id': statement['journal_id'].company_id.currency_id.id, + 'date': line['entryDate'], + 'amount': abs(line['amount']), + 'period_id': statement['period_id'], + 'invoice_id': invoice.id, + } + context['invoice_id'] = invoice.id + voucher_vals.update(self.pool.get('account.voucher').onchange_partner_id(cr, uid, [], + partner_id=partner_id, + journal_id=statement['journal_id'].id, + amount=abs(line['amount']), + currency_id=statement['journal_id'].company_id.currency_id.id, + ttype=line['type'] == 'supplier' and 'payment' or 'receipt', + date=line['transactionDate'], + context=context + )['value']) + line_drs = [] + for line_dr in voucher_vals['line_dr_ids']: + line_drs.append((0, 0, line_dr)) + voucher_vals['line_dr_ids'] = line_drs + line['voucher_id'] = self.pool.get('account.voucher').create(cr, uid, voucher_vals, context=context) if 'counterpartyNumber' in line and line['counterpartyNumber']: ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) if ids and len(ids) > 0: From 74d514a213d4b11dd765304629f75be5de877c93 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 7 Dec 2012 14:11:18 +0100 Subject: [PATCH 084/163] [IMP]mail: add a download_attachment_ids field. the controler can access ton the content of attachemnt with mail security bzr revid: chm@openerp.com-20121207131118-l88qnfn06aem7ey1 --- addons/mail/mail_message.py | 13 ++++++++++++- addons/mail/static/src/js/mail.js | 8 ++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index aec106f766b..584ab3d104d 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -118,6 +118,16 @@ class mail_message(osv.Model): res.append((message.id, self._shorten_name(name.lstrip(' :')))) return res + def _download_attachment(self, cr, uid, ids, name, arg, context=None): + """ Return the content of linked attachments. """ + result = dict.fromkeys(ids, []) + ir_attachment_obj = self.pool.get('ir.attachment') + for message in self.read(cr, uid, ids, ['attachment_ids'], context=context): + if message.get('attachment_ids'): + result[message['id']] = ir_attachment_obj.read(cr, SUPERUSER_ID, list(message.get('attachment_ids')), ['id', 'datas_fname', 'datas', 'type'], context=context) + + return result + _columns = { 'type': fields.selection([ ('email', 'Email'), @@ -137,6 +147,7 @@ class mail_message(osv.Model): help='Partners that have a notification pushing this message in their mailboxes'), 'attachment_ids': fields.many2many('ir.attachment', 'message_attachment_rel', 'message_id', 'attachment_id', 'Attachments'), + 'download_attachment_ids':fields.function(_download_attachment, string='Attachments content'), 'parent_id': fields.many2one('mail.message', 'Parent Message', select=True, ondelete='set null', help="Initial thread message."), 'child_ids': fields.one2many('mail.message', 'parent_id', 'Child Messages'), @@ -250,7 +261,7 @@ class mail_message(osv.Model): partner_tree = dict((partner[0], partner) for partner in partners) # 2. Attachments - attachments = ir_attachment_obj.read(cr, uid, list(attachment_ids), ['id', 'datas_fname'], context=context) + attachments = ir_attachment_obj.read(cr, SUPERUSER_ID, list(attachment_ids), ['id', 'datas_fname'], context=context) attachments_tree = dict((attachment['id'], {'id': attachment['id'], 'filename': attachment['datas_fname']}) for attachment in attachments) # 3. Update message dictionaries diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 99330e7a3df..f67145e49e3 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -29,8 +29,8 @@ openerp.mail = function (session) { }, /* Get the url of an attachment {'id': id} */ - get_attachment_url: function (session, attachment) { - return session.url('/web/binary/saveas', {model: 'ir.attachment', field: 'datas', filename_field: 'datas_fname', id: attachment['id']}); + get_attachment_url: function (session, id_message, id_attachment) { + return session.url('/web/binary/mail', {'id_message': id_message, 'id_attachment': id_attachment}); }, /** @@ -258,7 +258,7 @@ openerp.mail = function (session) { for (var l in this.attachment_ids) { var attach = this.attachment_ids[l]; if (!attach.formating) { - attach.url = mail.ChatterUtils.get_attachment_url(this.session, attach); + attach.url = mail.ChatterUtils.get_attachment_url(this.session, this.id, attach.id); attach.filetype = mail.ChatterUtils.filetype(attach.filename); attach.name = mail.ChatterUtils.breakword(attach.name || attach.filename); attach.formating = true; @@ -431,7 +431,7 @@ openerp.mail = function (session) { 'id': result.id, 'name': result.name, 'filename': result.filename, - 'url': mail.ChatterUtils.get_attachment_url(this.session, result) + 'url': mail.ChatterUtils.get_attachment_url(this.session, this.id, result.id) }; } } From 1ca2c45d418884505462d257b75aebdffbfc3d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 7 Dec 2012 14:49:46 +0100 Subject: [PATCH 085/163] [IMP] [TESTS] Cleaned and updated tests about order_by with inherits and m2o fields. bzr revid: tde@openerp.com-20121207134946-h0p1em7iq80ux0js --- openerp/addons/base/tests/test_search.py | 35 +++++++++++++++++------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/openerp/addons/base/tests/test_search.py b/openerp/addons/base/tests/test_search.py index a64bfcb3e94..98dfefd4933 100644 --- a/openerp/addons/base/tests/test_search.py +++ b/openerp/addons/base/tests/test_search.py @@ -58,7 +58,7 @@ class test_search(common.TransactionCase): id_desc_active_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="id desc, active desc") self.assertEqual([e, ab, b, a, d, c], id_desc_active_desc, "Search with 'ID DESC, ACTIVE DESC' order failed.") - def test_10_m2order(self): + def test_10_unherits_m2order(self): registry, cr, uid = self.registry, self.cr, self.uid users_obj = registry('res.users') @@ -66,20 +66,35 @@ class test_search(common.TransactionCase): group_employee_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_user') group_employee_id = group_employee_ref and group_employee_ref[1] or False + # Get country/state data + country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] + state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) + country_be_id = registry('res.country').search(cr, uid, [('code', 'like', 'BE')])[0] + + # Create test users search_user = users_obj.create(cr, uid, {'name': '__search', 'login': '__search', 'groups_id': [(6, 0, [group_employee_id])]}) - a = users_obj.create(cr, uid, {'name': '__test_A', 'login': '__z_test_A'}) - b = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__a_test_B'}) + a = users_obj.create(cr, uid, {'name': '__test_A', 'login': '__test_A', 'country_id': country_be_id, 'state_id': country_be_id}) + b = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__a_test_B', 'country_id': country_us_id, 'state_id': state_ids[1]}) + c = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__z_test_B', 'country_id': country_us_id, 'state_id': state_ids[0]}) - # Do: search on res.users, order on a field on res.partner, then res.users - print '\n\n' + # Do: search on res.users, order on a field on res.partner to try inherits'd fields, then res.users user_ids = users_obj.search(cr, search_user, [], order='name asc, login desc') - self.assertTrue(set([search_user, a, b]).issubset(set(user_ids)), 'cacaprout') + expected_ids = [search_user, a, c, b] + test_user_ids = filter(lambda x: x in expected_ids, user_ids) + self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') - # DO: order on a many2one - print '\n\n' + # Do: order on many2one and inherits'd fields user_ids = users_obj.search(cr, search_user, [], order='state_id asc, country_id desc, name asc, login desc') - print user_ids[0:25] - # self.assertTrue(set([search_user, a, b]).issubset(set(user_ids)), 'cacaprout') + expected_ids = [c, b, a, search_user] + test_user_ids = filter(lambda x: x in expected_ids, user_ids) + self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') + + # Do: order on many2one and inherits'd fields + user_ids = users_obj.search(cr, search_user, [], order='country_id desc, state_id desc, name asc, login desc') + expected_ids = [search_user, b, c, a] + test_user_ids = filter(lambda x: x in expected_ids, user_ids) + self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') + if __name__ == '__main__': unittest2.main() From a0a3f862cca0c64dfd19053fb51c68b78ab17ede Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 7 Dec 2012 15:14:50 +0100 Subject: [PATCH 086/163] [ADD]CODA Notes and statement lines views bzr revid: dle@openerp.com-20121207141450-i5kzwm1ojvkw42hy --- addons/l10n_be_coda/__init__.py | 1 + addons/l10n_be_coda/l10n_be_coda_view.xml | 93 ++++++++++++++++++- .../wizard/account_coda_import.py | 26 ++++-- 3 files changed, 110 insertions(+), 10 deletions(-) diff --git a/addons/l10n_be_coda/__init__.py b/addons/l10n_be_coda/__init__.py index c737eb79536..4a58b8ad059 100644 --- a/addons/l10n_be_coda/__init__.py +++ b/addons/l10n_be_coda/__init__.py @@ -20,6 +20,7 @@ # ############################################################################## +import l10n_be_coda import wizard # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_coda/l10n_be_coda_view.xml b/addons/l10n_be_coda/l10n_be_coda_view.xml index 9a362cd6fc4..d4c896064a6 100644 --- a/addons/l10n_be_coda/l10n_be_coda_view.xml +++ b/addons/l10n_be_coda/l10n_be_coda_view.xml @@ -1,6 +1,97 @@ - + + account.bank.statement.form + account.bank.statement + + + + + + + + + + + bank.statement.line.coda.form + account.bank.statement.line + 10 + +
    + + + + + + + + + + + + + + + +
    + + account.bank.statement.line.coda.tree + account.bank.statement.line + 10 + + + + + + + + + + + + + + + + + + bank.statement.line.coda.filter + account.bank.statement.line + + + + + + + + + + + + + + + + + + + + + + + + + Bank Statement Lines + account.bank.statement.line + form + tree,form + {'block_statement_line_delete' : 1} + + + + + +
    \ No newline at end of file diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 97d99b89e83..9513d7accc2 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -188,8 +188,6 @@ class account_coda_import(osv.osv_memory): infoLine['transaction_code'] = rmspaces(line[34:36]) infoLine['transaction_category'] = rmspaces(line[36:39]) infoLine['communication'] = rmspaces(line[40:113]) - infoLine['amount'] = 0.0 - infoLine['type'] = 'information' statement['lines'].append(infoLine) elif line[1] == '2': if infoLine['ref'] != rmspaces(line[2:10]): @@ -205,8 +203,6 @@ class account_coda_import(osv.osv_memory): comm_line['sequence'] = len(statement['lines']) + 1 comm_line['ref'] = rmspaces(line[2:10]) comm_line['communication'] = rmspaces(line[32:112]) - comm_line['amount'] = 0.0 - comm_line['type'] = 'communication' statement['lines'].append(comm_line) elif line[0] == '8': # new balance record @@ -229,6 +225,7 @@ class account_coda_import(osv.osv_memory): if not statement['balance_end_real']: statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin'] for i, statement in enumerate(statements): + statement['coda_note'] = '' data = { 'name': '[' + statement['date'] + ']' + statement['description'], 'date': statement['date'], @@ -239,7 +236,20 @@ class account_coda_import(osv.osv_memory): } statement['id'] = self.pool.get('account.bank.statement').create(cr, uid, data, context=context) for line in statement['lines']: - if line['type'] == 'normal': + if line['type'] == 'information': + if line['transaction_type'] in transaction_types: + line['transaction_type'] = transaction_types[line['transaction_type']][1] + if line['transaction_category'] in transaction_categories: + line['transaction_category'] = transaction_categories[line['transaction_category']] + if line['transaction_family'] in transaction_codes: + transaction_family = transaction_codes[line['transaction_family']] + line['transaction_family'] = transaction_family[0] + if line['transaction_code'] in transaction_family[1]: + line['transaction_code'] = transaction_family[1][line['transaction_code']] + statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Date: ' + str(line['entryDate']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'],'\n']) + elif line['type'] == 'communication': + statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'],'\n']) + elif line['type'] == 'normal': note = [] if 'counterpartyName' in line and line['counterpartyName'] != '': note.append(_('Counter Party') + ': ' + line['counterpartyName']) @@ -259,7 +269,6 @@ class account_coda_import(osv.osv_memory): if 'counterpartyAddress' in line and line['counterpartyAddress'] != '': note.append(_('Counter Party Address') + ': ' + line['counterpartyAddress']) line['name'] = "\n".join(filter(None, [line['counterpartyName'], line['communication']])) - partner = None partner_id = None invoice = False @@ -342,8 +351,6 @@ class account_coda_import(osv.osv_memory): if 'communication_type' in line: if line['communication_type'] in communication_types: line['communication_type'] = communication_types[line['communication_type']] - else: - line['communication_type'] = 'Unknown' note.append(_('Communication Type') + ': ' + line['communication_type']) if line['transaction_type'] in transaction_types: line['transaction_type'] = transaction_types[line['transaction_type']][1] @@ -374,7 +381,8 @@ class account_coda_import(osv.osv_memory): 'voucher_id': line['voucher_id'], } self.pool.get('account.bank.statement.line').create(cr, uid, data, context=context) - + if statement['coda_note'] != '': + self.pool.get('account.bank.statement').write(cr, uid, [statement['id']], {'coda_note': statement['coda_note']}, context=context) account_coda_import() transaction_types = { From 16bfe104aa6d1b49e685930b645b1017704d993e Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 7 Dec 2012 15:15:09 +0100 Subject: [PATCH 087/163] [ADD]coda py file bzr revid: dle@openerp.com-20121207141509-7i8evz7i5dn00b11 --- addons/l10n_be_coda/l10n_be_coda.py | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 addons/l10n_be_coda/l10n_be_coda.py diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py new file mode 100644 index 00000000000..e22bec27aab --- /dev/null +++ b/addons/l10n_be_coda/l10n_be_coda.py @@ -0,0 +1,34 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import osv, fields + + +class account_bank_statement(osv.osv): + _inherit = 'account.bank.statement' + _columns = { + 'coda_note': fields.text('CODA Notes'), + } + +account_bank_statement() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From efc6e78d25e71fdb90dc8a0e3fd03827b72f8603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 7 Dec 2012 15:29:31 +0100 Subject: [PATCH 088/163] [IMP] [MOV] Moved test_osv and test_translate from unchecked test directory to tests, to be now effectively run. Updated test_osv to matche the new alias coding style. bzr revid: tde@openerp.com-20121207142931-6ll5yduitdk3ijes --- openerp/test/__init__.py | 25 ------------------- openerp/tests/__init__.py | 7 ++++-- openerp/{test => tests}/test_osv.py | 30 +++++++++++------------ openerp/{test => tests}/test_translate.py | 0 4 files changed, 20 insertions(+), 42 deletions(-) delete mode 100644 openerp/test/__init__.py rename openerp/{test => tests}/test_osv.py (62%) rename openerp/{test => tests}/test_translate.py (100%) diff --git a/openerp/test/__init__.py b/openerp/test/__init__.py deleted file mode 100644 index 7a6c167d85b..00000000000 --- a/openerp/test/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2010 OpenERP S.A. http://www.openerp.com -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from test_osv import * -from test_translate import * - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/tests/__init__.py b/openerp/tests/__init__.py index d036ccfc751..92a40ab306c 100644 --- a/openerp/tests/__init__.py +++ b/openerp/tests/__init__.py @@ -8,9 +8,10 @@ Tests can be explicitely added to the `fast_suite` or `checks` lists or not. See the :ref:`test-framework` section in the :ref:`features` list. """ -from . import test_expression, test_mail, test_ir_sequence, test_orm,\ +from . import test_expression, test_mail, test_ir_sequence, test_orm, \ test_fields, test_basecase, \ - test_view_validation, test_uninstall, test_misc, test_db_cursor + test_view_validation, test_uninstall, test_misc, test_db_cursor, \ + test_osv, test_translate from . import test_ir_filters fast_suite = [ @@ -27,6 +28,8 @@ checks = [ test_basecase, test_view_validation, test_misc, + test_osv, + test_translate, ] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/test/test_osv.py b/openerp/tests/test_osv.py similarity index 62% rename from openerp/test/test_osv.py rename to openerp/tests/test_osv.py index 2db9cec1cbd..80be8160b61 100644 --- a/openerp/test/test_osv.py +++ b/openerp/tests/test_osv.py @@ -22,45 +22,45 @@ import unittest from openerp.osv.query import Query + class QueryTestCase(unittest.TestCase): def test_basic_query(self): query = Query() - query.tables.extend(['"product_product"','"product_template"']) + query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.add_join(("product_product", "res_user", "user_id", "id"), outer=True) # outer join + query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join + query.add_join(("product_product", "res_user", "user_id", "id"), outer=True) # outer join self.assertEquals(query.get_sql()[0].strip(), - """"product_product" LEFT JOIN "res_user" ON ("product_product"."user_id" = "res_user"."id"),"product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") """.strip()) + """"product_product" LEFT JOIN "res_user" as "product_product__user_id" ON ("product_product"."user_id" = "product_product__user_id"."id"),"product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) def test_query_chained_explicit_joins(self): query = Query() - query.tables.extend(['"product_product"','"product_template"']) + query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.add_join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join + query.add_join(("product_template__categ_id", "res_user", "user_id", "id"), outer=True) # CHAINED outer join self.assertEquals(query.get_sql()[0].strip(), - """"product_product","product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") LEFT JOIN "res_user" ON ("product_category"."user_id" = "res_user"."id")""".strip()) + """"product_product","product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") LEFT JOIN "res_user" as "product_template__categ_id__user_id" ON ("product_template__categ_id"."user_id" = "product_template__categ_id__user_id"."id")""".strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) def test_mixed_query_chained_explicit_implicit_joins(self): query = Query() - query.tables.extend(['"product_product"','"product_template"']) + query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.add_join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join + query.add_join(("product_template__categ_id", "res_user", "user_id", "id"), outer=True) # CHAINED outer join query.tables.append('"account.account"') - query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join + query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join self.assertEquals(query.get_sql()[0].strip(), - """"product_product","product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") LEFT JOIN "res_user" ON ("product_category"."user_id" = "res_user"."id"),"account.account" """.strip()) + """"product_product","product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") LEFT JOIN "res_user" as "product_template__categ_id__user_id" ON ("product_template__categ_id"."user_id" = "product_template__categ_id__user_id"."id"),"account.account" """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id AND product_category.expense_account_id = account_account.id""".strip()) - def test_raise_missing_lhs(self): query = Query() query.tables.append('"product_product"') - self.assertRaises(AssertionError, query.join, ("product_template", "product_category", "categ_id", "id"), outer=False) + self.assertRaises(AssertionError, query.add_join, ("product_template", "product_category", "categ_id", "id"), outer=False) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/test/test_translate.py b/openerp/tests/test_translate.py similarity index 100% rename from openerp/test/test_translate.py rename to openerp/tests/test_translate.py From 8825ea3ae64180c89c15651ad19e2c28af55c32c Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 7 Dec 2012 15:31:44 +0100 Subject: [PATCH 089/163] [FIX]coda note with int not str, import wizard returns to banks statement tree bzr revid: dle@openerp.com-20121207143144-13vfmr4o37e1rntb --- addons/l10n_be_coda/l10n_be_coda_wizard.xml | 19 ------------------- .../wizard/account_coda_import.py | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/addons/l10n_be_coda/l10n_be_coda_wizard.xml b/addons/l10n_be_coda/l10n_be_coda_wizard.xml index 427e0c1991e..92b16db0e88 100644 --- a/addons/l10n_be_coda/l10n_be_coda_wizard.xml +++ b/addons/l10n_be_coda/l10n_be_coda_wizard.xml @@ -21,25 +21,6 @@ - - Import CODA File - account.coda.import - 2 - -
    -
    -
    - - - -
    -
    -
    - Import CODA File ir.actions.act_window diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 9513d7accc2..1118f5a4ae6 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -89,10 +89,10 @@ class account_coda_import(osv.osv_memory): raise osv.except_osv(_('Error') + 'R1002', _('Foreign bank accounts with IBAN structure are not supported ')) else: # Something else, not supported raise osv.except_osv(_('Error') + 'R1003', _('Unsupported bank account structure ')) - ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', statement['acc_number'])]) + bank_ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', statement['acc_number'])]) not_found_except = osv.except_osv(_('Error') + 'R1004', _("No matching CODA Bank Account Configuration record found. Please check if the 'Bank Account Number' and 'Currency' fields of your configuration record match with '%s' and '%s'.") % (statement['acc_number'], statement['currency'])) - if ids and len(ids) > 0: - bank_accs = self.pool.get('res.partner.bank').browse(cr, uid, ids) + if bank_ids and len(bank_ids) > 0: + bank_accs = self.pool.get('res.partner.bank').browse(cr, uid, bank_ids) for bank_acc in bank_accs: statement['journal_id'] = bank_acc.journal_id if (statement['journal_id'].currency and statement['journal_id'].currency.name != statement['currency']) and (not statement['journal_id'].currency and statement['journal_id'].company_id.currency_id.name != statement['currency']): @@ -246,9 +246,9 @@ class account_coda_import(osv.osv_memory): line['transaction_family'] = transaction_family[0] if line['transaction_code'] in transaction_family[1]: line['transaction_code'] = transaction_family[1][line['transaction_code']] - statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Date: ' + str(line['entryDate']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'],'\n']) + statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Date: ' + str(line['entryDate']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'], '\n']) elif line['type'] == 'communication': - statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'],'\n']) + statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'], '\n']) elif line['type'] == 'normal': note = [] if 'counterpartyName' in line and line['counterpartyName'] != '': @@ -383,6 +383,14 @@ class account_coda_import(osv.osv_memory): self.pool.get('account.bank.statement.line').create(cr, uid, data, context=context) if statement['coda_note'] != '': self.pool.get('account.bank.statement').write(cr, uid, [statement['id']], {'coda_note': statement['coda_note']}, context=context) + return { + 'view_type': 'form', + 'view_mode': 'tree', + 'res_model': 'account.bank.statement', + 'view_id': False, + 'context': context, + 'type': 'ir.actions.act_window', + } account_coda_import() transaction_types = { From fbcdfed860176b6c5af35c9a8d6843d8c938e633 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Fri, 7 Dec 2012 15:55:19 +0100 Subject: [PATCH 090/163] [FIX]Groups technical for CODA Notes and bank statement lines, form added to view mode for views after import, coda note information reference bzr revid: dle@openerp.com-20121207145519-4vbb1otng09wj3kg --- addons/l10n_be_coda/l10n_be_coda_view.xml | 4 ++-- addons/l10n_be_coda/l10n_be_coda_wizard.xml | 10 +++++----- addons/l10n_be_coda/wizard/account_coda_import.py | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/l10n_be_coda/l10n_be_coda_view.xml b/addons/l10n_be_coda/l10n_be_coda_view.xml index d4c896064a6..538332b37d2 100644 --- a/addons/l10n_be_coda/l10n_be_coda_view.xml +++ b/addons/l10n_be_coda/l10n_be_coda_view.xml @@ -7,7 +7,7 @@ - + @@ -91,7 +91,7 @@ - + \ No newline at end of file diff --git a/addons/l10n_be_coda/l10n_be_coda_wizard.xml b/addons/l10n_be_coda/l10n_be_coda_wizard.xml index 92b16db0e88..dddc18bb30a 100644 --- a/addons/l10n_be_coda/l10n_be_coda_wizard.xml +++ b/addons/l10n_be_coda/l10n_be_coda_wizard.xml @@ -8,15 +8,15 @@ 1
    -
    -
    +
    +
    diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 1118f5a4ae6..7d50e4ba0d3 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -246,9 +246,9 @@ class account_coda_import(osv.osv_memory): line['transaction_family'] = transaction_family[0] if line['transaction_code'] in transaction_family[1]: line['transaction_code'] = transaction_family[1][line['transaction_code']] - statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Date: ' + str(line['entryDate']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'], '\n']) + statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' with Ref. ' + str(line['ref']), 'Date: ' + str(line['entryDate']), 'Communication: ' + line['communication'], '']) elif line['type'] == 'communication': - statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' #' + str(line['sequence']), 'Ref: ' + str(line['ref']), 'Communication: ' + line['communication'], '\n']) + statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' with Ref. ' + str(line['ref']), 'Ref: ', 'Communication: ' + line['communication'], '']) elif line['type'] == 'normal': note = [] if 'counterpartyName' in line and line['counterpartyName'] != '': @@ -385,7 +385,7 @@ class account_coda_import(osv.osv_memory): self.pool.get('account.bank.statement').write(cr, uid, [statement['id']], {'coda_note': statement['coda_note']}, context=context) return { 'view_type': 'form', - 'view_mode': 'tree', + 'view_mode': 'tree,form', 'res_model': 'account.bank.statement', 'view_id': False, 'context': context, From 50cf6d4008f61eff4f7ed17e46a21dcfe337099b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 7 Dec 2012 16:42:04 +0100 Subject: [PATCH 091/163] [CLEAN] Query: cleaned a bit the code. All joins now goes through the same method, either implicit or explicit. Will have to be upgraded in future versions, but at least this is a bit centralized. Updated ORM accordingly. Updated tests. Added a get_alias_from_query method in expression that find the table and the alias from a 'full alias' statement. bzr revid: tde@openerp.com-20121207154204-mx036lpj3vdclu77 --- openerp/osv/expression.py | 14 ++++ openerp/osv/orm.py | 19 +----- openerp/osv/query.py | 140 ++++++++------------------------------ openerp/tests/test_osv.py | 14 ++-- 4 files changed, 50 insertions(+), 137 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 703b7503387..8535213b4de 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -346,6 +346,20 @@ def generate_table_alias(src_table_alias, joined_tables=[]): return ('%s' % alias, '%s as %s' % (_quote(joined_tables[-1][0]), _quote(alias))) +def get_alias_from_query(from_query): + """ :param string from_query: is something like : + - '"res_partner"' OR + - '"res_partner" as "res_users__partner_id"'' + :param tuple result: (unquoted table name, unquoted alias) + i.e. (res_partners, res_partner) OR (res_partner, res_users__partner_id) + """ + from_splitted = from_query.split(' as ') + if len(from_splitted) > 1: + return (from_splitted[0].replace('"', ''), from_splitted[1].replace('"', '')) + else: + return (from_splitted[0].replace('"', ''), from_splitted[0].replace('"', '')) + + def normalize_leaf(element): """ Change a term's operator to some canonical form, simplifying later processing. """ diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index d2c0a0f5682..30746bdd7fc 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2728,14 +2728,8 @@ class BaseModel(object): """ inherits_field = current_model._inherits[parent_model_name] parent_model = self.pool.get(parent_model_name) - parent_alias = query.add_implicit_join((current_model, parent_model, inherits_field, 'id', inherits_field)) + parent_alias, parent_alias_statement = query.add_join((current_model._table, parent_model._table, inherits_field, 'id', inherits_field), implicit=True) return parent_alias - # table_alias = expression.generate_table_alias(current_model, [(parent_model, inherits_field)]) - # print '\t... _inherits_join_add trying to add %s in %s' % (table_alias, query.tables) - # # query.add_table(table_alias) - # if table_alias not in query.tables: - # query.tables.append(table_alias) - # query.where_clause.append('("%s".%s = %s.id)' % (current_model._table, inherits_field, table_alias)) def _inherits_join_calc(self, field, query): """ @@ -2746,7 +2740,6 @@ class BaseModel(object): :param query: query object on which the JOIN should be added :return: qualified name of field, to be used in SELECT clause """ - print '\t--> _inherits_join_calc' current_table = self parent_alias = current_table._table while field in current_table._inherit_fields and not field in current_table._columns: @@ -4667,15 +4660,12 @@ class BaseModel(object): :param model child_object: model object, base of the rule application """ if added_clause: - print '--> _apply_ir_rules.apply_rule,', added_clause, added_params, added_tables, parent_model, child_object if parent_model and child_object: - print '\t... calling inherits-Join_add with parent_model %s, child_object %s' % (parent_model, child_object) # as inherited rules are being applied, we need to add the missing JOIN # to reach the parent table (if it was not JOINed yet in the query) parent_alias = child_object._inherits_join_add(child_object, parent_model, query) # inherited rules are applied on the external table -> need to get the alias and replace parent_table = self.pool.get(parent_model)._table - print parent_table, parent_alias added_clause = [clause.replace('"%s"' % parent_table, '"%s"' % parent_alias) for clause in added_clause] # not sure of myself here (in the ORM, this statment is quite cool) new_tables = [] @@ -4686,11 +4676,9 @@ class BaseModel(object): new_table = table.replace('"%s"' % parent_table, '"%s"' % parent_alias) new_tables.append(new_table) added_tables = new_tables - print '\t... adding tables %s, clause %s (params %s)' % (added_tables, added_clause, added_params) query.where_clause += added_clause query.where_clause_params += added_params for table in added_tables: - print '\t... adding table %s in %s' % (table, query.tables) if table not in query.tables: query.tables.append(table) return True @@ -4715,7 +4703,6 @@ class BaseModel(object): :return: the qualified field name to use in an ORDER BY clause to sort by ``order_field`` """ - print '_generate_m2o_order_by' if order_field not in self._columns and order_field in self._inherit_fields: # also add missing joins for reaching the table containing the m2o field qualified_field = self._inherits_join_calc(order_field, query) @@ -4747,7 +4734,7 @@ class BaseModel(object): # Join the dest m2o table if it's not joined yet. We use [LEFT] OUTER join here # as we don't want to exclude results that have NULL values for the m2o src_table, src_field = qualified_field.replace('"', '').split('.', 1) - dst_alias = query.add_join((src_table, dest_model._table, src_field, 'id'), outer=True) + dst_alias, dst_alias_statement = query.add_join((src_table, dest_model._table, src_field, 'id', src_field), implicit=False, outer=True) qualify = lambda field: '"%s"."%s"' % (dst_alias, field) return map(qualify, m2o_order) if isinstance(m2o_order, list) else qualify(m2o_order) @@ -4769,7 +4756,6 @@ class BaseModel(object): return order_list order_by_clause = ','.join(_split_order(self._order, self._table)) if order_spec: - print '-->_generate_order_by beginning' order_by_elements = [] self._check_qorder(order_spec) for order_part in order_spec.split(','): @@ -4804,7 +4790,6 @@ class BaseModel(object): order_by_elements.append("%s %s" % (inner_clause, order_direction)) if order_by_elements: order_by_clause = ",".join(order_by_elements) - print '-->_generate_order_by ending' return order_by_clause and (' ORDER BY %s ' % order_by_clause) or '' diff --git a/openerp/osv/query.py b/openerp/osv/query.py index a07def36a31..7f1bd930c91 100644 --- a/openerp/osv/query.py +++ b/openerp/osv/query.py @@ -53,9 +53,6 @@ class Query(object): # holds the list of tables joined using default JOIN. # the table names are stored double-quoted (backwards compatibility) self.tables = tables or [] - # holds a mapping of table aliases: - # self._table_alias_mapping = {'alias_1': 'table_name'} - self._table_alias_mapping = {} # holds the list of WHERE clause elements, to be joined with # 'AND' when generating the final query @@ -79,29 +76,19 @@ class Query(object): # LEFT JOIN "table_c" ON ("table_a"."table_a_col2" = "table_c"."table_c_col") self.joins = joins or {} - def _add_table_alias(self, table_alias): - pass - def _get_table_aliases(self): - aliases = [] - for table in self.tables: - if len(table.split(' as ')) > 1: - aliases.append(table.split(' as ')[1].replace('"', '')) - else: - aliases.append(table.replace('"', '')) - # print '--', aliases - return aliases + from openerp.osv.expression import get_alias_from_query + return [get_alias_from_query(from_statement)[1] for from_statement in self.tables] def _get_alias_mapping(self): + from openerp.osv.expression import get_alias_from_query mapping = {} - aliases = self._get_table_aliases() - for alias in aliases: - for table in self.tables: - if '"%s"' % (alias) in table: - mapping.setdefault(alias, table) + for table in self.tables: + alias, statement = get_alias_from_query(table) + mapping[statement] = table return mapping - def add_new_join(self, connection, implicit=True, outer=False): + def add_join(self, connection, implicit=True, outer=False): """ Join a destination table to the current table. :param implicit: False if the join is an explicit join. This allows @@ -127,115 +114,41 @@ class Query(object): """ from openerp.osv.expression import generate_table_alias (lhs, table, lhs_col, col, link) = connection - alias, alias_statement = generate_table_alias(lhs._table, [(table._table, link)]) + alias, alias_statement = generate_table_alias(lhs, [(table, link)]) if implicit: - print '\t\t... Query: trying to add %s in %s (received %s)' % (alias_statement, self.tables, connection) if alias_statement not in self.tables: self.tables.append(alias_statement) - condition = '("%s"."%s" = "%s"."%s")' % (lhs._table, lhs_col, alias, col) - print '\t\t... added %s' % (condition) + condition = '("%s"."%s" = "%s"."%s")' % (lhs, lhs_col, alias, col) + # print '\t\t... Query: added %s in %s (received %s)' % (alias_statement, self.tables, connection) self.where_clause.append(condition) - return alias + else: + # print '\t\t... Query: not added %s in %s (received %s)' % (alias_statement, self.tables, connection) + # already joined + pass + return alias, alias_statement else: - (lhs, table, lhs_col, col) = connection - lhs = _quote(lhs) - table = _quote(table) - print connection - aliases = [] - for table in self.tables: - if len(table.split(' as ')) > 1: - aliases.append(table.split(' as ')[1]) - else: - aliases.append(table) - print '--', aliases - aliases = [table.split(' as ') for table in self.tables] - assert lhs in self.aliases, "Left-hand-side table %s must already be part of the query tables %s!" % (lhs, str(self.tables)) - if table in self.tables: + aliases = self._get_table_aliases() + assert lhs in aliases, "Left-hand-side table %s must already be part of the query tables %s!" % (lhs, str(self.tables)) + if alias_statement in self.tables: # already joined, must ignore (promotion to outer and multiple joins not supported yet) + # print '\t\t... Query: not added %s in %s (received %s)' % (alias_statement, self.tables, connection) pass else: # add JOIN - self.tables.append(table) - self.joins.setdefault(lhs, []).append((table, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) - return self - - def add_implicit_join(self, connection): - """ Adds an implicit join. This means that left-hand table is added to the - Query.tables (adding a table in the from clause), and that a join - condition is added in Query.where_clause. - - Implicit joins use expression.generate_table_alias to generate the - alias the the joined table. - - :param connection: a tuple``(lhs, table, lhs_col, col, link)`` Please - refer to expression.py for more details about joins. - """ - from openerp.osv.expression import generate_table_alias - (lhs, table, lhs_col, col, link) = connection - alias, alias_statement = generate_table_alias(lhs._table, [(table._table, link)]) - print '\t\t... Query: trying to add %s in %s (received %s)' % (alias_statement, self.tables, connection) - if alias_statement not in self.tables: - self.tables.append(alias_statement) - condition = '("%s"."%s" = "%s"."%s")' % (lhs._table, lhs_col, alias, col) - print '\t\t... added %s' % (condition) - self.where_clause.append(condition) - return alias - - def add_join(self, connection, outer=False): - """Adds the JOIN specified in ``connection``. - - :param connection: a tuple ``(lhs, table, lhs_col, col)``. - The join corresponds to the SQL equivalent of:: - - (lhs.lhs_col = table.col) - - Note that all connection elements are strings. - - :param outer: True if a LEFT OUTER JOIN should be used, if possible - (no promotion to OUTER JOIN is supported in case the JOIN - was already present in the query, as for the moment - implicit INNER JOINs are only connected from NON-NULL - columns so it would not be correct (e.g. for - ``_inherits`` or when a domain criterion explicitly - adds filtering) - """ - from openerp.osv.expression import generate_table_alias - (lhs, table, lhs_col, col) = connection - # lhs = _quote(lhs) - # table = _quote(table) - print '\t\t... Query.add_join(): adding connection %s' % str(connection) - - aliases = self._get_table_aliases() - - assert lhs in aliases, "Left-hand-side table %s must already be part of the query tables %s!" % (lhs, str(self.tables)) - - rhs, rhs_statement = generate_table_alias(lhs, [(connection[1], connection[2])]) - print rhs, rhs_statement - - if rhs_statement in self.tables: - # already joined, must ignore (promotion to outer and multiple joins not supported yet) - pass - else: - # add JOIN - self.tables.append(rhs_statement) - self.joins.setdefault(lhs, []).append((rhs, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) - return rhs + self.tables.append(alias_statement) + self.joins.setdefault(lhs, []).append((alias, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) + return alias, alias_statement def get_sql(self): - """Returns (query_from, query_where, query_params)""" + """ Returns (query_from, query_where, query_params). """ + from openerp.osv.expression import get_alias_from_query query_from = '' tables_to_process = list(self.tables) - alias_mapping = self._get_alias_mapping() - # print 'tables_to_process %s' % (tables_to_process) - # print 'self.joins %s' % (self.joins) - # print 'alias_mapping %s' % (alias_mapping) - def add_joins_for_table(table, query_from): for (dest_table, lhs_col, col, join) in self.joins.get(table, []): - # print dest_table tables_to_process.remove(alias_mapping[dest_table]) query_from += ' %s %s ON ("%s"."%s" = "%s"."%s")' % \ (join, alias_mapping[dest_table], table, lhs_col, dest_table, col) @@ -244,8 +157,9 @@ class Query(object): for table in tables_to_process: query_from += table - if _get_alias_from_statement(table) in self.joins: - query_from = add_joins_for_table(_get_alias_from_statement(table), query_from) + table_alias = get_alias_from_query(table)[1] + if table_alias in self.joins: + query_from = add_joins_for_table(table_alias, query_from) query_from += ',' query_from = query_from[:-1] # drop last comma return (query_from, " AND ".join(self.where_clause), self.where_clause_params) diff --git a/openerp/tests/test_osv.py b/openerp/tests/test_osv.py index 80be8160b61..e36495fc7c6 100644 --- a/openerp/tests/test_osv.py +++ b/openerp/tests/test_osv.py @@ -29,8 +29,8 @@ class QueryTestCase(unittest.TestCase): query = Query() query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.add_join(("product_product", "res_user", "user_id", "id"), outer=True) # outer join + query.add_join(("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # add normal join + query.add_join(("product_product", "res_user", "user_id", "id", "user_id"), implicit=False, outer=True) # outer join self.assertEquals(query.get_sql()[0].strip(), """"product_product" LEFT JOIN "res_user" as "product_product__user_id" ON ("product_product"."user_id" = "product_product__user_id"."id"),"product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) @@ -39,8 +39,8 @@ class QueryTestCase(unittest.TestCase): query = Query() query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.add_join(("product_template__categ_id", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # add normal join + query.add_join(("product_template__categ_id", "res_user", "user_id", "id", "user_id"), implicit=False, outer=True) # CHAINED outer join self.assertEquals(query.get_sql()[0].strip(), """"product_product","product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") LEFT JOIN "res_user" as "product_template__categ_id__user_id" ON ("product_template__categ_id"."user_id" = "product_template__categ_id__user_id"."id")""".strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) @@ -49,8 +49,8 @@ class QueryTestCase(unittest.TestCase): query = Query() query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.add_join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.add_join(("product_template__categ_id", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # add normal join + query.add_join(("product_template__categ_id", "res_user", "user_id", "id", "user_id"), implicit=False, outer=True) # CHAINED outer join query.tables.append('"account.account"') query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join self.assertEquals(query.get_sql()[0].strip(), @@ -60,7 +60,7 @@ class QueryTestCase(unittest.TestCase): def test_raise_missing_lhs(self): query = Query() query.tables.append('"product_product"') - self.assertRaises(AssertionError, query.add_join, ("product_template", "product_category", "categ_id", "id"), outer=False) + self.assertRaises(AssertionError, query.add_join, ("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From a786f8406b2a75f0ff5127908722b354361eada6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 7 Dec 2012 17:05:39 +0100 Subject: [PATCH 092/163] [REV] ir_ui_menu: coding-style changes reverted, because not necessary. Only a store=True on needaction_enabled is sufficient. bzr revid: tde@openerp.com-20121207160539-6pqj932lvznxofd4 --- openerp/addons/base/ir/ir_ui_menu.py | 30 +++++++++------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index e286466b85c..cd0512fff74 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -249,7 +249,7 @@ class ir_ui_menu(osv.osv): icon_image = False if icon_path: try: - icon_file = tools.file_open(icon_path, 'rb') + icon_file = tools.file_open(icon_path,'rb') icon_image = base64.encodestring(icon_file.read()) finally: icon_file.close() @@ -265,22 +265,17 @@ class ir_ui_menu(osv.osv): return res - def get_needaction_data(self, cr, uid, ids, field_names, args, context=None): - """ Return for each menu entry of ids : - - if it uses the needaction mechanism (needaction_enabled) - - the needaction counter of the related action, taking into account - the action domain - """ + def _get_needaction(self, cr, uid, ids, field_names, args, context=None): res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = { 'needaction_enabled': False, 'needaction_counter': False, } - if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: + if menu.action and menu.action.type in ('ir.actions.act_window','ir.actions.client') and menu.action.res_model: obj = self.pool.get(menu.action.res_model) if obj and obj._needaction: - if menu.action.type == 'ir.actions.act_window': + if menu.action.type=='ir.actions.act_window': dom = menu.action.domain and eval(menu.action.domain, {'uid': uid}) or [] else: dom = eval(menu.action.params_store or '{}', {'uid': uid}).get('domain') @@ -291,7 +286,7 @@ class ir_ui_menu(osv.osv): _columns = { 'name': fields.char('Menu', size=64, required=True, translate=True), 'sequence': fields.integer('Sequence'), - 'child_id': fields.one2many('ir.ui.menu', 'parent_id', 'Child IDs'), + 'child_id' : fields.one2many('ir.ui.menu', 'parent_id','Child IDs'), 'parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', select=True), 'groups_id': fields.many2many('res.groups', 'ir_ui_menu_group_rel', 'menu_id', 'gid', 'Groups', help="If you have groups, the visibility of this menu will be based on these groups. "\ @@ -301,18 +296,11 @@ class ir_ui_menu(osv.osv): 'icon': fields.selection(tools.icons, 'Icon', size=64), 'icon_pict': fields.function(_get_icon_pict, type='char', size=32), 'web_icon': fields.char('Web Icon File', size=128), - 'web_icon_hover': fields.char('Web Icon File (hover)', size=128), + 'web_icon_hover':fields.char('Web Icon File (hover)', size=128), 'web_icon_data': fields.function(_get_image_icon, string='Web Icon Image', type='binary', readonly=True, store=True, multi='icon'), - 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), - 'needaction_enabled': fields.function(get_needaction_data, - type='boolean', multi='get_needaction_data', - store=True, - string='Target model uses the need action mechanism', - help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), - 'needaction_counter': fields.function(get_needaction_data, - type='integer', multi='get_needaction_data', - string='Number of actions the user has to perform', - help='If the target model uses the need action mechanism, this field gives the number of actions the current user has to perform.'), + 'web_icon_hover_data':fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), + 'needaction_enabled': fields.function(_get_needaction, string='Target model uses the need action mechanism', store=True, type='boolean', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.', multi='_get_needaction'), + 'needaction_counter': fields.function(_get_needaction, string='Number of actions the user has to perform', type='integer', help='If the target model uses the need action mechanism, this field gives the number of actions the current user has to perform.', multi='_get_needaction'), 'action': fields.function(_action, fnct_inv=_action_inv, type='reference', string='Action', selection=[ From 9381a827158e085b035b8f497467f09ff5f6a5e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 7 Dec 2012 17:09:33 +0100 Subject: [PATCH 093/163] [IMP] Added an assert on the alias length. bzr revid: tde@openerp.com-20121207160933-1ivbkkv6tgg5a7x3 --- openerp/osv/expression.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 8535213b4de..e14e013d536 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -343,6 +343,7 @@ def generate_table_alias(src_table_alias, joined_tables=[]): return ('%s' % alias, '%s' % _quote(alias)) for link in joined_tables: alias += '__' + link[1] + assert len(alias) < 64, 'Table alias name %s is longer than the 64 characters size accepted by default in postgresql.' % (alias) return ('%s' % alias, '%s as %s' % (_quote(joined_tables[-1][0]), _quote(alias))) From bb598cd1052709c4bee4a31405201c4609ff6377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 7 Dec 2012 17:20:19 +0100 Subject: [PATCH 094/163] [CLEAN] orm: added quote around a forgottent table name; cleaned a bit some code and added comments, removed dead code. bzr revid: tde@openerp.com-20121207162019-ec1x7a38vw2rrqze --- openerp/osv/orm.py | 11 ++++++----- openerp/osv/query.py | 8 -------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 54e349b5234..0a28052e51d 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2741,7 +2741,7 @@ class BaseModel(object): :return: qualified name of field, to be used in SELECT clause """ current_table = self - parent_alias = current_table._table + parent_alias = '"%s"' % current_table._table while field in current_table._inherit_fields and not field in current_table._columns: parent_model_name = current_table._inherit_fields[field][0] parent_table = self.pool.get(parent_model_name) @@ -4667,14 +4667,15 @@ class BaseModel(object): # inherited rules are applied on the external table -> need to get the alias and replace parent_table = self.pool.get(parent_model)._table added_clause = [clause.replace('"%s"' % parent_table, '"%s"' % parent_alias) for clause in added_clause] - # not sure of myself here (in the ORM, this statment is quite cool) + # change references to parent_table to parent_alias, because we now use the alias to refer to the table new_tables = [] for table in added_tables: + # table is just a table name -> switch to the full alias if table == '"%s"' % (parent_table): - new_table = '"%s" as "%s"' % (parent_table, parent_alias) + new_tables.append('"%s" as "%s"' % (parent_table, parent_alias)) + # table is already a full statement -> replace reference to the table to its alias, is correct with the way aliases are generated else: - new_table = table.replace('"%s"' % parent_table, '"%s"' % parent_alias) - new_tables.append(new_table) + new_tables.append(table.replace('"%s"' % parent_table, '"%s"' % parent_alias)) added_tables = new_tables query.where_clause += added_clause query.where_clause_params += added_params diff --git a/openerp/osv/query.py b/openerp/osv/query.py index 7f1bd930c91..98a90dcd0bd 100644 --- a/openerp/osv/query.py +++ b/openerp/osv/query.py @@ -28,14 +28,6 @@ def _quote(to_quote): return to_quote -def _get_alias_from_statement(string): - if len(string.split(' as ')) > 1: - alias = string.split(' as ')[1].replace('"', '') - else: - alias = string.replace('"', '') - return alias - - class Query(object): """ Dumb implementation of a Query object, using 3 string lists so far From 62bb893da70b757813fc20a49a64ed527394cddf Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Sat, 8 Dec 2012 12:08:02 +0100 Subject: [PATCH 095/163] [FIX]Mmissing adding magic number for credit lines in voucher bzr revid: dle@openerp.com-20121208110802-226tomv7ni26r0nh --- addons/l10n_be_coda/wizard/account_coda_import.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 7d50e4ba0d3..d27b28c315c 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -318,6 +318,10 @@ class account_coda_import(osv.osv_memory): for line_dr in voucher_vals['line_dr_ids']: line_drs.append((0, 0, line_dr)) voucher_vals['line_dr_ids'] = line_drs + line_crs = [] + for line_cr in voucher_vals['line_cr_ids']: + line_crs.append((0, 0, line_cr)) + voucher_vals['line_cr_ids'] = line_crs line['voucher_id'] = self.pool.get('account.voucher').create(cr, uid, voucher_vals, context=context) if 'counterpartyNumber' in line and line['counterpartyNumber']: ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', str(line['counterpartyNumber']))]) From 7f1d5daf2f7a137a470a4a72779408edf7995910 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Mon, 10 Dec 2012 04:44:28 +0000 Subject: [PATCH 096/163] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20121210043931-72a32pz7q282df45 bzr revid: launchpad_translations_on_behalf_of_openerp-20121210044428-d9bzm1dnqc26voci --- addons/account/i18n/it.po | 26 +- addons/account/i18n/nl.po | 54 +- addons/account/i18n/sl.po | 22 +- addons/account/i18n/zh_CN.po | 10 +- addons/account_accountant/i18n/hr.po | 8 +- addons/account_analytic_analysis/i18n/it.po | 88 +- addons/account_asset/i18n/it.po | 18 +- addons/account_budget/i18n/it.po | 18 +- addons/account_followup/i18n/nl.po | 36 +- addons/account_followup/i18n/zh_CN.po | 42 +- addons/association/i18n/it.po | 16 +- addons/auth_anonymous/i18n/hr.po | 30 + addons/auth_signup/i18n/hr.po | 258 +++ addons/base_crypt/i18n/hr.po | 10 +- addons/base_crypt/i18n/id.po | 23 + addons/base_gengo/i18n/hr.po | 249 +++ addons/base_import/i18n/zh_CN.po | 1164 ++++++++++++ addons/base_setup/i18n/nl.po | 10 +- addons/base_status/i18n/hr.po | 88 + addons/base_vat/i18n/it.po | 21 +- addons/claim_from_delivery/i18n/zh_CN.po | 2 +- addons/contacts/i18n/hr.po | 37 + addons/contacts/i18n/zh_CN.po | 37 + addons/crm/i18n/de.po | 39 +- addons/crm/i18n/hr.po | 22 +- addons/crm/i18n/it.po | 357 ++-- addons/crm/i18n/nl.po | 6 +- addons/crm_claim/i18n/de.po | 110 +- addons/crm_helpdesk/i18n/de.po | 60 +- addons/crm_partner_assign/i18n/de.po | 101 +- addons/crm_profiling/i18n/it.po | 18 +- addons/delivery/i18n/de.po | 50 +- addons/edi/i18n/hr.po | 89 + addons/event/i18n/de.po | 254 ++- addons/event/i18n/nb.po | 128 +- addons/event_moodle/i18n/hr.po | 185 ++ addons/fleet/i18n/hr.po | 1895 +++++++++++++++++++ addons/fleet/i18n/nl.po | 115 +- addons/google_base_account/i18n/hr.po | 109 ++ addons/google_docs/i18n/hr.po | 190 ++ addons/hr_timesheet/i18n/de.po | 117 +- addons/hr_timesheet_invoice/i18n/de.po | 129 +- addons/l10n_multilang/i18n/hr.po | 163 ++ addons/mail/i18n/hr.po | 48 +- addons/mail/i18n/it.po | 385 ++-- addons/mrp/i18n/nl.po | 75 +- addons/mrp_byproduct/i18n/nl.po | 16 +- addons/note/i18n/hr.po | 290 +++ addons/note_pad/i18n/hr.po | 28 + addons/pad_project/i18n/hr.po | 38 + addons/plugin/i18n/hr.po | 23 + addons/plugin_thunderbird/i18n/it.po | 35 +- addons/portal/i18n/hr.po | 48 +- addons/portal/i18n/nl.po | 56 +- addons/portal_claim/i18n/hr.po | 36 + addons/portal_crm/i18n/hr.po | 552 ++++++ addons/portal_crm/i18n/nl.po | 573 ++++++ addons/portal_event/i18n/nl.po | 59 + addons/portal_hr_employees/i18n/nl.po | 95 + addons/portal_project/i18n/nl.po | 12 +- addons/portal_sale/i18n/nl.po | 397 ++++ addons/product/i18n/hr.po | 8 +- addons/project/i18n/nl.po | 145 +- addons/project_issue/i18n/nl.po | 81 +- addons/project_long_term/i18n/nl.po | 10 +- addons/purchase/i18n/nl.po | 26 +- addons/sale/i18n/de.po | 310 +-- addons/sale/i18n/es_AR.po | 8 +- addons/sale/i18n/it.po | 127 +- addons/sale_crm/i18n/nl.po | 14 +- addons/sale_mrp/i18n/nl.po | 10 +- addons/sale_order_dates/i18n/nl.po | 10 +- addons/share/i18n/zh_CN.po | 22 +- addons/stock/i18n/nl.po | 14 +- addons/stock/i18n/sl.po | 120 +- addons/stock/i18n/zh_CN.po | 26 +- addons/warning/i18n/id.po | 22 +- addons/web/i18n/hr.po | 146 +- addons/web/i18n/pl.po | 54 +- addons/web/i18n/ro.po | 12 +- addons/web_calendar/i18n/hr.po | 9 +- addons/web_diagram/i18n/it.po | 19 +- addons/web_graph/i18n/it.po | 40 +- addons/web_kanban/i18n/hr.po | 10 +- addons/web_kanban/i18n/it.po | 37 +- addons/web_view_editor/i18n/hr.po | 16 +- 86 files changed, 8789 insertions(+), 1677 deletions(-) create mode 100644 addons/auth_anonymous/i18n/hr.po create mode 100644 addons/auth_signup/i18n/hr.po create mode 100644 addons/base_crypt/i18n/id.po create mode 100644 addons/base_gengo/i18n/hr.po create mode 100644 addons/base_import/i18n/zh_CN.po create mode 100644 addons/base_status/i18n/hr.po create mode 100644 addons/contacts/i18n/hr.po create mode 100644 addons/contacts/i18n/zh_CN.po create mode 100644 addons/edi/i18n/hr.po create mode 100644 addons/event_moodle/i18n/hr.po create mode 100644 addons/fleet/i18n/hr.po create mode 100644 addons/google_base_account/i18n/hr.po create mode 100644 addons/google_docs/i18n/hr.po create mode 100644 addons/l10n_multilang/i18n/hr.po create mode 100644 addons/note/i18n/hr.po create mode 100644 addons/note_pad/i18n/hr.po create mode 100644 addons/pad_project/i18n/hr.po create mode 100644 addons/plugin/i18n/hr.po create mode 100644 addons/portal_claim/i18n/hr.po create mode 100644 addons/portal_crm/i18n/hr.po create mode 100644 addons/portal_crm/i18n/nl.po create mode 100644 addons/portal_event/i18n/nl.po create mode 100644 addons/portal_hr_employees/i18n/nl.po create mode 100644 addons/portal_sale/i18n/nl.po diff --git a/addons/account/i18n/it.po b/addons/account/i18n/it.po index d3c28c7c4ed..4324e492364 100644 --- a/addons/account/i18n/it.po +++ b/addons/account/i18n/it.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: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-08 21:50+0000\n" +"PO-Revision-Date: 2012-12-09 23:36+0000\n" "Last-Translator: Sergio Corato \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: 2012-12-09 04:39+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: account @@ -1229,6 +1229,20 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Clicca per aggiungere un conto.\n" +"

    \n" +" Quando si fanno operazioni multi-valuta, è possibile perdere " +"o\n" +" guadagnare degli importi a causa della variazione del tasso " +"di cambio.\n" +" Questo menu dà una previsione del Guadagno o Perdita " +"realizzato se\n" +" queste operazioni fossero concluse oggi. Solo per conti che " +"hanno\n" +" una valuta secondaria.\n" +"

    \n" +" " #. module: account #: field:account.bank.accounts.wizard,acc_name:0 @@ -3527,7 +3541,7 @@ msgstr "Solo Un Piano dei Conti Disponibile" #: field:product.category,property_account_expense_categ:0 #: field:product.template,property_account_expense:0 msgid "Expense Account" -msgstr "Bilancio spese" +msgstr "Conto di Costo" #. module: account #: field:account.bank.statement,message_summary:0 @@ -7460,7 +7474,7 @@ msgid "" "This account will be used instead of the default one as the receivable " "account for the current partner" msgstr "" -"Qiesto conto verra' usato al posto del default come conto per incassi dal " +"Questo conto verrà usato invece del default come conto incassi per il " "partner corrente" #. module: account @@ -10888,7 +10902,7 @@ msgstr "Totale" #: code:addons/account/wizard/account_invoice_refund.py:109 #, python-format msgid "Cannot %s draft/proforma/cancel invoice." -msgstr "" +msgstr "Non è possibile %s una fattura bozza/proforma/annullata." #. module: account #: field:account.tax,account_analytic_paid_id:0 @@ -11017,7 +11031,7 @@ msgstr "Conti vuoti ? " #: code:addons/account/account_move_line.py:1046 #, python-format msgid "Unable to change tax!" -msgstr "" +msgstr "Impossibile cambiare l'imposta!" #. module: account #: constraint:account.bank.statement:0 diff --git a/addons/account/i18n/nl.po b/addons/account/i18n/nl.po index 74fca69af53..95069e431dc 100644 --- a/addons/account/i18n/nl.po +++ b/addons/account/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-01 16:00+0000\n" -"Last-Translator: Thomas Pot (Open2bizz) \n" +"PO-Revision-Date: 2012-12-09 19:02+0000\n" +"Last-Translator: Erwin van der Ploeg (Endian Solutions) \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: 2012-12-04 05:21+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #, python-format #~ msgid "Integrity Error !" @@ -30,13 +30,13 @@ msgstr "Betaling (administratief)" msgid "" "An account fiscal position could be defined only once time on same accounts." msgstr "" -"Een fiscale positie kan maar één keer worden gedefinieerd voro dezelfde " +"Een fiscale positie kan maar één keer worden gedefinieerd voor dezelfde " "rekening." #. module: account #: view:account.unreconcile:0 msgid "Unreconciliate Transactions" -msgstr "Afletteren transactief ongedaan maken" +msgstr "Afletteren transacties ongedaan maken" #. module: account #: help:account.tax.code,sequence:0 @@ -502,7 +502,7 @@ msgstr "" #: code:addons/account/static/src/xml/account_move_line_quickadd.xml:8 #, python-format msgid "Period :" -msgstr "" +msgstr "Periode:" #. module: account #: field:account.account.template,chart_template_id:0 @@ -974,6 +974,8 @@ msgid "" "Print Report with the currency column if the currency differs from the " "company currency." msgstr "" +"Print de rapportage met de valuta kolom als de valuta afwijkt van de " +"bedrijfsvaluta" #. module: account #: report:account.analytic.account.quantity_cost_ledger:0 @@ -1077,6 +1079,8 @@ msgid "" "You cannot validate this journal entry because account \"%s\" does not " "belong to chart of accounts \"%s\"." msgstr "" +"U kunt deze journaalpost niet valideren omdat rekening \"%s\" niet tot het " +"rekeningschema \"%s\" behoort." #. module: account #: view:validate.account.move:0 @@ -1094,7 +1098,7 @@ msgstr "Totaalbedrag" #. module: account #: help:account.invoice,supplier_invoice_number:0 msgid "The reference of this invoice as provided by the supplier." -msgstr "" +msgstr "De referentie van deze factuur zoals opgegeven door de leverancier" #. module: account #: selection:account.account,type:0 @@ -1270,6 +1274,8 @@ msgstr "Crediteer " #: help:account.config.settings,company_footer:0 msgid "Bank accounts as printed in the footer of each printed document" msgstr "" +"Rekeninginformatie die afgedrukt wordt in de voettekst van ieder afgedrukt " +"document" #. module: account #: view:account.tax:0 @@ -1496,7 +1502,7 @@ msgstr "Niveau" #: code:addons/account/wizard/account_change_currency.py:38 #, python-format msgid "You can only change currency for Draft Invoice." -msgstr "" +msgstr "U kunt alleen de valuta wijzigen van een voorlopige factuur" #. module: account #: report:account.invoice:0 @@ -1617,7 +1623,7 @@ msgstr "Debiteuren" #: code:addons/account/account.py:767 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (kopie)" #. module: account #: selection:account.balance.report,display_account:0 @@ -2125,7 +2131,7 @@ msgstr "Klant ref:" #: help:account.tax.template,ref_tax_code_id:0 #: help:account.tax.template,tax_code_id:0 msgid "Use this code for the tax declaration." -msgstr "" +msgstr "Gebruik deze code voor de belastingaangifte" #. module: account #: help:account.period,special:0 @@ -2292,6 +2298,18 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klik om een bankafschrift te registreren.\n" +"

    \n" +" Een bankafschrift is een samenvatting van alle financiele " +"transacties\n" +" van een bankrekening gedurende een bepaalde periode.\n" +" U ontvangt deze periodieke van uw bank.\n" +"

    \n" +" Met OpenERP kunt u de bankafschriften direct afletteren\n" +" met de gerelateerde in- en verkoopfacturen.\n" +"

    \n" +" " #. module: account #: field:account.config.settings,currency_id:0 @@ -2381,7 +2399,7 @@ msgstr "Afsluiten boekjaar" #: code:addons/account/static/src/xml/account_move_line_quickadd.xml:14 #, python-format msgid "Journal :" -msgstr "" +msgstr "Dagboek:" #. module: account #: sql_constraint:account.fiscal.position.tax:0 @@ -7290,7 +7308,7 @@ msgstr "Behoud het balans +/- teken" #: model:ir.actions.report.xml,name:account.account_vat_declaration #: model:ir.ui.menu,name:account.menu_account_vat_declaration msgid "Taxes Report" -msgstr "Belastingen rapport" +msgstr "BTW aangifte" #. module: account #: selection:account.journal.period,state:0 @@ -10658,7 +10676,7 @@ msgstr "Vervaldatum" #: field:cash.box.in,name:0 #: field:cash.box.out,name:0 msgid "Reason" -msgstr "" +msgstr "Reden" #. module: account #: selection:account.partner.ledger,filter:0 @@ -10839,7 +10857,7 @@ msgstr "Debiteuren" #: code:addons/account/account_move_line.py:776 #, python-format msgid "Already reconciled." -msgstr "" +msgstr "Al afgeletterd" #. module: account #: selection:account.model.line,date_maturity:0 @@ -11138,7 +11156,7 @@ msgstr "Rechts bovenliggende" #: code:addons/account/static/src/js/account_move_reconciliation.js:80 #, python-format msgid "Never" -msgstr "" +msgstr "Nooit" #. module: account #: model:ir.model,name:account.model_account_addtmpl_wizard @@ -11159,7 +11177,7 @@ msgstr "Relaties" #. module: account #: field:account.account,note:0 msgid "Internal Notes" -msgstr "" +msgstr "Interne notities" #. module: account #: model:ir.actions.act_window,name:account.action_account_fiscalyear @@ -11192,7 +11210,7 @@ msgstr "Administratiemodel" #: code:addons/account/account_cash_statement.py:292 #, python-format msgid "Loss" -msgstr "" +msgstr "Verlies" #. module: account #: selection:account.entries.report,month:0 diff --git a/addons/account/i18n/sl.po b/addons/account/i18n/sl.po index d5f9538df77..8791f550fc9 100644 --- a/addons/account/i18n/sl.po +++ b/addons/account/i18n/sl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-11-01 18:30+0000\n" +"PO-Revision-Date: 2012-12-10 00:34+0000\n" "Last-Translator: Dusan Laznik \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: 2012-12-04 05:25+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -386,7 +386,7 @@ msgstr "" #: view:account.invoice.report:0 #: field:account.invoice.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Prodajalec" #. module: account #: model:ir.model,name:account.model_account_tax_template @@ -452,7 +452,7 @@ msgstr "" #: code:addons/account/static/src/xml/account_move_line_quickadd.xml:8 #, python-format msgid "Period :" -msgstr "" +msgstr "Obdobje:" #. module: account #: field:account.account.template,chart_template_id:0 @@ -1108,7 +1108,7 @@ msgstr "Oznaka" #. module: account #: view:account.config.settings:0 msgid "Features" -msgstr "" +msgstr "Možnosti" #. module: account #: code:addons/account/account.py:2293 @@ -1189,7 +1189,7 @@ msgstr "" #. module: account #: view:account.invoice:0 msgid "Refund " -msgstr "" +msgstr "Dobropis " #. module: account #: help:account.config.settings,company_footer:0 @@ -1329,7 +1329,7 @@ msgstr "Izhodna tečajna lista" #. module: account #: field:account.config.settings,chart_template_id:0 msgid "Template" -msgstr "" +msgstr "Predloga" #. module: account #: selection:account.analytic.journal,type:0 @@ -1542,7 +1542,7 @@ msgstr "Konto terjatev" #: code:addons/account/account.py:767 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (kopija)" #. module: account #: selection:account.balance.report,display_account:0 @@ -1611,7 +1611,7 @@ msgstr "Preskoči stanje \"Osnutek\" za ročno vnašanje" #: code:addons/account/wizard/account_report_common.py:159 #, python-format msgid "Not implemented." -msgstr "" +msgstr "Ni vgrajeno." #. module: account #: view:account.invoice.refund:0 @@ -1698,7 +1698,7 @@ msgstr "Neobdavčeno" #. module: account #: view:account.journal:0 msgid "Advanced Settings" -msgstr "" +msgstr "Napredne nastavitve" #. module: account #: view:account.bank.statement:0 diff --git a/addons/account/i18n/zh_CN.po b/addons/account/i18n/zh_CN.po index 37b8520d2a1..65c83ae19f2 100644 --- a/addons/account/i18n/zh_CN.po +++ b/addons/account/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: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-09 04:30+0000\n" +"PO-Revision-Date: 2012-12-09 04:42+0000\n" "Last-Translator: sum1201 \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: 2012-12-09 04:39+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: account @@ -3003,7 +3003,7 @@ msgstr "单号" #. module: account #: view:wizard.multi.charts.accounts:0 msgid "Purchase Tax" -msgstr "" +msgstr "购置税" #. module: account #: help:account.move.line,tax_code_id:0 @@ -3097,7 +3097,7 @@ msgstr "沟通类型" #. module: account #: constraint:account.move.line:0 msgid "Account and Period must belong to the same company." -msgstr "" +msgstr "帐户和帐期必须属于同一家公司。" #. module: account #: field:account.invoice.line,discount:0 @@ -3125,7 +3125,7 @@ msgstr "补差额金额" #: field:account.bank.statement,message_unread:0 #: field:account.invoice,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "未读消息" #. module: account #: code:addons/account/wizard/account_invoice_state.py:44 diff --git a/addons/account_accountant/i18n/hr.po b/addons/account_accountant/i18n/hr.po index da83a8c12c9..8886a91875a 100644 --- a/addons/account_accountant/i18n/hr.po +++ b/addons/account_accountant/i18n/hr.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:51+0000\n" -"PO-Revision-Date: 2011-01-17 00:02+0000\n" +"PO-Revision-Date: 2012-12-09 19:38+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: account_accountant #: model:ir.actions.client,name:account_accountant.action_client_account_menu msgid "Open Accounting Menu" -msgstr "" +msgstr "Otvori izbornik računovodstvo" #~ msgid "" #~ "\n" diff --git a/addons/account_analytic_analysis/i18n/it.po b/addons/account_analytic_analysis/i18n/it.po index 2dcf15f669b..641209e35ce 100644 --- a/addons/account_analytic_analysis/i18n/it.po +++ b/addons/account_analytic_analysis/i18n/it.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-08-16 09:05+0000\n" -"Last-Translator: gagarin \n" +"PO-Revision-Date: 2012-12-09 13:20+0000\n" +"Last-Translator: Davide Corio - agilebg.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: 2012-12-04 05:34+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "No order to invoice, create" -msgstr "" +msgstr "Nessun ordine da fatturare, crealo" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -29,12 +29,12 @@ msgstr "Raggruppa per..." #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "To Invoice" -msgstr "" +msgstr "Da fatturare" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Remaining" -msgstr "" +msgstr "Rimanenti" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -73,7 +73,7 @@ msgstr "" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "⇒ Invoice" -msgstr "" +msgstr "⇒ Fattura" #. module: account_analytic_analysis #: field:account.analytic.account,ca_invoiced:0 @@ -88,7 +88,7 @@ msgstr "Data dell'ultimo costo fatturato" #. module: account_analytic_analysis #: help:account.analytic.account,fix_price_to_invoice:0 msgid "Sum of quotations for this contract." -msgstr "" +msgstr "Somma dei preventivi di questo contratto." #. module: account_analytic_analysis #: help:account.analytic.account,ca_invoiced:0 @@ -98,7 +98,7 @@ msgstr "Importo totale fatture cliente per questo conto" #. module: account_analytic_analysis #: help:account.analytic.account,timesheet_ca_invoiced:0 msgid "Sum of timesheet lines invoiced for this contract." -msgstr "" +msgstr "Somma delle linee timesheet fatturate di questo contratto." #. module: account_analytic_analysis #: help:account.analytic.account,revenue_per_hour:0 @@ -108,12 +108,12 @@ msgstr "Calcolato usando la formula: Fatturato / Tempo Totale" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Contracts not assigned" -msgstr "" +msgstr "Contratti non assegnati" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Partner" -msgstr "" +msgstr "Partner" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -156,12 +156,12 @@ msgstr "" #. module: account_analytic_analysis #: help:account.analytic.account,remaining_hours_to_invoice:0 msgid "Computed using the formula: Maximum Time - Total Invoiced Time" -msgstr "" +msgstr "Calcolato usando la formula: Tempo Massimo - Totale Tempo Fatturato" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Expected" -msgstr "" +msgstr "Atteso" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -174,7 +174,7 @@ msgstr "Contabilità Analitica" #. module: account_analytic_analysis #: help:account.analytic.account,theorical_margin:0 msgid "Computed using the formula: Theoretical Revenue - Total Costs" -msgstr "" +msgstr "Calcolato usando la formula: Ricavo Teorico - Totale Costi" #. module: account_analytic_analysis #: field:account.analytic.account,hours_qtt_invoiced:0 @@ -195,6 +195,8 @@ msgid "" "{'required': [('type','=','contract')], 'invisible': [('type','in',['view', " "'normal','template'])]}" msgstr "" +"{'required': [('type','=','contract')], 'invisible': [('type','in',['view', " +"'normal','template'])]}" #. module: account_analytic_analysis #: field:account.analytic.account,real_margin_rate:0 @@ -204,7 +206,7 @@ msgstr "Tasso di margine reale (%)" #. module: account_analytic_analysis #: help:account.analytic.account,remaining_hours:0 msgid "Computed using the formula: Maximum Time - Total Worked Time" -msgstr "" +msgstr "Calcolato usando la formula: Tempo Massimo - Totale Tempo Lavorato" #. module: account_analytic_analysis #: help:account.analytic.account,hours_quantity:0 @@ -218,23 +220,23 @@ msgstr "" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Nothing to invoice, create" -msgstr "" +msgstr "Niente da fatturare, crealo" #. module: account_analytic_analysis #: model:ir.actions.act_window,name:account_analytic_analysis.template_of_contract_action #: model:ir.ui.menu,name:account_analytic_analysis.menu_template_of_contract_action msgid "Template of Contract" -msgstr "" +msgstr "Modello Contratto" #. module: account_analytic_analysis #: model:res.groups,name:account_analytic_analysis.group_template_required msgid "Mandatory use of templates in contracts" -msgstr "" +msgstr "Utilizzo dei template obbligatorio nei contratti" #. module: account_analytic_analysis #: field:account.analytic.account,hours_quantity:0 msgid "Total Worked Time" -msgstr "" +msgstr "Totale Tempo Lavorato" #. module: account_analytic_analysis #: field:account.analytic.account,real_margin:0 @@ -255,7 +257,7 @@ msgstr "" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "or view" -msgstr "" +msgstr "o vista" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -272,7 +274,7 @@ msgstr "Mese" #: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all #: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all msgid "Time & Materials to Invoice" -msgstr "" +msgstr "Tempo & Materiali da Fatturare" #. module: account_analytic_analysis #: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all @@ -283,12 +285,12 @@ msgstr "Contratti" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Start Date" -msgstr "" +msgstr "Data Inizio" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Invoiced" -msgstr "" +msgstr "Fatturato" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -307,13 +309,13 @@ msgstr "Contratti in sospeso da rinnovare con il cliente" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Timesheets" -msgstr "" +msgstr "Timesheets" #. module: account_analytic_analysis #: code:addons/account_analytic_analysis/account_analytic_analysis.py:461 #, python-format msgid "Sale Order Lines of %s" -msgstr "" +msgstr "Linee Ordine di Vendita di %s" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -328,7 +330,7 @@ msgstr "Quantità Scadute" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Status" -msgstr "" +msgstr "Stato" #. module: account_analytic_analysis #: field:account.analytic.account,ca_theorical:0 @@ -350,7 +352,7 @@ msgstr "" #. module: account_analytic_analysis #: model:ir.actions.act_window,name:account_analytic_analysis.action_sales_order msgid "Sales Orders" -msgstr "" +msgstr "Ordini di Vendita" #. module: account_analytic_analysis #: help:account.analytic.account,last_invoice_date:0 @@ -404,6 +406,8 @@ msgid "" "Allows you to set the template field as required when creating an analytic " "account or a contract." msgstr "" +"Consente di impostare il campo modello come obbligatorio durante la " +"creazione di un conto analitico o di un contratto." #. module: account_analytic_analysis #: help:account.analytic.account,hours_qtt_invoiced:0 @@ -436,12 +440,12 @@ msgstr "" #. module: account_analytic_analysis #: field:account.analytic.account,toinvoice_total:0 msgid "Total to Invoice" -msgstr "" +msgstr "Totale da Fatturare" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Sale Orders" -msgstr "" +msgstr "Ordini di Vendita" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -451,7 +455,7 @@ msgstr "" #. module: account_analytic_analysis #: field:account.analytic.account,invoiced_total:0 msgid "Total Invoiced" -msgstr "" +msgstr "Totale Fatturato" #. module: account_analytic_analysis #: help:account.analytic.account,remaining_ca:0 @@ -462,7 +466,7 @@ msgstr "" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Responsible" -msgstr "" +msgstr "Responsabile" #. module: account_analytic_analysis #: field:account.analytic.account,last_invoice_date:0 @@ -516,6 +520,7 @@ msgstr "Contratti da Rinnovare" #: help:account.analytic.account,toinvoice_total:0 msgid " Sum of everything that could be invoiced for this contract." msgstr "" +" Somma di tutto quello che può essere fatturato per questo contratto." #. module: account_analytic_analysis #: field:account.analytic.account,theorical_margin:0 @@ -525,7 +530,7 @@ msgstr "Margine teorico" #. module: account_analytic_analysis #: field:account.analytic.account,remaining_total:0 msgid "Total Remaining" -msgstr "" +msgstr "Totale Rimanente" #. module: account_analytic_analysis #: help:account.analytic.account,real_margin:0 @@ -535,12 +540,12 @@ msgstr "Calcolato utilizzando la formula: importo fatturato - totale costi" #. module: account_analytic_analysis #: field:account.analytic.account,hours_qtt_est:0 msgid "Estimation of Hours to Invoice" -msgstr "" +msgstr "Stima delle Ore da Fatturare" #. module: account_analytic_analysis #: field:account.analytic.account,fix_price_invoices:0 msgid "Fixed Price" -msgstr "" +msgstr "Prezzo Fisso" #. module: account_analytic_analysis #: help:account.analytic.account,last_worked_date:0 @@ -550,17 +555,17 @@ msgstr "Data dell'ultimo lavoro fatto su questo conto." #. module: account_analytic_analysis #: model:ir.model,name:account_analytic_analysis.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: account_analytic_analysis #: field:sale.config.settings,group_template_required:0 msgid "Mandatory use of templates." -msgstr "" +msgstr "Uso dei modelli obbligatorio" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Contracts Having a Partner" -msgstr "" +msgstr "Contratti con Partner" #. module: account_analytic_analysis #: help:account.analytic.account,total_cost:0 @@ -574,7 +579,7 @@ msgstr "" #. module: account_analytic_analysis #: field:account.analytic.account,est_total:0 msgid "Total Estimation" -msgstr "" +msgstr "Stima Totale" #. module: account_analytic_analysis #: field:account.analytic.account,remaining_ca:0 @@ -601,16 +606,17 @@ msgstr "Durata totale" msgid "" "the field template of the analytic accounts and contracts will be required." msgstr "" +"il campo modello dei conti analitici e dei contratti sarà obbligatorio." #. module: account_analytic_analysis #: field:account.analytic.account,invoice_on_timesheets:0 msgid "On Timesheets" -msgstr "" +msgstr "Su Timesheets" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Total" -msgstr "" +msgstr "Totale" #~ msgid "Computed using the formula: Theorial Revenue - Total Costs" #~ msgstr "Calcolato utilizzando la formula: Reddito teorico - costi totali" diff --git a/addons/account_asset/i18n/it.po b/addons/account_asset/i18n/it.po index a117c70b422..2bd5f5ddc7b 100644 --- a/addons/account_asset/i18n/it.po +++ b/addons/account_asset/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-11-30 00:08+0000\n" +"PO-Revision-Date: 2012-12-09 22:00+0000\n" "Last-Translator: Sergio Corato \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: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: account_asset #: view:account.asset.asset:0 @@ -87,7 +87,7 @@ msgstr "Azienda" #. module: account_asset #: view:asset.modify:0 msgid "Modify" -msgstr "" +msgstr "Modifica" #. module: account_asset #: selection:account.asset.asset,state:0 @@ -112,7 +112,7 @@ msgstr "Analisi Immobilizzazioni" #. module: account_asset #: field:asset.modify,name:0 msgid "Reason" -msgstr "" +msgstr "Causale" #. module: account_asset #: field:account.asset.asset,method_progress_factor:0 @@ -189,7 +189,7 @@ msgstr "Note" #. module: account_asset #: field:account.asset.depreciation.line,move_id:0 msgid "Depreciation Entry" -msgstr "" +msgstr "Riga Ammortamento" #. module: account_asset #: view:asset.asset.report:0 @@ -223,7 +223,7 @@ msgstr "Riferimento" #. module: account_asset #: view:account.asset.asset:0 msgid "Account Asset" -msgstr "" +msgstr "Conto Immobilizzazione" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_asset_depreciation_confirmation_wizard @@ -336,7 +336,7 @@ msgstr "Immobilizzazioni in stato \"chiuso\"" #. module: account_asset #: field:account.asset.asset,parent_id:0 msgid "Parent Asset" -msgstr "" +msgstr "Immobilizzazione Padre" #. module: account_asset #: view:account.asset.history:0 @@ -362,7 +362,7 @@ msgstr "" #. module: account_asset #: model:ir.model,name:account_asset.model_account_move_line msgid "Journal Items" -msgstr "" +msgstr "Voci Sezionale" #. module: account_asset #: field:asset.asset.report,unposted_value:0 diff --git a/addons/account_budget/i18n/it.po b/addons/account_budget/i18n/it.po index f47b3acd216..4f7bf102dad 100644 --- a/addons/account_budget/i18n/it.po +++ b/addons/account_budget/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-01-26 17:36+0000\n" -"Last-Translator: Nicola Riolini - Micronaet \n" +"PO-Revision-Date: 2012-12-09 20:37+0000\n" +"Last-Translator: Sergio Corato \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: 2012-12-04 05:42+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: account_budget #: view:account.budget.analytic:0 @@ -120,7 +120,7 @@ msgstr "Stato" #: code:addons/account_budget/account_budget.py:119 #, python-format msgid "The Budget '%s' has no accounts!" -msgstr "" +msgstr "Il Budget '%s' non ha un conto!" #. module: account_budget #: report:account.budget:0 @@ -198,7 +198,7 @@ msgstr "Data fine" #: model:ir.model,name:account_budget.model_account_budget_analytic #: model:ir.model,name:account_budget.model_account_budget_report msgid "Account Budget report for analytic account" -msgstr "" +msgstr "Report Budget Conto per conto analitico" #. module: account_budget #: view:account.analytic.account:0 @@ -234,7 +234,7 @@ msgstr "" #. module: account_budget #: view:crossovered.budget:0 msgid "Duration" -msgstr "" +msgstr "Durata" #. module: account_budget #: field:account.budget.post,code:0 @@ -332,7 +332,7 @@ msgstr "Importo Teorico" #: view:account.budget.crossvered.summary.report:0 #: view:account.budget.report:0 msgid "or" -msgstr "" +msgstr "o" #. module: account_budget #: field:crossovered.budget.lines,analytic_account_id:0 @@ -418,7 +418,7 @@ msgstr "Maschera Analisi" #. module: account_budget #: view:crossovered.budget:0 msgid "Draft Budgets" -msgstr "" +msgstr "Budget in Bozza" #~ msgid "%" #~ msgstr "%" diff --git a/addons/account_followup/i18n/nl.po b/addons/account_followup/i18n/nl.po index c4a52167a46..c7cdc088578 100644 --- a/addons/account_followup/i18n/nl.po +++ b/addons/account_followup/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-04 17:33+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" +"PO-Revision-Date: 2012-12-09 18:16+0000\n" +"Last-Translator: Harjan Talen \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: 2012-12-05 05:19+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: account_followup #: view:account_followup.followup.line:0 @@ -287,7 +287,7 @@ msgstr "Ik ben verantwoordelijk" #. module: account_followup #: sql_constraint:account_followup.followup:0 msgid "Only one follow-up per company is allowed" -msgstr "" +msgstr "Per bedrijf is één betalingsherinnering mogelijk" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line4 @@ -310,6 +310,21 @@ msgid "" "Best Regards,\n" " " msgstr "" +"\n" +"Geachte %(partner_name)s,\n" +"\n" +"Ondanks herhaaldelijk verzoek is onze vordering nog niet voldaan.\n" +"\n" +"Wanneer de volledige betaling niet binnen 8 dagen wordt voldaan zijn wij " +"genoodzaakt verdere stappen te ondernemen zonder vermelding vooraf.\n" +"\n" +"Wij gaan er vanuit dat dit echter niet noodzakelijk zal zijn. Onderstaand " +"een overzicht van de openstaande posten.\n" +"\n" +"Wanneer u vragen op opmerkingen hierover heeft dan horen wij dat graag.\n" +"\n" +"Met vriendelijke groet,\n" +" " #. module: account_followup #: help:account_followup.followup.line,send_letter:0 @@ -496,17 +511,17 @@ msgstr "Afgedrukt bericht" #. module: account_followup #: field:res.partner,latest_followup_level_id_without_lit:0 msgid "Latest Follow-up Level without litigation" -msgstr "" +msgstr "Laatste herinnering voor het incasso-traject." #. module: account_followup #: view:res.partner:0 msgid "Partners with Credits" -msgstr "" +msgstr "Relaties met openstaande facturen" #. module: account_followup #: help:account_followup.followup.line,send_email:0 msgid "When processing, it will send an email" -msgstr "" +msgstr "Bij verwerking wordt een e-mail verzonden" #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -517,6 +532,7 @@ msgstr "Relatie voor betalingsherinnering" #: view:res.partner:0 msgid "Print overdue payments report independent of follow-up line" msgstr "" +"Druk overzicht openstaande posten af ongeacht status betalingsherinneringen." #. module: account_followup #: field:account_followup.followup.line,followup_id:0 @@ -614,7 +630,7 @@ msgstr "Geblokkeerd" #. module: account_followup #: sql_constraint:account_followup.followup.line:0 msgid "Days of the follow-up levels must be different" -msgstr "" +msgstr "De dagen van de herinnerings-niveau's moeten van elkaar verschillen" #. module: account_followup #: view:res.partner:0 @@ -703,7 +719,7 @@ msgstr "onbekend" #: code:addons/account_followup/account_followup.py:245 #, python-format msgid "Printed overdue payments report" -msgstr "" +msgstr "Druk het rapport achterstallige betalingen af" #. module: account_followup #: model:ir.model,name:account_followup.model_email_template diff --git a/addons/account_followup/i18n/zh_CN.po b/addons/account_followup/i18n/zh_CN.po index bde6e33ac6f..e2184129bf8 100644 --- a/addons/account_followup/i18n/zh_CN.po +++ b/addons/account_followup/i18n/zh_CN.po @@ -7,61 +7,61 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-11-30 12:07+0000\n" -"Last-Translator: ccdos \n" +"PO-Revision-Date: 2012-12-09 04:57+0000\n" +"Last-Translator: sum1201 \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: 2012-12-04 05:20+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,manual_action:0 msgid "Manual Action" -msgstr "" +msgstr "手动操作" #. module: account_followup #: help:res.partner,latest_followup_level_id:0 msgid "The maximum follow-up level" -msgstr "" +msgstr "最大跟踪级别" #. module: account_followup #: view:res.partner:0 msgid "Group by" -msgstr "" +msgstr "分组" #. module: account_followup #: view:account_followup.stat:0 #: view:res.partner:0 msgid "Group By..." -msgstr "分组..." +msgstr "基于...分组" #. module: account_followup #: field:account_followup.print,followup_id:0 msgid "Follow-Up" -msgstr "催款" +msgstr "后续跟进" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(date)s" -msgstr "" +msgstr "%(日期)" #. module: account_followup #: field:res.partner,payment_next_action_date:0 msgid "Next Action Date" -msgstr "" +msgstr "下次活动日期" #. module: account_followup #: field:account_followup.sending.results,needprinting:0 msgid "Needs Printing" -msgstr "" +msgstr "需要印刷" #. module: account_followup #: view:res.partner:0 msgid "⇾ Mark as Done" -msgstr "" +msgstr "标记为完成" #. module: account_followup #: field:account_followup.followup.line,manual_action_note:0 @@ -192,7 +192,7 @@ msgstr "" #. module: account_followup #: view:account_followup.followup.line:0 msgid "days overdue, do the following actions:" -msgstr "" +msgstr "天过期,做下列动作:" #. module: account_followup #: view:account_followup.followup.line:0 @@ -207,12 +207,12 @@ msgstr "电子邮件正文" #. module: account_followup #: help:res.partner,payment_responsible_id:0 msgid "Responsible for making sure the action happens." -msgstr "" +msgstr "负责确保动作发生。" #. module: account_followup #: view:res.partner:0 msgid "Overdue amount" -msgstr "" +msgstr "逾期金额" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_print @@ -242,12 +242,12 @@ msgstr "借方合计" #. module: account_followup #: field:res.partner,payment_next_action:0 msgid "Next Action" -msgstr "" +msgstr "下个行动日期" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Partner Name" -msgstr "" +msgstr ":伙伴名称" #. module: account_followup #: view:account_followup.followup:0 @@ -334,7 +334,7 @@ msgstr "" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_customer_followup msgid "Manual Follow-Ups" -msgstr "" +msgstr "手动跟进" #. module: account_followup #: view:account_followup.followup.line:0 @@ -354,7 +354,7 @@ msgstr "催款统计" #. module: account_followup #: view:res.partner:0 msgid "Send Overdue Email" -msgstr "" +msgstr "过期邮件发送" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup_line @@ -370,7 +370,7 @@ msgstr "输入序列用于显示催款列表" #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid " will be sent" -msgstr "" +msgstr " 将被发送" #. module: account_followup #: view:account_followup.followup.line:0 diff --git a/addons/association/i18n/it.po b/addons/association/i18n/it.po index ac9867921fa..abe59bf8ab7 100644 --- a/addons/association/i18n/it.po +++ b/addons/association/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-01-17 07:43+0000\n" -"Last-Translator: Nicola Riolini - Micronaet \n" +"PO-Revision-Date: 2012-12-09 20:34+0000\n" +"Last-Translator: Sergio Corato \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: 2012-10-30 05:33+0000\n" -"X-Generator: Launchpad (build 16206)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: association #: field:profile.association.config.install_modules_wizard,wiki:0 @@ -71,6 +71,8 @@ msgid "" "Tracks and manages employee expenses, and can automatically re-invoice " "clients if the expenses are project-related." msgstr "" +"Traccia e gestisce le spese dei dipendenti e può ri-generare automaticamente " +"fatture se le spese sono collegate al progetto." #. module: association #: help:profile.association.config.install_modules_wizard,project_gtd:0 @@ -101,7 +103,7 @@ msgstr "Monitoraggio spese" #: model:ir.actions.act_window,name:association.action_config_install_module #: view:profile.association.config.install_modules_wizard:0 msgid "Association Application Configuration" -msgstr "" +msgstr "Configurazione Applicazione Associazione" #. module: association #: help:profile.association.config.install_modules_wizard,wiki:0 @@ -109,6 +111,8 @@ msgid "" "Lets you create wiki pages and page groups in order to keep track of " "business knowledge and share it with and between your employees." msgstr "" +"Permette di creare pagine wiki e gruppi di pagine per tenere traccia delle " +"conoscenze aziendali e condividerle con e tra gli dipendenti." #. module: association #: help:profile.association.config.install_modules_wizard,project:0 @@ -116,6 +120,8 @@ msgid "" "Helps you manage your projects and tasks by tracking them, generating " "plannings, etc..." msgstr "" +"Aiuta a gestire i progetti e le attività attraverso il loro tracciamento, " +"pianificazione, ecc..." #. module: association #: model:ir.model,name:association.model_profile_association_config_install_modules_wizard diff --git a/addons/auth_anonymous/i18n/hr.po b/addons/auth_anonymous/i18n/hr.po new file mode 100644 index 00000000000..4e910f11324 --- /dev/null +++ b/addons/auth_anonymous/i18n/hr.po @@ -0,0 +1,30 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-09 19:39+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: auth_anonymous +#. openerp-web +#: code:addons/auth_anonymous/static/src/xml/auth_anonymous.xml:9 +#, python-format +msgid "Login" +msgstr "Prijava" + +#. module: auth_anonymous +#: model:res.groups,name:auth_anonymous.group_anonymous +msgid "Anonymous Group" +msgstr "Anonimna grupa" diff --git a/addons/auth_signup/i18n/hr.po b/addons/auth_signup/i18n/hr.po new file mode 100644 index 00000000000..a95bba3f1c3 --- /dev/null +++ b/addons/auth_signup/i18n/hr.po @@ -0,0 +1,258 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-04 14:41+0000\n" +"PO-Revision-Date: 2012-12-09 19:58+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_uninvited:0 +msgid "Allow external users to sign up" +msgstr "Dozvoli prijavu eksternim korisnicima" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16 +#, python-format +msgid "Confirm Password" +msgstr "Potvrdi lozinku" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_uninvited:0 +msgid "If unchecked, only invited users may sign up." +msgstr "Dozvoli prijavu svima ili samo pozvanim korisnicima" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_base_config_settings +msgid "base.config.settings" +msgstr "" + +#. module: auth_signup +#: code:addons/auth_signup/res_users.py:248 +#, python-format +msgid "Cannot send email: user has no email address." +msgstr "Korisnik nema e-mail adresu." + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25 +#, python-format +msgid "Reset password" +msgstr "Resetiraj lozinku" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_template_user_id:0 +msgid "Template user for new users created through signup" +msgstr "Korisnik predložak za sve korisnike kreirane prijavom." + +#. module: auth_signup +#: model:email.template,subject:auth_signup.reset_password_email +msgid "Password reset" +msgstr "Promjena lozinke" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#, python-format +msgid "Please enter a password and confirm it." +msgstr "Molim upišite lozinku i potvrdu." + +#. module: auth_signup +#: view:res.users:0 +msgid "Send an email to the user to (re)set their password." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23 +#, python-format +msgid "Sign Up" +msgstr "" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "New" +msgstr "Nova(i)" + +#. module: auth_signup +#: field:res.users,state:0 +msgid "Status" +msgstr "Status" + +#. module: auth_signup +#: model:email.template,body_html:auth_signup.reset_password_email +msgid "" +"\n" +"

    A password reset was requested for the OpenERP account linked to this " +"email.

    \n" +"\n" +"

    You may change your password by following this link.

    \n" +"\n" +"

    Note: If you do not expect this, you can safely ignore this email.

    " +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#, python-format +msgid "Please enter a name." +msgstr "Unesite ime" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_users +msgid "Users" +msgstr "Korisnici" + +#. module: auth_signup +#: field:res.partner,signup_url:0 +msgid "Signup URL" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#, python-format +msgid "Please enter a username." +msgstr "Upišite korisničko ime" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Active" +msgstr "Aktivan" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12 +#, python-format +msgid "Username" +msgstr "Korisničko ime" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8 +#, python-format +msgid "Name" +msgstr "Naziv" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:160 +#, python-format +msgid "Please enter a username or email address." +msgstr "Upišite korisničko ime ili email adresu." + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Resetting Password" +msgstr "Promjena lozinke" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13 +#, python-format +msgid "Username (Email)" +msgstr "Korisničko ime (e-mail)" + +#. module: auth_signup +#: field:res.partner,signup_expiration:0 +msgid "Signup Expiration" +msgstr "" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_reset_password:0 +msgid "This allows users to trigger a password reset from the Login page." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:21 +#, python-format +msgid "Log in" +msgstr "Prijava" + +#. module: auth_signup +#: field:res.partner,signup_valid:0 +msgid "Signup Token is Valid" +msgstr "Token prijave je ispravan" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#: code:addons/auth_signup/static/src/js/auth_signup.js:123 +#: code:addons/auth_signup/static/src/js/auth_signup.js:157 +#: code:addons/auth_signup/static/src/js/auth_signup.js:160 +#, python-format +msgid "Login" +msgstr "Prijava" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:94 +#, python-format +msgid "Invalid signup token" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:123 +#, python-format +msgid "Passwords do not match; please retype them." +msgstr "Lozinke nisu iste, pokušajte ponovo." + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#: code:addons/auth_signup/static/src/js/auth_signup.js:157 +#, python-format +msgid "No database selected !" +msgstr "Nije odabrana baza podataka" + +#. module: auth_signup +#: view:res.users:0 +msgid "Reset Password" +msgstr "Promijeni lozinku" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_reset_password:0 +msgid "Enable password reset from Login page" +msgstr "Omogući promjenu lozinke na stranici prijave" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24 +#, python-format +msgid "Back to Login" +msgstr "Nazad na prijavu" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 +#, python-format +msgid "Sign up" +msgstr "Prijava" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_partner +msgid "Partner" +msgstr "Partner" + +#. module: auth_signup +#: field:res.partner,signup_token:0 +msgid "Signup Token" +msgstr "Token prijave" diff --git a/addons/base_crypt/i18n/hr.po b/addons/base_crypt/i18n/hr.po index ec695b9a285..c971ae1bf00 100644 --- a/addons/base_crypt/i18n/hr.po +++ b/addons/base_crypt/i18n/hr.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-12-19 12:11+0000\n" -"Last-Translator: Tomislav Bosnjakovic \n" +"PO-Revision-Date: 2012-12-09 19:40+0000\n" +"Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base_crypt #: model:ir.model,name:base_crypt.model_res_users msgid "Users" -msgstr "" +msgstr "Korisnici" #~ msgid "" #~ "This module replaces the cleartext password in the database with a password " diff --git a/addons/base_crypt/i18n/id.po b/addons/base_crypt/i18n/id.po new file mode 100644 index 00000000000..035480b7a84 --- /dev/null +++ b/addons/base_crypt/i18n/id.po @@ -0,0 +1,23 @@ +# Indonesian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 08:46+0000\n" +"Last-Translator: Budhi Hartono \n" +"Language-Team: Indonesian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: base_crypt +#: model:ir.model,name:base_crypt.model_res_users +msgid "Users" +msgstr "Pengguna" diff --git a/addons/base_gengo/i18n/hr.po b/addons/base_gengo/i18n/hr.po new file mode 100644 index 00000000000..128c691bef4 --- /dev/null +++ b/addons/base_gengo/i18n/hr.po @@ -0,0 +1,249 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 20:02+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: base_gengo +#: view:res.company:0 +msgid "Comments for Translator" +msgstr "Komentari prevoditelju" + +#. module: base_gengo +#: field:ir.translation,job_id:0 +msgid "Gengo Job ID" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "This language is not supported by the Gengo translation services." +msgstr "" + +#. module: base_gengo +#: field:res.company,gengo_comment:0 +msgid "Comments" +msgstr "Komentari" + +#. module: base_gengo +#: field:res.company,gengo_private_key:0 +msgid "Gengo Private Key" +msgstr "Gengo privatni ključ" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_base_gengo_translations +msgid "base.gengo.translations" +msgstr "" + +#. module: base_gengo +#: help:res.company,gengo_auto_approve:0 +msgid "Jobs are Automatically Approved by Gengo." +msgstr "" + +#. module: base_gengo +#: field:base.gengo.translations,lang_id:0 +msgid "Language" +msgstr "Jezik" + +#. module: base_gengo +#: field:ir.translation,gengo_comment:0 +msgid "Comments & Activity Linked to Gengo" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:124 +#, python-format +msgid "Gengo Sync Translation (Response)" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:72 +#, python-format +msgid "" +"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo " +"authentication parameters under `Settings > Companies > Gengo Parameters`." +msgstr "" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Translation By Machine" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:155 +#, python-format +msgid "" +"%s\n" +"\n" +"--\n" +" Commented on %s by %s." +msgstr "" + +#. module: base_gengo +#: field:ir.translation,gengo_translation:0 +msgid "Gengo Translation Service Level" +msgstr "" + +#. module: base_gengo +#: constraint:ir.translation:0 +msgid "" +"The Gengo translation service selected is not supported for this language." +msgstr "" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Standard" +msgstr "Standardni" + +#. module: base_gengo +#: help:ir.translation,gengo_translation:0 +msgid "" +"You can select here the service level you want for an automatic translation " +"using Gengo." +msgstr "" + +#. module: base_gengo +#: field:base.gengo.translations,restart_send_job:0 +msgid "Restart Sending Job" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "To Approve In Gengo" +msgstr "" + +#. module: base_gengo +#: view:res.company:0 +msgid "Private Key" +msgstr "Privatni ključ" + +#. module: base_gengo +#: view:res.company:0 +msgid "Public Key" +msgstr "Javni ključ" + +#. module: base_gengo +#: field:res.company,gengo_public_key:0 +msgid "Gengo Public Key" +msgstr "Gengo Javni ključ" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:123 +#, python-format +msgid "Gengo Sync Translation (Request)" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Translations" +msgstr "Prijevodi" + +#. module: base_gengo +#: field:res.company,gengo_auto_approve:0 +msgid "Auto Approve Translation ?" +msgstr "" + +#. module: base_gengo +#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations +#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations +msgid "Gengo: Manual Request of Translation" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/ir_translation.py:62 +#: code:addons/base_gengo/wizard/base_gengo_translations.py:109 +#, python-format +msgid "Gengo Authentication Error" +msgstr "" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_res_company +msgid "Companies" +msgstr "Organizacije" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "" +"Note: If the translation state is 'In Progress', it means that the " +"translation has to be approved to be uploaded in this system. You are " +"supposed to do that directly by using your Gengo Account" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:82 +#, python-format +msgid "" +"Gengo connection failed with this message:\n" +"``%s``" +msgstr "" + +#. module: base_gengo +#: view:res.company:0 +msgid "Gengo Parameters" +msgstr "" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Send" +msgstr "Pošalji" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Ultra" +msgstr "" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Gengo Translation Service" +msgstr "" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Pro" +msgstr "" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Gengo Request Form" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "Warning" +msgstr "Upozoranje" + +#. module: base_gengo +#: help:res.company,gengo_comment:0 +msgid "" +"This comment will be automatically be enclosed in each an every request sent " +"to Gengo" +msgstr "" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Cancel" +msgstr "Otkaži" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "or" +msgstr "" diff --git a/addons/base_import/i18n/zh_CN.po b/addons/base_import/i18n/zh_CN.po new file mode 100644 index 00000000000..89aa3b23e80 --- /dev/null +++ b/addons/base_import/i18n/zh_CN.po @@ -0,0 +1,1164 @@ +# Chinese (Simplified) translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-09 11:00+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Simplified) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:420 +#, python-format +msgid "Get all possible values" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:71 +#, python-format +msgid "Need to import data from an other application?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:163 +#, python-format +msgid "" +"When you use External IDs, you can import CSV files \n" +" with the \"External ID\" column to define the " +"External \n" +" ID of each record you import. Then, you will be able " +"\n" +" to make a reference to that record with columns like " +"\n" +" \"Field/External ID\". The following two CSV files " +"give \n" +" you an example for Products and their Categories." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:271 +#, python-format +msgid "" +"How to export/import different tables from an SQL \n" +" application to OpenERP?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:310 +#, python-format +msgid "Relation Fields" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:142 +#, python-format +msgid "" +"Country/Database ID: the unique OpenERP ID for a \n" +" record, defined by the ID postgresql column" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:155 +#, python-format +msgid "" +"Use \n" +" Country/Database ID: You should rarely use this \n" +" notation. It's mostly used by developers as it's " +"main \n" +" advantage is to never have conflicts (you may have \n" +" several records with the same name, but they always " +"\n" +" have a unique Database ID)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:146 +#, python-format +msgid "" +"For the country \n" +" Belgium, you can use one of these 3 ways to import:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:303 +#, python-format +msgid "company_1,Bigees,True" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o +msgid "base_import.tests.models.m2o" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:297 +#, python-format +msgid "" +"copy \n" +" (select 'company_'||id as \"External " +"ID\",company_name \n" +" as \"Name\",'True' as \"Is a Company\" from " +"companies) TO \n" +" '/tmp/company.csv' with CSV HEADER;" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:206 +#, python-format +msgid "CSV file for Manufacturer, Retailer" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:160 +#, python-format +msgid "" +"Use \n" +" Country/External ID: Use External ID when you import " +"\n" +" data from a third party application." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:316 +#, python-format +msgid "person_1,Fabien,False,company_1" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "XXX/External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:351 +#, python-format +msgid "Don't Import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:24 +#, python-format +msgid "Select the" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:100 +#, python-format +msgid "" +"Note that if your CSV file \n" +" has a tabulation as separator, OpenERP will not \n" +" detect the separations. You will need to change the " +"\n" +" file format options in your spreadsheet application. " +"\n" +" See the following question." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:141 +#, python-format +msgid "Country: the name or code of the country" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_o2m_child +msgid "base_import.tests.models.o2m.child" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:239 +#, python-format +msgid "Can I import several times the same record?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:15 +#, python-format +msgid "Validate" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:55 +#, python-format +msgid "Map your data to OpenERP" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:153 +#, python-format +msgid "" +"Use Country: This is \n" +" the easiest way when your data come from CSV files \n" +" that have been created manually." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:127 +#, python-format +msgid "" +"What's the difference between Database ID and \n" +" External ID?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:138 +#, python-format +msgid "" +"For example, to \n" +" reference the country of a contact, OpenERP proposes " +"\n" +" you 3 different fields to import:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:175 +#, python-format +msgid "What can I do if I have multiple matches for a field?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:302 +#, python-format +msgid "External ID,Name,Is a Company" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,somevalue:0 +msgid "Some Value" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:231 +#, python-format +msgid "" +"The following CSV file shows how to import \n" +" suppliers and their respective contacts" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:109 +#, python-format +msgid "" +"How can I change the CSV file format options when \n" +" saving in my spreadsheet application?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:320 +#, python-format +msgid "" +"As you can see in this file, Fabien and Laurence \n" +" are working for the Bigees company (company_1) and \n" +" Eric is working for the Organi company. The relation " +"\n" +" between persons and companies is done using the \n" +" External ID of the companies. We had to prefix the \n" +" \"External ID\" by the name of the table to avoid a " +"\n" +" conflict of ID between persons and companies " +"(person_1 \n" +" and company_1 who shared the same ID 1 in the " +"orignial \n" +" database)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:308 +#, python-format +msgid "" +"copy (select \n" +" 'person_'||id as \"External ID\",person_name as \n" +" \"Name\",'False' as \"Is a " +"Company\",'company_'||company_id\n" +" as \"Related Company/External ID\" from persons) TO " +"\n" +" '/tmp/person.csv' with CSV" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:148 +#, python-format +msgid "Country: Belgium" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_stillreadonly +msgid "base_import.tests.models.char.stillreadonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:314 +#, python-format +msgid "" +"External ID,Name,Is a \n" +" Company,Related Company/External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:233 +#, python-format +msgid "Suppliers and their respective contacts" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:179 +#, python-format +msgid "" +"If for example you have two product categories \n" +" with the child name \"Sellable\" (ie. \"Misc. \n" +" Products/Sellable\" & \"Other Products/Sellable\"),\n" +" your validation is halted but you may still import \n" +" your data. However, we recommend you do not import " +"the \n" +" data because they will all be linked to the first \n" +" 'Sellable' category found in the Product Category " +"list \n" +" (\"Misc. Products/Sellable\"). We recommend you " +"modify \n" +" one of the duplicates' values or your product " +"category \n" +" hierarchy." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:306 +#, python-format +msgid "" +"To create the CSV file for persons, linked to \n" +" companies, we will use the following SQL command in " +"\n" +" PSQL:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:119 +#, python-format +msgid "" +"Microsoft Excel will allow \n" +" you to modify only the encoding when saving \n" +" (in 'Save As' dialog box > click 'Tools' dropdown \n" +" list > Encoding tab)." +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,othervalue:0 +msgid "Other Variable" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "" +"will also be used to update the original\n" +" import if you need to re-import modified data\n" +" later, it's thus good practice to specify it\n" +" whenever possible" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:26 +#, python-format +msgid "" +"file to import. If you need a sample importable file, you\n" +" can use the export tool to generate one." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:148 +#, python-format +msgid "" +"Country/Database \n" +" ID: 21" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char +msgid "base_import.tests.models.char" +msgstr "" + +#. module: base_import +#: help:base_import.import,file:0 +msgid "File to check and/or import, raw binary (not base64)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:230 +#, python-format +msgid "Purchase orders with their respective purchase order lines" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:60 +#, python-format +msgid "" +"If the file contains\n" +" the column names, OpenERP can try auto-detecting the\n" +" field corresponding to the column. This makes imports\n" +" simpler especially when the file has many columns." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:26 +#, python-format +msgid ".CSV" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:360 +#, python-format +msgid "" +". The issue is\n" +" usually an incorrect file encoding." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required +msgid "base_import.tests.models.m2o.required" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:212 +#, python-format +msgid "" +"How can I import a one2many relationship (e.g. several \n" +" Order Lines of a Sale Order)?" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_noreadonly +msgid "base_import.tests.models.char.noreadonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:113 +#, python-format +msgid "" +"If you edit and save CSV files in speadsheet \n" +" applications, your computer's regional settings will " +"\n" +" be applied for the separator and delimiter. \n" +" We suggest you use OpenOffice or LibreOffice Calc \n" +" as they will allow you to modify all three options \n" +" (in 'Save As' dialog box > Check the box 'Edit " +"filter \n" +" settings' > Save)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:30 +#, python-format +msgid "CSV File:" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_preview +msgid "base_import.tests.models.preview" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_required +msgid "base_import.tests.models.char.required" +msgstr "" + +#. module: base_import +#: code:addons/base_import/models.py:112 +#, python-format +msgid "Database ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:313 +#, python-format +msgid "It will produce the following CSV file:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:362 +#, python-format +msgid "Here is the start of the file we could not import:" +msgstr "" + +#. module: base_import +#: field:base_import.import,file_type:0 +msgid "File Type" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_import +msgid "base_import.import" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_o2m +msgid "base_import.tests.models.o2m" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:360 +#, python-format +msgid "Import preview failed due to:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:144 +#, python-format +msgid "" +"Country/External ID: the ID of this record \n" +" referenced in another application (or the .XML file " +"\n" +" that imported it)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:35 +#, python-format +msgid "Reload data to check changes." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_readonly +msgid "base_import.tests.models.char.readonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:131 +#, python-format +msgid "" +"Some fields define a relationship with another \n" +" object. For example, the country of a contact is a \n" +" link to a record of the 'Country' object. When you \n" +" want to import such fields, OpenERP will have to \n" +" recreate links between the different records. \n" +" To help you import such fields, OpenERP provides 3 \n" +" mechanisms. You must use one and only one mechanism " +"\n" +" per field you want to import." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:201 +#, python-format +msgid "" +"The tags should be separated by a comma without any \n" +" spacing. For example, if you want you customer to be " +"\n" +" lined to both tags 'Manufacturer' and 'Retailer' \n" +" then you will encode it as follow \"Manufacturer,\n" +" Retailer\" in the same column of your CSV file." +msgstr "" + +#. module: base_import +#: code:addons/base_import/models.py:264 +#, python-format +msgid "You must configure at least one field to import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:304 +#, python-format +msgid "company_2,Organi,True" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:58 +#, python-format +msgid "" +"The first row of the\n" +" file contains the label of the column" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_states +msgid "base_import.tests.models.char.states" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:7 +#, python-format +msgid "Import a CSV File" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:74 +#, python-format +msgid "Quoting:" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required_related +msgid "base_import.tests.models.m2o.required.related" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:293 +#, python-format +msgid ")." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:18 +#: code:addons/base_import/static/src/xml/import.xml:396 +#, python-format +msgid "Import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:407 +#, python-format +msgid "Here are the possible values:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "The" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:227 +#, python-format +msgid "" +"A single column was found in the file, this often means the file separator " +"is incorrect" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:293 +#, python-format +msgid "dump of such a PostgreSQL database" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:301 +#, python-format +msgid "This SQL command will create the following CSV file:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:228 +#, python-format +msgid "" +"The following CSV file shows how to import purchase \n" +" orders with their respective purchase order lines:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:91 +#, python-format +msgid "" +"What can I do when the Import preview table isn't \n" +" displayed correctly?" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.char,value:0 +#: field:base_import.tests.models.char.noreadonly,value:0 +#: field:base_import.tests.models.char.readonly,value:0 +#: field:base_import.tests.models.char.required,value:0 +#: field:base_import.tests.models.char.states,value:0 +#: field:base_import.tests.models.char.stillreadonly,value:0 +#: field:base_import.tests.models.m2o,value:0 +#: field:base_import.tests.models.m2o.related,value:0 +#: field:base_import.tests.models.m2o.required,value:0 +#: field:base_import.tests.models.m2o.required.related,value:0 +#: field:base_import.tests.models.o2m,value:0 +#: field:base_import.tests.models.o2m.child,parent_id:0 +#: field:base_import.tests.models.o2m.child,value:0 +msgid "unknown" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:317 +#, python-format +msgid "person_2,Laurence,False,company_1" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:149 +#, python-format +msgid "Country/External ID: base.be" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:288 +#, python-format +msgid "" +"As an example, suppose you have a SQL database \n" +" with two tables you want to import: companies and \n" +" persons. Each person belong to one company, so you \n" +" will have to recreate the link between a person and " +"\n" +" the company he work for. (If you want to test this \n" +" example, here is a" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:396 +#, python-format +msgid "(%d more)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:227 +#, python-format +msgid "File for some Quotations" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:72 +#, python-format +msgid "Encoding:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:280 +#, python-format +msgid "" +"To manage relations between tables, \n" +" you can use the \"External ID\" facilities of " +"OpenERP. \n" +" The \"External ID\" of a record is the unique " +"identifier \n" +" of this record in another application. This " +"\"External \n" +" ID\" must be unique accoss all the records of all \n" +" objects, so it's a good practice to prefix this \n" +" \"External ID\" with the name of the application or " +"\n" +" table. (like 'company_1', 'person_1' instead of '1')" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:295 +#, python-format +msgid "" +"We will first export all companies and their \n" +" \"External ID\". In PSQL, write the following " +"command:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:373 +#, python-format +msgid "Everything seems valid." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:188 +#, python-format +msgid "" +"However if you do not wish to change your \n" +" configuration of product categories, we recommend " +"you \n" +" use make use of the external ID for this field \n" +" 'Category'." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:390 +#, python-format +msgid "at row %d" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:197 +#, python-format +msgid "" +"How can I import a many2many relationship field \n" +" (e.g. a customer that has multiple tags)?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "XXX/ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:275 +#, python-format +msgid "" +"If you need to import data from different tables, \n" +" you will have to recreate relations between records " +"\n" +" belonging to different tables. (e.g. if you import \n" +" companies and persons, you will have to recreate the " +"\n" +" link between each person and the company they work \n" +" for)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:150 +#, python-format +msgid "" +"According to your need, you should use \n" +" one of these 3 ways to reference records in " +"relations. \n" +" Here is when you should use one or the other, \n" +" according to your need:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:319 +#, python-format +msgid "person_4,Ramsy,False,company_3" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:261 +#, python-format +msgid "" +"If you do not set all fields in your CSV file, \n" +" OpenERP will assign the default value for every non " +"\n" +" defined fields. But if you\n" +" set fields with empty values in your CSV file, " +"OpenERP \n" +" will set the EMPTY value in the field, instead of \n" +" assigning the default value." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:20 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:257 +#, python-format +msgid "" +"What happens if I do not provide a value for a \n" +" specific field?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:68 +#, python-format +msgid "Frequently Asked Questions" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:305 +#, python-format +msgid "company_3,Boum,True" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:249 +#, python-format +msgid "" +"This feature \n" +" allows you to use the Import/Export tool of OpenERP " +"to \n" +" modify a batch of records in your favorite " +"spreadsheet \n" +" application." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:77 +#, python-format +msgid "" +"column in OpenERP. When you\n" +" import an other record that links to the first\n" +" one, use" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:242 +#, python-format +msgid "" +"If you import a file that contains one of the \n" +" column \"External ID\" or \"Database ID\", records " +"that \n" +" have already been imported will be modified instead " +"of \n" +" being created. This is very usefull as it allows you " +"\n" +" to import several times the same CSV file while " +"having \n" +" made some changes in between two imports. OpenERP " +"will \n" +" take care of creating or modifying each record \n" +" depending if it's new or not." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:169 +#, python-format +msgid "CSV file for categories" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:309 +#, python-format +msgid "Normal Fields" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:74 +#, python-format +msgid "" +"In order to re-create relationships between\n" +" different records, you should use the unique\n" +" identifier from the original application and\n" +" map it to the" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:170 +#, python-format +msgid "CSV file for Products" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:216 +#, python-format +msgid "" +"If you want to import sales order having several \n" +" order lines; for each order line, you need to " +"reserve \n" +" a specific row in the CSV file. The first order line " +"\n" +" will be imported on the same row as the information " +"\n" +" relative to order. Any additional lines will need an " +"\n" +" addtional row that does not have any information in " +"\n" +" the fields relative to the order." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_related +msgid "base_import.tests.models.m2o.related" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,name:0 +msgid "Name" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "to the original unique identifier." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:318 +#, python-format +msgid "person_3,Eric,False,company_2" +msgstr "" + +#. module: base_import +#: field:base_import.import,res_model:0 +msgid "Model" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:77 +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:329 +#, python-format +msgid "" +"The two files produced are ready to be imported in \n" +" OpenERP without any modifications. After having \n" +" imported these two CSV files, you will have 4 " +"contacts \n" +" and 3 companies. (the firsts two contacts are linked " +"\n" +" to the first company). You must first import the \n" +" companies and then the persons." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:95 +#, python-format +msgid "" +"By default the Import preview is set on commas as \n" +" field separators and quotation marks as text \n" +" delimiters. If your csv file does not have these \n" +" settings, you can modify the File Format Options \n" +" (displayed under the Browse CSV file bar after you \n" +" select your file)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:73 +#, python-format +msgid "Separator:" +msgstr "" + +#. module: base_import +#: field:base_import.import,file_name:0 +msgid "File Name" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/models.py:80 +#: code:addons/base_import/models.py:111 +#: code:addons/base_import/static/src/xml/import.xml:77 +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:39 +#, python-format +msgid "File Format Options…" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:392 +#, python-format +msgid "between rows %d and %d" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:19 +#, python-format +msgid "or" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:223 +#, python-format +msgid "" +"As an example, here is \n" +" purchase.order_functional_error_line_cant_adpat.CSV " +"\n" +" file of some quotations you can import, based on " +"demo \n" +" data." +msgstr "" + +#. module: base_import +#: field:base_import.import,file:0 +msgid "File" +msgstr "" diff --git a/addons/base_setup/i18n/nl.po b/addons/base_setup/i18n/nl.po index f0037c0c6a7..19bcbbe8839 100644 --- a/addons/base_setup/i18n/nl.po +++ b/addons/base_setup/i18n/nl.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-11-24 18:22+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" +"PO-Revision-Date: 2012-12-09 18:22+0000\n" +"Last-Translator: Leen Sonneveld \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: 2012-11-25 05:52+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base_setup #: view:sale.config.settings:0 msgid "Emails Integration" -msgstr "E-mail intergratie" +msgstr "E-mail integratie" #. module: base_setup #: selection:base.setup.terminology,partner:0 diff --git a/addons/base_status/i18n/hr.po b/addons/base_status/i18n/hr.po new file mode 100644 index 00000000000..d5f12130be2 --- /dev/null +++ b/addons/base_status/i18n/hr.po @@ -0,0 +1,88 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 19:46+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: base_status +#: code:addons/base_status/base_state.py:107 +#, python-format +msgid "Error !" +msgstr "Greška !" + +#. module: base_status +#: code:addons/base_status/base_stage.py:326 +#: code:addons/base_status/base_state.py:187 +#, python-format +msgid "%s has been opened." +msgstr "%s je otvoren." + +#. module: base_status +#: code:addons/base_status/base_stage.py:350 +#: code:addons/base_status/base_state.py:220 +#, python-format +msgid "%s has been renewed." +msgstr "%s je obnovljen." + +#. module: base_status +#: code:addons/base_status/base_stage.py:211 +#, python-format +msgid "Error!" +msgstr "Greška!" + +#. module: base_status +#: code:addons/base_status/base_state.py:107 +#, python-format +msgid "" +"You can not escalate, you are already at the top level regarding your sales-" +"team category." +msgstr "Ne možete eskaliarati. Vi ste na vrhu hijerarhije prodajnog tima." + +#. module: base_status +#: code:addons/base_status/base_stage.py:344 +#: code:addons/base_status/base_state.py:214 +#, python-format +msgid "%s is now pending." +msgstr "%s je sada na čekanju." + +#. module: base_status +#: code:addons/base_status/base_stage.py:338 +#, python-format +msgid "%s has been cancelled." +msgstr "%s je otkazan." + +#. module: base_status +#: code:addons/base_status/base_state.py:208 +#, python-format +msgid "%s has been canceled." +msgstr "%s je otkazan." + +#. module: base_status +#: code:addons/base_status/base_stage.py:211 +#, python-format +msgid "" +"You are already at the top level of your sales-team category.\n" +"Therefore you cannot escalate furthermore." +msgstr "" +"Vi ste na vrhu hijerarhije prodajnog tima.\n" +"Stoga ne možete dalje eskalirati." + +#. module: base_status +#: code:addons/base_status/base_stage.py:332 +#: code:addons/base_status/base_state.py:202 +#, python-format +msgid "%s has been closed." +msgstr "%s je zatvoren." diff --git a/addons/base_vat/i18n/it.po b/addons/base_vat/i18n/it.po index e3ed140f9bf..c4da24e29c4 100644 --- a/addons/base_vat/i18n/it.po +++ b/addons/base_vat/i18n/it.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-01-01 13:29+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-09 20:30+0000\n" +"Last-Translator: Sergio Corato \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: 2012-12-04 05:19+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base_vat #: view:res.partner:0 msgid "Check Validity" -msgstr "" +msgstr "Verifica Validità" #. module: base_vat #: code:addons/base_vat/base_vat.py:147 @@ -28,22 +28,24 @@ msgid "" "This VAT number does not seem to be valid.\n" "Note: the expected format is %s" msgstr "" +"Questo numero IVA non sembra essere valido.\n" +"Nota: il formato atteso è %s" #. module: base_vat #: field:res.company,vat_check_vies:0 msgid "VIES VAT Check" -msgstr "" +msgstr "Verifica IVA VIES" #. module: base_vat #: model:ir.model,name:base_vat.model_res_company msgid "Companies" -msgstr "" +msgstr "Aziende" #. module: base_vat #: code:addons/base_vat/base_vat.py:111 #, python-format msgid "Error!" -msgstr "" +msgstr "Errore!" #. module: base_vat #: help:res.partner,vat_subjected:0 @@ -65,6 +67,9 @@ msgid "" "If checked, Partners VAT numbers will be fully validated against EU's VIES " "service rather than via a simple format validation (checksum)." msgstr "" +"Se selezionato, i numeri IVA dei Patner saranno validati interamente con il " +"service VIES UE invece che con una semplice validazione del formato (cifra " +"di controllo)." #. module: base_vat #: field:res.partner,vat_subjected:0 diff --git a/addons/claim_from_delivery/i18n/zh_CN.po b/addons/claim_from_delivery/i18n/zh_CN.po index 0a32fb5a664..f638742ba82 100644 --- a/addons/claim_from_delivery/i18n/zh_CN.po +++ b/addons/claim_from_delivery/i18n/zh_CN.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: claim_from_delivery diff --git a/addons/contacts/i18n/hr.po b/addons/contacts/i18n/hr.po new file mode 100644 index 00000000000..8de3a7cf309 --- /dev/null +++ b/addons/contacts/i18n/hr.po @@ -0,0 +1,37 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-09 19:40+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: contacts +#: model:ir.actions.act_window,help:contacts.action_contacts +msgid "" +"

    \n" +" Click to add a contact in your address book.\n" +"

    \n" +" OpenERP helps you easily track all activities related to\n" +" a customer; discussions, history of business opportunities,\n" +" documents, etc.\n" +"

    \n" +" " +msgstr "" + +#. module: contacts +#: model:ir.actions.act_window,name:contacts.action_contacts +#: model:ir.ui.menu,name:contacts.menu_contacts +msgid "Contacts" +msgstr "Kontakti" diff --git a/addons/contacts/i18n/zh_CN.po b/addons/contacts/i18n/zh_CN.po new file mode 100644 index 00000000000..f2e813afd34 --- /dev/null +++ b/addons/contacts/i18n/zh_CN.po @@ -0,0 +1,37 @@ +# Chinese (Simplified) translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-09 04:58+0000\n" +"Last-Translator: sum1201 \n" +"Language-Team: Chinese (Simplified) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: contacts +#: model:ir.actions.act_window,help:contacts.action_contacts +msgid "" +"

    \n" +" Click to add a contact in your address book.\n" +"

    \n" +" OpenERP helps you easily track all activities related to\n" +" a customer; discussions, history of business opportunities,\n" +" documents, etc.\n" +"

    \n" +" " +msgstr "" + +#. module: contacts +#: model:ir.actions.act_window,name:contacts.action_contacts +#: model:ir.ui.menu,name:contacts.menu_contacts +msgid "Contacts" +msgstr "联系人列表" diff --git a/addons/crm/i18n/de.po b/addons/crm/i18n/de.po index 44b388c92ea..3670e47ab32 100644 --- a/addons/crm/i18n/de.po +++ b/addons/crm/i18n/de.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-08 22:42+0000\n" +"PO-Revision-Date: 2012-12-09 10:00+0000\n" "Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: crm @@ -2031,7 +2031,7 @@ msgstr "Neue Verkaufskontakt/Chance" #: code:addons/crm/crm_lead.py:883 #, python-format msgid "%s partner is now set to %s." -msgstr "" +msgstr "%s Kundewurde geändert zu%s." #. module: crm #: selection:crm.phonecall,state:0 @@ -2636,7 +2636,7 @@ msgstr "" #. module: crm #: field:crm.case.stage,state:0 msgid "Related Status" -msgstr "" +msgstr "Verbundener Status" #. module: crm #: field:crm.phonecall,name:0 @@ -2806,7 +2806,7 @@ msgstr "Ändere Wahrscheinlichkeit automatisch" #. module: crm #: view:crm.phonecall.report:0 msgid "My Phone Calls" -msgstr "" +msgstr "Meine Anrufe" #. module: crm #: model:crm.case.stage,name:crm.stage_lead3 @@ -3008,7 +3008,7 @@ msgstr "Strasse2" #. module: crm #: field:sale.config.settings,module_crm_helpdesk:0 msgid "Manage Helpdesk and Support" -msgstr "" +msgstr "Kundenservice und Support Management" #. module: crm #: view:crm.phonecall2partner:0 @@ -3221,6 +3221,19 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken zur Erstellung eines neuen Vertriebskanals.\n" +"

    \n" +" Benutzen Sie die Kanäle zur Rückverfolgung der " +"ursprünglichen Herkunft Ihrer Interessenten\n" +" und Chancen. Vertriebskanäle werden meistens bei Analysen zu " +"Vertriebsstatistiken benötigt,\n" +" um z.B. erfolgreiche Marketingkampagnen zu erkennen. \n" +"

    \n" +" Mögliche Beispiele sind: Homepage der Firma, Telefonanrufe, " +"Marketingkampagne, Reseller etc. \n" +"

    \n" +" " #. module: crm #: view:crm.lead:0 @@ -3296,6 +3309,8 @@ msgstr "Verloren" #, python-format msgid "Closed/Cancelled leads cannot be converted into opportunities." msgstr "" +"Abgeschlossene / Abgebrochene Interessenten können nicht mehr in Chancen " +"gewandelt werden." #. module: crm #: field:crm.lead,country_id:0 @@ -3346,6 +3361,8 @@ msgid "" "Meeting linked to the opportunity %s has been created and " "scheduled on %s." msgstr "" +"Ein Meeting für diese Chance %s wurde erstellt und " +"terminiert am %s." #. module: crm #: view:crm.lead:0 @@ -3397,6 +3414,16 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken Sie zur Erstellung einer neuen Stufe in der " +"Interessenten / Chancen Pipeline.\n" +"

    \n" +" Die Stufen ermöglichen dann Ihren Verkäufern die " +"Interessenten und Chancen\n" +" hinsichtlich Ihres Fortschritts innerhalb Ihres " +"Vertriebszyklus einzustufen.\n" +"

    \n" +" " #~ msgid "My Draft " #~ msgstr "Mein Entwurf " diff --git a/addons/crm/i18n/hr.po b/addons/crm/i18n/hr.po index 883683dc3f8..0dda30c115b 100644 --- a/addons/crm/i18n/hr.po +++ b/addons/crm/i18n/hr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-05-10 17:50+0000\n" +"PO-Revision-Date: 2012-12-09 19:26+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Vinteh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:18+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" "Language: hr\n" #. module: crm @@ -68,7 +68,7 @@ msgstr "" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Convert to Opportunities" -msgstr "" +msgstr "Pretvori u prilike" #. module: crm #: view:crm.lead.report:0 @@ -80,7 +80,7 @@ msgstr "Odgodi zaključivanje" #: code:addons/crm/crm_lead.py:888 #, python-format msgid "Lead has been converted to an opportunity." -msgstr "" +msgstr "Potencijal je sad prilika ." #. module: crm #: view:crm.lead:0 @@ -88,7 +88,7 @@ msgstr "" #: view:crm.lead.report:0 #: view:crm.phonecall.report:0 msgid "Salesperson" -msgstr "" +msgstr "Prodavač" #. module: crm #: model:ir.model,name:crm.model_crm_lead_report @@ -110,18 +110,18 @@ msgstr "Dan" #. module: crm #: view:crm.lead:0 msgid "Company Name" -msgstr "" +msgstr "Naziv tvrtke" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor6 msgid "Training" -msgstr "" +msgstr "Trening, edukacija" #. module: crm #: model:ir.actions.act_window,name:crm.crm_lead_categ_action #: model:ir.ui.menu,name:crm.menu_crm_lead_categ msgid "Sales Tags" -msgstr "" +msgstr "Tagovi prodaje" #. module: crm #: view:crm.lead.report:0 @@ -949,7 +949,7 @@ msgstr "" #. module: crm #: field:crm.lead,ref:0 msgid "Reference" -msgstr "Vezna oznaka" +msgstr "Oznaka" #. module: crm #: view:crm.lead:0 @@ -1612,7 +1612,7 @@ msgstr "Datum slijedeće akcije" #. module: crm #: selection:crm.segmentation,state:0 msgid "Running" -msgstr "Izvodi se" +msgstr "U tijeku" #. module: crm #: help:crm.case.stage,state:0 diff --git a/addons/crm/i18n/it.po b/addons/crm/i18n/it.po index e3ede72a76e..2a96eb91dad 100644 --- a/addons/crm/i18n/it.po +++ b/addons/crm/i18n/it.po @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-08-10 16:25+0000\n" -"Last-Translator: Leonardo Pistone - Agile BG - Domsense " -"\n" +"PO-Revision-Date: 2012-12-09 13:57+0000\n" +"Last-Translator: Davide Corio - agilebg.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: 2012-12-04 05:17+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: crm #: view:crm.lead.report:0 @@ -28,6 +27,8 @@ msgid "" "Allows you to configure your incoming mail server, and create leads from " "incoming emails." msgstr "" +"Consente di configurare il mail server in entrata e di creare leads dalle " +"email ricevute." #. module: crm #: selection:crm.case.stage,type:0 @@ -58,17 +59,19 @@ msgid "" "Phonecall linked to the opportunity %s has been created and " "scheduled on %s." msgstr "" +"La telefonata collegata all'opportunità %s è stata creata e " +"pianificata per il %s." #. module: crm #: model:res.groups,name:crm.group_fund_raising #: field:sale.config.settings,group_fund_raising:0 msgid "Manage Fund Raising" -msgstr "" +msgstr "Gestione Raccolta Fondi" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Convert to Opportunities" -msgstr "" +msgstr "Converti in Opportunità" #. module: crm #: view:crm.lead.report:0 @@ -80,7 +83,7 @@ msgstr "Tempo di chiusura" #: code:addons/crm/crm_lead.py:888 #, python-format msgid "Lead has been converted to an opportunity." -msgstr "" +msgstr "Il lead è stato convertito in opportunità." #. module: crm #: view:crm.lead:0 @@ -88,12 +91,12 @@ msgstr "" #: view:crm.lead.report:0 #: view:crm.phonecall.report:0 msgid "Salesperson" -msgstr "" +msgstr "Commerciale" #. module: crm #: model:ir.model,name:crm.model_crm_lead_report msgid "CRM Lead Analysis" -msgstr "" +msgstr "Analisi CRM Lead" #. module: crm #: model:ir.actions.server,subject:crm.action_email_reminder_customer_lead @@ -110,35 +113,35 @@ msgstr "Giorno" #. module: crm #: view:crm.lead:0 msgid "Company Name" -msgstr "" +msgstr "Nome Azienda" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor6 msgid "Training" -msgstr "" +msgstr "Formazione" #. module: crm #: model:ir.actions.act_window,name:crm.crm_lead_categ_action #: model:ir.ui.menu,name:crm.menu_crm_lead_categ msgid "Sales Tags" -msgstr "" +msgstr "Tags Vendita" #. module: crm #: view:crm.lead.report:0 msgid "Exp. Closing" -msgstr "" +msgstr "Chiusura Attesa" #. module: crm #: help:crm.case.section,message_unread:0 #: help:crm.lead,message_unread:0 #: help:crm.phonecall,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Se selezionato, nuovi messaggi richiedono la tua attenzione" #. module: crm #: help:crm.lead.report,creation_day:0 msgid "Creation day" -msgstr "" +msgstr "Giorno creazione" #. module: crm #: field:crm.segmentation.line,name:0 @@ -163,7 +166,7 @@ msgstr "Ricerca Opportunità" #. module: crm #: help:crm.lead.report,deadline_month:0 msgid "Expected closing month" -msgstr "" +msgstr "Mese chiusura attesa" #. module: crm #: help:crm.case.section,message_summary:0 @@ -173,6 +176,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Gestisce il sommario (numero di messaggi, ...) di Chatter. Questo sommario è " +"direttamente in html così da poter essere inserito nelle viste kanban." #. module: crm #: code:addons/crm/crm_lead.py:552 @@ -217,12 +222,12 @@ msgstr "Opt-Out" #. module: crm #: field:crm.case.stage,fold:0 msgid "Hide in Views when Empty" -msgstr "" +msgstr "Nascondi nelle Viste se Vuoto" #. module: crm #: model:ir.actions.server,name:crm.action_email_reminder_lead msgid "Reminder to User" -msgstr "" +msgstr "Ricorda a Utente" #. module: crm #: field:crm.segmentation,segmentation_line:0 @@ -250,7 +255,7 @@ msgstr "Analisi dei lead" #: code:addons/crm/crm_lead.py:878 #, python-format msgid "%s a call for the %s." -msgstr "" +msgstr "%s una chiamata per il %s." #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_resource_type_act @@ -293,7 +298,7 @@ msgstr "Prospect Partner" #: code:addons/crm/crm_lead.py:811 #, python-format msgid "No Subject" -msgstr "" +msgstr "Nessun Oggetto" #. module: crm #: field:crm.lead,contact_name:0 @@ -378,7 +383,7 @@ msgstr "" #. module: crm #: model:crm.case.stage,name:crm.stage_lead7 msgid "Dead" -msgstr "" +msgstr "Chiuso" #. module: crm #: field:crm.case.section,message_unread:0 @@ -386,7 +391,7 @@ msgstr "" #: field:crm.lead,message_unread:0 #: field:crm.phonecall,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Messaggi Non Letti" #. module: crm #: selection:crm.lead2opportunity.partner,action:0 @@ -394,7 +399,7 @@ msgstr "" #: selection:crm.lead2partner,action:0 #: selection:crm.phonecall2partner,action:0 msgid "Link to an existing customer" -msgstr "" +msgstr "Collega ad un cliente esistente" #. module: crm #: field:crm.lead,write_date:0 @@ -404,7 +409,7 @@ msgstr "Aggiorna data" #. module: crm #: field:crm.case.section,user_id:0 msgid "Team Leader" -msgstr "" +msgstr "Team Leader" #. module: crm #: help:crm.case.stage,probability:0 @@ -440,7 +445,7 @@ msgstr "" #: field:crm.lead2opportunity.partner,name:0 #: field:crm.lead2opportunity.partner.mass,name:0 msgid "Conversion Action" -msgstr "" +msgstr "Azione Conversione" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_section_act @@ -501,7 +506,7 @@ msgstr "Mailings" #. module: crm #: view:crm.phonecall:0 msgid "To Do" -msgstr "" +msgstr "Da Fare" #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -523,7 +528,7 @@ msgstr "Entrata Pianificata" #. module: crm #: model:ir.actions.server,name:crm.actions_server_crm_phonecall_read msgid "CRM Phonecall: Mark read" -msgstr "" +msgstr "CRM Telefonate: Segna letto" #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -557,7 +562,7 @@ msgstr "Riepilogo" #. module: crm #: view:crm.merge.opportunity:0 msgid "Merge" -msgstr "" +msgstr "Unisci" #. module: crm #: view:crm.case.categ:0 @@ -567,12 +572,12 @@ msgstr "categoria Caso" #. module: crm #: field:crm.lead,partner_address_name:0 msgid "Partner Contact Name" -msgstr "" +msgstr "Nome Contatto Partner" #. module: crm #: model:ir.actions.server,name:crm.actions_server_crm_phonecall_unread msgid "CRM Phonecall: Mark unread" -msgstr "" +msgstr "CRM Telefonate: Segna non letto" #. module: crm #: model:ir.actions.server,subject:crm.action_email_reminder_lead @@ -601,7 +606,7 @@ msgstr "Il codice del team di vendita deve essere unico!" #: view:crm.lead:0 #: selection:crm.lead,state:0 msgid "In Progress" -msgstr "" +msgstr "In Corso" #. module: crm #: model:ir.actions.act_window,help:crm.crm_phonecall_categ_action @@ -628,7 +633,7 @@ msgstr "" #. module: crm #: field:crm.lead.report,creation_month:0 msgid "Creation Month" -msgstr "" +msgstr "Mese Creazione" #. module: crm #: field:crm.case.section,resource_calendar_id:0 @@ -671,7 +676,7 @@ msgstr "Profitto Probabile" #. module: crm #: help:crm.lead.report,creation_month:0 msgid "Creation month" -msgstr "" +msgstr "Mese creazione" #. module: crm #: help:crm.segmentation,name:0 @@ -681,7 +686,7 @@ msgstr "Nome della Segmentazione" #. module: crm #: model:ir.filters,name:crm.filter_usa_lead msgid "Leads from USA" -msgstr "" +msgstr "Leads da USA" #. module: crm #: sql_constraint:crm.lead:0 @@ -702,7 +707,7 @@ msgstr "Dashboard statistiche" #: code:addons/crm/crm_lead.py:853 #, python-format msgid "Stage changed to %s." -msgstr "" +msgstr "Stato cambiato a %s." #. module: crm #: code:addons/crm/crm_lead.py:755 @@ -732,12 +737,12 @@ msgstr "Televisione" #. module: crm #: model:ir.actions.act_window,name:crm.action_crm_send_mass_convert msgid "Convert to opportunities" -msgstr "" +msgstr "Converti ad opportunità" #. module: crm #: model:ir.model,name:crm.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: crm #: view:crm.segmentation:0 @@ -747,7 +752,7 @@ msgstr "Arresta Processo" #. module: crm #: field:crm.case.section,alias_id:0 msgid "Alias" -msgstr "" +msgstr "Alias" #. module: crm #: view:crm.phonecall:0 @@ -785,12 +790,12 @@ msgstr "Esclusivo" #: code:addons/crm/crm_lead.py:512 #, python-format msgid "From %s : %s" -msgstr "" +msgstr "Da %s : %s" #. module: crm #: field:crm.lead.report,creation_year:0 msgid "Creation Year" -msgstr "" +msgstr "Anno Creazione" #. module: crm #: view:crm.lead2opportunity.partner:0 @@ -803,7 +808,7 @@ msgstr "" #: view:crm.phonecall2partner:0 #: view:crm.phonecall2phonecall:0 msgid "or" -msgstr "" +msgstr "o" #. module: crm #: field:crm.lead.report,create_date:0 @@ -852,7 +857,7 @@ msgstr "Converti a Opportunità " #. module: crm #: view:crm.phonecall:0 msgid "Unassigned Phonecalls" -msgstr "" +msgstr "Telefonate non Assegnate" #. module: crm #: view:crm.lead:0 @@ -904,7 +909,7 @@ msgstr "Marca Perso" #. module: crm #: model:ir.filters,name:crm.filter_draft_lead msgid "Draft Leads" -msgstr "" +msgstr "Leads Bozza" #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -916,7 +921,7 @@ msgstr "Marzo" #. module: crm #: view:crm.lead:0 msgid "Send Email" -msgstr "" +msgstr "Invia Email" #. module: crm #: code:addons/crm/wizard/crm_lead_to_opportunity.py:100 @@ -991,7 +996,7 @@ msgstr "Segmentazione Partner" #. module: crm #: view:crm.lead.report:0 msgid "Show only opportunity" -msgstr "" +msgstr "Mostra solo opportunità" #. module: crm #: field:crm.lead,name:0 @@ -1001,12 +1006,12 @@ msgstr "Oggetto" #. module: crm #: view:crm.lead:0 msgid "New Leads" -msgstr "" +msgstr "Nuovi Leads" #. module: crm #: view:crm.lead:0 msgid "Show Sales Team" -msgstr "" +msgstr "Mostra Team Vendita" #. module: crm #: help:sale.config.settings,module_crm_claim:0 @@ -1071,7 +1076,7 @@ msgstr "Data di Creazione" #: code:addons/crm/crm_lead.py:862 #, python-format msgid "%s has been created." -msgstr "" +msgstr "%s è stato creato." #. module: crm #: selection:crm.segmentation.line,expr_name:0 @@ -1081,7 +1086,7 @@ msgstr "Importo Acquisto" #. module: crm #: view:crm.phonecall.report:0 msgid "Year of call" -msgstr "" +msgstr "Anno della chiamata" #. module: crm #: view:crm.case.stage:0 @@ -1095,17 +1100,17 @@ msgstr "Stadio" #. module: crm #: view:crm.phonecall.report:0 msgid "Phone Calls that are assigned to me" -msgstr "" +msgstr "Telefonata assegnate a me" #. module: crm #: field:crm.lead,user_login:0 msgid "User Login" -msgstr "" +msgstr "Login Utente" #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls which are in pending state" -msgstr "" +msgstr "Telefonate in stato \"in attesa\"" #. module: crm #: view:crm.case.section:0 @@ -1127,7 +1132,7 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "Delete" -msgstr "" +msgstr "Elimina" #. module: crm #: field:crm.lead,planned_revenue:0 @@ -1139,13 +1144,13 @@ msgstr "Entrata prevista" #. module: crm #: view:crm.lead:0 msgid "í" -msgstr "" +msgstr "í" #. module: crm #: code:addons/crm/crm_lead.py:867 #, python-format msgid "Opportunity has been lost." -msgstr "" +msgstr "L'opportunità è stata persa." #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -1157,7 +1162,7 @@ msgstr "Settembre" #. module: crm #: help:crm.lead,email_from:0 msgid "Email address of the contact" -msgstr "" +msgstr "Indirizzo email del contatto" #. module: crm #: field:crm.segmentation,partner_id:0 @@ -1174,12 +1179,12 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "oe_kanban_text_red" -msgstr "" +msgstr "oe_kanban_text_red" #. module: crm #: model:ir.ui.menu,name:crm.menu_crm_payment_mode_act msgid "Payment Modes" -msgstr "" +msgstr "Metodi di Pagamento" #. module: crm #: field:crm.lead.report,opening_date:0 @@ -1190,12 +1195,12 @@ msgstr "Data apertura" #. module: crm #: field:crm.lead,company_currency:0 msgid "Currency" -msgstr "" +msgstr "Valuta" #. module: crm #: field:crm.case.channel,name:0 msgid "Channel Name" -msgstr "" +msgstr "Nome Canale" #. module: crm #: view:crm.lead2partner:0 @@ -1206,7 +1211,7 @@ msgstr "Continua" #. module: crm #: help:crm.lead.report,deadline_day:0 msgid "Expected closing day" -msgstr "" +msgstr "Giorno chiusura attesa" #. module: crm #: help:crm.case.section,active:0 @@ -1257,7 +1262,7 @@ msgstr "Stato esecuzione" #. module: crm #: view:crm.opportunity2phonecall:0 msgid "Log call" -msgstr "" +msgstr "Registra chiamata" #. module: crm #: field:crm.lead,day_close:0 @@ -1294,12 +1299,12 @@ msgstr "Data" #: field:crm.lead,message_is_follower:0 #: field:crm.phonecall,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "E' un Follower" #. module: crm #: model:crm.case.section,name:crm.crm_case_section_4 msgid "Online Support" -msgstr "" +msgstr "Supporto Online" #. module: crm #: view:crm.lead.report:0 @@ -1310,7 +1315,7 @@ msgstr "Filtri estesi..." #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls which are in closed state" -msgstr "" +msgstr "Telefonate in stato chiuso" #. module: crm #: view:crm.phonecall.report:0 @@ -1329,12 +1334,12 @@ msgstr "" #. module: crm #: model:crm.case.section,name:crm.crm_case_section_1 msgid "Sales Marketing Department" -msgstr "" +msgstr "Dipartimento Marketing" #. module: crm #: view:crm.phonecall.report:0 msgid "Date of call" -msgstr "" +msgstr "Data della chiamata" #. module: crm #: help:crm.lead,section_id:0 @@ -1350,18 +1355,18 @@ msgstr "Descrizione Segmentazione" #. module: crm #: view:crm.lead:0 msgid "Lead Description" -msgstr "" +msgstr "Descrizione Lead" #. module: crm #: code:addons/crm/crm_lead.py:491 #, python-format msgid "Merged opportunities" -msgstr "" +msgstr "Unisci opportunità" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor7 msgid "Consulting" -msgstr "" +msgstr "Consulenza" #. module: crm #: field:crm.case.section,code:0 @@ -1371,7 +1376,7 @@ msgstr "Codice" #. module: crm #: view:sale.config.settings:0 msgid "Features" -msgstr "" +msgstr "Caratteristiche" #. module: crm #: field:crm.case.section,child_ids:0 @@ -1386,7 +1391,7 @@ msgstr "" #. module: crm #: field:crm.lead2opportunity.partner.mass,user_ids:0 msgid "Salesmen" -msgstr "" +msgstr "Commerciali" #. module: crm #: view:crm.lead:0 @@ -1411,17 +1416,17 @@ msgstr "Annulla" #. module: crm #: view:crm.lead:0 msgid "Opportunities Assigned to Me or My Team(s)" -msgstr "" +msgstr "Opportunità Assegnate a Me o al/ai miei Team" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor4 msgid "Information" -msgstr "" +msgstr "Informazione" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in pending state" -msgstr "" +msgstr "Leads/Opportunità in stato \"in attesa\"" #. module: crm #: model:ir.model,name:crm.model_crm_merge_opportunity @@ -1442,13 +1447,13 @@ msgstr "Altro" #: field:crm.phonecall,opportunity_id:0 #: model:ir.model,name:crm.model_crm_lead msgid "Lead/Opportunity" -msgstr "" +msgstr "Lead/Opportunità" #. module: crm #: model:ir.actions.act_window,name:crm.action_merge_opportunities #: model:ir.actions.act_window,name:crm.merge_opportunity_act msgid "Merge leads/opportunities" -msgstr "" +msgstr "Unisci leads/opportunità" #. module: crm #: help:crm.case.stage,sequence:0 @@ -1463,12 +1468,12 @@ msgstr "Categoria Telefonata" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in open state" -msgstr "" +msgstr "Leads/Opportunità in stato aperto" #. module: crm #: model:ir.model,name:crm.model_res_users msgid "Users" -msgstr "" +msgstr "Utenti" #. module: crm #: constraint:crm.case.section:0 @@ -1479,7 +1484,7 @@ msgstr "Errore! Non è possibile creare un team di vendita ricorsivo." #: selection:crm.opportunity2phonecall,action:0 #: selection:crm.phonecall2phonecall,action:0 msgid "Log a call" -msgstr "" +msgstr "Registra una chiamata" #. module: crm #: selection:crm.segmentation.line,expr_name:0 @@ -1512,7 +1517,7 @@ msgstr "Nome" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities that are assigned to me" -msgstr "" +msgstr "Leads/Opportunità assegnate a me" #. module: crm #: view:crm.lead.report:0 @@ -1524,12 +1529,12 @@ msgstr "I miei casi(o)" #: help:crm.lead,message_ids:0 #: help:crm.phonecall,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Storico messaggi e comunicazioni" #. module: crm #: view:crm.lead:0 msgid "Show Countries" -msgstr "" +msgstr "Mostra Nazioni" #. module: crm #: view:crm.lead:0 @@ -1554,22 +1559,22 @@ msgstr "Converti candidato in business partner" #: code:addons/crm/crm_lead.py:871 #, python-format msgid "Opportunity has been won." -msgstr "" +msgstr "L'opportunità è stata vinta." #. module: crm #: view:crm.phonecall:0 msgid "Phone Calls that are assigned to me or to my team(s)" -msgstr "" +msgstr "Telefonate assegnate a me o al/ai miei team" #. module: crm #: model:ir.model,name:crm.model_crm_payment_mode msgid "CRM Payment Mode" -msgstr "" +msgstr "Metodi di Pagamento" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in done state" -msgstr "" +msgstr "Leads/Opportunità in stato completato" #. module: crm #: field:crm.lead.report,delay_close:0 @@ -1587,7 +1592,7 @@ msgstr "Raggruppa per..." #. module: crm #: view:crm.merge.opportunity:0 msgid "Merge Leads/Opportunities" -msgstr "" +msgstr "Unisci Leads/Opportunità" #. module: crm #: field:crm.case.section,parent_id:0 @@ -1598,7 +1603,7 @@ msgstr "Team padre" #: selection:crm.lead2opportunity.partner,action:0 #: selection:crm.lead2opportunity.partner.mass,action:0 msgid "Do not link to a customer" -msgstr "" +msgstr "non collegare a cliente" #. module: crm #: field:crm.lead,date_action:0 @@ -1621,7 +1626,7 @@ msgstr "" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Assign opportunities to" -msgstr "" +msgstr "Assegna opportunità a" #. module: crm #: field:crm.lead,zip:0 @@ -1636,18 +1641,18 @@ msgstr "In entrata" #. module: crm #: view:crm.phonecall.report:0 msgid "Month of call" -msgstr "" +msgstr "Mese della chiamata" #. module: crm #: code:addons/crm/crm_phonecall.py:289 #, python-format msgid "Partner has been created." -msgstr "" +msgstr "Il partner è stato creato." #. module: crm #: field:sale.config.settings,module_crm_claim:0 msgid "Manage Customer Claims" -msgstr "" +msgstr "Gestisce Lamentele Clienti" #. module: crm #: model:ir.actions.act_window,help:crm.action_report_crm_lead @@ -1660,7 +1665,7 @@ msgstr "" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor3 msgid "Services" -msgstr "" +msgstr "Servizi" #. module: crm #: selection:crm.lead,priority:0 @@ -1673,7 +1678,7 @@ msgstr "Massima" #. module: crm #: help:crm.lead.report,creation_year:0 msgid "Creation year" -msgstr "" +msgstr "Anno creazione" #. module: crm #: view:crm.case.section:0 @@ -1705,7 +1710,7 @@ msgstr "Rispondi a" #. module: crm #: view:crm.lead:0 msgid "Display" -msgstr "" +msgstr "Mostra" #. module: crm #: view:board.board:0 @@ -1720,7 +1725,7 @@ msgstr "Il Prospect è convertito in business partner" #. module: crm #: model:ir.actions.server,name:crm.actions_server_crm_lead_unread msgid "CRM Lead: Mark unread" -msgstr "" +msgstr "CRM Lead: Segna non letto" #. module: crm #: view:crm.case.channel:0 @@ -1728,7 +1733,7 @@ msgstr "" #: model:ir.model,name:crm.model_crm_case_channel #: model:ir.ui.menu,name:crm.menu_crm_case_channel msgid "Channels" -msgstr "" +msgstr "Canali" #. module: crm #: view:crm.phonecall:0 @@ -1746,12 +1751,12 @@ msgstr "Informazioni Aggiuntive" #. module: crm #: view:crm.lead:0 msgid "Fund Raising" -msgstr "" +msgstr "Raccolta Fondi" #. module: crm #: view:crm.lead:0 msgid "Edit..." -msgstr "" +msgstr "Modifica..." #. module: crm #: model:crm.case.resource.type,name:crm.type_lead5 @@ -1789,7 +1794,7 @@ msgstr "" #: view:crm.payment.mode:0 #: model:ir.actions.act_window,name:crm.action_crm_payment_mode msgid "Payment Mode" -msgstr "" +msgstr "Modalità Pagamento" #. module: crm #: model:ir.model,name:crm.model_crm_lead2opportunity_partner_mass @@ -1799,19 +1804,19 @@ msgstr "" #. module: crm #: view:sale.config.settings:0 msgid "On Mail Server" -msgstr "" +msgstr "Su Mail Server" #. module: crm #: model:ir.actions.act_window,name:crm.open_board_statistical_dash #: model:ir.ui.menu,name:crm.menu_board_statistics_dash msgid "CRM" -msgstr "" +msgstr "CRM" #. module: crm #: model:ir.actions.act_window,name:crm.crm_segmentation_tree-act #: model:ir.ui.menu,name:crm.menu_crm_segmentation-act msgid "Contacts Segmentation" -msgstr "" +msgstr "Segmentazione Contatti" #. module: crm #: model:process.node,note:crm.process_node_meeting0 @@ -1826,7 +1831,7 @@ msgstr "Televendite" #. module: crm #: view:crm.lead:0 msgid "Leads Assigned to Me or My Team(s)" -msgstr "" +msgstr "Leads Assegnati a Me o a Miei Team" #. module: crm #: model:ir.model,name:crm.model_crm_segmentation_line @@ -1847,7 +1852,7 @@ msgstr "Entrate previste" #. module: crm #: view:crm.lead:0 msgid "Referrer" -msgstr "" +msgstr "Segnalante" #. module: crm #: help:crm.lead,type:0 @@ -1870,17 +1875,17 @@ msgstr "Luglio" #. module: crm #: view:crm.lead:0 msgid "Lead / Customer" -msgstr "" +msgstr "Lead / Cliente" #. module: crm #: model:crm.case.section,name:crm.crm_case_section_2 msgid "Support Department" -msgstr "" +msgstr "Dipartimento Supporto" #. module: crm #: view:crm.lead.report:0 msgid "Show only lead" -msgstr "" +msgstr "Mostra solo lead" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_section_act @@ -1909,13 +1914,13 @@ msgstr "Team" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in New state" -msgstr "" +msgstr "Leads/Opportunità in stato Nuovo" #. module: crm #: code:addons/crm/crm_lead.py:883 #, python-format msgid "%s partner is now set to %s." -msgstr "" +msgstr "Il partner %s è ora impostato su %s." #. module: crm #: selection:crm.phonecall,state:0 @@ -1952,7 +1957,7 @@ msgstr "Lead" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor5 msgid "Design" -msgstr "" +msgstr "Design" #. module: crm #: selection:crm.lead2opportunity.partner,name:0 @@ -1985,7 +1990,7 @@ msgstr "Da fare" #. module: crm #: field:crm.lead,user_email:0 msgid "User Email" -msgstr "" +msgstr "Email Utente" #. module: crm #: help:crm.lead,partner_name:0 @@ -2021,12 +2026,12 @@ msgstr "Chiuso" #. module: crm #: view:crm.lead:0 msgid "Open Opportunities" -msgstr "" +msgstr "Apri Opportunità" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead2 msgid "Email Campaign - Services" -msgstr "" +msgstr "Campagna Email - Servizi" #. module: crm #: selection:crm.case.stage,state:0 @@ -2077,7 +2082,7 @@ msgstr "Chiamate Telefoniche" #. module: crm #: view:crm.case.stage:0 msgid "Stage Search" -msgstr "" +msgstr "Cerca Fase" #. module: crm #: help:crm.lead.report,delay_open:0 @@ -2113,23 +2118,23 @@ msgstr "Espressione Obbligatoria" #: selection:crm.lead2partner,action:0 #: selection:crm.phonecall2partner,action:0 msgid "Create a new customer" -msgstr "" +msgstr "Crea un nuovo cliente" #. module: crm #: field:crm.lead2opportunity.partner,action:0 #: field:crm.lead2opportunity.partner.mass,action:0 msgid "Related Customer" -msgstr "" +msgstr "Cliente Correlato" #. module: crm #: field:crm.lead.report,deadline_day:0 msgid "Exp. Closing Day" -msgstr "" +msgstr "Giorno Chiusura Attesa" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor2 msgid "Software" -msgstr "" +msgstr "Software" #. module: crm #: field:crm.case.section,change_responsible:0 @@ -2167,12 +2172,12 @@ msgstr "Città" #. module: crm #: selection:crm.case.stage,type:0 msgid "Both" -msgstr "" +msgstr "Entrambi" #. module: crm #: view:crm.phonecall:0 msgid "Call Done" -msgstr "" +msgstr "Chiamata Completata" #. module: crm #: view:crm.phonecall:0 @@ -2188,12 +2193,12 @@ msgstr "" #. module: crm #: model:crm.case.section,name:crm.crm_case_section_3 msgid "Direct Marketing" -msgstr "" +msgstr "Direct Marketing" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor1 msgid "Product" -msgstr "" +msgstr "Prodotto" #. module: crm #: code:addons/crm/crm_phonecall.py:284 @@ -2209,12 +2214,12 @@ msgstr "Massimo Storico Contatti" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Conversion Options" -msgstr "" +msgstr "Opzioni Conversione" #. module: crm #: view:crm.lead:0 msgid "Address" -msgstr "" +msgstr "Indirizzo" #. module: crm #: help:crm.case.section,alias_id:0 @@ -2226,7 +2231,7 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "Unassigned Opportunities" -msgstr "" +msgstr "Opportunità non Assegnate" #. module: crm #: view:crm.lead:0 @@ -2244,7 +2249,7 @@ msgstr "Tempo di apertura" #: model:ir.actions.act_window,name:crm.crm_case_categ_phone_outgoing0 #: model:ir.ui.menu,name:crm.menu_crm_case_phone_outbound msgid "Scheduled Calls" -msgstr "" +msgstr "Chiamate da fare" #. module: crm #: field:crm.lead,id:0 @@ -2279,7 +2284,7 @@ msgstr "Prosegui Processo" #: model:ir.actions.act_window,name:crm.action_crm_lead2opportunity_partner #: model:ir.actions.act_window,name:crm.phonecall2opportunity_act msgid "Convert to opportunity" -msgstr "" +msgstr "Converti ad Opportunità" #. module: crm #: field:crm.opportunity2phonecall,user_id:0 @@ -2336,12 +2341,12 @@ msgstr "Team di vendita a cui il caso appartiene" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead6 msgid "Banner Ads" -msgstr "" +msgstr "Banner Pubblicità" #. module: crm #: field:crm.merge.opportunity,opportunity_ids:0 msgid "Leads/Opportunities" -msgstr "" +msgstr "Leads/Opportunità" #. module: crm #: field:crm.lead,fax:0 @@ -2361,12 +2366,12 @@ msgstr "Azienda" #. module: crm #: view:base.action.rule:0 msgid "Conditions on Communication History" -msgstr "" +msgstr "Condizioni su Storico Comunicazioni" #. module: crm #: view:crm.lead:0 msgid "Unassigned Leads" -msgstr "" +msgstr "Leads non Assegnati" #. module: crm #: field:crm.case.categ,object_id:0 @@ -2376,17 +2381,17 @@ msgstr "Nome Oggetto" #. module: crm #: view:crm.phonecall:0 msgid "Phone Calls Assigned to Me or My Team(s)" -msgstr "" +msgstr "Telefonate Assegnate a Me o ai miei Team" #. module: crm #: view:crm.lead:0 msgid "Reset" -msgstr "" +msgstr "Ripristina" #. module: crm #: view:sale.config.settings:0 msgid "After-Sale Services" -msgstr "" +msgstr "Servizi Post Vendita" #. module: crm #: model:ir.actions.server,message:crm.action_email_reminder_customer_lead @@ -2438,7 +2443,7 @@ msgstr "Annullato" #. module: crm #: field:crm.lead,color:0 msgid "Color Index" -msgstr "" +msgstr "Indice Colore" #. module: crm #: model:ir.actions.act_window,help:crm.action_report_crm_phonecall @@ -2448,11 +2453,15 @@ msgid "" "several criteria and drill down the information, by adding more groups in " "the report." msgstr "" +"Con questo report è possibile analizzare le prestazioni del team di vendita " +"in base alle loro telefonate. È possibile raggruppare o filtrare le " +"informazioni secondo diversi criteri e successivi approfondimenti mediante " +"l'aggiunta di ulteriori gruppi nel report." #. module: crm #: field:crm.case.stage,state:0 msgid "Related Status" -msgstr "" +msgstr "Stato Correlati" #. module: crm #: field:crm.phonecall,name:0 @@ -2473,7 +2482,7 @@ msgstr "Pianifica / Registra chiamata" #. module: crm #: view:crm.merge.opportunity:0 msgid "Select Leads/Opportunities" -msgstr "" +msgstr "Seleziona Leads/Opportunità" #. module: crm #: selection:crm.phonecall,state:0 @@ -2483,7 +2492,7 @@ msgstr "Confermato" #. module: crm #: model:ir.actions.act_window,name:crm.act_oppor_stage_user msgid "Planned Revenue By User and Stage" -msgstr "" +msgstr "Ricavi Pianificati per Utente e Fase" #. module: crm #: view:crm.phonecall:0 @@ -2493,7 +2502,7 @@ msgstr "Conferma" #. module: crm #: view:crm.lead:0 msgid "Unread messages" -msgstr "" +msgstr "Messaggi non letti" #. module: crm #: field:crm.phonecall.report,section_id:0 @@ -2510,12 +2519,12 @@ msgstr "Espressione Opzionale" #: field:crm.lead,message_follower_ids:0 #: field:crm.phonecall,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Followers" #. module: crm #: field:sale.config.settings,fetchmail_lead:0 msgid "Create leads from incoming mails" -msgstr "" +msgstr "Crea leads da email in entrata" #. module: crm #: view:crm.lead:0 @@ -2543,7 +2552,7 @@ msgstr "Pianifica chiamata" #: view:crm.lead.report:0 #: view:crm.phonecall.report:0 msgid "My Sales Team(s)" -msgstr "" +msgstr "I Miei Team di Vendita" #. module: crm #: help:crm.segmentation,exclusif:0 @@ -2562,7 +2571,7 @@ msgstr "Crea una opportunità a partire dal Lead" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead3 msgid "Email Campaign - Products" -msgstr "" +msgstr "Campagna Email - Prodotti" #. module: crm #: field:base.action.rule,act_categ_id:0 @@ -2595,7 +2604,7 @@ msgstr "Primo contatto il nuovo candidato" #. module: crm #: view:res.partner:0 msgid "Calls" -msgstr "" +msgstr "Chiamate" #. module: crm #: field:crm.case.stage,on_change:0 @@ -2605,7 +2614,7 @@ msgstr "Cambia la probabilità automaticamente" #. module: crm #: view:crm.phonecall.report:0 msgid "My Phone Calls" -msgstr "" +msgstr "Le Miei Telefonate" #. module: crm #: model:crm.case.stage,name:crm.stage_lead3 @@ -2615,7 +2624,7 @@ msgstr "Qualificazione" #. module: crm #: field:crm.lead,partner_address_email:0 msgid "Partner Contact Email" -msgstr "" +msgstr "Email Contatto Partner" #. module: crm #: model:ir.actions.act_window,help:crm.crm_lead_categ_action @@ -2636,7 +2645,7 @@ msgstr "" #: code:addons/crm/wizard/crm_lead_to_partner.py:48 #, python-format msgid "A partner is already defined." -msgstr "" +msgstr "Un partner è già stato definito." #. module: crm #: view:sale.config.settings:0 @@ -2646,7 +2655,7 @@ msgstr "Configura" #. module: crm #: field:crm.lead.report,deadline_month:0 msgid "Exp. Closing Month" -msgstr "" +msgstr "Mese Chiusura Attesa" #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -2658,7 +2667,7 @@ msgstr "Dicembre" #. module: crm #: view:crm.phonecall:0 msgid "Date of Call" -msgstr "" +msgstr "Data della Chiamata" #. module: crm #: view:crm.lead:0 @@ -2684,12 +2693,12 @@ msgstr "Mettere a scadenzario una riunione" #. module: crm #: field:crm.lead.report,deadline_year:0 msgid "Ex. Closing Year" -msgstr "" +msgstr "Anno Chiusura Attesa" #. module: crm #: model:ir.actions.client,name:crm.action_client_crm_menu msgid "Open Sale Menu" -msgstr "" +msgstr "Apri Menu Vendite" #. module: crm #: field:crm.lead,date_open:0 @@ -2707,7 +2716,7 @@ msgstr "Membri del Team" #: view:crm.opportunity2phonecall:0 #: view:crm.phonecall2phonecall:0 msgid "Schedule/Log a Call" -msgstr "" +msgstr "Pianfica/Registra una Chiamata" #. module: crm #: field:crm.lead,planned_cost:0 @@ -2717,7 +2726,7 @@ msgstr "Costi Pianificati" #. module: crm #: help:crm.lead,date_deadline:0 msgid "Estimate of the date on which the opportunity will be won." -msgstr "" +msgstr "Data stimata nella quale l'opportunità potrebbe essere vinta." #. module: crm #: help:crm.lead,email_cc:0 @@ -2734,7 +2743,7 @@ msgstr "" #: model:ir.actions.act_window,name:crm.crm_case_categ_phone_incoming0 #: model:ir.ui.menu,name:crm.menu_crm_case_phone_inbound msgid "Logged Calls" -msgstr "" +msgstr "Chiamate Registrate" #. module: crm #: field:crm.partner2opportunity,probability:0 @@ -2771,7 +2780,7 @@ msgstr "Categoria del caso" #. module: crm #: view:crm.lead:0 msgid "Opportunity / Customer" -msgstr "" +msgstr "Opportunità / Cliente" #. module: crm #: view:board.board:0 @@ -2794,7 +2803,7 @@ msgstr "VIa (2)" #. module: crm #: field:sale.config.settings,module_crm_helpdesk:0 msgid "Manage Helpdesk and Support" -msgstr "" +msgstr "Gestione Helpdesk e Supporto" #. module: crm #: view:crm.phonecall2partner:0 @@ -2827,7 +2836,7 @@ msgstr "Novembre" #: field:crm.phonecall,message_comment_ids:0 #: help:crm.phonecall,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Commenti ed Email" #. module: crm #: model:crm.case.stage,name:crm.stage_lead5 @@ -2860,12 +2869,12 @@ msgstr "Ads di Twitter" #. module: crm #: field:crm.case.stage,case_default:0 msgid "Common to All Teams" -msgstr "" +msgstr "Comune a Tutti i Teams" #. module: crm #: field:crm.lead.report,creation_day:0 msgid "Creation Day" -msgstr "" +msgstr "Data Creazione" #. module: crm #: view:crm.lead.report:0 @@ -2875,7 +2884,7 @@ msgstr "Entrate pianificate" #. module: crm #: model:ir.actions.server,name:crm.actions_server_crm_lead_read msgid "CRM Lead: Mark read" -msgstr "" +msgstr "CRM Lead: Segna letto" #. module: crm #: model:ir.model,name:crm.model_crm_phonecall2phonecall @@ -2885,7 +2894,7 @@ msgstr "Telefonata a telefonata" #. module: crm #: help:crm.lead.report,deadline_year:0 msgid "Expected closing year" -msgstr "" +msgstr "Anno chiusura attesa" #. module: crm #: model:ir.model,name:crm.model_crm_case_stage @@ -2896,7 +2905,7 @@ msgstr "Stadi del caso" #: selection:crm.opportunity2phonecall,action:0 #: selection:crm.phonecall2phonecall,action:0 msgid "Schedule a call" -msgstr "" +msgstr "Pianifica una chiamata" #. module: crm #: view:crm.lead:0 @@ -2907,12 +2916,12 @@ msgstr "Categorizzazione" #: view:crm.lead:0 #: view:crm.phonecall2phonecall:0 msgid "Log Call" -msgstr "" +msgstr "Registra Chiamata" #. module: crm #: model:ir.model,name:crm.model_base_action_rule msgid "Action Rules" -msgstr "" +msgstr "Regole Azione" #. module: crm #: help:sale.config.settings,group_fund_raising:0 @@ -2933,13 +2942,13 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "Create date" -msgstr "" +msgstr "Data Creazione" #. module: crm #: view:crm.lead:0 #: view:crm.phonecall2opportunity:0 msgid "at" -msgstr "" +msgstr "a" #. module: crm #: model:crm.case.stage,name:crm.stage_lead1 @@ -3010,12 +3019,12 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "Internal Notes" -msgstr "" +msgstr "Note Interne" #. module: crm #: view:crm.lead:0 msgid "New Opportunities" -msgstr "" +msgstr "Nuove Opportunità" #. module: crm #: field:crm.segmentation.line,operator:0 @@ -3030,12 +3039,12 @@ msgstr "Via" #. module: crm #: field:crm.lead,referred:0 msgid "Referred By" -msgstr "" +msgstr "Segnalato Da" #. module: crm #: view:crm.phonecall:0 msgid "Reset to Todo" -msgstr "" +msgstr "Reimposta a Da Fare" #. module: crm #: field:crm.case.section,working_hours:0 @@ -3135,7 +3144,7 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "Exp.Closing" -msgstr "" +msgstr "Chiusura Attesa" #. module: crm #: field:crm.case.stage,sequence:0 diff --git a/addons/crm/i18n/nl.po b/addons/crm/i18n/nl.po index 964348f8ecf..9a0aa4bdf7b 100644 --- a/addons/crm/i18n/nl.po +++ b/addons/crm/i18n/nl.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: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-05 18:03+0000\n" +"PO-Revision-Date: 2012-12-09 18:29+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \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: 2012-12-06 04:39+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: crm @@ -2407,7 +2407,7 @@ msgid "" "From which campaign (seminar, marketing campaign, mass mailing, ...) did " "this contact come from?" msgstr "" -"van welke campagne (seminar, marketing campagne, masse mailing, etc.) komt " +"Van welke campagne (seminar, marketing campagne, masse mailing, etc.) komt " "dit contact?" #. module: crm diff --git a/addons/crm_claim/i18n/de.po b/addons/crm_claim/i18n/de.po index 06ccb801fa2..0911b43464b 100644 --- a/addons/crm_claim/i18n/de.po +++ b/addons/crm_claim/i18n/de.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-01-13 22:05+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-09 10:52+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:49+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: crm_claim #: help:crm.claim.stage,fold:0 @@ -22,6 +23,9 @@ msgid "" "This stage is not visible, for example in status bar or kanban view, when " "there are no records in that stage to display." msgstr "" +"Die Stufe wird in bestimmten Ansichten verborgen, z.B. in der " +"Fortschrittsanzeige oder den Kanban Karten, wenn es keine Datensätze in " +"dieser Stufe gibt." #. module: crm_claim #: field:crm.claim.report,nbr:0 @@ -45,11 +49,13 @@ msgid "" "Allows you to configure your incoming mail server, and create claims from " "incoming emails." msgstr "" +"Ermöglicht die Konfiguration des Posteingang Server, um automatisch " +"Reklamations Vorfälle aus eingehenden EMails zu generieren." #. module: crm_claim #: model:ir.model,name:crm_claim.model_crm_claim_stage msgid "Claim stages" -msgstr "" +msgstr "Reklamationen Stufen" #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -64,7 +70,7 @@ msgstr "Dauer für Beendigung" #. module: crm_claim #: field:crm.claim,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ungelesene Mitteilungen" #. module: crm_claim #: field:crm.claim,resolution:0 @@ -90,6 +96,19 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Click to create a claim category.\n" +"

    \n" +"                 Klicken Sie, um neue Kategorien für Ihre Reklamationen zu " +"erstellen.\n" +"               \n" +" Durch Kategorien haben Sie die Möglichkeit Ihre " +"Reklamationen zu koordinieren.\n" +" Beispiele für Reklamationen können folgende sein : " +"Austausch, Reparatur, \n" +"                 Kulanzvorfall u.s.w.\n" +"

    \n" +" " #. module: crm_claim #: view:crm.claim.report:0 @@ -99,7 +118,7 @@ msgstr "# Reklamation" #. module: crm_claim #: field:crm.claim.stage,name:0 msgid "Stage Name" -msgstr "" +msgstr "Bezeichnung Stufe" #. module: crm_claim #: model:ir.actions.act_window,help:crm_claim.action_report_crm_claim @@ -114,7 +133,7 @@ msgstr "" #. module: crm_claim #: view:crm.claim.report:0 msgid "Salesperson" -msgstr "" +msgstr "Verkäufer" #. module: crm_claim #: selection:crm.claim,priority:0 @@ -168,7 +187,7 @@ msgstr "Datum Beendigung" #. module: crm_claim #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "trifft nicht zu" #. module: crm_claim #: field:crm.claim,ref:0 @@ -191,6 +210,9 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Beinhaltet die Chatter Zusammenfassung (Anzahl der Nachrichten, ...). Diese " +"Zusammenfassung ist im HTML-Format, um in Kanban Karten Ansichten eingefügt " +"zu werden." #. module: crm_claim #: view:crm.claim:0 @@ -249,12 +271,12 @@ msgstr "Priorität" #. module: crm_claim #: field:crm.claim.stage,fold:0 msgid "Hide in Views when Empty" -msgstr "" +msgstr "Ohne Eintrag in Ansichten verbergen" #. module: crm_claim #: field:crm.claim,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Followers" #. module: crm_claim #: view:crm.claim:0 @@ -268,7 +290,7 @@ msgstr "Neu" #. module: crm_claim #: field:crm.claim.stage,section_ids:0 msgid "Sections" -msgstr "" +msgstr "Sektionen" #. module: crm_claim #: field:crm.claim,email_from:0 @@ -304,7 +326,7 @@ msgstr "Reklamationsursache" #. module: crm_claim #: model:crm.claim.stage,name:crm_claim.stage_claim3 msgid "Rejected" -msgstr "" +msgstr "Abgelehnt" #. module: crm_claim #: field:crm.claim,date_action_next:0 @@ -315,7 +337,7 @@ msgstr "Datum nächste Aktion" #: code:addons/crm_claim/crm_claim.py:243 #, python-format msgid "Claim has been created." -msgstr "" +msgstr "Reklamation wurde erstellt." #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -349,13 +371,13 @@ msgstr "Daten" #. module: crm_claim #: help:crm.claim,email_from:0 msgid "Destination email for email gateway." -msgstr "" +msgstr "EMail Empfänger für Mailgateway" #. module: crm_claim #: code:addons/crm_claim/crm_claim.py:199 #, python-format msgid "No Subject" -msgstr "" +msgstr "Kein Betreff" #. module: crm_claim #: help:crm.claim.stage,state:0 @@ -365,6 +387,11 @@ msgid "" "is related to the status 'Close', when your document reaches this stage, it " "will be automatically have the 'closed' status." msgstr "" +"Der verbundene Status für diese Stufe. Der Status des Vorgangs ändert sich " +"automatisch mit, wenn die ausgewählte Stufe geändert wird. Wenn z.B. eine " +"Stufe mit dem Status 'Abgeschlossen' verbunden ist, wird der Vorgang " +"automatisch auch 'abgeschlossen', wenn eine entsprechend verbundene Stufe " +"für den Vorgang angegeben wird." #. module: crm_claim #: view:crm.claim:0 @@ -395,7 +422,7 @@ msgstr "CRM Bericht Reklamationen" #. module: crm_claim #: view:sale.config.settings:0 msgid "Configure" -msgstr "" +msgstr "Einstellungen" #. module: crm_claim #: model:crm.case.resource.type,name:crm_claim.type_claim1 @@ -441,6 +468,8 @@ msgid "" "If you check this field, this stage will be proposed by default on each " "sales team. It will not assign this stage to existing teams." msgstr "" +"Durch Aktivierung wird diese Stufe automatisch dem Verkaufsteam zugeordnet. " +"Dieses wird nicht unmittelbar für die bereits bestehenden Teams übernommen." #. module: crm_claim #: field:crm.claim,categ_id:0 @@ -497,7 +526,7 @@ msgstr "Beendet" #. module: crm_claim #: view:crm.claim:0 msgid "Reject" -msgstr "" +msgstr "Ablehnen" #. module: crm_claim #: view:res.partner:0 @@ -507,7 +536,7 @@ msgstr "Antrag des Partners" #. module: crm_claim #: view:crm.claim.stage:0 msgid "Claim Stage" -msgstr "" +msgstr "Reklamation Stufe" #. module: crm_claim #: view:crm.claim:0 @@ -525,7 +554,7 @@ msgstr "Unerledigt" #: field:crm.claim.report,state:0 #: field:crm.claim.stage,state:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -541,7 +570,7 @@ msgstr "Normal" #. module: crm_claim #: help:crm.claim.stage,sequence:0 msgid "Used to order stages. Lower is better." -msgstr "" +msgstr "Wird zum ordnen der Stufen in aufsteigender Reihenfolge genutzt." #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -583,6 +612,19 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken Sie zur Erstellung einer neuen Stufe für die " +"Bearbeitung von Reklamationen. \n" +"

    \n" +" Sie definieren hier Stufen, die dabei helfen den Fortschritt " +"der Bearbeitung Ihrer\n" +" Reklamationen zu erfassen und zu verfolgen. Die hier " +"anzulegenden Stufen umfassen\n" +" dabei den gesamten Arbeitszyklus, der zu Erledigung von " +"Reklamationen erforderlich\n" +" ist\n" +"

    \n" +" " #. module: crm_claim #: help:crm.claim,state:0 @@ -613,7 +655,7 @@ msgstr "Erweiterter Filter..." #: field:crm.claim,message_comment_ids:0 #: help:crm.claim,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Kommentare und EMails" #. module: crm_claim #: view:crm.claim:0 @@ -626,6 +668,8 @@ msgid "" "Responsible sales team. Define Responsible user and Email account for mail " "gateway." msgstr "" +"Verantwortliches Team. Definieren Sie den Teamleiter und das EMail Konto, " +"dessen Posteingang überwacht wird." #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -646,7 +690,7 @@ msgstr "Reklamation Datum" #. module: crm_claim #: field:crm.claim,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Zusammenfassung" #. module: crm_claim #: model:ir.actions.act_window,name:crm_claim.crm_claim_categ_action @@ -656,7 +700,7 @@ msgstr "Reklamation Kategorien" #. module: crm_claim #: field:crm.claim.stage,case_default:0 msgid "Common to All Teams" -msgstr "" +msgstr "Gemeinsam für alle Teams" #. module: crm_claim #: view:crm.claim:0 @@ -695,7 +739,7 @@ msgstr "Reklamation" #. module: crm_claim #: view:crm.claim.report:0 msgid "My Company" -msgstr "" +msgstr "Mein Unternehmen" #. module: crm_claim #: view:crm.claim.report:0 @@ -751,7 +795,7 @@ msgstr "Nicht zugeordnete Anträge" #: code:addons/crm_claim/crm_claim.py:247 #, python-format msgid "Claim has been refused." -msgstr "" +msgstr "Reklamation wurde verworfen." #. module: crm_claim #: field:crm.claim,cause:0 @@ -792,7 +836,7 @@ msgstr "Vorgehen Problembehebung" #. module: crm_claim #: field:crm.claim.stage,case_refused:0 msgid "Refused stage" -msgstr "" +msgstr "Stufe für Abgelehnt" #. module: crm_claim #: model:ir.actions.act_window,help:crm_claim.crm_case_categ_claim0 @@ -819,7 +863,7 @@ msgstr "# EMails" #: code:addons/crm_claim/crm_claim.py:253 #, python-format msgid "Stage changed to %s." -msgstr "" +msgstr "Stufe wurde geändert auf %s." #. module: crm_claim #: view:crm.claim.report:0 @@ -865,17 +909,17 @@ msgstr "" #. module: crm_claim #: help:crm.claim,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Nachrichten und Kommunikation" #. module: crm_claim #: field:sale.config.settings,fetchmail_claim:0 msgid "Create claims from incoming mails" -msgstr "" +msgstr "Erstelle automatische Reklamationen aus dem EMail Posteingang" #. module: crm_claim #: field:crm.claim.stage,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Reihenfolge" #. module: crm_claim #: view:crm.claim:0 @@ -910,11 +954,13 @@ msgid "" "Link between stages and sales teams. When set, this limitate the current " "stage to the selected sales teams." msgstr "" +"Verbindung vertrieblicher Stufen zu Teams. Hierdurch können Sie die " +"Auswahlmöglichkeiten für Stufen in Abhängigkeit vom Team einschränken." #. module: crm_claim #: help:crm.claim.stage,case_refused:0 msgid "Refused stages are specific stages for done." -msgstr "" +msgstr "Die Abgelehnt Stufe ist spezifisch für Erledigt." #~ msgid "" #~ "Sales team to which Case belongs to.Define Responsible user and Email " diff --git a/addons/crm_helpdesk/i18n/de.po b/addons/crm_helpdesk/i18n/de.po index a9487814eab..74a62475e03 100644 --- a/addons/crm_helpdesk/i18n/de.po +++ b/addons/crm_helpdesk/i18n/de.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-01-13 23:20+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-09 11:24+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: crm_helpdesk #: field:crm.helpdesk.report,delay_close:0 @@ -30,7 +31,7 @@ msgstr "# Fälle" #: code:addons/crm_helpdesk/crm_helpdesk.py:152 #, python-format msgid "Case has been created." -msgstr "" +msgstr "Anfrage wurde erstellt." #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -41,7 +42,7 @@ msgstr "Gruppierung..." #. module: crm_helpdesk #: help:crm.helpdesk,email_from:0 msgid "Destination email for email gateway" -msgstr "" +msgstr "EMail Empfänger für Mailgateway" #. module: crm_helpdesk #: selection:crm.helpdesk.report,month:0 @@ -51,7 +52,7 @@ msgstr "März" #. module: crm_helpdesk #: field:crm.helpdesk,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ungelesene Mitteilungen" #. module: crm_helpdesk #: field:crm.helpdesk,company_id:0 @@ -68,7 +69,7 @@ msgstr "Empfänger EMails" #. module: crm_helpdesk #: view:crm.helpdesk.report:0 msgid "Salesperson" -msgstr "" +msgstr "Verkäufer" #. module: crm_helpdesk #: selection:crm.helpdesk,priority:0 @@ -141,6 +142,9 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Beinhaltet die Chatter Zusammenfassung (Anzahl der Nachrichten, ...). Diese " +"Zusammenfassung ist im HTML-Format, um in Kanban Karten Ansichten eingefügt " +"zu werden." #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -282,7 +286,7 @@ msgstr "Kein Betreff" msgid "" "Helpdesk requests that are assigned to me or to one of the sale teams I " "manage" -msgstr "" +msgstr "Mir persönlich oder dem von mir geleiteten Team zugewiesene Anfragen" #. module: crm_helpdesk #: view:crm.helpdesk.report:0 @@ -405,7 +409,7 @@ msgstr "Unerledigt" #: view:crm.helpdesk.report:0 #: field:crm.helpdesk.report,state:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: crm_helpdesk #: selection:crm.helpdesk.report,month:0 @@ -450,6 +454,24 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken Sie zur Erstellung einer neuen Anfrage an Ihren " +"Kundendienst.\n" +"

    \n" +" Im Kundendienst können Sie alle Beratung und Support " +"Vorfälle verfolgen.\n" +"

    \n" +" Benutzen Sie die OpenERP Kundendienst Vorfälle für das " +"Management Ihrer\n" +" Kundenberatung und den Support. Durch Verbindung mit dem " +"EMail Gateway \n" +" können Vorfälle automatisch erzeugt werden. Praktisch ist " +"dabei auch die \n" +" Möglichkeit die gesamte Historie einzusehen und weiter zu " +"verfolgen oder \n" +" auch auszuwerten.\n" +"

    \n" +" " #. module: crm_helpdesk #: field:crm.helpdesk,planned_revenue:0 @@ -490,7 +512,7 @@ msgstr "Kundendienst Anfragen" #: field:crm.helpdesk,message_comment_ids:0 #: help:crm.helpdesk,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Kommentare und EMails" #. module: crm_helpdesk #: help:crm.helpdesk,section_id:0 @@ -512,7 +534,7 @@ msgstr "Januar" #. module: crm_helpdesk #: field:crm.helpdesk,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Zusammenfassung" #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -528,7 +550,7 @@ msgstr "Diverse" #. module: crm_helpdesk #: view:crm.helpdesk.report:0 msgid "My Company" -msgstr "" +msgstr "Mein Unternehmen" #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -675,11 +697,19 @@ msgid "" " \n" "If the case needs to be reviewed then the status is set to 'Pending'." msgstr "" +"Durch Erstellung und Speichern einer Anfrage ist der Status zunächst " +"'Entwurf'. \n" +"Durch die Bearbeitung ändert sich der Status dann automatisch in 'Offen'. " +" \n" +"Wenn die Anfrage beantwortet wird, ändert sich der Status in 'Erledigt'. " +" \n" +"Sollte zunächst eine spätere Bearbeitung erforderlich sein, wird der Status " +"geändert zu 'Wiedervorlage'." #. module: crm_helpdesk #: help:crm.helpdesk,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Nachrichten und Kommunikation" #. module: crm_helpdesk #: model:ir.actions.act_window,help:crm_helpdesk.crm_helpdesk_categ_action @@ -722,7 +752,7 @@ msgstr "Letzte Aktion" #. module: crm_helpdesk #: view:crm.helpdesk:0 msgid "Assigned to Me or My Sales Team(s)" -msgstr "" +msgstr "Mir oder meinem Team zugewiesen" #. module: crm_helpdesk #: field:crm.helpdesk,duration:0 diff --git a/addons/crm_partner_assign/i18n/de.po b/addons/crm_partner_assign/i18n/de.po index ebaffb6153c..eb7abbc8764 100644 --- a/addons/crm_partner_assign/i18n/de.po +++ b/addons/crm_partner_assign/i18n/de.po @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-01-14 11:42+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-09 16:24+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:52+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: crm_partner_assign #: field:crm.lead.report.assign,delay_close:0 @@ -25,7 +26,7 @@ msgstr "Zeit f. Beendigung" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,author_id:0 msgid "Author" -msgstr "" +msgstr "Urheber" #. module: crm_partner_assign #: field:crm.lead.report.assign,planned_revenue:0 @@ -38,6 +39,8 @@ msgid "" "Message type: email for email message, notification for system message, " "comment for other messages such as user replies" msgstr "" +"Nachrichtentyp: EMail für Emailnachricht, Mitteilung für Systemnachricht, " +"Kommentar für andere Mitteilungen wie Diskussionsbeiträge von Benutzern." #. module: crm_partner_assign #: field:crm.lead.report.assign,nbr:0 @@ -53,7 +56,7 @@ msgstr "Gruppierung..." #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,body:0 msgid "Automatically sanitized HTML contents" -msgstr "" +msgstr "Automatisch bereinigter HTML Inhalt" #. module: crm_partner_assign #: view:crm.lead:0 @@ -76,11 +79,13 @@ msgid "" "Email address of the sender. This field is set when no matching partner is " "found for incoming emails." msgstr "" +"EMail Adresse des Senders. Dieses Feld wird eingetragen, wenn aufgrund der " +"eingehenden EMail keine automatische Zuordnung eines Partners möglich ist." #. module: crm_partner_assign #: view:crm.partner.report.assign:0 msgid "Date Partnership" -msgstr "" +msgstr "Beginn Partnerschaft" #. module: crm_partner_assign #: selection:crm.lead.report.assign,type:0 @@ -106,7 +111,7 @@ msgstr "Unternehmen" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,notification_ids:0 msgid "Notifications" -msgstr "" +msgstr "Benachrichtigungen" #. module: crm_partner_assign #: field:crm.lead.report.assign,date_assign:0 @@ -118,7 +123,7 @@ msgstr "Partner Daten" #: view:crm.partner.report.assign:0 #: view:res.partner:0 msgid "Salesperson" -msgstr "" +msgstr "Verkäufer" #. module: crm_partner_assign #: selection:crm.lead.report.assign,priority:0 @@ -139,12 +144,12 @@ msgstr "Eindeutige Identifikation der Nachricht" #. module: crm_partner_assign #: field:res.partner,date_review_next:0 msgid "Next Partner Review" -msgstr "" +msgstr "Nächste Partnerbewertung" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,favorite_user_ids:0 msgid "Favorite" -msgstr "" +msgstr "Bevorzugter Verkäufer" #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,history_mode:0 @@ -170,12 +175,12 @@ msgstr "Geogr. Zuweisung" #. module: crm_partner_assign #: model:ir.model,name:crm_partner_assign.model_crm_lead_forward_to_partner msgid "Email composition wizard" -msgstr "" +msgstr "Emailerstellung Assistent" #. module: crm_partner_assign #: field:crm.partner.report.assign,turnover:0 msgid "Turnover" -msgstr "" +msgstr "Umsatz" #. module: crm_partner_assign #: field:crm.lead.report.assign,date_closed:0 @@ -192,18 +197,18 @@ msgstr "Ermöglicht automatische Zuweisung von Leads zu Partnern" #. module: crm_partner_assign #: view:res.partner:0 msgid "Partner Activation" -msgstr "" +msgstr "Aktivierung Partner" #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,type:0 msgid "System notification" -msgstr "" +msgstr "System Benachrichtigung" #. module: crm_partner_assign #: code:addons/crm_partner_assign/wizard/crm_forward_to_partner.py:77 #, python-format msgid "Lead forward" -msgstr "" +msgstr "Interessenten Übermittlung" #. module: crm_partner_assign #: field:crm.lead.report.assign,probability:0 @@ -261,11 +266,14 @@ msgid "" "Author of the message. If not set, email_from may hold an email address that " "did not match any partner." msgstr "" +"Verfasser der Mitteilung. Falls hier kein Eintrag enthalten ist, kann die " +"EMail Empfang Adresse auch eine Email Adresse enthalten, die nicht zu einem " +"Partner gehört." #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,favorite_user_ids:0 msgid "Users that set this message in their favorites" -msgstr "" +msgstr "Benutzer, die diese Nachricht in Ihren Favoriten verfolgen" #. module: crm_partner_assign #: field:crm.lead.report.assign,delay_expected:0 @@ -281,7 +289,7 @@ msgstr "Typ" #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,type:0 msgid "Email" -msgstr "" +msgstr "EMail" #. module: crm_partner_assign #: help:crm.lead,partner_assigned_id:0 @@ -296,7 +304,7 @@ msgstr "Sehr gering" #. module: crm_partner_assign #: view:crm.partner.report.assign:0 msgid "Date Invoice" -msgstr "" +msgstr "Datum Rechnung" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,template_id:0 @@ -356,7 +364,7 @@ msgstr "Juli" #. module: crm_partner_assign #: view:crm.partner.report.assign:0 msgid "Date Review" -msgstr "" +msgstr "Bewertungsdatum" #. module: crm_partner_assign #: view:crm.lead.report.assign:0 @@ -368,12 +376,12 @@ msgstr "Stufe" #: view:crm.lead.report.assign:0 #: field:crm.lead.report.assign,state:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,to_read:0 msgid "To read" -msgstr "" +msgstr "ungelesen" #. module: crm_partner_assign #: code:addons/crm_partner_assign/wizard/crm_forward_to_partner.py:77 @@ -429,11 +437,13 @@ msgstr "Anzahl Tage f. Beendigung" msgid "" "Partners that have a notification pushing this message in their mailboxes" msgstr "" +"Partner, die benachrichtigt wurden, dass diese EMail in Ihrem Posteingang " +"ist." #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,type:0 msgid "Comment" -msgstr "" +msgstr "Kommentar" #. module: crm_partner_assign #: field:res.partner,partner_weight:0 @@ -461,7 +471,7 @@ msgstr "Dezember" #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,vote_user_ids:0 msgid "Users that voted for this message" -msgstr "" +msgstr "Benutzer die für diese Mitteilung gestimmt haben" #. module: crm_partner_assign #: view:crm.lead.report.assign:0 @@ -483,7 +493,7 @@ msgstr "" #: field:crm.partner.report.assign,date_review:0 #: field:res.partner,date_review:0 msgid "Latest Partner Review" -msgstr "" +msgstr "Letzte Partner Bewertung" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,subject:0 @@ -493,17 +503,17 @@ msgstr "Betreff" #. module: crm_partner_assign #: view:crm.lead.forward.to.partner:0 msgid "or" -msgstr "" +msgstr "oder" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,body:0 msgid "Contents" -msgstr "" +msgstr "Inhalte" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,vote_user_ids:0 msgid "Votes" -msgstr "" +msgstr "Bewertungen" #. module: crm_partner_assign #: view:crm.lead.report.assign:0 @@ -514,7 +524,7 @@ msgstr "# Verkaufschancen" #: field:crm.partner.report.assign,date_partnership:0 #: field:res.partner,date_partnership:0 msgid "Partnership Date" -msgstr "" +msgstr "Beginn Partnerschaft" #. module: crm_partner_assign #: view:crm.lead:0 @@ -566,7 +576,7 @@ msgstr "August" #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,record_name:0 msgid "Name get of the related document." -msgstr "" +msgstr "Bezeichnung kommt vom verbundenen Vorgang." #. module: crm_partner_assign #: selection:crm.lead.report.assign,priority:0 @@ -663,12 +673,12 @@ msgstr "Geplanter Umsatz" #. module: crm_partner_assign #: view:res.partner:0 msgid "Partner Review" -msgstr "" +msgstr "Partner Bewertung" #. module: crm_partner_assign #: field:crm.partner.report.assign,period_id:0 msgid "Invoice Period" -msgstr "" +msgstr "Abrechnungsperiode" #. module: crm_partner_assign #: model:ir.model,name:crm_partner_assign.model_res_partner_grade @@ -689,7 +699,7 @@ msgstr "Anhänge" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,record_name:0 msgid "Message Record Name" -msgstr "" +msgstr "Mitteilung Bezeichnung" #. module: crm_partner_assign #: field:res.partner.activation,sequence:0 @@ -704,6 +714,8 @@ msgid "" "Cannot contact geolocation servers. Please make sure that your internet " "connection is up and running (%s)." msgstr "" +"Die Verbindung zum Geolokalisierung Server war nicht erfolgreich. Bitte " +"stellen Sie sicher, daß Sie eine Internet Verbindung haben (%s)." #. module: crm_partner_assign #: selection:crm.lead.report.assign,month:0 @@ -729,7 +741,7 @@ msgstr "Offen" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,subtype_id:0 msgid "Subtype" -msgstr "" +msgstr "Untertyp" #. module: crm_partner_assign #: field:res.partner,date_localization:0 @@ -744,12 +756,12 @@ msgstr "Aktuell" #. module: crm_partner_assign #: model:ir.model,name:crm_partner_assign.model_crm_lead msgid "Lead/Opportunity" -msgstr "" +msgstr "Interessent / Chance" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,notified_partner_ids:0 msgid "Notified partners" -msgstr "" +msgstr "Benachrichtigter Partner" #. module: crm_partner_assign #: view:crm.lead.forward.to.partner:0 @@ -780,7 +792,7 @@ msgstr "Geplanter Umsatz" #: field:res.partner,activation:0 #: view:res.partner.activation:0 msgid "Activation" -msgstr "" +msgstr "Aktivierung" #. module: crm_partner_assign #: view:crm.lead:0 @@ -791,7 +803,7 @@ msgstr "Zugewiesener Partner" #. module: crm_partner_assign #: field:res.partner,grade_id:0 msgid "Partner Level" -msgstr "" +msgstr "Partner Level" #. module: crm_partner_assign #: selection:crm.lead.report.assign,type:0 @@ -817,7 +829,7 @@ msgstr "Bezeichnung" #: model:ir.actions.act_window,name:crm_partner_assign.res_partner_activation_act #: model:ir.ui.menu,name:crm_partner_assign.res_partner_activation_config_mi msgid "Partner Activations" -msgstr "" +msgstr "Partnerschaft Aktivierung" #. module: crm_partner_assign #: view:crm.lead.report.assign:0 @@ -860,6 +872,8 @@ msgid "" "Technical field holding the message notifications. Use notified_partner_ids " "to access notified partners." msgstr "" +"Technisches Feld mit der Benachrichtigung. Zum Zugriff auf zu " +"benachrichtigenden Partner verwenden Sie notified_partner_ids." #. module: crm_partner_assign #: view:crm.partner.report.assign:0 @@ -874,12 +888,12 @@ msgstr "Auswertung Leads" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,composition_mode:0 msgid "Composition mode" -msgstr "" +msgstr "Erstellungsmodus" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,model:0 msgid "Related Document Model" -msgstr "" +msgstr "verbundenes Datenmodell" #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,history_mode:0 @@ -890,6 +904,7 @@ msgstr "Fall Information" #: help:crm.lead.forward.to.partner,to_read:0 msgid "Functional field to search for messages the current user has to read" msgstr "" +"Feld mit Funktion zur Suche der ungelesenen Mitteilungen des Benutzers" #. module: crm_partner_assign #: model:ir.model,name:crm_partner_assign.model_crm_partner_report_assign @@ -904,12 +919,12 @@ msgstr "Hoch" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,partner_ids:0 msgid "Additional contacts" -msgstr "" +msgstr "Weitere Kontakte" #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,parent_id:0 msgid "Initial thread message." -msgstr "" +msgstr "Anfangsmitteilung" #. module: crm_partner_assign #: field:crm.lead.report.assign,create_date:0 diff --git a/addons/crm_profiling/i18n/it.po b/addons/crm_profiling/i18n/it.po index 0c59e331aa6..77cc2d41ff8 100644 --- a/addons/crm_profiling/i18n/it.po +++ b/addons/crm_profiling/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 17:38+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-09 20:35+0000\n" +"Last-Translator: Sergio Corato \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: 2012-12-04 05:40+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: crm_profiling #: view:crm_profiling.questionnaire:0 @@ -74,7 +74,7 @@ msgstr "Risposta" #. module: crm_profiling #: model:ir.model,name:crm_profiling.model_open_questionnaire_line msgid "open.questionnaire.line" -msgstr "" +msgstr "Copy text \t open.questionnaire.line" #. module: crm_profiling #: model:ir.model,name:crm_profiling.model_crm_segmentation @@ -107,7 +107,7 @@ msgstr "Risposte" #. module: crm_profiling #: model:ir.model,name:crm_profiling.model_open_questionnaire msgid "open.questionnaire" -msgstr "" +msgstr "open.questionnaire" #. module: crm_profiling #: field:open.questionnaire,questionnaire_id:0 @@ -122,7 +122,7 @@ msgstr "Utilizza un Questionario" #. module: crm_profiling #: field:open.questionnaire,question_ans_ids:0 msgid "Question / Answers" -msgstr "" +msgstr "Domande / Risposte" #. module: crm_profiling #: view:crm_profiling.questionnaire:0 @@ -150,7 +150,7 @@ msgstr "Utilizza Regole Peofilatura" #. module: crm_profiling #: constraint:crm.segmentation:0 msgid "Error ! You cannot create recursive profiles." -msgstr "" +msgstr "Errore ! Non è possibile creare profili ricorsivi." #. module: crm_profiling #: field:crm.segmentation,answer_yes:0 @@ -199,7 +199,7 @@ msgstr "Salva Dati" #. module: crm_profiling #: view:open.questionnaire:0 msgid "or" -msgstr "" +msgstr "o" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/delivery/i18n/de.po b/addons/delivery/i18n/de.po index b761c2b39d3..a5601e7e790 100644 --- a/addons/delivery/i18n/de.po +++ b/addons/delivery/i18n/de.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-02-08 09:10+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-09 21:56+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \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: 2012-12-04 05:11+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: delivery #: report:sale.shipping:0 @@ -64,7 +65,7 @@ msgstr "Volumen" #. module: delivery #: view:delivery.carrier:0 msgid "Zip" -msgstr "" +msgstr "PLZ" #. module: delivery #: field:delivery.grid,line_ids:0 @@ -100,12 +101,31 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken Sie zur Erstellung einer neuen Liefermethode. \n" +"

    \n" +" Jeder Paketversender (z.B. UPS) bietet unterschiedliche " +"Liefermethoden an (z.B.\n" +" UPS Express, UPS Standard) mit verschiedenen Regelwerken für " +"die Preisberechnung \n" +" der Methoden. \n" +"

    \n" +" Die Methoden ermöglichen es nun, automatisch auf Basis " +"Ihrer Einstellungen den Lieferpreis \n" +" für die Auslieferung zu berechnen, und den Verkauf " +"(bezieht sich auf dieses Angebot) oder die \n" +" Rechnung (basierend auf den Lieferscheinen) automatisch " +"inklusive dieser Kosten zu erstellen.\n" +"

    \n" +" " #. module: delivery #: code:addons/delivery/delivery.py:221 #, python-format msgid "No line matched this product or order in the chosen delivery grid." msgstr "" +"Keine Zeile entspricht dem Produkt oder dem Auftrag mit dieser ausgewählten " +"Liefertabelle." #. module: delivery #: model:ir.actions.act_window,name:delivery.action_picking_tree4 @@ -145,6 +165,20 @@ msgid "" "

    \n" " " msgstr "" +"p class=\"oe_view_nocontent_create\">\n" +"\n" +"Klicken Sie um eine Preisliste für spezifische Regionen zu definieren.\n" +"

    \n" +" Der Preis für Auslieferungen ermöglicht die Berechnung von " +"Kosten\n" +"und Verkaufspreisen auf der Basis von Gewichten und weiterer Kriterien bei " +"der \n" +"Auslieferung. Sie können verschiedene Preislisten für Liefermethoden " +"anlegen: \n" +"Pro Land oder Region in einem spezifischen Land durch einen bestimmten \n" +"Bereich der PLZ.\n" +"

    \n" +" " #. module: delivery #: report:sale.shipping:0 @@ -164,7 +198,7 @@ msgstr "Betrag" #. module: delivery #: view:sale.order:0 msgid "Add in Quote" -msgstr "" +msgstr "Erweitern um Angebot" #. module: delivery #: selection:delivery.grid.line,price_type:0 @@ -217,7 +251,7 @@ msgstr "Definition Auslieferungstarif" #: code:addons/delivery/stock.py:89 #, python-format msgid "Warning!" -msgstr "" +msgstr "Warnung !" #. module: delivery #: field:delivery.grid.line,operator:0 @@ -237,7 +271,7 @@ msgstr "Verkaufsauftrag" #. module: delivery #: model:ir.model,name:delivery.model_stock_picking_out msgid "Delivery Orders" -msgstr "" +msgstr "Auslieferung Aufträge" #. module: delivery #: view:sale.order:0 diff --git a/addons/edi/i18n/hr.po b/addons/edi/i18n/hr.po new file mode 100644 index 00000000000..be940c5e295 --- /dev/null +++ b/addons/edi/i18n/hr.po @@ -0,0 +1,89 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 20:08+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:67 +#, python-format +msgid "Reason:" +msgstr "Razlog:" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:60 +#, python-format +msgid "The document has been successfully imported!" +msgstr "Dokument uspješno učitan!" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:65 +#, python-format +msgid "Sorry, the document could not be imported." +msgstr ":), dokument nije učitan." + +#. module: edi +#: model:ir.model,name:edi.model_res_company +msgid "Companies" +msgstr "Organizacije" + +#. module: edi +#: model:ir.model,name:edi.model_res_currency +msgid "Currency" +msgstr "Valuta" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:71 +#, python-format +msgid "Document Import Notification" +msgstr "Obavijest o uvozu dokumenta" + +#. module: edi +#: code:addons/edi/models/edi.py:130 +#, python-format +msgid "Missing application." +msgstr "Nedostaje aplikacija (modul)." + +#. module: edi +#: code:addons/edi/models/edi.py:131 +#, python-format +msgid "" +"The document you are trying to import requires the OpenERP `%s` application. " +"You can install it by connecting as the administrator and opening the " +"configuration assistant." +msgstr "" +"Pokušavate učitati dokument koji zahtjeva OpenERPovu aplikaciju `%s`. " +"Korisnik sa administratorskim ovlastima je može instalirati." + +#. module: edi +#: code:addons/edi/models/edi.py:47 +#, python-format +msgid "'%s' is an invalid external ID" +msgstr "'%s' nije ispravan eksterni ID" + +#. module: edi +#: model:ir.model,name:edi.model_res_partner +msgid "Partner" +msgstr "Partner" + +#. module: edi +#: model:ir.model,name:edi.model_edi_edi +msgid "EDI Subsystem" +msgstr "Sistem EDI razmjene podataka" diff --git a/addons/event/i18n/de.po b/addons/event/i18n/de.po index 84f2ed8f9b7..35db6383200 100644 --- a/addons/event/i18n/de.po +++ b/addons/event/i18n/de.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-01-14 15:07+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-09 21:00+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \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: 2012-12-04 05:13+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: event #: view:event.event:0 @@ -25,12 +26,12 @@ msgstr "Meine Veranstaltungen" #. module: event #: field:event.registration,nb_register:0 msgid "Number of Participants" -msgstr "" +msgstr "Anzahl Teilnehmer" #. module: event #: field:event.event,register_attended:0 msgid "# of Participations" -msgstr "" +msgstr "Anzahl Teilnahmen" #. module: event #: field:event.event,main_speaker_id:0 @@ -56,12 +57,15 @@ msgid "" "enough registrations you are not able to confirm your event. (put 0 to " "ignore this rule )" msgstr "" +"Sie können eine Mindestanzahl für die erforderlichen Anmeldungen festlegen. " +"Bei geringer Anzahl Anmeldungen kann die Veranstaltung nicht bestätigt " +"werden (tragen Sie einfach 0 ein, um diese Regel zu umgehen)" #. module: event #: code:addons/event/event.py:305 #, python-format msgid "Event has been cancelled." -msgstr "" +msgstr "Veranstaltung wurde abgebrochen." #. module: event #: field:event.registration,date_open:0 @@ -71,12 +75,12 @@ msgstr "Anmeldedatum" #. module: event #: help:event.registration,origin:0 msgid "Name of the sale order which create the registration" -msgstr "" +msgstr "Bezeichnung des Auftrags der Vorlage für Anmeldung ist" #. module: event #: field:event.event,type:0 msgid "Type of Event" -msgstr "" +msgstr "Typ der Veranstaltung" #. module: event #: model:event.event,name:event.event_0 @@ -88,7 +92,7 @@ msgstr "Konzert von Bon Jovi" #: selection:event.registration,state:0 #: selection:report.event.registration,registration_state:0 msgid "Attended" -msgstr "" +msgstr "Teilgenommen" #. module: event #: selection:report.event.registration,month:0 @@ -98,7 +102,7 @@ msgstr "März" #. module: event #: view:event.registration:0 msgid "Send Email" -msgstr "" +msgstr "Sende EMail" #. module: event #: field:event.event,company_id:0 @@ -112,12 +116,12 @@ msgstr "Unternehmen" #: field:event.event,email_confirmation_id:0 #: field:event.type,default_email_event:0 msgid "Event Confirmation Email" -msgstr "" +msgstr "Veranstaltung Bestätigungsemail" #. module: event #: field:event.type,default_registration_max:0 msgid "Default Maximum Registration" -msgstr "" +msgstr "Standard maximale Anmeldungen" #. module: event #: help:event.event,message_unread:0 @@ -128,7 +132,7 @@ msgstr "" #. module: event #: field:event.event,register_avail:0 msgid "Available Registrations" -msgstr "" +msgstr "Verfügbare Anmeldungen" #. module: event #: view:event.registration:0 @@ -139,12 +143,12 @@ msgstr "Veranstaltung Anmeldung" #. module: event #: model:ir.module.category,description:event.module_category_event_management msgid "Helps you manage your Events." -msgstr "" +msgstr "Hilfe zum Management von Veranstaltungen" #. module: event #: view:report.event.registration:0 msgid "Day" -msgstr "" +msgstr "Tag" #. module: event #: view:report.event.registration:0 @@ -173,12 +177,14 @@ msgstr "Auswertung Veranstaltungen" #: help:event.type,default_registration_max:0 msgid "It will select this default maximum value when you choose this event" msgstr "" +"Dieser Standard für die maximale Teilnehmerzahl wird bei der Auswahl " +"angezeigt." #. module: event #: view:report.event.registration:0 #: field:report.event.registration,user_id_registration:0 msgid "Register" -msgstr "" +msgstr "Anmelden" #. module: event #: field:event.event,message_ids:0 @@ -226,7 +232,7 @@ msgstr "Abgebrochen" #. module: event #: view:event.event:0 msgid "ticket" -msgstr "" +msgstr "Ticket" #. module: event #: model:event.event,name:event.event_1 @@ -236,33 +242,33 @@ msgstr "Verdi Oper" #. module: event #: view:report.event.registration:0 msgid "Display" -msgstr "" +msgstr "Anzeige" #. module: event #: view:report.event.registration:0 #: field:report.event.registration,registration_state:0 msgid "Registration State" -msgstr "" +msgstr "Anmeldestatus" #. module: event #: view:event.event:0 msgid "tickets" -msgstr "" +msgstr "Tickets" #. module: event #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Ungültig" #. module: event #: model:mail.message.subtype,name:event.mt_event_registration msgid "New Registrations" -msgstr "" +msgstr "Neue Anmeldungen" #. module: event #: field:event.registration,event_end_date:0 msgid "Event End Date" -msgstr "" +msgstr "Ende der Veranstaltung" #. module: event #: help:event.event,message_summary:0 @@ -271,6 +277,9 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Beinhaltet die Chatter Zusammenfassung (Anzahl der Nachrichten, ...). Diese " +"Zusammenfassung ist im HTML-Format, um in Kanban Karten Ansichten eingefügt " +"zu werden." #. module: event #: selection:report.event.registration,month:0 @@ -287,7 +296,7 @@ msgstr "Bestätigte oder erledigte Registrierungen" #: code:addons/event/event.py:116 #, python-format msgid "Warning!" -msgstr "" +msgstr "Warnung !" #. module: event #: view:event.event:0 @@ -305,7 +314,7 @@ msgstr "Partner" #. module: event #: model:ir.actions.server,name:event.actions_server_event_event_read msgid "Event: Mark read" -msgstr "" +msgstr "Veranstaltung: Als ungelesen markieren" #. module: event #: model:ir.model,name:event.model_event_type @@ -335,7 +344,7 @@ msgstr "Bestätigt" #. module: event #: view:event.registration:0 msgid "Participant" -msgstr "" +msgstr "Teilnehmer" #. module: event #: view:event.registration:0 @@ -346,12 +355,12 @@ msgstr "Bestätigen" #. module: event #: view:event.event:0 msgid "Organized by" -msgstr "" +msgstr "Organisiert durch" #. module: event #: view:event.event:0 msgid "Register with this event" -msgstr "" +msgstr "Anmeldung zu Veranstaltung" #. module: event #: help:event.type,default_email_registration:0 @@ -359,17 +368,19 @@ msgid "" "It will select this default confirmation registration mail value when you " "choose this event" msgstr "" +"Diese Bestätigung Email wird bei tatsächlicher Anmeldung zur Veranstaltung " +"ausgewählt." #. module: event #: view:event.event:0 msgid "Only" -msgstr "" +msgstr "Nur" #. module: event #: field:event.event,message_follower_ids:0 #: field:event.registration,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Followers" #. module: event #: view:event.event:0 @@ -382,7 +393,7 @@ msgstr "Ort" #: view:event.registration:0 #: field:event.registration,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ungelesene Mitteilungen" #. module: event #: view:event.registration:0 @@ -404,12 +415,12 @@ msgstr "EMail" #: code:addons/event/event.py:367 #, python-format msgid "New registration confirmed: %s." -msgstr "" +msgstr "Neue Anmeldebestätigung: %s" #. module: event #: view:event.event:0 msgid "Upcoming" -msgstr "" +msgstr "Bevorstehend" #. module: event #: field:event.registration,create_date:0 @@ -420,7 +431,7 @@ msgstr "Datum Erstellung" #: view:report.event.registration:0 #: field:report.event.registration,user_id:0 msgid "Event Responsible" -msgstr "" +msgstr "Veranstaltungsmanager" #. module: event #: view:event.event:0 @@ -437,7 +448,7 @@ msgstr "Juli" #. module: event #: field:event.event,reply_to:0 msgid "Reply-To Email" -msgstr "" +msgstr "Antwort an EMail" #. module: event #: view:event.registration:0 @@ -447,7 +458,7 @@ msgstr "Bestätigte Registrierungen" #. module: event #: view:event.event:0 msgid "Starting Date" -msgstr "" +msgstr "Start Datum" #. module: event #: view:event.event:0 @@ -473,7 +484,7 @@ msgstr "Vortragender der Veranstaltung" #: code:addons/event/event.py:457 #, python-format msgid "Registration has been created." -msgstr "" +msgstr "Anmeldung wurde erstellt." #. module: event #: view:event.event:0 @@ -484,12 +495,12 @@ msgstr "Veranstaltung stornieren" #: code:addons/event/event.py:398 #, python-format msgid "State set to Done" -msgstr "" +msgstr "Status geändert auf erledigt" #. module: event #: model:ir.actions.server,name:event.actions_server_event_registration_read msgid "Event registration : Mark read" -msgstr "" +msgstr "Anmeldung zu Veranstaltung: Markiere als gelesen" #. module: event #: model:ir.actions.act_window,name:event.act_event_reg @@ -500,7 +511,7 @@ msgstr "Veranstaltungsbelegung" #. module: event #: view:event.event:0 msgid "Event Category" -msgstr "" +msgstr "Kategorien Veranstaltungen" #. module: event #: field:event.event,register_prospect:0 @@ -510,13 +521,13 @@ msgstr "Nicht bestätigte Anmeldungen" #. module: event #: model:ir.actions.client,name:event.action_client_event_menu msgid "Open Event Menu" -msgstr "" +msgstr "Öffnen Veranstaltungen Menü" #. module: event #: view:report.event.registration:0 #: field:report.event.registration,event_state:0 msgid "Event State" -msgstr "" +msgstr "Veranstaltungen Status" #. module: event #: field:event.registration,log_ids:0 @@ -547,7 +558,7 @@ msgstr " # Anmeldungen im Entwurf" #: field:event.event,email_registration_id:0 #: field:event.type,default_email_registration:0 msgid "Registration Confirmation Email" -msgstr "" +msgstr "Anmeldebestätigung EMail" #. module: event #: view:report.event.registration:0 @@ -558,12 +569,12 @@ msgstr "Monat" #. module: event #: field:event.registration,date_closed:0 msgid "Attended Date" -msgstr "" +msgstr "Teilnahme Datum" #. module: event #: view:event.event:0 msgid "Finish Event" -msgstr "" +msgstr "Beende Veranstaltung" #. module: event #: view:event.registration:0 @@ -573,7 +584,7 @@ msgstr "Unbestätigte Registrierungen" #. module: event #: view:event.event:0 msgid "Event Description" -msgstr "" +msgstr "Veranstaltung Beschreibung" #. module: event #: field:event.event,date_begin:0 @@ -583,24 +594,24 @@ msgstr "Beginn am" #. module: event #: view:event.confirm:0 msgid "or" -msgstr "" +msgstr "oder" #. module: event #: code:addons/event/event.py:315 #, python-format msgid "Event has been done." -msgstr "" +msgstr "Veranstaltung wurde beendet." #. module: event #: help:res.partner,speaker:0 msgid "Check this box if this contact is a speaker." -msgstr "" +msgstr "Aktivieren Sie dieses Feld, wenn der Kontakt ein Referent ist" #. module: event #: code:addons/event/event.py:116 #, python-format msgid "No Tickets Available!" -msgstr "" +msgstr "Keine Tickets verfügbar !" #. module: event #: help:event.event,state:0 @@ -610,6 +621,10 @@ msgid "" "status is set to 'Done'.If event is cancelled the status is set to " "'Cancelled'." msgstr "" +"Wenn eine Veranstaltung erzeugt wird ist der Status zunächst 'Entwurf'. " +"Durch die Bestätigung wechselt der Status auf 'Bestätigt'. Zum Ende der " +"Veranstaltung ist der Status 'Beendet'. Bei Absage der Veranstaltung " +"wechselt der Status zu 'Abgebrochen'." #. module: event #: model:ir.actions.act_window,help:event.action_event_view @@ -625,6 +640,16 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken Sie um eine neue Veranstaltung zu erstellen.\n" +"

    \n" +" OpenERP hilft bei der Terminierung und effizienten " +"Organisation von Veranstaltungen:\n" +" Verfolgen Sie die Anmeldungen und Teilnahmen, automatisieren " +"Sie den EMail Versand\n" +" von Anmeldebestätigungen, verkaufen Sie Tickets für " +"Veranstaltungen, etc..

    \n" +" " #. module: event #: help:event.event,register_max:0 @@ -633,12 +658,16 @@ msgid "" "much registrations you are not able to confirm your event. (put 0 to ignore " "this rule )" msgstr "" +"Sie können für alle Veranstaltungen die maximale Teilnehmer Anzahl " +"festlegen. Wenn Sie zu viele Anmeldungen erhalten, können Sie die " +"Veranstaltung auch nicht bestätigen (tragen Sie 0 ein, um diese Regel zu " +"ignorieren)." #. module: event #: code:addons/event/event.py:462 #, python-format msgid "Registration has been set as draft." -msgstr "" +msgstr "Die Anmeldung ist erfasst als Entwurf." #. module: event #: code:addons/event/event.py:108 @@ -648,6 +677,9 @@ msgid "" "expected minimum/maximum. Please reconsider those limits before going " "further." msgstr "" +"Die Gesamtanzahl der bestätigten Anmeldungen für die Veranstaltung '%s' " +"entspricht nicht dem erwarteten Minimum / Maximum. Bitte bedenken Sie diese " +"Teilnehmergrenzen bevor Sie weitere Schritte in die Wege leiten." #. module: event #: help:event.event,email_confirmation_id:0 @@ -655,11 +687,13 @@ msgid "" "If you set an email template, each participant will receive this email " "announcing the confirmation of the event." msgstr "" +"Wenn Sie eine EMail Vorlage hinterlegen, können Sie jedem angemeldeten " +"Teilnehmer eine Anmeldebestätigung per EMail senden." #. module: event #: view:board.board:0 msgid "Events Filling By Status" -msgstr "" +msgstr "Teilnehmerzahlen nach Status" #. module: event #: selection:report.event.registration,event_state:0 @@ -681,7 +715,7 @@ msgstr "Neue Veranstaltungen" #: code:addons/event/event.py:404 #, python-format msgid "State set to Cancel" -msgstr "" +msgstr "Status geändert zu Abgebrochen" #. module: event #: view:event.event:0 @@ -707,7 +741,7 @@ msgstr "Status" #. module: event #: field:event.event,city:0 msgid "city" -msgstr "" +msgstr "Stadt" #. module: event #: selection:report.event.registration,month:0 @@ -717,7 +751,7 @@ msgstr "August" #. module: event #: field:event.event,zip:0 msgid "zip" -msgstr "" +msgstr "PLZ" #. module: event #: field:res.partner,event_ids:0 @@ -728,7 +762,7 @@ msgstr "unbekannt" #. module: event #: field:event.event,street2:0 msgid "Street2" -msgstr "" +msgstr "Straße 2" #. module: event #: selection:report.event.registration,month:0 @@ -742,17 +776,21 @@ msgid "" "emails sent automatically at event or registrations confirmation. You can " "also put your email address of your mail gateway if you use one." msgstr "" +"Die Email Anschrift des Veranstalters, die als Antwort An EMail für alle " +"automatisch versendeten Anmelde- oder Teilnahme Bestätigungen hinterlegt " +"wurde. Sie können auch die EMail Ihres EMail Gateways hinterlegen, wenn " +"dieses zum Zweck des EMail Versands konfiguriert wurde." #. module: event #: help:event.event,message_ids:0 #: help:event.registration,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Nachrichten und Kommunikation" #. module: event #: field:event.registration,phone:0 msgid "Phone" -msgstr "" +msgstr "Telefon" #. module: event #: model:email.template,body_html:event.confirmation_event @@ -767,6 +805,16 @@ msgid "" "

    Thank you for your participation!

    \n" "

    Best regards

    " msgstr "" +"\n" +"

    Hallo ${object.name},

    \n" +"

    die Veranstaltung ${object.event_id.name} zu der Sie sich " +"angemeldet haben, wurde bestätigt und wird \n" +" planmäßig stattfinden vom ${object.event_id.date_begin} bis zum " +"${object.event_id.date_end}.\n" +" Für weitere Informationen zu dieser Veranstaltung kontaktieren Sie " +"bitte unsere Event Abteilung.

    \n" +"

    Vielen Dank für die Teilnahme an unserer Veranstaltung !

    \n" +"

    Viele Grüße

    " #. module: event #: field:event.event,message_is_follower:0 @@ -778,7 +826,7 @@ msgstr "" #: field:event.registration,user_id:0 #: model:res.groups,name:event.group_event_user msgid "User" -msgstr "" +msgstr "Benutzer" #. module: event #: view:event.confirm:0 @@ -792,7 +840,7 @@ msgstr "" #. module: event #: view:event.event:0 msgid "(confirmed:" -msgstr "" +msgstr "(bestätigt:" #. module: event #: view:event.registration:0 @@ -803,7 +851,7 @@ msgstr "Meine Anmeldungen" #: code:addons/event/event.py:310 #, python-format msgid "Event has been set to draft." -msgstr "" +msgstr "Die Veranstaltung wurde geändert auf draft." #. module: event #: view:report.event.registration:0 @@ -816,7 +864,7 @@ msgstr "Erweiterter Filter..." #: field:event.registration,message_comment_ids:0 #: help:event.registration,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Kommentare und EMails" #. module: event #: selection:report.event.registration,month:0 @@ -826,7 +874,7 @@ msgstr "Oktober" #. module: event #: model:ir.actions.server,name:event.actions_server_event_registration_unread msgid "Event registration : Mark unread" -msgstr "" +msgstr "Veranstaltung Anmeldung: Markiere als ungelesen" #. module: event #: view:event.event:0 @@ -846,6 +894,9 @@ msgid "" "You have already set a registration for this event as 'Attended'. Please " "reset it to draft if you want to cancel this event." msgstr "" +"Sie haben bereits eine bestätigte Anmeldung für diese Veranstaltung auf " +"'Teilnahme' geändert. Bitte setzen Sie diese Teilnahme zurück, um die " +"Veranstaltung abzubrechen." #. module: event #: view:res.partner:0 @@ -855,18 +906,18 @@ msgstr "Datum" #. module: event #: view:event.event:0 msgid "Email Configuration" -msgstr "" +msgstr "EMail Konfiguration" #. module: event #: field:event.type,default_registration_min:0 msgid "Default Minimum Registration" -msgstr "" +msgstr "Standard Mindestanzahl Anmeldungen" #. module: event #: code:addons/event/event.py:368 #, python-format msgid "Registration confirmed." -msgstr "" +msgstr "Anmeldung bestätigt" #. module: event #: field:event.event,address_id:0 @@ -885,11 +936,13 @@ msgid "" "This field contains the template of the mail that will be automatically sent " "each time a registration for this event is confirmed." msgstr "" +"Dieses Feld enthält die hinterlegte EMail Vorlage, die automatisch gesendet " +"wird, sobald eine Anmeldung für diese Veranstaltung bestätigt wird." #. module: event #: view:event.event:0 msgid "Attended the Event" -msgstr "" +msgstr "An Veranstaltung teilgenommen" #. module: event #: constraint:event.event:0 @@ -901,6 +954,7 @@ msgstr "Fehler ! Ende der Veranstaltung kann nicht vor Beginn sein." #, python-format msgid "You must wait for the starting day of the event to do this action." msgstr "" +"Sie müssen für diese Aktion bis zum Start Datum der Veranstaltung warten." #. module: event #: field:event.event,user_id:0 @@ -916,7 +970,7 @@ msgstr "Erledigt" #. module: event #: view:report.event.registration:0 msgid "Show Confirmed Registrations" -msgstr "" +msgstr "Zeigen Sie die bereits bestätigten Anmeldungen" #. module: event #: view:event.confirm:0 @@ -926,35 +980,35 @@ msgstr "Abbruch" #. module: event #: field:event.registration,reply_to:0 msgid "Reply-to Email" -msgstr "" +msgstr "Antwort An EMail" #. module: event #: code:addons/event/event.py:114 #, python-format msgid "Only %d Seats are Available!" -msgstr "" +msgstr "Nur %d Teilnahmeplätze sind verfügbar !" #. module: event #: model:email.template,subject:event.confirmation_event #: model:email.template,subject:event.confirmation_registration msgid "Your registration at ${object.event_id.name}" -msgstr "" +msgstr "Ihre Anmeldung an ${object.event_id.name}" #. module: event #: view:event.registration:0 msgid "Set To Unconfirmed" -msgstr "" +msgstr "Ändere auf unbestätigt" #. module: event #: view:event.event:0 #: field:event.event,is_subscribed:0 msgid "Subscribed" -msgstr "" +msgstr "Abonniert" #. module: event #: view:event.event:0 msgid "Unsubscribe" -msgstr "" +msgstr "Abmelden" #. module: event #: view:event.event:0 @@ -965,7 +1019,7 @@ msgstr "Verantwortlich" #. module: event #: view:report.event.registration:0 msgid "Registration contact" -msgstr "" +msgstr "Kontakt für Anmeldung" #. module: event #: view:report.event.registration:0 @@ -977,23 +1031,23 @@ msgstr "Referent" #. module: event #: view:event.event:0 msgid "Upcoming events from today" -msgstr "" +msgstr "Zukünftige Veranstaltungen ab heute" #. module: event #: code:addons/event/event.py:300 #, python-format msgid "Event has been created." -msgstr "" +msgstr "Veranstaltung wurde erstellt." #. module: event #: model:event.event,name:event.event_2 msgid "Conference on ERP Business" -msgstr "" +msgstr "Konferenz für ERP in Unternehmen" #. module: event #: model:ir.actions.act_window,name:event.act_event_view_registration msgid "New Registration" -msgstr "" +msgstr "Neue Anmeldung" #. module: event #: field:event.event,note:0 @@ -1008,13 +1062,13 @@ msgstr " # Anz. Bestätigungen" #. module: event #: field:report.event.registration,name_registration:0 msgid "Participant / Contact Name" -msgstr "" +msgstr "Teilnehmer / Kontakt Name" #. module: event #: code:addons/event/event.py:320 #, python-format msgid "Event has been confirmed." -msgstr "" +msgstr "Veranstaltung wurde bestätigt." #. module: event #: view:res.partner:0 @@ -1024,12 +1078,14 @@ msgstr "Anmeldung Veranstaltung" #. module: event #: view:event.event:0 msgid "No ticket available." -msgstr "" +msgstr "Kein Ticket vorhanden" #. module: event #: help:event.type,default_registration_min:0 msgid "It will select this default minimum value when you choose this event" msgstr "" +"Die minimale Anzahl der Teilnehmer wird als Standard bei der Auswahl der " +"Veranstaltung hinterlegt" #. module: event #: selection:report.event.registration,month:0 @@ -1089,7 +1145,7 @@ msgstr "Beende Anmeldung" #. module: event #: field:event.registration,origin:0 msgid "Source Document" -msgstr "" +msgstr "Herkunftsbeleg" #. module: event #: selection:report.event.registration,month:0 @@ -1102,6 +1158,8 @@ msgid "" "It will select this default confirmation event mail value when you choose " "this event" msgstr "" +"Es wird diese Standard EMail für die Anmeldebestätigung bei Auswahl dieser " +"Veranstaltung hinterlegt und verwendet." #. module: event #: view:report.event.registration:0 @@ -1131,7 +1189,7 @@ msgstr "ID" #. module: event #: field:event.type,default_reply_to:0 msgid "Default Reply-To" -msgstr "" +msgstr "Standard Antwort An Adresse" #. module: event #: view:event.event:0 @@ -1142,7 +1200,7 @@ msgstr "Abonnieren" #. module: event #: view:event.event:0 msgid "available." -msgstr "" +msgstr "verfügbar." #. module: event #: field:event.registration,event_begin_date:0 @@ -1153,12 +1211,12 @@ msgstr "Beginn am" #. module: event #: view:report.event.registration:0 msgid "Participant / Contact" -msgstr "" +msgstr "Teilnehmer / Kontakt" #. module: event #: view:event.event:0 msgid "Current Registrations" -msgstr "" +msgstr "Aktuelle Anmeldungen" #. module: event #: model:email.template,body_html:event.confirmation_registration @@ -1173,6 +1231,15 @@ msgid "" "

    Thank you for your participation!

    \n" "

    Best regards

    " msgstr "" +"\n" +"

    Hallo ${object.name},

    \n" +"

    wir bestätigen Ihre Anmeldung zur Veranstaltung " +"${object.event_id.name}, die wir gerne \n" +" entgegengenommen haben. Sie erhalten automatisch eine EMail mit " +"weiterführenden Informationen, \n" +" sobald die Veranstaltung bestätigt wird. \n" +"

    Danke für Ihre Anmeldung !

    \n" +"

    Freundliche Grüsse

    " #. module: event #: help:event.event,reply_to:0 @@ -1182,21 +1249,26 @@ msgid "" "registrations confirmation. You can also put the email address of your mail " "gateway if you use one." msgstr "" +"Die E-Mail-Adresse des Organisators soll hier eingestellt werden, damit " +"diese in der \"Antwort-An\" Adresse der EMails zur automatischen Bestätigung " +"der Veranstaltung eingesetzt werden kann. Sie können z.B. auch die E-Mail-" +"Adresse Ihres eigenen Mail-Gateways hinterlegen, falls Sie ein solches " +"Gateway verwenden möchten." #. module: event #: model:ir.actions.server,name:event.actions_server_event_event_unread msgid "Event: Mark unread" -msgstr "" +msgstr "Veranstaltung: Markiere als ungelesen" #. module: event #: model:res.groups,name:event.group_event_manager msgid "Manager" -msgstr "" +msgstr "Manager" #. module: event #: field:event.event,street:0 msgid "Street" -msgstr "" +msgstr "Straße" #. module: event #: view:event.confirm:0 diff --git a/addons/event/i18n/nb.po b/addons/event/i18n/nb.po index dc6ad490e87..fda7661f8f8 100644 --- a/addons/event/i18n/nb.po +++ b/addons/event/i18n/nb.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-07-25 13:20+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-09 20:25+0000\n" +"Last-Translator: Kaare Pettersen \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:13+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: event #: view:event.event:0 @@ -62,7 +62,7 @@ msgstr "" #: code:addons/event/event.py:305 #, python-format msgid "Event has been cancelled." -msgstr "" +msgstr "Arrangementet har blitt kansellert ." #. module: event #: field:event.registration,date_open:0 @@ -77,7 +77,7 @@ msgstr "" #. module: event #: field:event.event,type:0 msgid "Type of Event" -msgstr "" +msgstr "Arrangement Type." #. module: event #: model:event.event,name:event.event_0 @@ -89,7 +89,7 @@ msgstr "Konsert med Bon Jovi" #: selection:event.registration,state:0 #: selection:report.event.registration,registration_state:0 msgid "Attended" -msgstr "" +msgstr "Deltok." #. module: event #: selection:report.event.registration,month:0 @@ -99,7 +99,7 @@ msgstr "Mars" #. module: event #: view:event.registration:0 msgid "Send Email" -msgstr "" +msgstr "Send e-post." #. module: event #: field:event.event,company_id:0 @@ -113,7 +113,7 @@ msgstr "Firma" #: field:event.event,email_confirmation_id:0 #: field:event.type,default_email_event:0 msgid "Event Confirmation Email" -msgstr "" +msgstr "Arrangementet epost bekreftelse." #. module: event #: field:event.type,default_registration_max:0 @@ -124,12 +124,12 @@ msgstr "" #: help:event.event,message_unread:0 #: help:event.registration,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Hvis det er merket nye meldinger så krever dette din oppmerksomhet." #. module: event #: field:event.event,register_avail:0 msgid "Available Registrations" -msgstr "" +msgstr "Tilgjengelige registreringer." #. module: event #: view:event.registration:0 @@ -140,12 +140,12 @@ msgstr "Hendelseregistrering" #. module: event #: model:ir.module.category,description:event.module_category_event_management msgid "Helps you manage your Events." -msgstr "" +msgstr "Hjelper deg å administrere dine arrangementer." #. module: event #: view:report.event.registration:0 msgid "Day" -msgstr "" +msgstr "Dag." #. module: event #: view:report.event.registration:0 @@ -179,7 +179,7 @@ msgstr "" #: view:report.event.registration:0 #: field:report.event.registration,user_id_registration:0 msgid "Register" -msgstr "" +msgstr "Registrer." #. module: event #: field:event.event,message_ids:0 @@ -203,7 +203,7 @@ msgstr "Registreringer" #: code:addons/event/event.py:400 #, python-format msgid "Error!" -msgstr "" +msgstr "Feil!" #. module: event #: view:event.event:0 @@ -227,7 +227,7 @@ msgstr "Kansellert" #. module: event #: view:event.event:0 msgid "ticket" -msgstr "" +msgstr "Billett." #. module: event #: model:event.event,name:event.event_1 @@ -237,33 +237,33 @@ msgstr "Verdis opera" #. module: event #: view:report.event.registration:0 msgid "Display" -msgstr "" +msgstr "Skjerm." #. module: event #: view:report.event.registration:0 #: field:report.event.registration,registration_state:0 msgid "Registration State" -msgstr "" +msgstr "Registrerings stat." #. module: event #: view:event.event:0 msgid "tickets" -msgstr "" +msgstr "Billetter." #. module: event #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Usant." #. module: event #: model:mail.message.subtype,name:event.mt_event_registration msgid "New Registrations" -msgstr "" +msgstr "Nye registreringer." #. module: event #: field:event.registration,event_end_date:0 msgid "Event End Date" -msgstr "" +msgstr "Arrangement sluttdato." #. module: event #: help:event.event,message_summary:0 @@ -288,7 +288,7 @@ msgstr "Registreringer i bekreftet eller gjort staten." #: code:addons/event/event.py:116 #, python-format msgid "Warning!" -msgstr "" +msgstr "Advarsel!" #. module: event #: view:event.event:0 @@ -306,7 +306,7 @@ msgstr "Partner" #. module: event #: model:ir.actions.server,name:event.actions_server_event_event_read msgid "Event: Mark read" -msgstr "" +msgstr "Arrangementet: Merk lest." #. module: event #: model:ir.model,name:event.model_event_type @@ -347,12 +347,12 @@ msgstr "Bekreft" #. module: event #: view:event.event:0 msgid "Organized by" -msgstr "" +msgstr "Organisert av." #. module: event #: view:event.event:0 msgid "Register with this event" -msgstr "" +msgstr "Registrer deg hos dette arrangementet." #. module: event #: help:event.type,default_email_registration:0 @@ -364,13 +364,13 @@ msgstr "" #. module: event #: view:event.event:0 msgid "Only" -msgstr "" +msgstr "Bare." #. module: event #: field:event.event,message_follower_ids:0 #: field:event.registration,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Følgere." #. module: event #: view:event.event:0 @@ -383,7 +383,7 @@ msgstr "Plassering" #: view:event.registration:0 #: field:event.registration,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Uleste meldinger." #. module: event #: view:event.registration:0 @@ -405,12 +405,12 @@ msgstr "E-post" #: code:addons/event/event.py:367 #, python-format msgid "New registration confirmed: %s." -msgstr "" +msgstr "Ny registrering bekreftet: %s." #. module: event #: view:event.event:0 msgid "Upcoming" -msgstr "" +msgstr "Kommende." #. module: event #: field:event.registration,create_date:0 @@ -421,7 +421,7 @@ msgstr "Opprettelsesdato" #: view:report.event.registration:0 #: field:report.event.registration,user_id:0 msgid "Event Responsible" -msgstr "" +msgstr "Ansvarlig for arrangementet." #. module: event #: view:event.event:0 @@ -438,7 +438,7 @@ msgstr "Juli" #. module: event #: field:event.event,reply_to:0 msgid "Reply-To Email" -msgstr "" +msgstr "Svar til e-post." #. module: event #: view:event.registration:0 @@ -448,7 +448,7 @@ msgstr "Bekreftede registreringer" #. module: event #: view:event.event:0 msgid "Starting Date" -msgstr "" +msgstr "Startdato." #. module: event #: view:event.event:0 @@ -474,7 +474,7 @@ msgstr "Foredragsholder som skal gi tale på arrangementet." #: code:addons/event/event.py:457 #, python-format msgid "Registration has been created." -msgstr "" +msgstr "Registreringen har blittOpprettet." #. module: event #: view:event.event:0 @@ -485,12 +485,12 @@ msgstr "Kanseller arrangement" #: code:addons/event/event.py:398 #, python-format msgid "State set to Done" -msgstr "" +msgstr "Stat er satt som ferdig." #. module: event #: model:ir.actions.server,name:event.actions_server_event_registration_read msgid "Event registration : Mark read" -msgstr "" +msgstr "Arrangement registrering : Merk som lest." #. module: event #: model:ir.actions.act_window,name:event.act_event_reg @@ -501,7 +501,7 @@ msgstr "Hendelser Påfyllings Status" #. module: event #: view:event.event:0 msgid "Event Category" -msgstr "" +msgstr "Arrangement kategori." #. module: event #: field:event.event,register_prospect:0 @@ -511,13 +511,13 @@ msgstr "Ubekreftede registreringer" #. module: event #: model:ir.actions.client,name:event.action_client_event_menu msgid "Open Event Menu" -msgstr "" +msgstr "Åpne arrangement meny." #. module: event #: view:report.event.registration:0 #: field:report.event.registration,event_state:0 msgid "Event State" -msgstr "" +msgstr "Arrangement stat." #. module: event #: field:event.registration,log_ids:0 @@ -548,7 +548,7 @@ msgstr " # Antall foreløpige registreringer" #: field:event.event,email_registration_id:0 #: field:event.type,default_email_registration:0 msgid "Registration Confirmation Email" -msgstr "" +msgstr "Registrerings bekreftelse epost." #. module: event #: view:report.event.registration:0 @@ -559,12 +559,12 @@ msgstr "Måned" #. module: event #: field:event.registration,date_closed:0 msgid "Attended Date" -msgstr "" +msgstr "Deltatt dato." #. module: event #: view:event.event:0 msgid "Finish Event" -msgstr "" +msgstr "Fullfør Arrangementet." #. module: event #: view:event.registration:0 @@ -574,7 +574,7 @@ msgstr "Registreringer i ubekreftet staten." #. module: event #: view:event.event:0 msgid "Event Description" -msgstr "" +msgstr "Beskrivelse av Arrangementet." #. module: event #: field:event.event,date_begin:0 @@ -584,13 +584,13 @@ msgstr "Startdato" #. module: event #: view:event.confirm:0 msgid "or" -msgstr "" +msgstr "Eller." #. module: event #: code:addons/event/event.py:315 #, python-format msgid "Event has been done." -msgstr "" +msgstr "Arrangementet har blittferdig." #. module: event #: help:res.partner,speaker:0 @@ -601,7 +601,7 @@ msgstr "" #: code:addons/event/event.py:116 #, python-format msgid "No Tickets Available!" -msgstr "" +msgstr "Ingen billetter tilgjengelig!" #. module: event #: help:event.event,state:0 @@ -639,7 +639,7 @@ msgstr "" #: code:addons/event/event.py:462 #, python-format msgid "Registration has been set as draft." -msgstr "" +msgstr "Registreringen er angitt som utkast ." #. module: event #: code:addons/event/event.py:108 @@ -660,7 +660,7 @@ msgstr "" #. module: event #: view:board.board:0 msgid "Events Filling By Status" -msgstr "" +msgstr "arrangement fylling av status." #. module: event #: selection:report.event.registration,event_state:0 @@ -682,7 +682,7 @@ msgstr "Hendelser som er i ny staten." #: code:addons/event/event.py:404 #, python-format msgid "State set to Cancel" -msgstr "" +msgstr "Stat satt til kanseller." #. module: event #: view:event.event:0 @@ -703,12 +703,12 @@ msgstr "Arrangementer" #: view:event.registration:0 #: field:event.registration,state:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: event #: field:event.event,city:0 msgid "city" -msgstr "" +msgstr "By." #. module: event #: selection:report.event.registration,month:0 @@ -718,7 +718,7 @@ msgstr "August" #. module: event #: field:event.event,zip:0 msgid "zip" -msgstr "" +msgstr "Zip." #. module: event #: field:res.partner,event_ids:0 @@ -729,7 +729,7 @@ msgstr "ukjent" #. module: event #: field:event.event,street2:0 msgid "Street2" -msgstr "" +msgstr "Gate2." #. module: event #: selection:report.event.registration,month:0 @@ -748,12 +748,12 @@ msgstr "" #: help:event.event,message_ids:0 #: help:event.registration,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Meldinger og kommunikasjon historie." #. module: event #: field:event.registration,phone:0 msgid "Phone" -msgstr "" +msgstr "Telefon." #. module: event #: model:email.template,body_html:event.confirmation_event @@ -773,13 +773,13 @@ msgstr "" #: field:event.event,message_is_follower:0 #: field:event.registration,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Er en følger." #. module: event #: field:event.registration,user_id:0 #: model:res.groups,name:event.group_event_user msgid "User" -msgstr "" +msgstr "Bruker." #. module: event #: view:event.confirm:0 @@ -793,7 +793,7 @@ msgstr "" #. module: event #: view:event.event:0 msgid "(confirmed:" -msgstr "" +msgstr "(bekreftet:" #. module: event #: view:event.registration:0 @@ -804,7 +804,7 @@ msgstr "Mine registreringer" #: code:addons/event/event.py:310 #, python-format msgid "Event has been set to draft." -msgstr "" +msgstr "Arrangementet har blitt satt tilkladd." #. module: event #: view:report.event.registration:0 @@ -817,7 +817,7 @@ msgstr "Utvidede filtre ..." #: field:event.registration,message_comment_ids:0 #: help:event.registration,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Kommentarer og E-poster." #. module: event #: selection:report.event.registration,month:0 @@ -827,7 +827,7 @@ msgstr "Oktober" #. module: event #: model:ir.actions.server,name:event.actions_server_event_registration_unread msgid "Event registration : Mark unread" -msgstr "" +msgstr "Arrangementregistrering: Merk som ulest." #. module: event #: view:event.event:0 @@ -856,7 +856,7 @@ msgstr "Dato" #. module: event #: view:event.event:0 msgid "Email Configuration" -msgstr "" +msgstr "E-post konfigurasjon." #. module: event #: field:event.type,default_registration_min:0 @@ -867,7 +867,7 @@ msgstr "" #: code:addons/event/event.py:368 #, python-format msgid "Registration confirmed." -msgstr "" +msgstr "Registrering bekreftet." #. module: event #: field:event.event,address_id:0 diff --git a/addons/event_moodle/i18n/hr.po b/addons/event_moodle/i18n/hr.po new file mode 100644 index 00000000000..2fb9065e184 --- /dev/null +++ b/addons/event_moodle/i18n/hr.po @@ -0,0 +1,185 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 20:12+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Connection with username and password" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_moodle_config_wiz +msgid "event.moodle.config.wiz" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,server_moodle:0 +msgid "" +"URL where you have your moodle server. For exemple: 'http://127.0.0.1' or " +"'http://localhost'" +msgstr "" + +#. module: event_moodle +#: field:event.registration,moodle_user_password:0 +msgid "Password for Moodle User" +msgstr "Lozinka za Moodle korisnika" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_password:0 +msgid "Moodle Password" +msgstr "Moodle lozinka" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:137 +#, python-format +msgid "Your email '%s' is wrong." +msgstr "Vaša email adresa '%s' nije ispravna." + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Connection with a Token" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "" +"The easiest way to connect OpenERP with a moodle server is to create a " +"'token' in Moodle. It will be used to authenticate OpenERP as a trustable " +"application." +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,url:0 +msgid "URL to Moodle Server" +msgstr "URL Moodle poslužitelja" + +#. module: event_moodle +#: help:event.moodle.config.wiz,url:0 +msgid "The url that will be used for the connection with moodle in xml-rpc" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_registration +msgid "Event Registration" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "" +"Another approach is to create a user for OpenERP in Moodle. If you do so, " +"make sure that this user has appropriate access rights." +msgstr "" + +#. module: event_moodle +#: field:event.registration,moodle_uid:0 +msgid "Moodle User ID" +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,server_moodle:0 +msgid "Moodle Server" +msgstr "Moodle poslužitelj" + +#. module: event_moodle +#: field:event.event,moodle_id:0 +msgid "Moodle ID" +msgstr "Moodle ID" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Server" +msgstr "Poslužitelj" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:57 +#: code:addons/event_moodle/event_moodle.py:105 +#: code:addons/event_moodle/event_moodle.py:137 +#, python-format +msgid "Error!" +msgstr "Greška!" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:105 +#, python-format +msgid "You must configure your moodle connection." +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_username:0 +#: field:event.registration,moodle_username:0 +msgid "Moodle Username" +msgstr "Moodle korisničko ime" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +#: model:ir.actions.act_window,name:event_moodle.configure_moodle +msgid "Configure Moodle" +msgstr "Moodle postavke" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_token:0 +msgid "Moodle Token" +msgstr "Moodle token" + +#. module: event_moodle +#: help:event.moodle.config.wiz,moodle_username:0 +msgid "" +"You can also connect with your username that you define when you create a " +"token" +msgstr "" + +#. module: event_moodle +#: help:event.event,moodle_id:0 +msgid "The identifier of this event in Moodle" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,moodle_token:0 +msgid "Put your token that you created in your moodle server" +msgstr "" + +#. module: event_moodle +#: model:ir.ui.menu,name:event_moodle.wizard_moodle +msgid "Moodle Configuration" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "or" +msgstr "ili" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:57 +#, python-format +msgid "First configure your moodle connection." +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Apply" +msgstr "Primjeni" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Cancel" +msgstr "Odustani" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_event +msgid "Event" +msgstr "Event" diff --git a/addons/fleet/i18n/hr.po b/addons/fleet/i18n/hr.po new file mode 100644 index 00000000000..4bccf15b5bf --- /dev/null +++ b/addons/fleet/i18n/hr.po @@ -0,0 +1,1895 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-09 20:20+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: fleet +#: selection:fleet.vehicle,fuel_type:0 +msgid "Hybrid" +msgstr "Hibridno" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_compact +msgid "Compact" +msgstr "Kompaktno" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_1 +msgid "A/C Compressor Replacement" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,vin_sn:0 +msgid "Unique number written on the vehicle motor (VIN/SN number)" +msgstr "Broj šasije/motora (VIN/SN number)" + +#. module: fleet +#: selection:fleet.service.type,category:0 +#: view:fleet.vehicle.log.contract:0 +#: view:fleet.vehicle.log.services:0 +msgid "Service" +msgstr "Servis" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,cost_frequency:0 +msgid "Monthly" +msgstr "Mjesečno" + +#. module: fleet +#: code:addons/fleet/fleet.py:62 +#, python-format +msgid "Unknown" +msgstr "Nepoznato" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_20 +msgid "Engine/Drive Belt(s) Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Vehicle costs" +msgstr "Troškovi vozila" + +#. module: fleet +#: selection:fleet.vehicle,fuel_type:0 +msgid "Diesel" +msgstr "Diesel" + +#. module: fleet +#: code:addons/fleet/fleet.py:421 +#, python-format +msgid "License Plate: from '%s' to '%s'" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_38 +msgid "Resurface Rotors" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Group By..." +msgstr "Grupiraj po..." + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_32 +msgid "Oil Pump Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_18 +msgid "Engine Belt Inspection" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,cost_frequency:0 +msgid "No" +msgstr "Ne" + +#. module: fleet +#: help:fleet.vehicle,power:0 +msgid "Power in kW of the vehicle" +msgstr "Snaga vozila u kW" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_2 +msgid "Depreciation and Interests" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,insurer_id:0 +#: field:fleet.vehicle.log.fuel,vendor_id:0 +#: field:fleet.vehicle.log.services,vendor_id:0 +msgid "Supplier" +msgstr "Dobavljač" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_35 +msgid "Power Steering Hose Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Odometer details" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "Has Alert(s)" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.fuel,liter:0 +msgid "Liter" +msgstr "Litra" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +#: field:fleet.vehicle.cost,parent_id:0 +msgid "Parent" +msgstr "Nadređeni" + +#. module: fleet +#: view:board.board:0 +msgid "Fuel Costs" +msgstr "Troškovi goriva" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_9 +msgid "Battery Inspection" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,company_id:0 +msgid "Company" +msgstr "Organizacija" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Invoice Date" +msgstr "Datum računa" + +#. module: fleet +#: view:fleet.vehicle.log.fuel:0 +msgid "Refueling Details" +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:655 +#, python-format +msgid "%s contract(s) need(s) to be renewed and/or closed!" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Indicative Costs" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_16 +msgid "Charging System Diagnosis" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,car_value:0 +msgid "Value of the bought vehicle" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_44 +msgid "Tie Rod End Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_24 +msgid "Head Gasket(s) Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +#: selection:fleet.vehicle.cost,cost_type:0 +msgid "Services" +msgstr "Servisi" + +#. module: fleet +#: help:fleet.vehicle,odometer:0 +#: help:fleet.vehicle.cost,odometer:0 +#: help:fleet.vehicle.cost,odometer_id:0 +msgid "Odometer measure of the vehicle at the moment of this log" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +#: field:fleet.vehicle.log.contract,notes:0 +msgid "Terms and Conditions" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_kanban +msgid "Vehicles with alerts" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_costs_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_costs_menu +msgid "Vehicle Costs" +msgstr "Troškovi vozila" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Total Cost" +msgstr "Ukupni trošak" + +#. module: fleet +#: selection:fleet.service.type,category:0 +msgid "Both" +msgstr "Oboje" + +#. module: fleet +#: field:fleet.vehicle.log.contract,cost_id:0 +#: field:fleet.vehicle.log.fuel,cost_id:0 +#: field:fleet.vehicle.log.services,cost_id:0 +msgid "Automatically created field to link to parent fleet.vehicle.cost" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Terminate Contract" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.cost,parent_id:0 +msgid "Parent cost to this current cost" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.log.contract,cost_frequency:0 +msgid "Frequency of the recuring cost" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_1 +msgid "Calculation Benefit In Kind" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.log.contract,expiration_date:0 +msgid "" +"Date when the coverage of the contract expirates (by default, one year after " +"begin date)" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.fuel:0 +#: field:fleet.vehicle.log.fuel,notes:0 +#: view:fleet.vehicle.log.services:0 +#: field:fleet.vehicle.log.services,notes:0 +msgid "Notes" +msgstr "Bilješke" + +#. module: fleet +#: code:addons/fleet/fleet.py:47 +#, python-format +msgid "Operation not allowed!" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,message_ids:0 +msgid "Messages" +msgstr "Poruke" + +#. module: fleet +#: help:fleet.vehicle.cost,vehicle_id:0 +msgid "Vehicle concerned by this log" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,cost_amount:0 +#: field:fleet.vehicle.log.fuel,cost_amount:0 +#: field:fleet.vehicle.log.services,cost_amount:0 +msgid "Amount" +msgstr "Iznos" + +#. module: fleet +#: field:fleet.vehicle,message_unread:0 +msgid "Unread Messages" +msgstr "Nepročitane poruke" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_6 +msgid "Air Filter Replacement" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_tag +msgid "fleet.vehicle.tag" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "show the services logs for this vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,contract_renewal_name:0 +msgid "Name of contract to renew soon" +msgstr "" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_senior +msgid "Senior" +msgstr "Stariji" + +#. module: fleet +#: help:fleet.vehicle.log.contract,state:0 +msgid "Choose wheter the contract is still valid or not" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle,transmission:0 +msgid "Automatic" +msgstr "Automatski mjenjač" + +#. module: fleet +#: help:fleet.vehicle,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:414 +#, python-format +msgid "Driver: from '%s' to '%s'" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "and" +msgstr "i" + +#. module: fleet +#: field:fleet.vehicle.model.brand,image_medium:0 +msgid "Medium-sized photo" +msgstr "Fotografija srednje veličine" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_34 +msgid "Oxygen Sensor Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.services:0 +msgid "Service Type" +msgstr "Tip usluge" + +#. module: fleet +#: help:fleet.vehicle,transmission:0 +msgid "Transmission Used by the vehicle" +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:726 +#: view:fleet.vehicle.log.contract:0 +#: model:ir.actions.act_window,name:fleet.act_renew_contract +#, python-format +msgid "Renew Contract" +msgstr "Obnovi ugovor" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "show the odometer logs for this vehicle" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,odometer_unit:0 +msgid "Unit of the odometer " +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.services:0 +msgid "Services Costs Per Month" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Effective Costs" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_8 +msgid "Repair and maintenance" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.log.contract,purchaser_id:0 +msgid "Person to which the contract is signed for" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_log_contract_act +msgid "" +"

    \n" +" Click to create a new contract. \n" +"

    \n" +" Manage all your contracts (leasing, insurances, etc.) with\n" +" their related services, costs. OpenERP will automatically " +"warn\n" +" you when some contracts have to be renewed.\n" +"

    \n" +" Each contract (e.g.: leasing) may include several services\n" +" (reparation, insurances, periodic maintenance).\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_service_type +msgid "Type of services available on a vehicle" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_service_types_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_service_types_menu +msgid "Service Types" +msgstr "" + +#. module: fleet +#: view:board.board:0 +msgid "Contracts Costs" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_log_services_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_log_services_menu +msgid "Vehicles Services Logs" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_log_fuel_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_log_fuel_menu +msgid "Vehicles Fuel Logs" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.model.brand:0 +msgid "" +"$('.oe_picture').load(function() { if($(this).width() > $(this).height()) { " +"$(this).addClass('oe_employee_picture_wide') } });" +msgstr "" + +#. module: fleet +#: view:board.board:0 +msgid "Vehicles With Alerts" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_costs_act +msgid "" +"

    \n" +" Click to create a new cost.\n" +"

    \n" +" OpenERP helps you managing the costs for your different\n" +" vehicles. Costs are created automatically from services,\n" +" contracts (fixed or recurring) and fuel logs.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "show the fuel logs for this vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,purchaser_id:0 +msgid "Contractor" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,license_plate:0 +msgid "License Plate" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,cost_frequency:0 +msgid "Recurring Cost Frequency" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.fuel,inv_ref:0 +#: field:fleet.vehicle.log.services,inv_ref:0 +msgid "Invoice Reference" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,location:0 +msgid "Location" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Costs Per Month" +msgstr "" + +#. module: fleet +#: field:fleet.contract.state,name:0 +msgid "Contract Status" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,contract_renewal_total:0 +msgid "Total of contracts due or overdue minus one" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,cost_subtype:0 +msgid "Type" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,contract_renewal_overdue:0 +msgid "Has Contracts Overdued" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,amount:0 +msgid "Total Price" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_27 +msgid "Heater Core Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_14 +msgid "Car Wash" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,driver:0 +msgid "Driver of the vehicle" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "other(s)" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_refueling +msgid "Refueling" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_5 +msgid "A/C Recharge" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_log_fuel +msgid "Fuel log for vehicles" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "Engine Options" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.fuel:0 +msgid "Fuel Costs Per Month" +msgstr "" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_sedan +msgid "Sedan" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,seats:0 +msgid "Seats Number" +msgstr "" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_convertible +msgid "Convertible" +msgstr "" + +#. module: fleet +#: model:ir.ui.menu,name:fleet.fleet_configuration +msgid "Configuration" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +#: field:fleet.vehicle.log.contract,sum_cost:0 +msgid "Indicative Costs Total" +msgstr "" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_junior +msgid "Junior" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,model_id:0 +msgid "Model of the vehicle" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_state_act +msgid "" +"

    \n" +" Click to create a vehicule status.\n" +"

    \n" +" You can customize available status to track the evolution " +"of\n" +" each vehicule. Example: Active, Being Repaired, Sold.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +#: field:fleet.vehicle,log_fuel:0 +#: view:fleet.vehicle.log.fuel:0 +msgid "Fuel Logs" +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:409 +#: code:addons/fleet/fleet.py:413 +#: code:addons/fleet/fleet.py:417 +#: code:addons/fleet/fleet.py:420 +#, python-format +msgid "None" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.action_fleet_reporting_costs_non_effective +#: model:ir.ui.menu,name:fleet.menu_fleet_reporting_indicative_costs +msgid "Indicative Costs Analysis" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_12 +msgid "Brake Inspection" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,state:0 +msgid "Current state of the vehicle" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle,transmission:0 +msgid "Manual" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_52 +msgid "Wheel Bearing Replacement" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.cost,cost_subtype:0 +msgid "Cost type purchased with this cost" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle,fuel_type:0 +msgid "Gasoline" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_model_brand_act +msgid "" +"

    \n" +" Click to create a new brand.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,start_date:0 +msgid "Contract Start Date" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,odometer_unit:0 +msgid "Odometer Unit" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_30 +msgid "Intake Manifold Gasket Replacement" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,cost_frequency:0 +msgid "Daily" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_6 +msgid "Snow tires" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.cost,date:0 +msgid "Date when the cost has been executed" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.state,sequence:0 +msgid "Order" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Vehicles costs" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_log_services +msgid "Services for vehicles" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Indicative Cost" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_26 +msgid "Heater Control Valve Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "" +"Create a new contract automatically with all the same informations except " +"for the date that will start at the end of current contract" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,state:0 +msgid "Terminated" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_cost +msgid "Cost related to a vehicle" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_33 +msgid "Other Maintenance" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.model,brand:0 +#: view:fleet.vehicle.model.brand:0 +msgid "Model Brand" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.model.brand,image_small:0 +msgid "Smal-sized photo" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,state:0 +#: view:fleet.vehicle.state:0 +msgid "State" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,cost_generated:0 +msgid "Recurring Cost Amount" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_49 +msgid "Transmission Replacement" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_log_fuel_act +msgid "" +"

    \n" +" Click to create a new fuel log. \n" +"

    \n" +" Here you can add refuelling entries for all vehicles. You " +"can\n" +" also filter logs of a particular vehicle using the search\n" +" field.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_11 +msgid "Brake Caliper Replacement" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,odometer:0 +msgid "Last Odometer" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_model_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_model_menu +msgid "Vehicle Model" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,doors:0 +msgid "Doors Number" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,acquisition_date:0 +msgid "Date when the vehicle has been bought" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.model:0 +msgid "Models" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "amount" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,fuel_type:0 +msgid "Fuel Used by the vehicle" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Set Contract In Progress" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,odometer_unit:0 +#: field:fleet.vehicle.odometer,unit:0 +msgid "Unit" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,horsepower:0 +msgid "Horsepower" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,image:0 +#: field:fleet.vehicle,image_medium:0 +#: field:fleet.vehicle,image_small:0 +#: field:fleet.vehicle.model,image:0 +#: field:fleet.vehicle.model,image_medium:0 +#: field:fleet.vehicle.model,image_small:0 +#: field:fleet.vehicle.model.brand,image:0 +msgid "Logo" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,horsepower_tax:0 +msgid "Horsepower Taxation" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,log_services:0 +#: view:fleet.vehicle.log.services:0 +msgid "Services Logs" +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:47 +#, python-format +msgid "Emptying the odometer value of a vehicle is not allowed." +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_43 +msgid "Thermostat Replacement" +msgstr "" + +#. module: fleet +#: field:fleet.service.type,category:0 +msgid "Category" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_log_fuel_graph +msgid "Fuel Costs by Month" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.model.brand,image:0 +msgid "" +"This field holds the image used as logo for the brand, limited to " +"1024x1024px." +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_11 +msgid "Management Fee" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "All vehicles" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.fuel:0 +#: view:fleet.vehicle.log.services:0 +msgid "Additional Details" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_log_services_graph +msgid "Services Costs by Month" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_9 +msgid "Assistance" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.fuel,price_per_liter:0 +msgid "Price Per Liter" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_17 +msgid "Door Window Motor/Regulator Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_46 +msgid "Tire Service" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_8 +msgid "Ball Joint Replacement" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,fuel_type:0 +msgid "Fuel Type" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_22 +msgid "Fuel Injector Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_50 +msgid "Water Pump Replacement" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,location:0 +msgid "Location of the vehicle (garage, ...)" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_28 +msgid "Heater Hose Replacement" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,state:0 +msgid "Status" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_40 +msgid "Rotor Replacement" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.model,brand:0 +msgid "Brand of the vehicle" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.log.contract,start_date:0 +msgid "Date when the coverage of the contract begins" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle,fuel_type:0 +msgid "Electric" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,tag_ids:0 +msgid "Tags" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +#: field:fleet.vehicle,log_contracts:0 +msgid "Contracts" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_13 +msgid "Brake Pad(s) Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.fuel:0 +#: view:fleet.vehicle.log.services:0 +msgid "Odometer Details" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,driver:0 +msgid "Driver" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.model.brand,image_small:0 +msgid "" +"Small-sized photo of the brand. It is automatically resized as a 64x64px " +"image, with aspect ratio preserved. Use this field anywhere a small image is " +"required." +msgstr "" + +#. module: fleet +#: view:board.board:0 +msgid "Fleet Dashboard" +msgstr "" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_break +msgid "Break" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_contract_omnium +msgid "Omnium" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.services:0 +msgid "Services Details" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_15 +msgid "Residual value (Excluding VAT)" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_7 +msgid "Alternator Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_3 +msgid "A/C Diagnosis" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_23 +msgid "Fuel Pump Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Activation Cost" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Cost Type" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_4 +msgid "A/C Evaporator Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "show all the costs for this vehicle" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.odometer:0 +msgid "Odometer Values Per Month" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,message_comment_ids:0 +#: help:fleet.vehicle,message_comment_ids:0 +msgid "Comments and emails" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_act +msgid "" +"

    \n" +" Click to create a new vehicle. \n" +"

    \n" +" You will be able to manage your fleet by keeping track of " +"the\n" +" contracts, services, fixed and recurring costs, odometers " +"and\n" +" fuel logs associated to each vehicle.\n" +"

    \n" +" OpenERP will warn you when services or contract have to be\n" +" renewed.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_13 +msgid "Entry into service tax" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,expiration_date:0 +msgid "Contract Expiration Date" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Cost Subtype" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.open_board_fleet +msgid "" +"
    \n" +"

    \n" +" Fleet dashboard is empty.\n" +"

    \n" +" To add your first report into this dashboard, go to any\n" +" menu, switch to list or graph view, and click 'Add " +"to\n" +" Dashboard' in the extended search options.\n" +"

    \n" +" You can filter and group data before inserting into the\n" +" dashboard using the search options.\n" +"

    \n" +"
    \n" +" " +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_12 +msgid "Rent (Excluding VAT)" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle,odometer_unit:0 +msgid "Kilometers" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.fuel:0 +msgid "Vehicle Details" +msgstr "" + +#. module: fleet +#: selection:fleet.service.type,category:0 +#: field:fleet.vehicle.cost,contract_id:0 +#: selection:fleet.vehicle.cost,cost_type:0 +msgid "Contract" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_model_brand_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_model_brand_menu +msgid "Model brand of Vehicle" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_10 +msgid "Battery Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +#: field:fleet.vehicle.cost,date:0 +#: field:fleet.vehicle.odometer,date:0 +msgid "Date" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_menu +#: model:ir.ui.menu,name:fleet.fleet_vehicles +msgid "Vehicles" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle,odometer_unit:0 +msgid "Miles" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.log.contract,cost_generated:0 +msgid "" +"Costs paid at regular intervals, depending on the cost frequency. If the " +"cost frequency is set to unique, the cost will be logged at the start date" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_17 +msgid "Emissions" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.action_fleet_reporting_costs +#: model:ir.actions.act_window,help:fleet.action_fleet_reporting_costs_non_effective +msgid "" +"

    \n" +" OpenERP helps you managing the costs for your different vehicles\n" +" Costs are generally created from services and contract and appears " +"here.\n" +"

    \n" +"

    \n" +" Thanks to the different filters, OpenERP can only print the " +"effective\n" +" costs, sort them by type and by vehicle.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,car_value:0 +msgid "Car Value" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.open_board_fleet +#: model:ir.ui.menu,name:fleet.menu_fleet_dashboard +#: model:ir.ui.menu,name:fleet.menu_fleet_reporting +#: model:ir.ui.menu,name:fleet.menu_root +msgid "Fleet" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_14 +msgid "Total expenses (Excluding VAT)" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,odometer_id:0 +msgid "Odometer" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_45 +msgid "Tire Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.service.type:0 +msgid "Service types" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.fuel,purchaser_id:0 +#: field:fleet.vehicle.log.services,purchaser_id:0 +msgid "Purchaser" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_3 +msgid "Tax roll" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.model:0 +#: field:fleet.vehicle.model,vendors:0 +msgid "Vendors" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_contract_leasing +msgid "Leasing" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.model.brand,image_medium:0 +msgid "" +"Medium-sized logo of the brand. It is automatically resized as a 128x128px " +"image, with aspect ratio preserved. Use this field in form views or some " +"kanban views." +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,cost_frequency:0 +msgid "Weekly" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +#: view:fleet.vehicle.odometer:0 +msgid "Odometer Logs" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,acquisition_date:0 +msgid "Acquisition Date" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_odometer +msgid "Odometer log for a vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,cost_type:0 +msgid "Category of the cost" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_5 +#: model:fleet.service.type,name:fleet.type_service_service_7 +msgid "Summer tires" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,contract_renewal_due_soon:0 +msgid "Has Contracts to renew" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_31 +msgid "Oil Change" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,state:0 +msgid "To Close" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_model_brand +msgid "Brand model of the vehicle" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_51 +msgid "Wheel Alignment" +msgstr "" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_purchased +msgid "Purchased" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_odometer_act +msgid "" +"

    \n" +" Here you can add various odometer entries for all vehicles.\n" +" You can also show odometer value for a particular vehicle " +"using\n" +" the search field.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_model_act +msgid "" +"

    \n" +" Click to create a new model.\n" +"

    \n" +" You can define several models (e.g. A3, A4) for each brand " +"(Audi).\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "General Properties" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_21 +msgid "Exhaust Manifold Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_47 +msgid "Transmission Filter Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_10 +msgid "Replacement Vehicle" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,state:0 +msgid "In Progress" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.log.contract,cost_frequency:0 +msgid "Yearly" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_state_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_state_menu +msgid "States of Vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.model,modelname:0 +msgid "Model name" +msgstr "" + +#. module: fleet +#: view:board.board:0 +#: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_costs_graph +msgid "Costs by Month" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_18 +msgid "Touring Assistance" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,power:0 +msgid "Power (kW)" +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:418 +#, python-format +msgid "State: from '%s' to '%s'" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_2 +msgid "A/C Condenser Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_19 +msgid "Engine Coolant Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +msgid "Cost Details" +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:410 +#, python-format +msgid "Model: from '%s' to '%s'" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.cost,cost_type:0 +msgid "Other" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Contract details" +msgstr "" + +#. module: fleet +#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_leasing +msgid "Employee Car" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,auto_generated:0 +msgid "Automatically Generated" +msgstr "" + +#. module: fleet +#: selection:fleet.vehicle.cost,cost_type:0 +msgid "Fuel" +msgstr "" + +#. module: fleet +#: sql_constraint:fleet.vehicle.state:0 +msgid "State name already exists" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_37 +msgid "Radiator Repair" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_log_contract +msgid "Contract information on a vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,days_left:0 +msgid "Warning Date" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_19 +msgid "Residual value in %" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "Additional Properties" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_state +msgid "fleet.vehicle.state" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Contract Costs Per Month" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_log_contract_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_log_contract_menu +msgid "Vehicles Contracts" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_48 +msgid "Transmission Fluid Replacement" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.model.brand,name:0 +msgid "Brand Name" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_36 +msgid "Power Steering Pump Replacement" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.cost,contract_id:0 +msgid "Contract attached to this cost" +msgstr "" + +#. module: fleet +#: code:addons/fleet/fleet.py:397 +#, python-format +msgid "Vehicle %s has been added to the fleet!" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +#: view:fleet.vehicle.log.fuel:0 +#: view:fleet.vehicle.log.services:0 +msgid "Price" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +#: view:fleet.vehicle.cost:0 +#: field:fleet.vehicle.cost,vehicle_id:0 +#: field:fleet.vehicle.odometer,vehicle_id:0 +msgid "Vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,cost_ids:0 +#: view:fleet.vehicle.log.contract:0 +#: view:fleet.vehicle.log.services:0 +msgid "Included Services" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.action_fleet_vehicle_kanban +msgid "" +"

    \n" +" Here are displayed vehicles for which one or more contracts need " +"to be renewed. If you see this message, then there is no contracts to " +"renew.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_15 +msgid "Catalytic Converter Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_25 +msgid "Heater Blower Motor Replacement" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.fleet_vehicle_odometer_act +#: model:ir.ui.menu,name:fleet.fleet_vehicle_odometer_menu +msgid "Vehicles Odometer" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.log.contract,notes:0 +msgid "Write here all supplementary informations relative to this contract" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_29 +msgid "Ignition Coil Replacement" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_service_16 +msgid "Options" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_contract_repairing +msgid "Repairing" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.action_fleet_reporting_costs +#: model:ir.ui.menu,name:fleet.menu_fleet_reporting_costs +msgid "Costs Analysis" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.log.contract,ins_ref:0 +msgid "Contract Reference" +msgstr "" + +#. module: fleet +#: field:fleet.service.type,name:0 +#: field:fleet.vehicle,name:0 +#: field:fleet.vehicle.cost,name:0 +#: field:fleet.vehicle.log.contract,name:0 +#: field:fleet.vehicle.model,name:0 +#: field:fleet.vehicle.odometer,name:0 +#: field:fleet.vehicle.state,name:0 +#: field:fleet.vehicle.tag,name:0 +msgid "Name" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,doors:0 +msgid "Number of doors of the vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,transmission:0 +msgid "Transmission" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,vin_sn:0 +msgid "Chassis Number" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,color:0 +msgid "Color of the vehicle" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_log_services_act +msgid "" +"

    \n" +" Click to create a new service entry. \n" +"

    \n" +" OpenERP helps you keeping track of all the services done\n" +" on your vehicle. Services can be of many type: occasional\n" +" repair, fixed maintenance, etc.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,co2:0 +msgid "CO2 Emissions" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +msgid "Contract logs" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "Costs" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_log_contract_graph +msgid "Contracts Costs by Month" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,model_id:0 +#: view:fleet.vehicle.model:0 +msgid "Model" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_41 +msgid "Spark Plug Replacement" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle +msgid "Information on a vehicle" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,co2:0 +msgid "CO2 emissions of the vehicle" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_53 +msgid "Windshield Wiper(s) Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.contract:0 +#: field:fleet.vehicle.log.contract,generated_cost_ids:0 +msgid "Generated Costs" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle,color:0 +msgid "Color" +msgstr "" + +#. module: fleet +#: model:ir.actions.act_window,help:fleet.fleet_vehicle_service_types_act +msgid "" +"

    \n" +" Click to create a new type of service.\n" +"

    \n" +" Each service can used in contracts, as a standalone service " +"or both.\n" +"

    \n" +" " +msgstr "" + +#. module: fleet +#: view:board.board:0 +msgid "Services Costs" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_vehicle_model +msgid "Model of a vehicle" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,seats:0 +msgid "Number of seats of the vehicle" +msgstr "" + +#. module: fleet +#: field:fleet.vehicle.cost,odometer:0 +#: field:fleet.vehicle.odometer,value:0 +msgid "Odometer Value" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.services:0 +msgid "Cost" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_39 +msgid "Rotate Tires" +msgstr "" + +#. module: fleet +#: model:fleet.service.type,name:fleet.type_service_42 +msgid "Starter Replacement" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.cost:0 +#: field:fleet.vehicle.cost,year:0 +msgid "Year" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle,license_plate:0 +msgid "License plate number of the vehicle (ie: plate number for a car)" +msgstr "" + +#. module: fleet +#: model:ir.model,name:fleet.model_fleet_contract_state +msgid "Contains the different possible status of a leasing contract" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle:0 +msgid "show the contract for this vehicle" +msgstr "" + +#. module: fleet +#: view:fleet.vehicle.log.services:0 +msgid "Total" +msgstr "" + +#. module: fleet +#: help:fleet.service.type,category:0 +msgid "" +"Choose wheter the service refer to contracts, vehicle services or both" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.cost,cost_type:0 +msgid "For internal purpose only" +msgstr "" + +#. module: fleet +#: help:fleet.vehicle.state,sequence:0 +msgid "Used to order the note stages" +msgstr "" diff --git a/addons/fleet/i18n/nl.po b/addons/fleet/i18n/nl.po index 36f6916a39d..7409b86c910 100644 --- a/addons/fleet/i18n/nl.po +++ b/addons/fleet/i18n/nl.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-12-05 17:59+0000\n" +"PO-Revision-Date: 2012-12-09 18:21+0000\n" "Last-Translator: Leen Sonneveld \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-06 04:41+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: fleet @@ -565,7 +565,7 @@ msgstr "" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_14 msgid "Car Wash" -msgstr "" +msgstr "Car Wash" #. module: fleet #: help:fleet.vehicle,driver:0 @@ -588,6 +588,9 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Bevat de samenvatting van de chatter (aantal berichten,...). Deze " +"samenvatting is direct in html formaat om zo in de kanban weergave te worden " +"ingevoegd." #. module: fleet #: model:fleet.service.type,name:fleet.type_service_5 @@ -900,7 +903,7 @@ msgstr "" #: field:fleet.vehicle.cost,odometer_unit:0 #: field:fleet.vehicle.odometer,unit:0 msgid "Unit" -msgstr "" +msgstr "Eenheid" #. module: fleet #: field:fleet.vehicle,message_is_follower:0 @@ -1221,7 +1224,7 @@ msgstr "" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_12 msgid "Rent (Excluding VAT)" -msgstr "" +msgstr "Huur (excl. BTW)" #. module: fleet #: selection:fleet.vehicle,odometer_unit:0 @@ -1231,7 +1234,7 @@ msgstr "Kilometers" #. module: fleet #: view:fleet.vehicle.log.fuel:0 msgid "Vehicle Details" -msgstr "" +msgstr "Voertuig details" #. module: fleet #: selection:fleet.service.type,category:0 @@ -1244,7 +1247,7 @@ msgstr "Contract" #: model:ir.actions.act_window,name:fleet.fleet_vehicle_model_brand_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_model_brand_menu msgid "Model brand of Vehicle" -msgstr "" +msgstr "Modelmerk van het voertuig" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_10 @@ -1347,12 +1350,12 @@ msgstr "" #: view:fleet.vehicle.model:0 #: field:fleet.vehicle.model,vendors:0 msgid "Vendors" -msgstr "" +msgstr "Fabrikanten" #. module: fleet #: model:fleet.service.type,name:fleet.type_contract_leasing msgid "Leasing" -msgstr "" +msgstr "Leasing" #. module: fleet #: help:fleet.vehicle.model.brand,image_medium:0 @@ -1365,7 +1368,7 @@ msgstr "" #. module: fleet #: selection:fleet.vehicle.log.contract,cost_frequency:0 msgid "Weekly" -msgstr "" +msgstr "Wekelijks" #. module: fleet #: view:fleet.vehicle:0 @@ -1376,12 +1379,12 @@ msgstr "" #. module: fleet #: field:fleet.vehicle,acquisition_date:0 msgid "Acquisition Date" -msgstr "" +msgstr "Aankoopdatum" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_odometer msgid "Odometer log for a vehicle" -msgstr "" +msgstr "Kilometertellerlog van een voertuig" #. module: fleet #: field:fleet.vehicle.cost,cost_type:0 @@ -1392,22 +1395,22 @@ msgstr "" #: model:fleet.service.type,name:fleet.type_service_service_5 #: model:fleet.service.type,name:fleet.type_service_service_7 msgid "Summer tires" -msgstr "" +msgstr "Zomerbanden" #. module: fleet #: field:fleet.vehicle,contract_renewal_due_soon:0 msgid "Has Contracts to renew" -msgstr "" +msgstr "Heeft te vernieuwen contracten" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_31 msgid "Oil Change" -msgstr "" +msgstr "Olie verversen" #. module: fleet #: selection:fleet.vehicle.log.contract,state:0 msgid "To Close" -msgstr "" +msgstr "Te sluiten" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_model_brand @@ -1417,12 +1420,12 @@ msgstr "" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_51 msgid "Wheel Alignment" -msgstr "" +msgstr "Wielen uitlijnen" #. module: fleet #: model:fleet.vehicle.tag,name:fleet.vehicle_tag_purchased msgid "Purchased" -msgstr "" +msgstr "Ingekocht" #. module: fleet #: model:ir.actions.act_window,help:fleet.fleet_vehicle_odometer_act @@ -1451,49 +1454,49 @@ msgstr "" #. module: fleet #: view:fleet.vehicle:0 msgid "General Properties" -msgstr "" +msgstr "Algemene eigenschappen" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_21 msgid "Exhaust Manifold Replacement" -msgstr "" +msgstr "Uitlaat spruitstuk vervangen" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_47 msgid "Transmission Filter Replacement" -msgstr "" +msgstr "Transmissie filter vervangen" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_10 msgid "Replacement Vehicle" -msgstr "" +msgstr "Vervangend voertuig" #. module: fleet #: selection:fleet.vehicle.log.contract,state:0 msgid "In Progress" -msgstr "" +msgstr "In behandeling" #. module: fleet #: selection:fleet.vehicle.log.contract,cost_frequency:0 msgid "Yearly" -msgstr "" +msgstr "Jaarlijks" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_state_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_state_menu msgid "States of Vehicle" -msgstr "" +msgstr "Voertuig statussen" #. module: fleet #: field:fleet.vehicle.model,modelname:0 msgid "Model name" -msgstr "" +msgstr "Modelnaam" #. module: fleet #: view:board.board:0 #: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_costs_graph msgid "Costs by Month" -msgstr "" +msgstr "Kosten per maand" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_18 @@ -1503,44 +1506,44 @@ msgstr "" #. module: fleet #: field:fleet.vehicle,power:0 msgid "Power (kW)" -msgstr "" +msgstr "Vermogen (kW)" #. module: fleet #: code:addons/fleet/fleet.py:418 #, python-format msgid "State: from '%s' to '%s'" -msgstr "" +msgstr "Status: van '%s' naar '%s'" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_2 msgid "A/C Condenser Replacement" -msgstr "" +msgstr "Airco condensator vervangen" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_19 msgid "Engine Coolant Replacement" -msgstr "" +msgstr "Koelvloeistof vervangen" #. module: fleet #: view:fleet.vehicle.cost:0 msgid "Cost Details" -msgstr "" +msgstr "Kostendetails" #. module: fleet #: code:addons/fleet/fleet.py:410 #, python-format msgid "Model: from '%s' to '%s'" -msgstr "" +msgstr "Model: van '%s' tto '%s'" #. module: fleet #: selection:fleet.vehicle.cost,cost_type:0 msgid "Other" -msgstr "" +msgstr "Overig" #. module: fleet #: view:fleet.vehicle.log.contract:0 msgid "Contract details" -msgstr "" +msgstr "Contract details" #. module: fleet #: model:fleet.vehicle.tag,name:fleet.vehicle_tag_leasing @@ -1550,17 +1553,17 @@ msgstr "" #. module: fleet #: field:fleet.vehicle.cost,auto_generated:0 msgid "Automatically Generated" -msgstr "" +msgstr "Automatisch gegenereerde" #. module: fleet #: selection:fleet.vehicle.cost,cost_type:0 msgid "Fuel" -msgstr "" +msgstr "Brandstof" #. module: fleet #: sql_constraint:fleet.vehicle.state:0 msgid "State name already exists" -msgstr "" +msgstr "Status naam bestaat al" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_37 @@ -1570,7 +1573,7 @@ msgstr "" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_log_contract msgid "Contract information on a vehicle" -msgstr "" +msgstr "Contract informatie van een voertuig" #. module: fleet #: field:fleet.vehicle.log.contract,days_left:0 @@ -1590,33 +1593,33 @@ msgstr "" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_state msgid "fleet.vehicle.state" -msgstr "" +msgstr "fleet.vehicle.state" #. module: fleet #: view:fleet.vehicle.log.contract:0 msgid "Contract Costs Per Month" -msgstr "" +msgstr "Contractkosten per maand" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_log_contract_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_log_contract_menu msgid "Vehicles Contracts" -msgstr "" +msgstr "Voertuig contracten" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_48 msgid "Transmission Fluid Replacement" -msgstr "" +msgstr "Transmissievloeistof vervangen" #. module: fleet #: field:fleet.vehicle.model.brand,name:0 msgid "Brand Name" -msgstr "" +msgstr "Merknaam" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_36 msgid "Power Steering Pump Replacement" -msgstr "" +msgstr "Stuurbekrachtigingspomp vervangen" #. module: fleet #: help:fleet.vehicle.cost,contract_id:0 @@ -1634,7 +1637,7 @@ msgstr "Voertuig %s is toegevoegd aan het wagenpark!" #: view:fleet.vehicle.log.fuel:0 #: view:fleet.vehicle.log.services:0 msgid "Price" -msgstr "" +msgstr "Prijs" #. module: fleet #: view:fleet.vehicle:0 @@ -1642,7 +1645,7 @@ msgstr "" #: field:fleet.vehicle.cost,vehicle_id:0 #: field:fleet.vehicle.odometer,vehicle_id:0 msgid "Vehicle" -msgstr "" +msgstr "Voertuig" #. module: fleet #: field:fleet.vehicle.cost,cost_ids:0 @@ -1665,33 +1668,33 @@ msgstr "" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_15 msgid "Catalytic Converter Replacement" -msgstr "" +msgstr "Katalysator vervangen" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_25 msgid "Heater Blower Motor Replacement" -msgstr "" +msgstr "Aanjager motor vervangen" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_odometer_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_odometer_menu msgid "Vehicles Odometer" -msgstr "" +msgstr "Voertuigen kilometerteller" #. module: fleet #: help:fleet.vehicle.log.contract,notes:0 msgid "Write here all supplementary informations relative to this contract" -msgstr "" +msgstr "Geef hier alle aanvullende informatie m.b.t. dit contract" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_29 msgid "Ignition Coil Replacement" -msgstr "" +msgstr "Bobine vervangen" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_16 msgid "Options" -msgstr "" +msgstr "Opties" #. module: fleet #: model:fleet.service.type,name:fleet.type_contract_repairing @@ -1702,7 +1705,7 @@ msgstr "" #: model:ir.actions.act_window,name:fleet.action_fleet_reporting_costs #: model:ir.ui.menu,name:fleet.menu_fleet_reporting_costs msgid "Costs Analysis" -msgstr "" +msgstr "Kostenanalyse" #. module: fleet #: field:fleet.vehicle.log.contract,ins_ref:0 @@ -1798,7 +1801,7 @@ msgstr "Berichten en communicatie historie" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle msgid "Information on a vehicle" -msgstr "" +msgstr "Informatie op een voertuig" #. module: fleet #: help:fleet.vehicle,co2:0 @@ -1857,7 +1860,7 @@ msgstr "Kilometerstand" #. module: fleet #: view:fleet.vehicle.log.services:0 msgid "Cost" -msgstr "" +msgstr "Kosten" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_39 diff --git a/addons/google_base_account/i18n/hr.po b/addons/google_base_account/i18n/hr.po new file mode 100644 index 00000000000..23505ff5e0b --- /dev/null +++ b/addons/google_base_account/i18n/hr.po @@ -0,0 +1,109 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 20:22+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: google_base_account +#: field:res.users,gmail_user:0 +msgid "Username" +msgstr "Korisničko ime" + +#. module: google_base_account +#: model:ir.actions.act_window,name:google_base_account.act_google_login_form +msgid "Google Login" +msgstr "Google prijava" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:29 +#, python-format +msgid "Google Contacts Import Error!" +msgstr "" + +#. module: google_base_account +#: model:ir.model,name:google_base_account.model_res_users +msgid "Users" +msgstr "Korisnici" + +#. module: google_base_account +#: view:google.login:0 +msgid "or" +msgstr "ili" + +#. module: google_base_account +#: view:google.login:0 +msgid "Google login" +msgstr "Google prijava" + +#. module: google_base_account +#: field:google.login,password:0 +msgid "Google Password" +msgstr "Google lozinka" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:77 +#, python-format +msgid "Error!" +msgstr "Greška!" + +#. module: google_base_account +#: view:res.users:0 +msgid "Google Account" +msgstr "Google Račun" + +#. module: google_base_account +#: view:res.users:0 +msgid "Synchronization" +msgstr "Sinkronizacija" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:77 +#, python-format +msgid "Authentication failed. Check the user and password." +msgstr "" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:29 +#, python-format +msgid "" +"Please install gdata-python-client from http://code.google.com/p/gdata-" +"python-client/downloads/list" +msgstr "" + +#. module: google_base_account +#: model:ir.model,name:google_base_account.model_google_login +msgid "Google Contact" +msgstr "" + +#. module: google_base_account +#: view:google.login:0 +msgid "Cancel" +msgstr "Odustani" + +#. module: google_base_account +#: field:google.login,user:0 +msgid "Google Username" +msgstr "" + +#. module: google_base_account +#: field:res.users,gmail_password:0 +msgid "Password" +msgstr "Lozinka" + +#. module: google_base_account +#: view:google.login:0 +msgid "_Login" +msgstr "" diff --git a/addons/google_docs/i18n/hr.po b/addons/google_docs/i18n/hr.po new file mode 100644 index 00000000000..570863480ea --- /dev/null +++ b/addons/google_docs/i18n/hr.po @@ -0,0 +1,190 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-09 20:25+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:136 +#, python-format +msgid "Key Error!" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,gdocs_resource_id:0 +msgid "Google Resource ID to Use as Template" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`" +msgstr "" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/xml/gdocs.xml:6 +#, python-format +msgid "Add Google Doc..." +msgstr "Dodaj Google Doc..." + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL:" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_google_docs_config +msgid "Google Docs templates config" +msgstr "" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:25 +#, python-format +msgid "" +"The user google credentials are not set yet. Contact your administrator for " +"help." +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`" +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:98 +#, python-format +msgid "" +"Your resource id is not correct. You can find the id in the google docs URL." +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:122 +#, python-format +msgid "Creating google docs may only be done by one at a time." +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:53 +#: code:addons/google_docs/google_docs.py:98 +#: code:addons/google_docs/google_docs.py:122 +#, python-format +msgid "Google Docs Error!" +msgstr "Google Docs greška!" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:53 +#, python-format +msgid "Check your google configuration in Users/Users/Synchronization tab." +msgstr "" + +#. module: google_docs +#: model:ir.ui.menu,name:google_docs.menu_gdocs_config +msgid "Google Docs configuration" +msgstr "Postave Google Docs-a" + +#. module: google_docs +#: model:ir.actions.act_window,name:google_docs.action_google_docs_users_config +#: model:ir.ui.menu,name:google_docs.menu_gdocs_model_config +msgid "Models configuration" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,model_id:0 +msgid "Model" +msgstr "Model" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:28 +#, python-format +msgid "User Google credentials are not yet set." +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:136 +#, python-format +msgid "Your Google Doc Name Pattern's key does not found in object." +msgstr "" + +#. module: google_docs +#: help:google.docs.config,name_template:0 +msgid "" +"Choose how the new google docs will be named, on google side. Eg. " +"gdoc_%(field_name)s" +msgstr "" +"Odaberite kako će se nazivati novi google dokumenti, on google side. Eg. " +"gdoc_%(field_name)s" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "Google Docs Configuration" +msgstr "" + +#. module: google_docs +#: help:google.docs.config,gdocs_resource_id:0 +msgid "" +"\n" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL: \n" +"*for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`\n" +"*for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`\n" +"*for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`\n" +"*for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`\n" +"...\n" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,name_template:0 +msgid "Google Doc Name Pattern" +msgstr "" diff --git a/addons/hr_timesheet/i18n/de.po b/addons/hr_timesheet/i18n/de.po index da8e9ceb31b..77676f6b702 100644 --- a/addons/hr_timesheet/i18n/de.po +++ b/addons/hr_timesheet/i18n/de.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-11-18 00:40+0000\n" +"PO-Revision-Date: 2012-12-09 21:03+0000\n" "Last-Translator: Felix Schubert \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: 2012-12-04 05:33+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.act_analytic_cost_revenue @@ -41,6 +41,25 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Keine Aktivitäten bezüglich dieses Vertrages bis jetzt.\n" +"

    \n" +" In OpenERP, Verträge und Projekte werden über analytische\n" +" Konten abgebildet. Dadurch können Sie einfach Ihre Kosten\n" +" und Erträge überwachen.\n" +"

    \n" +" Kosten werden automatisch zugewiesen, wenn Sie Lieferanten\n" +" Rechnungen, Ausgaben oder Zeiterfassungen zuordnen.\n" +"

    \n" +" Erträge werden automatisch zugewiesen, wenn Sie " +"Ausgangsrechnungen\n" +" zuweisen. Ausgangsrechnungen können auf Basis von Aufträgen\n" +" (Pauschalangebote), Zeiterfassungen (basierend auf der " +"geleisteten Arbeit) oder\n" +" Ausgaben (z.B. Weiterberechnung von Reisespesen) erzeugt " +"werden.\n" +"

    \n" +" " #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -52,12 +71,12 @@ msgstr "Mi" #. module: hr_timesheet #: view:hr.sign.out.project:0 msgid "(Keep empty for current_time)" -msgstr "(frei lassen um aktuelle Zeiteinstellung zu verwenden)" +msgstr "(frei lassen um die aktuelle Zeiteinstellung zu verwenden)" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Group By..." -msgstr "Gruppieren nach" +msgstr "Gruppiert nach..." #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.action_hr_timesheet_sign_in @@ -67,16 +86,16 @@ msgid "" "analytic account. This feature allows to record at the same time the " "attendance and the timesheet." msgstr "" -"Mitarbeiter können Zeiten erfassen, die für spezifizische Projekte benötigt " -"wurden. Ein Projekt entspricht einem Analytischen Konto, wodurch automatisch " -"eine erfasste Zeit zu Kosten für das Projekt führt. Diese Funktion " -"ermöglicht eine zeitgleiche Bearbeitung von Anwesenheitszeiten und Zeiten " -"mit Projektbezug." +"Mitarbeiter können Zeiten erfassen, die für verschieden Projekte aufgewendet " +"wurden. Ein Projekt ist einem Analytischen Konto zugeordnet, wodurch " +"automatisch die erfasste Zeit als Kosten für das Projekt verbucht werden. " +"Diese Funktion ermöglicht eine zeitgleiche Bearbeitung von " +"Anwesenheitszeiten und Projektzeiten." #. module: hr_timesheet #: field:hr.employee,uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Mengeneinheit" #. module: hr_timesheet #: field:hr.employee,journal_id:0 @@ -104,7 +123,7 @@ msgstr "Zeiterfassung" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Please define employee for this user!" -msgstr "" +msgstr "Bitte ordnen Sie diesem User einen Mitarbeiter zu!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -130,7 +149,7 @@ msgstr "Fr" #: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form #: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours msgid "Timesheet Activities" -msgstr "" +msgstr "Zeiterfassungsaktivitäten" #. module: hr_timesheet #: field:hr.sign.out.project,analytic_amount:0 @@ -151,12 +170,12 @@ msgstr "kürzlich erledigte Arbeit" #: field:hr.sign.in.project,name:0 #: field:hr.sign.out.project,name:0 msgid "Employees name" -msgstr "Mitarbeiter" +msgstr "Mitarbeitername" #. module: hr_timesheet #: field:hr.sign.out.project,account_id:0 msgid "Project / Analytic Account" -msgstr "Projekt / Analyse Konto" +msgstr "Projekt / Analytisches Konto" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_users @@ -167,12 +186,12 @@ msgstr "Drucke Zeiterfassung" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "Please define employee for your user." -msgstr "" +msgstr "Bitte ordnen Sie diesem User einen Mitarbeiter zu." #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.act_analytic_cost_revenue msgid "Costs & Revenues" -msgstr "" +msgstr "Kosten & Erlöse" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -189,7 +208,7 @@ msgstr "Analytisches Konto" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Costs and Revenues" -msgstr "" +msgstr "Kosten und Erlöse" #. module: hr_timesheet #: code:addons/hr_timesheet/hr_timesheet.py:141 @@ -199,7 +218,7 @@ msgstr "" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Warning!" -msgstr "" +msgstr "Warnung!" #. module: hr_timesheet #: field:hr.analytic.timesheet,partner_id:0 @@ -245,17 +264,29 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken Sie hier um Ihre Aufgaben zu erfassen.\n" +"

    \n" +" Sie können Ihre Arbeitsstunden auf Tagesbasis erfassen und " +"auswerten. \n" +" Alle Zeiten die für ein Projekt aufgewendet wurden, werden " +"als Kosten\n" +" auf dem zugehörigen Analytischen Konto verbucht und können " +"ggf. dem\n" +" Kunden in Rechnung gestellt werden.\n" +"

    \n" +" " #. module: hr_timesheet #: view:hr.analytical.timesheet.employee:0 #: view:hr.analytical.timesheet.users:0 msgid "Print" -msgstr "Druck" +msgstr "Drucken" #. module: hr_timesheet #: help:account.analytic.account,use_timesheets:0 msgid "Check this field if this project manages timesheets" -msgstr "" +msgstr "Werden für das Projekt Zeiten erfasst?" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 @@ -281,7 +312,7 @@ msgstr "Start Datum" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 #, python-format msgid "Please define cost unit for this employee." -msgstr "" +msgstr "Bitte defineiren Sie die Kosteneinheit für diesen Mitarbeiter." #. module: hr_timesheet #: help:hr.employee,product_id:0 @@ -297,6 +328,9 @@ msgid "" "No analytic account is defined on the project.\n" "Please set one or we cannot automatically fill the timesheet." msgstr "" +"Diesem Projekt wurde kein Analytisches Konto zugewiesen.\n" +"Bitte weisen Sie ein Analytisches Konto zu, da sonst keine automatische " +"Zuordnung erfolgen kann." #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -310,6 +344,9 @@ msgid "" "No 'Analytic Journal' is defined for employee %s \n" "Define an employee for the selected user and assign an 'Analytic Journal'!" msgstr "" +"Es wurde kein 'Analytisches Journal' für den Mitarbeiter %s zugeordnet\n" +"Weisen Sie einen Mitarbeiter dem ausgewählten Benutzer zu und ordnen Sie das " +"'Analytische Journal' zu!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:41 @@ -351,12 +388,12 @@ msgstr "Aufgabenbeschreibung" #: view:hr.sign.in.project:0 #: view:hr.sign.out.project:0 msgid "or" -msgstr "" +msgstr "oder" #. module: hr_timesheet #: xsl:hr.analytical.timesheet:0 msgid "Timesheet by Employee" -msgstr "Zeitnachweise je Mitarbeiter" +msgstr "Zeiterfassung nach Mitarbeiter" #. module: hr_timesheet #: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet @@ -372,7 +409,7 @@ msgstr "Anmelden / Abmelden bei Projekt" #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.action_define_analytic_structure msgid "Define your Analytic Structure" -msgstr "Definiere die Struktur der Analytischen Konten" +msgstr "Definieren Sie die Struktur der Analytischen Konten" #. module: hr_timesheet #: view:hr.sign.in.project:0 @@ -422,6 +459,8 @@ msgid "" "No analytic journal defined for '%s'.\n" "You should assign an analytic journal on the employee form." msgstr "" +"Kein Analytisches Journal für '%s' zugeordnet.\n" +"Sie können das Analytische Journal im Datensatz des Mitarbeiters zuordnen." #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:41 @@ -436,7 +475,7 @@ msgstr "Juni" #: field:hr.sign.in.project,state:0 #: field:hr.sign.out.project,state:0 msgid "Current Status" -msgstr "" +msgstr "Aktueller Status" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -491,7 +530,7 @@ msgstr "Anmelden / Abmelden bei Projekt" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_employee msgid "Print Employee Timesheet & Print My Timesheet" -msgstr "Drucke Alle Arbeitszeiten & Meine Arbeitszeiten" +msgstr "Alle Mitarbeiter Zeiterfassungen und meine Zeiterfassung drucken" #. module: hr_timesheet #: field:hr.sign.in.project,emp_id:0 @@ -502,7 +541,7 @@ msgstr "Mitarbeiter Nr." #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 msgid "Period" -msgstr "" +msgstr "Periode" #. module: hr_timesheet #: view:hr.sign.out.project:0 @@ -523,7 +562,7 @@ msgstr "Abbrechen" #: model:ir.actions.report.xml,name:hr_timesheet.report_users_timesheet #: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_users msgid "Employees Timesheet" -msgstr "Personal Arbeitszeiten" +msgstr "Mitarbeiter Zeiterfassung" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -544,11 +583,11 @@ msgid "" "project generates costs on the analytic account. This feature allows to " "record at the same time the attendance and the timesheet." msgstr "" -"Mitarbeiter können Zeiten erfassen, die für spezifizische Projekte benötigt " -"wurden. Ein Projekt entspricht einem Analytischen Konto, wodurch automatisch " -"eine erfasste Zeit zu Kosten für das Projekt führt. Diese Funktion " -"ermöglicht eine zeitgleiche Bearbeitung von Anwesenheitszeiten und Zeiten " -"mit Projektbezug." +"Mitarbeiter können Zeiten erfassen, die für verschieden Projekte aufgewendet " +"wurden. Ein Projekt ist einem Analytischen Konto zugeordnet, wodurch " +"automatisch die erfasste Zeit als Kosten für das Projekt verbucht werden. " +"Diese Funktion ermöglicht eine zeitgleiche Bearbeitung von " +"Anwesenheitszeiten und Projektzeiten." #. module: hr_timesheet #: field:hr.sign.in.project,server_date:0 @@ -608,7 +647,7 @@ msgstr "Februar" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_sign_out_project msgid "Sign Out By Project" -msgstr "Anmelden / Abmelden Projekt" +msgstr "Abmeldung von Projekt" #. module: hr_timesheet #: code:addons/hr_timesheet/hr_timesheet.py:141 @@ -617,6 +656,8 @@ msgid "" "Please create an employee for this user, using the menu: Human Resources > " "Employees." msgstr "" +"Bitte legen Sie einen Mitarbeiter für diesen Benutzer an, Sie finden den " +"Eintrag unter Personal -> Mitarbeiter." #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 @@ -646,7 +687,7 @@ msgstr "April" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "User Error!" -msgstr "" +msgstr "Benutzerfehler!" #. module: hr_timesheet #: view:hr.sign.in.project:0 @@ -662,7 +703,7 @@ msgstr "Jahr" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Duration" -msgstr "" +msgstr "Dauer" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -673,7 +714,7 @@ msgstr "Finanzbuchhaltung" #: xsl:hr.analytical.timesheet:0 #: xsl:hr.analytical.timesheet_users:0 msgid "Total" -msgstr "Betrag gesamt" +msgstr "Summe" #. module: hr_timesheet #: view:hr.sign.out.project:0 diff --git a/addons/hr_timesheet_invoice/i18n/de.po b/addons/hr_timesheet_invoice/i18n/de.po index bd46fdf62ba..2440a38bddf 100644 --- a/addons/hr_timesheet_invoice/i18n/de.po +++ b/addons/hr_timesheet_invoice/i18n/de.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-10-12 23:22+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-09 21:46+0000\n" +"Last-Translator: Felix Schubert \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: 2012-12-04 05:35+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -25,7 +25,7 @@ msgstr "Zeiterfassung nach Benutzer" #. module: hr_timesheet_invoice #: field:hr_timesheet_invoice.factor,name:0 msgid "Internal Name" -msgstr "" +msgstr "Interne Bezeichnung" #. module: hr_timesheet_invoice #: view:hr_timesheet_invoice.factor:0 @@ -38,23 +38,26 @@ msgid "" "The product to invoice is defined on the employee form, the price will be " "deducted by this pricelist on the product." msgstr "" +"Das Produkt, das in Rechnung gestellt wird, wird im Datensatz des " +"Mitarbeiters festgelegt. Der Preis kann durch die Preisliste des Produkte " +"rabattiert werden." #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 #, python-format msgid "No record(s) found for this report." -msgstr "" +msgstr "Keine Daten für diese Auswertung gefunden." #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 #, python-format msgid "Insufficient Data!" -msgstr "" +msgstr "Unzureichende Daten" #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 msgid "Group By..." -msgstr "Gruppierung..." +msgstr "Gruppieren nach" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create:0 @@ -64,12 +67,12 @@ msgstr "Erzwinge Verwendung eines spezifischen Produktes" #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 msgid "Income" -msgstr "Erlöse" +msgstr "Einnahmen" #. module: hr_timesheet_invoice #: field:hr.timesheet.invoice.create.final,name:0 msgid "Log of Activity" -msgstr "" +msgstr "Keine Aktivitäten dokumentiert" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 @@ -79,7 +82,7 @@ msgstr "Projekt wiedereröffnen" #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,product_uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Mengeneinheit" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_user @@ -103,6 +106,11 @@ msgid "" "20% advance invoice (fixed price, based on a sale order), you should invoice " "the rest on timesheet with a 80% ratio." msgstr "" +"Normalerweise werden 100% der aufgewendeten Zeiten in Rechnung gestellt. " +"Wenn Sie jedoch Pauschalangebote und projektzeiten-basierte Abrechnungen " +"mischen, benötigen Sie ein anderes Abrechnungsverhältnis. Wenn Sie z.B. 20% " +"vorab abrechnen (fixer Betrag, basierend auf einem Angebot) können Sie den " +"Restbetrag mit einem 80% Verhältnis abrechnen." #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 @@ -113,7 +121,7 @@ msgstr "Gewinn" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:165 #, python-format msgid "You cannot modify an invoiced analytic line!" -msgstr "Sie dürfen keine fakturierte Analysebuchung verändern" +msgstr "Sie können keine fakturierte Analysebuchung ändern" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_factor @@ -123,7 +131,7 @@ msgstr "Quote Abrechnung" #. module: hr_timesheet_invoice #: help:hr.timesheet.invoice.create.final,time:0 msgid "Display time in the history of works" -msgstr "Anzeige der Zeit in Liste erledigter Aufgaben" +msgstr "Anzeige der Zeit in der Liste erledigter Aufgaben" #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 @@ -142,6 +150,9 @@ msgid "" "Fill this field only if you want to force to use a specific product. Keep " "empty to use the real product that comes from the cost." msgstr "" +"Benutzen Sie dieses Feld, wenn Sie die Verwendung eines spezifischen " +"Produkts erzwingen wollen. Wenn Sie es leer lassen, können die realen Kosten " +"zur Berechnung herangezogen werden." #. module: hr_timesheet_invoice #: model:ir.actions.act_window,help:hr_timesheet_invoice.action_hr_timesheet_invoice_factor_form @@ -159,6 +170,20 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken, um einen neuen Abrechnungstyp anzulegen.\n" +"

    \n" +" OpenERP ermöglicht Ihnen die Anlage von " +"Standardabrechnungstypen.\n" +" Wenn Sie regelmässig Nachlässe aufgrund von Verträgen oder " +"Verein-\n" +" barungen mit Ihrem Kunden gewähren, können Sie mit diesem " +"Menu\n" +" zusätzliche Abrechnungstypen anlegen, um Ihre " +"Rechnungserstellung\n" +" zu beschleunigen.\n" +"

    \n" +" " #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -168,18 +193,18 @@ msgstr "Konto" #. module: hr_timesheet_invoice #: field:hr.timesheet.invoice.create,time:0 msgid "Time spent" -msgstr "Zeitbedarf" +msgstr "Zeitaufwand" #. module: hr_timesheet_invoice #: field:account.analytic.account,amount_invoiced:0 msgid "Invoiced Amount" -msgstr "Rechnungsbetrag" +msgstr "Abgerechneter Betrag" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:209 #, python-format msgid "Analytic Account incomplete !" -msgstr "" +msgstr "Analytisches Konto unvollständig!" #. module: hr_timesheet_invoice #: field:report_timesheet.invoice,account_id:0 @@ -191,7 +216,7 @@ msgstr "Projekt" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:254 #, python-format msgid "Error!" -msgstr "" +msgstr "Fehler!" #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,amount:0 @@ -201,23 +226,23 @@ msgstr "Betrag" #. module: hr_timesheet_invoice #: help:hr.timesheet.invoice.create,name:0 msgid "The detail of each work done will be displayed on the invoice" -msgstr "Details der erledigten Arbeit werden auf dieser Rechnung angezeigt" +msgstr "Details der erledigten Aufgaben werden auf der Rechnung ausgegeben." #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:116 #, python-format msgid "Contract has been set as pending." -msgstr "" +msgstr "Der Vertrag wurde auf schwebend gesetzt" #. module: hr_timesheet_invoice #: field:account.analytic.account,pricelist_id:0 msgid "Pricelist" -msgstr "" +msgstr "Preisliste" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create msgid "Create invoice from timesheet" -msgstr "Erzeuge Rechnung für abrechenbare Zeiten" +msgstr "Erzeuge Rechnung auf Zeiterfassungsbasis" #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 @@ -227,7 +252,7 @@ msgstr "bis Periode" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_analytic_account_close msgid "Analytic account to close" -msgstr "Abzuschliessende Analysekonten" +msgstr "Abzuschliessende Analytische Konten" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create:0 @@ -257,7 +282,7 @@ msgstr "Frist" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:267 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Konfigurationsfehler!" #. module: hr_timesheet_invoice #: field:report.analytic.account.close,partner_id:0 @@ -267,12 +292,12 @@ msgstr "Partner" #. module: hr_timesheet_invoice #: help:hr.timesheet.invoice.create,time:0 msgid "The time of each work done will be displayed on the invoice" -msgstr "Die Zeit jedes Arbeitsvorgangs wird auf der Rechnung ausgewiesen" +msgstr "Der Zeitaufwand jeder Aufgabe wird auf der Rechnung ausgewiesen" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Cancel Contract" -msgstr "" +msgstr "Vertrag stornieren" #. module: hr_timesheet_invoice #: field:hr.timesheet.analytic.profit,date_from:0 @@ -294,7 +319,7 @@ msgstr "Abzurechnende Kosten" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:267 #, python-format msgid "Please define income account for product '%s'." -msgstr "" +msgstr "Bitte legen Sie ein Ertragskonto für das Produkt '%s' fest." #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,account_id:0 @@ -305,12 +330,12 @@ msgstr "Analytisches Konto" #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 msgid "Print" -msgstr "Druck" +msgstr "Drucken" #. module: hr_timesheet_invoice #: help:hr.timesheet.invoice.create.final,date:0 msgid "Display date in the history of works" -msgstr "Anzeige Datum in der Arbeitsvorgangshistorie" +msgstr "Anzeigen des Datums in der Historie der Aufgaben" #. module: hr_timesheet_invoice #: help:hr.timesheet.invoice.create,price:0 @@ -319,7 +344,7 @@ msgid "" "don't want to check this" msgstr "" "Die Selbstkosten für jede erledigte Aufgabe werden auf der Rechnung mit " -"angezeigt. Sie sollten prüfen, ob dieses wirklich gewollt ist." +"angezeigt. Sie sollten prüfen, ob dies wirklich gewollt ist." #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create.final:0 @@ -336,13 +361,13 @@ msgstr "Zeiterfassung nach Benutzer" #: view:hr.analytic.timesheet:0 #: model:ir.actions.act_window,name:hr_timesheet_invoice.act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice msgid "To Invoice" -msgstr "Abzurechnen" +msgstr "Abrechenbar" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:98 #, python-format msgid "Contract has been closed." -msgstr "" +msgstr "Der Vertrag wurde beendet" #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 @@ -355,12 +380,12 @@ msgstr "Abrechnungsquote" #. module: hr_timesheet_invoice #: field:hr.timesheet.invoice.create,product:0 msgid "Force Product" -msgstr "" +msgstr "Erzwinge Produkt" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Contract Finished" -msgstr "" +msgstr "Vertrag beendet" #. module: hr_timesheet_invoice #: selection:report.account.analytic.line.to.invoice,month:0 @@ -374,19 +399,19 @@ msgstr "Juli" #. module: hr_timesheet_invoice #: field:account.analytic.line,to_invoice:0 msgid "Invoiceable" -msgstr "" +msgstr "Abrechenbar" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:56 #, python-format msgid "Warning!" -msgstr "" +msgstr "Warnung!" #. module: hr_timesheet_invoice #: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_invoice_factor_form #: model:ir.ui.menu,name:hr_timesheet_invoice.hr_timesheet_invoice_factor_view msgid "Types of Invoicing" -msgstr "Rechnungsarten" +msgstr "Abrechnungsarten" #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 @@ -396,7 +421,7 @@ msgstr "Soll" #. module: hr_timesheet_invoice #: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor3 msgid "Free of charge" -msgstr "" +msgstr "kostenfrei" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_account_analytic_line_to_invoice @@ -427,7 +452,7 @@ msgstr "100%" #. module: hr_timesheet_invoice #: view:report_timesheet.user:0 msgid "Timesheet by users" -msgstr "" +msgstr "Zeiterfassung nach Benutzern" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py:58 @@ -448,7 +473,7 @@ msgstr "Dezember" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create.final:0 msgid "Invoice contract" -msgstr "Fakturiere Vertrag" +msgstr "Vertrag abrechnen" #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,month:0 @@ -485,7 +510,7 @@ msgstr "Abgerechnet" #. module: hr_timesheet_invoice #: field:report.analytic.account.close,quantity_max:0 msgid "Max. Quantity" -msgstr "Max Anzahl" +msgstr "Max. Anzahl" #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 @@ -544,7 +569,7 @@ msgstr "Juni" #. module: hr_timesheet_invoice #: help:hr.timesheet.invoice.create.final,name:0 msgid "Display detail of work in the invoice line." -msgstr "Zeige Details der Arbeitsvorgänge in Rechnung" +msgstr "Zeige Details der Aufgaben in der Rechnung" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_account @@ -560,7 +585,7 @@ msgstr "Zeiterfassung nach Konto" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_account_move_line msgid "Journal Items" -msgstr "Journal Zeilen" +msgstr "Journal Einträge" #. module: hr_timesheet_invoice #: selection:report.account.analytic.line.to.invoice,month:0 @@ -625,7 +650,7 @@ msgstr "Datum" #. module: hr_timesheet_invoice #: model:mail.message.subtype,name:hr_timesheet_invoice.mt_account_closed msgid "finished" -msgstr "" +msgstr "Abgeschlossen" #. module: hr_timesheet_invoice #: field:report.timesheet.line,quantity:0 @@ -634,7 +659,7 @@ msgstr "" #: field:report_timesheet.invoice,quantity:0 #: field:report_timesheet.user,quantity:0 msgid "Time" -msgstr "" +msgstr "Zeit" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create_final @@ -660,7 +685,7 @@ msgstr "Sachkonto" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Invoice on Timesheets Options" -msgstr "" +msgstr "Rechnung auf Basis von Zeiterfassungsoptionen" #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 @@ -670,7 +695,7 @@ msgstr "Summen:" #. module: hr_timesheet_invoice #: model:mail.message.subtype,name:hr_timesheet_invoice.mt_account_canceled msgid "canceled" -msgstr "" +msgstr "Abgebrochen" #. module: hr_timesheet_invoice #: help:account.analytic.line,to_invoice:0 @@ -678,6 +703,8 @@ msgid "" "It allows to set the discount while making invoice, keep empty if the " "activities should not be invoiced." msgstr "" +"Erlaubt Ihnen einen Rabatt während der Rechnungserzeugung anzulegen. Bitte " +"leer lassen wenn diese Aufgaben nicht in Rechnung gestellt werden sollen." #. module: hr_timesheet_invoice #: field:account.analytic.account,amount_max:0 @@ -687,7 +714,7 @@ msgstr "Max. Rechnungsbetrag" #. module: hr_timesheet_invoice #: field:account.analytic.account,to_invoice:0 msgid "Timesheet Invoicing Ratio" -msgstr "" +msgstr "Zeiterfassung Verrechnungsverhältnis" #. module: hr_timesheet_invoice #: selection:report.account.analytic.line.to.invoice,month:0 @@ -738,7 +765,7 @@ msgstr "An" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create:0 msgid "Do you want to show details of work in invoice?" -msgstr "" +msgstr "Möchten Sie die Aufgabendetails auf der Rechnung ausgeben?" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create:0 @@ -766,13 +793,13 @@ msgstr "Anzeige der Kosten des weiterzuberechnenden Artikels" #. module: hr_timesheet_invoice #: view:report_timesheet.invoice:0 msgid "Timesheets to invoice" -msgstr "Weiterberechnung Arbeitszeiterfassung" +msgstr "Abrechenbare Zeiterfassungen" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:104 #, python-format msgid "Contract has been canceled." -msgstr "" +msgstr "Vertrag wurde abgebrochen" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:210 @@ -780,6 +807,8 @@ msgstr "" msgid "" "Contract incomplete. Please fill in the Customer and Pricelist fields." msgstr "" +"Der Vertrag ist unvollständig. Bitte füllen Sie die Kunden und " +"Preislistenfelder aus." #. module: hr_timesheet_invoice #: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_account_date_stat_all diff --git a/addons/l10n_multilang/i18n/hr.po b/addons/l10n_multilang/i18n/hr.po new file mode 100644 index 00000000000..ca1852490c0 --- /dev/null +++ b/addons/l10n_multilang/i18n/hr.po @@ -0,0 +1,163 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 01:06+0000\n" +"PO-Revision-Date: 2012-12-09 20:31+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_fiscal_position_template +msgid "Template for Fiscal Position" +msgstr "Predložak za fiskalnu poziciju" + +#. module: l10n_multilang +#: sql_constraint:account.account:0 +msgid "The code of the account must be unique per company !" +msgstr "Šifra konta mora biti jedinstvena za jednu organizaciju !" + +#. module: l10n_multilang +#: constraint:account.account.template:0 +msgid "" +"Configuration Error!\n" +"You can not define children to an account with internal type different of " +"\"View\"! " +msgstr "" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_analytic_journal +msgid "Analytic Journal" +msgstr "Knjiga analitike" + +#. module: l10n_multilang +#: constraint:account.account.template:0 +msgid "Error ! You can not create recursive account templates." +msgstr "Greška ! Ne možete kreirati rekurzivne predloške konta." + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_journal +msgid "Journal" +msgstr "Knjiga" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_chart_template +msgid "Templates for Account Chart" +msgstr "Predlošci kontnog plana" + +#. module: l10n_multilang +#: sql_constraint:account.tax:0 +msgid "The description must be unique per company!" +msgstr "" + +#. module: l10n_multilang +#: constraint:account.tax.code.template:0 +msgid "Error ! You can not create recursive Tax Codes." +msgstr "Greška ! Ne možete kreirati rekurzivne porezne grupe." + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_tax_template +msgid "account.tax.template" +msgstr "" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_tax +msgid "account.tax" +msgstr "" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_account +msgid "Account" +msgstr "Konto" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_wizard_multi_charts_accounts +msgid "wizard.multi.charts.accounts" +msgstr "" + +#. module: l10n_multilang +#: constraint:account.journal:0 +msgid "" +"Configuration error! The currency chosen should be shared by the default " +"accounts too." +msgstr "" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_account_template +msgid "Templates for Accounts" +msgstr "Predlošci za konta" + +#. module: l10n_multilang +#: help:account.chart.template,spoken_languages:0 +msgid "" +"State here the languages for which the translations of templates could be " +"loaded at the time of installation of this localization module and copied in " +"the final object when generating them from templates. You must provide the " +"language codes separated by ';'" +msgstr "" + +#. module: l10n_multilang +#: constraint:account.account:0 +msgid "Error ! You can not create recursive accounts." +msgstr "Greška ! Ne možete kreirati rekurzivna konta." + +#. module: l10n_multilang +#: constraint:account.account:0 +msgid "" +"Configuration Error! \n" +"You can not select an account type with a deferral method different of " +"\"Unreconciled\" for accounts with internal type \"Payable/Receivable\"! " +msgstr "" + +#. module: l10n_multilang +#: sql_constraint:account.journal:0 +msgid "The name of the journal must be unique per company !" +msgstr "Naziv knjige mora biti jedinstven za jednu organizaciju!" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_analytic_account +msgid "Analytic Account" +msgstr "Analitički konto" + +#. module: l10n_multilang +#: sql_constraint:account.journal:0 +msgid "The code of the journal must be unique per company !" +msgstr "Šifra knjige mora biti jedinstvena (za organizaciju) !" + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_fiscal_position +msgid "Fiscal Position" +msgstr "Fiskalna pozicija" + +#. module: l10n_multilang +#: constraint:account.account:0 +msgid "" +"Configuration Error! \n" +"You can not define children to an account with internal type different of " +"\"View\"! " +msgstr "" + +#. module: l10n_multilang +#: constraint:account.analytic.account:0 +msgid "Error! You can not create recursive analytic accounts." +msgstr "Greška! Ne možete kreirati rekurzivna analitička konta." + +#. module: l10n_multilang +#: model:ir.model,name:l10n_multilang.model_account_tax_code_template +msgid "Tax Code Template" +msgstr "Predložak PDV obrasca" + +#. module: l10n_multilang +#: field:account.chart.template,spoken_languages:0 +msgid "Spoken Languages" +msgstr "" diff --git a/addons/mail/i18n/hr.po b/addons/mail/i18n/hr.po index 91b277419d1..fdb266e335d 100644 --- a/addons/mail/i18n/hr.po +++ b/addons/mail/i18n/hr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-10-28 19:42+0000\n" -"Last-Translator: Marijan Rajic \n" +"PO-Revision-Date: 2012-12-09 20:37+0000\n" +"Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:52+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: mail #: field:res.partner,notification_email_send:0 @@ -36,7 +36,7 @@ msgstr "" #: field:mail.compose.message,author_id:0 #: field:mail.message,author_id:0 msgid "Author" -msgstr "" +msgstr "Autor" #. module: mail #: view:mail.mail:0 @@ -51,7 +51,7 @@ msgstr "Primatelji poruke" #. module: mail #: view:mail.message:0 msgid "Comments" -msgstr "" +msgstr "Komentari" #. module: mail #: view:mail.alias:0 @@ -88,12 +88,12 @@ msgstr "" #. module: mail #: view:mail.group:0 msgid "Group Name" -msgstr "" +msgstr "Naziv grupe" #. module: mail #: selection:mail.group,public:0 msgid "Public" -msgstr "" +msgstr "Javna" #. module: mail #: view:mail.mail:0 @@ -123,14 +123,14 @@ msgstr "Čarobnjak za sastavljanje e-pošte" #: field:mail.thread,message_unread:0 #: field:res.partner,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Nepročitane poruke" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:247 #, python-format msgid "show" -msgstr "" +msgstr "prikaži" #. module: mail #: help:mail.message.subtype,default:0 @@ -155,7 +155,7 @@ msgstr "" #: view:mail.message:0 #: field:mail.notification,read:0 msgid "Read" -msgstr "" +msgstr "Pročitano" #. module: mail #: view:mail.group:0 @@ -233,7 +233,7 @@ msgstr "Reference" #: code:addons/mail/static/src/xml/mail.xml:179 #, python-format msgid "No messages." -msgstr "" +msgstr "Nema poruka." #. module: mail #: model:ir.model,name:mail.model_mail_group @@ -294,13 +294,13 @@ msgstr "" #. module: mail #: field:mail.group,image_medium:0 msgid "Medium-sized photo" -msgstr "" +msgstr "Fotografija srednje veličine" #. module: mail #: model:ir.actions.client,name:mail.action_mail_to_me_feeds #: model:ir.ui.menu,name:mail.mail_tomefeeds msgid "To: me" -msgstr "" +msgstr "Za: mene" #. module: mail #: field:mail.message.subtype,name:0 @@ -318,7 +318,7 @@ msgstr "Auto brisanje" #: view:mail.group:0 #, python-format msgid "Unfollow" -msgstr "" +msgstr "Ne slijedi više" #. module: mail #. openerp-web @@ -397,7 +397,7 @@ msgstr "Naslov" #. module: mail #: field:mail.wizard.invite,partner_ids:0 msgid "Partners" -msgstr "" +msgstr "Partneri" #. module: mail #: view:mail.mail:0 @@ -467,20 +467,20 @@ msgstr "" #: field:res.partner,message_follower_ids:0 #, python-format msgid "Followers" -msgstr "" +msgstr "Pratitelji" #. module: mail #: model:ir.actions.client,name:mail.action_mail_archives_feeds #: model:ir.ui.menu,name:mail.mail_archivesfeeds msgid "Archives" -msgstr "" +msgstr "Arhive" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:82 #, python-format msgid "Delete this attachment" -msgstr "" +msgstr "Obriši privitak" #. module: mail #: field:mail.compose.message,message_id:0 @@ -493,30 +493,30 @@ msgstr "" #: code:addons/mail/static/src/js/mail_followers.js:132 #, python-format msgid "One follower" -msgstr "" +msgstr "Jedan pratitelj" #. module: mail #: field:mail.compose.message,type:0 #: field:mail.message,type:0 msgid "Type" -msgstr "" +msgstr "Tip" #. module: mail #: selection:mail.compose.message,type:0 #: view:mail.mail:0 #: selection:mail.message,type:0 msgid "Email" -msgstr "" +msgstr "E-mail" #. module: mail #: field:ir.ui.menu,mail_group_id:0 msgid "Mail Group" -msgstr "" +msgstr "Mail grupa" #. module: mail #: selection:res.partner,notification_email_send:0 msgid "Comments and Emails" -msgstr "" +msgstr "Komentari i mailovi" #. module: mail #: model:ir.model,name:mail.model_mail_favorite diff --git a/addons/mail/i18n/it.po b/addons/mail/i18n/it.po index 5616c174150..3e1bf92ee2b 100644 --- a/addons/mail/i18n/it.po +++ b/addons/mail/i18n/it.po @@ -8,35 +8,35 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2011-01-15 19:32+0000\n" -"Last-Translator: Nicola Riolini - Micronaet \n" +"PO-Revision-Date: 2012-12-09 13:10+0000\n" +"Last-Translator: Davide Corio - agilebg.com \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: 2012-12-04 05:52+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: mail #: field:res.partner,notification_email_send:0 msgid "Receive Feeds by Email" -msgstr "" +msgstr "Ricevi Feeds via Email" #. module: mail #: view:mail.followers:0 msgid "Followers Form" -msgstr "" +msgstr "Modulo Followers" #. module: mail #: model:ir.model,name:mail.model_publisher_warranty_contract msgid "publisher_warranty.contract" -msgstr "" +msgstr "publisher_warranty.contract" #. module: mail #: field:mail.compose.message,author_id:0 #: field:mail.message,author_id:0 msgid "Author" -msgstr "" +msgstr "Autore" #. module: mail #: view:mail.mail:0 @@ -46,12 +46,12 @@ msgstr "Dettagli messaggio" #. module: mail #: help:mail.mail,email_to:0 msgid "Message recipients" -msgstr "" +msgstr "Destinatario messaggio" #. module: mail #: view:mail.message:0 msgid "Comments" -msgstr "" +msgstr "Commenti" #. module: mail #: view:mail.alias:0 @@ -63,7 +63,7 @@ msgstr "Raggruppa per..." #: help:mail.compose.message,body:0 #: help:mail.message,body:0 msgid "Automatically sanitized HTML contents" -msgstr "" +msgstr "Pulisci automaticamente il contenuto HTML" #. module: mail #: help:mail.alias,alias_name:0 @@ -71,12 +71,14 @@ msgid "" "The name of the email alias, e.g. 'jobs' if you want to catch emails for " "" msgstr "" +"Il nome dell'alias email, es: 'jobs' se vuoi ricevere le email per " +"" #. module: mail #: model:ir.actions.act_window,name:mail.action_email_compose_message_wizard #: view:mail.compose.message:0 msgid "Compose Email" -msgstr "" +msgstr "Componi Email" #. module: mail #: constraint:mail.alias:0 @@ -84,26 +86,28 @@ msgid "" "Invalid expression, it must be a literal python dictionary definition e.g. " "\"{'field': 'value'}\"" msgstr "" +"Espressione non valida, deve essere un dizionario python, es: " +"\"{'field':'value'}\"" #. module: mail #: view:mail.group:0 msgid "Group Name" -msgstr "" +msgstr "Nome Gruppo" #. module: mail #: selection:mail.group,public:0 msgid "Public" -msgstr "" +msgstr "Pubblica" #. module: mail #: view:mail.mail:0 msgid "Body" -msgstr "" +msgstr "Corpo" #. module: mail #: view:mail.message:0 msgid "Show messages to read" -msgstr "" +msgstr "Mostra messaggi da leggere" #. module: mail #: help:mail.compose.message,email_from:0 @@ -112,30 +116,32 @@ msgid "" "Email address of the sender. This field is set when no matching partner is " "found for incoming emails." msgstr "" +"Indirizzo email del mittente. Questo campo è valorizzato quando non viene " +"trovato nessun partner corrispondente per le email in arrivo." #. module: mail #: model:ir.model,name:mail.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "Wizard composizione email" #. module: mail #: field:mail.group,message_unread:0 #: field:mail.thread,message_unread:0 #: field:res.partner,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Messaggi Non Letti" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:247 #, python-format msgid "show" -msgstr "" +msgstr "mostra" #. module: mail #: help:mail.message.subtype,default:0 msgid "Checked by default when subscribing." -msgstr "" +msgstr "Selezionato di default durante la sottoscrizione." #. module: mail #: help:mail.group,group_ids:0 @@ -143,37 +149,40 @@ msgid "" "Members of those groups will automatically added as followers. Note that " "they will be able to manage their subscription manually if necessary." msgstr "" +"I membri di questi gruppi verranno automaticamente aggiunti ai followers. " +"Ricorda che saranno in grado di gestire le loro sottoscrizioni manualmente " +"se necessario." #. module: mail #. openerp-web #: code:addons/mail/static/src/js/mail.js:778 #, python-format msgid "Do you really want to delete this message?" -msgstr "" +msgstr "Vuoi veramente cancellare questi messaggi?" #. module: mail #: view:mail.message:0 #: field:mail.notification,read:0 msgid "Read" -msgstr "" +msgstr "Letto" #. module: mail #: view:mail.group:0 msgid "Search Groups" -msgstr "" +msgstr "Cerca Gruppi" #. module: mail #. openerp-web #: code:addons/mail/static/src/js/mail_followers.js:134 #, python-format msgid "followers" -msgstr "" +msgstr "followers" #. module: mail #: code:addons/mail/mail_message.py:646 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Accesso Negato" #. module: mail #: help:mail.group,image_medium:0 @@ -182,17 +191,19 @@ msgid "" "image, with aspect ratio preserved. Use this field in form views or some " "kanban views." msgstr "" +"Foto grandezza media del gruppo. Viene automaticamente ridimensionata a " +"128x128px, preservando le proporzioni. Usata su alcuni form e viste kanban." #. module: mail #: view:mail.mail:0 #: selection:mail.mail,state:0 msgid "Received" -msgstr "" +msgstr "Ricevuti" #. module: mail #: field:mail.mail,body_html:0 msgid "Rich-text Contents" -msgstr "" +msgstr "Contenuto Rich-text" #. module: mail #: view:mail.mail:0 @@ -204,41 +215,41 @@ msgstr "Argomento" #: code:addons/mail/static/src/xml/mail.xml:37 #, python-format msgid "Open the full mail composer" -msgstr "" +msgstr "Apri il compositore email completo" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:37 #, python-format msgid "ò" -msgstr "" +msgstr "ò" #. module: mail #: field:base.config.settings,alias_domain:0 msgid "Alias Domain" -msgstr "" +msgstr "Alias Dominio" #. module: mail #: field:mail.group,group_ids:0 msgid "Auto Subscription" -msgstr "" +msgstr "Sottoscrizione Automatica" #. module: mail #: field:mail.mail,references:0 msgid "References" -msgstr "" +msgstr "Riferimenti" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:179 #, python-format msgid "No messages." -msgstr "" +msgstr "Nessun messaggio." #. module: mail #: model:ir.model,name:mail.model_mail_group msgid "Discussion group" -msgstr "" +msgstr "Gruppo discussioni" #. module: mail #. openerp-web @@ -246,14 +257,14 @@ msgstr "" #: code:addons/mail/static/src/xml/mail.xml:95 #, python-format msgid "uploading" -msgstr "" +msgstr "Caricamento" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:211 #, python-format msgid "Set back to Inbox" -msgstr "" +msgstr "Reimposta a Inbox" #. module: mail #: help:mail.compose.message,type:0 @@ -262,55 +273,57 @@ msgid "" "Message type: email for email message, notification for system message, " "comment for other messages such as user replies" msgstr "" +"Tipo messaggio: email per messaggi email, notifica per messaggio di sistema, " +"commento per altri messaggi come le risposte degli utenti." #. module: mail #: model:ir.model,name:mail.model_mail_wizard_invite msgid "Invite wizard" -msgstr "" +msgstr "Wizard invito" #. module: mail #: selection:mail.mail,state:0 msgid "Cancelled" -msgstr "" +msgstr "Annullato" #. module: mail #: field:mail.mail,reply_to:0 msgid "Reply-To" -msgstr "" +msgstr "Rispondi a" #. module: mail #: code:addons/mail/wizard/invite.py:36 #, python-format msgid "
    You have been invited to follow %s.
    " -msgstr "" +msgstr "
    Sei stato invitato a seguire %s.
    " #. module: mail #: help:mail.group,message_unread:0 #: help:mail.thread,message_unread:0 #: help:res.partner,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Se selezionato, nuovi messaggi richiedono la tua attenzione" #. module: mail #: field:mail.group,image_medium:0 msgid "Medium-sized photo" -msgstr "" +msgstr "Foto grandezza media" #. module: mail #: model:ir.actions.client,name:mail.action_mail_to_me_feeds #: model:ir.ui.menu,name:mail.mail_tomefeeds msgid "To: me" -msgstr "" +msgstr "A: me" #. module: mail #: field:mail.message.subtype,name:0 msgid "Message Type" -msgstr "" +msgstr "Tipo Messaggio" #. module: mail #: field:mail.mail,auto_delete:0 msgid "Auto Delete" -msgstr "" +msgstr "Eliminazione Automatica" #. module: mail #. openerp-web @@ -318,28 +331,28 @@ msgstr "" #: view:mail.group:0 #, python-format msgid "Unfollow" -msgstr "" +msgstr "Non seguire più" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:246 #, python-format msgid "show one more message" -msgstr "" +msgstr "Mostra un nuovo messaggio" #. module: mail #: code:addons/mail/mail_mail.py:71 #: code:addons/mail/res_users.py:76 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Azione non valida!" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:25 #, python-format msgid "User img" -msgstr "" +msgstr "Immagine Utente" #. module: mail #: model:ir.actions.act_window,name:mail.action_view_mail_mail @@ -352,7 +365,7 @@ msgstr "Email" #. module: mail #: field:mail.followers,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Partner Correlato" #. module: mail #: help:mail.group,message_summary:0 @@ -362,6 +375,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Gestisce il sommario (numero di messaggi, ...) di Chatter. Questo sommario è " +"direttamente in html così da poter essere inserito nelle viste kanban." #. module: mail #: help:mail.alias,alias_model_id:0 @@ -375,7 +390,7 @@ msgstr "" #: selection:mail.compose.message,type:0 #: selection:mail.message,type:0 msgid "System notification" -msgstr "" +msgstr "Notifica di sistema" #. module: mail #: model:ir.model,name:mail.model_res_partner @@ -386,7 +401,7 @@ msgstr "Partner" #. module: mail #: model:ir.ui.menu,name:mail.mail_my_stuff msgid "Organizer" -msgstr "" +msgstr "Rubrica" #. module: mail #: field:mail.compose.message,subject:0 @@ -397,12 +412,12 @@ msgstr "Oggetto" #. module: mail #: field:mail.wizard.invite,partner_ids:0 msgid "Partners" -msgstr "" +msgstr "Partners" #. module: mail #: view:mail.mail:0 msgid "Retry" -msgstr "" +msgstr "Riprova" #. module: mail #: field:mail.compose.message,email_from:0 @@ -415,7 +430,7 @@ msgstr "Da" #: view:mail.mail:0 #: view:mail.message.subtype:0 msgid "Email message" -msgstr "" +msgstr "Messaggio email" #. module: mail #: help:mail.compose.message,favorite_user_ids:0 @@ -426,35 +441,35 @@ msgstr "" #. module: mail #: model:ir.model,name:mail.model_base_config_settings msgid "base.config.settings" -msgstr "" +msgstr "base.config.settings" #. module: mail #: field:mail.compose.message,to_read:0 #: field:mail.message,to_read:0 msgid "To read" -msgstr "" +msgstr "Da leggere" #. module: mail #: view:mail.compose.message:0 msgid "Send" -msgstr "" +msgstr "Invia" #. module: mail #. openerp-web #: code:addons/mail/static/src/js/mail_followers.js:130 #, python-format msgid "No followers" -msgstr "" +msgstr "Nessun follower" #. module: mail #: view:mail.mail:0 msgid "Failed" -msgstr "" +msgstr "Fallito" #. module: mail #: model:mail.message.subtype,name:mail.mt_crm_won msgid "Won" -msgstr "" +msgstr "Vinto" #. module: mail #. openerp-web @@ -467,67 +482,67 @@ msgstr "" #: field:res.partner,message_follower_ids:0 #, python-format msgid "Followers" -msgstr "" +msgstr "Followers" #. module: mail #: model:ir.actions.client,name:mail.action_mail_archives_feeds #: model:ir.ui.menu,name:mail.mail_archivesfeeds msgid "Archives" -msgstr "" +msgstr "Archivi" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:82 #, python-format msgid "Delete this attachment" -msgstr "" +msgstr "Elimina questo allegato" #. module: mail #: field:mail.compose.message,message_id:0 #: field:mail.message,message_id:0 msgid "Message-Id" -msgstr "" +msgstr "Message-Id" #. module: mail #. openerp-web #: code:addons/mail/static/src/js/mail_followers.js:132 #, python-format msgid "One follower" -msgstr "" +msgstr "Un follower" #. module: mail #: field:mail.compose.message,type:0 #: field:mail.message,type:0 msgid "Type" -msgstr "" +msgstr "Tipo" #. module: mail #: selection:mail.compose.message,type:0 #: view:mail.mail:0 #: selection:mail.message,type:0 msgid "Email" -msgstr "" +msgstr "Email" #. module: mail #: field:ir.ui.menu,mail_group_id:0 msgid "Mail Group" -msgstr "" +msgstr "Gruppo Mail" #. module: mail #: selection:res.partner,notification_email_send:0 msgid "Comments and Emails" -msgstr "" +msgstr "Commenti ed Emails" #. module: mail #: model:ir.model,name:mail.model_mail_favorite msgid "Favorite messages" -msgstr "" +msgstr "Messaggi preferiti" #. module: mail #: code:addons/mail/res_users.py:97 #, python-format msgid "%s has joined the %s network." -msgstr "" +msgstr "%s si è unito alla rete %s." #. module: mail #: help:mail.group,image_small:0 @@ -541,36 +556,36 @@ msgstr "" #: view:mail.compose.message:0 #: field:mail.message,partner_ids:0 msgid "Recipients" -msgstr "" +msgstr "Destinatari" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:126 #, python-format msgid "<<<" -msgstr "" +msgstr "<<<" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:43 #, python-format msgid "Write to the followers of this document..." -msgstr "" +msgstr "Scrivi ai followers di questo documento..." #. module: mail #: field:mail.group,group_public_id:0 msgid "Authorized Group" -msgstr "" +msgstr "Gruppo Autorizzato" #. module: mail #: view:mail.group:0 msgid "Join Group" -msgstr "" +msgstr "Unisciti al Gruppo" #. module: mail #: help:mail.mail,email_from:0 msgid "Message sender, taken from user preferences." -msgstr "" +msgstr "Mittente messaggi, preso dalle preferenze utente." #. module: mail #: code:addons/mail/wizard/invite.py:39 @@ -582,7 +597,7 @@ msgstr "" #: field:mail.compose.message,parent_id:0 #: field:mail.message,parent_id:0 msgid "Parent Message" -msgstr "" +msgstr "Messaggio Superiore" #. module: mail #: field:mail.compose.message,res_id:0 @@ -606,14 +621,14 @@ msgstr "" #. module: mail #: model:ir.ui.menu,name:mail.group_rd_ir_ui_menu msgid "R&D" -msgstr "" +msgstr "R&D" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:61 #, python-format msgid "/web/binary/upload_attachment" -msgstr "" +msgstr "/web/binary/upload_attachment" #. module: mail #: model:ir.model,name:mail.model_mail_thread @@ -623,13 +638,13 @@ msgstr "" #. module: mail #: view:mail.mail:0 msgid "Advanced" -msgstr "" +msgstr "Avanzate" #. module: mail #: code:addons/mail/wizard/mail_compose_message.py:154 #, python-format msgid "Re:" -msgstr "" +msgstr "Re:" #. module: mail #. openerp-web @@ -637,7 +652,7 @@ msgstr "" #: view:mail.mail:0 #, python-format msgid "Reply" -msgstr "" +msgstr "Rispondi" #. module: mail #: code:addons/mail/res_users.py:76 @@ -668,26 +683,26 @@ msgstr "" #: code:addons/mail/static/src/xml/mail.xml:271 #, python-format msgid "like" -msgstr "" +msgstr "like" #. module: mail #: view:mail.compose.message:0 #: view:mail.mail:0 #: view:mail.wizard.invite:0 msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:44 #, python-format msgid "Share with my followers..." -msgstr "" +msgstr "Condividi con i miei followers..." #. module: mail #: field:mail.notification,partner_id:0 msgid "Contact" -msgstr "" +msgstr "Contatto" #. module: mail #: view:mail.group:0 @@ -699,12 +714,12 @@ msgstr "" #. module: mail #: model:ir.model,name:mail.model_ir_ui_menu msgid "ir.ui.menu" -msgstr "" +msgstr "ir.ui.menu" #. module: mail #: view:mail.message:0 msgid "Has attachments" -msgstr "" +msgstr "Ha allegati" #. module: mail #: view:mail.mail:0 @@ -738,7 +753,7 @@ msgstr "" #: view:mail.mail:0 #: selection:mail.message,type:0 msgid "Comment" -msgstr "" +msgstr "Commento" #. module: mail #: model:ir.actions.client,help:mail.action_mail_inbox_feeds @@ -758,19 +773,19 @@ msgstr "" #. module: mail #: field:mail.mail,notification:0 msgid "Is Notification" -msgstr "" +msgstr "E' una notifica" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:161 #, python-format msgid "Compose a new message" -msgstr "" +msgstr "Componi un nuovo messaggio" #. module: mail #: view:mail.mail:0 msgid "Send Now" -msgstr "" +msgstr "Invia Adesso" #. module: mail #: code:addons/mail/mail_mail.py:71 @@ -789,7 +804,7 @@ msgstr "" #. module: mail #: field:mail.group,image:0 msgid "Photo" -msgstr "" +msgstr "Foto" #. module: mail #. openerp-web @@ -798,7 +813,7 @@ msgstr "" #: view:mail.wizard.invite:0 #, python-format msgid "or" -msgstr "" +msgstr "o" #. module: mail #: help:mail.compose.message,vote_user_ids:0 @@ -826,13 +841,13 @@ msgstr "Cerca email" #. module: mail #: model:mail.message.subtype,name:mail.mt_issue_canceled msgid "Canceled" -msgstr "" +msgstr "Annullato" #. module: mail #: field:mail.compose.message,child_ids:0 #: field:mail.message,child_ids:0 msgid "Child Messages" -msgstr "" +msgstr "Messaggi Figli" #. module: mail #: help:mail.compose.message,to_read:0 @@ -843,12 +858,12 @@ msgstr "" #. module: mail #: field:mail.alias,alias_user_id:0 msgid "Owner" -msgstr "" +msgstr "Proprietario" #. module: mail #: model:ir.model,name:mail.model_res_users msgid "Users" -msgstr "" +msgstr "Utenti" #. module: mail #: model:ir.model,name:mail.model_mail_message @@ -859,67 +874,67 @@ msgstr "" #: field:mail.vote,message_id:0 #: field:mail.wizard.invite,message:0 msgid "Message" -msgstr "" +msgstr "Messaggio" #. module: mail #: model:ir.actions.client,name:mail.action_mail_star_feeds #: model:ir.ui.menu,name:mail.mail_starfeeds msgid "Todo" -msgstr "" +msgstr "Da fare" #. module: mail #: help:mail.followers,res_id:0 #: help:mail.wizard.invite,res_id:0 msgid "Id of the followed resource" -msgstr "" +msgstr "Id della risorsa seguita" #. module: mail #: field:mail.compose.message,body:0 #: field:mail.message,body:0 msgid "Contents" -msgstr "" +msgstr "Contenuti" #. module: mail #: model:ir.actions.act_window,name:mail.action_view_mail_alias #: model:ir.ui.menu,name:mail.mail_alias_menu msgid "Aliases" -msgstr "" +msgstr "Alias" #. module: mail #: field:mail.compose.message,vote_user_ids:0 #: field:mail.message,vote_user_ids:0 msgid "Votes" -msgstr "" +msgstr "Voti" #. module: mail #: view:mail.group:0 msgid "Group" -msgstr "" +msgstr "Gruppo" #. module: mail #: field:mail.group,public:0 msgid "Privacy" -msgstr "" +msgstr "Privacy" #. module: mail #: view:mail.mail:0 msgid "Notification" -msgstr "" +msgstr "Notifica" #. module: mail #: model:ir.ui.menu,name:mail.group_support_ir_ui_menu msgid "Support" -msgstr "" +msgstr "Supporto" #. module: mail #: view:mail.wizard.invite:0 msgid "Add Followers" -msgstr "" +msgstr "Aggiungi Followers" #. module: mail #: model:mail.message.subtype,name:mail.mt_issue_closed msgid "Closed" -msgstr "" +msgstr "Chiuso" #. module: mail #: field:mail.alias,alias_force_thread_id:0 @@ -929,7 +944,7 @@ msgstr "" #. module: mail #: model:ir.ui.menu,name:mail.mail_group_root msgid "My Groups" -msgstr "" +msgstr "I miei Gruppi" #. module: mail #: model:ir.actions.client,help:mail.action_mail_archives_feeds @@ -948,18 +963,18 @@ msgstr "" #: view:mail.mail:0 #: field:mail.mail,state:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: mail #: view:mail.mail:0 #: selection:mail.mail,state:0 msgid "Outgoing" -msgstr "" +msgstr "In uscita" #. module: mail #: selection:res.partner,notification_email_send:0 msgid "All feeds" -msgstr "" +msgstr "Tutti i feeds" #. module: mail #: help:mail.compose.message,record_name:0 @@ -976,12 +991,12 @@ msgstr "" #: field:mail.message,notification_ids:0 #: view:mail.notification:0 msgid "Notifications" -msgstr "" +msgstr "Notifiche" #. module: mail #: view:mail.alias:0 msgid "Search Alias" -msgstr "" +msgstr "Cerca Alias" #. module: mail #: help:mail.alias,alias_force_thread_id:0 @@ -1004,7 +1019,7 @@ msgstr "" #. module: mail #: view:mail.mail:0 msgid "by" -msgstr "" +msgstr "da" #. module: mail #: model:ir.ui.menu,name:mail.group_best_sales_practices_ir_ui_menu @@ -1014,14 +1029,14 @@ msgstr "" #. module: mail #: selection:mail.group,public:0 msgid "Selected Group Only" -msgstr "" +msgstr "Solo Gruppo Selezionato" #. module: mail #: field:mail.group,message_is_follower:0 #: field:mail.thread,message_is_follower:0 #: field:res.partner,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "E' un Follower" #. module: mail #: view:mail.alias:0 @@ -1029,17 +1044,17 @@ msgstr "" #: view:mail.mail:0 #: field:mail.vote,user_id:0 msgid "User" -msgstr "" +msgstr "Utente" #. module: mail #: view:mail.group:0 msgid "Groups" -msgstr "" +msgstr "Gruppi" #. module: mail #: view:mail.message:0 msgid "Messages Search" -msgstr "" +msgstr "Ricerca Messaggi" #. module: mail #: field:mail.compose.message,date:0 @@ -1052,12 +1067,12 @@ msgstr "Data" #: code:addons/mail/static/src/xml/mail.xml:34 #, python-format msgid "Post" -msgstr "" +msgstr "Pubblica" #. module: mail #: view:mail.mail:0 msgid "Extended Filters..." -msgstr "" +msgstr "Filtri Estesi..." #. module: mail #: field:mail.group,message_comment_ids:0 @@ -1067,21 +1082,21 @@ msgstr "" #: field:res.partner,message_comment_ids:0 #: help:res.partner,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Commenti ed Email" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:107 #, python-format msgid "To:" -msgstr "" +msgstr "A:" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:166 #, python-format msgid "Write to my followers" -msgstr "" +msgstr "Scrivi ai miei followers" #. module: mail #: model:ir.model,name:mail.model_res_groups @@ -1091,28 +1106,28 @@ msgstr "" #. module: mail #: field:mail.message.subtype,default:0 msgid "Default" -msgstr "" +msgstr "Predefinito" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:245 #, python-format msgid "show more message" -msgstr "" +msgstr "Mostra ulteriori messaggi" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:213 #, python-format msgid "Mark as Todo" -msgstr "" +msgstr "Segna da fare" #. module: mail #: field:mail.group,message_summary:0 #: field:mail.thread,message_summary:0 #: field:res.partner,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Riepilogo" #. module: mail #: field:mail.compose.message,subtype_id:0 @@ -1120,32 +1135,32 @@ msgstr "" #: field:mail.message,subtype_id:0 #: view:mail.message.subtype:0 msgid "Subtype" -msgstr "" +msgstr "Sottotipo" #. module: mail #: view:mail.group:0 msgid "Group Form" -msgstr "" +msgstr "Form Gruppo" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:247 #, python-format msgid "more messages" -msgstr "" +msgstr "altri messaggi" #. module: mail #: code:addons/mail/update.py:93 #, python-format msgid "Error" -msgstr "" +msgstr "Errore" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail_followers.xml:13 #, python-format msgid "Following" -msgstr "" +msgstr "Seguendo" #. module: mail #: sql_constraint:mail.alias:0 @@ -1198,24 +1213,26 @@ msgstr "CC" #: view:mail.compose.message:0 #, python-format msgid "Followers of" -msgstr "" +msgstr "Followers di" #. module: mail #: help:mail.mail,auto_delete:0 msgid "Permanently delete this email after sending it, to save space" msgstr "" +"Cancella definitivamente questo messaggio dopo averlo inviato, per " +"risparmiare spazio" #. module: mail #: model:ir.actions.client,name:mail.action_mail_group_feeds msgid "Discussion Group" -msgstr "" +msgstr "Gruppo Discussioni" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:209 #, python-format msgid "Done" -msgstr "" +msgstr "Completato" #. module: mail #: help:mail.message.subtype,res_model:0 @@ -1226,19 +1243,19 @@ msgstr "" #. module: mail #: model:mail.message.subtype,name:mail.mt_comment msgid "Discussions" -msgstr "" +msgstr "Discussioni" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail_followers.xml:11 #, python-format msgid "Follow" -msgstr "" +msgstr "Segui" #. module: mail #: model:ir.ui.menu,name:mail.group_all_employees_ir_ui_menu msgid "Whole Company" -msgstr "" +msgstr "Tutta l'azienda" #. module: mail #. openerp-web @@ -1246,34 +1263,34 @@ msgstr "" #: view:mail.compose.message:0 #, python-format msgid "and" -msgstr "" +msgstr "e" #. module: mail #: help:mail.mail,body_html:0 msgid "Rich-text/HTML message" -msgstr "" +msgstr "Messaggio Rich-text/HTML" #. module: mail #: view:mail.mail:0 msgid "Creation Month" -msgstr "" +msgstr "Mese di Creazione" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:257 #, python-format msgid "Compose new Message" -msgstr "" +msgstr "Componi nuovo Messaggio" #. module: mail #: field:mail.group,menu_id:0 msgid "Related Menu" -msgstr "" +msgstr "Menu Correlato" #. module: mail #: view:mail.message:0 msgid "Content" -msgstr "" +msgstr "Contenuto" #. module: mail #: field:mail.mail,email_to:0 @@ -1283,30 +1300,30 @@ msgstr "A" #. module: mail #: model:ir.model,name:mail.model_mail_message_subtype msgid "mail_message_subtype" -msgstr "" +msgstr "mail_message_subtype" #. module: mail #: selection:mail.group,public:0 msgid "Private" -msgstr "" +msgstr "Privato" #. module: mail #: model:mail.message.subtype,name:mail.mt_issue_new msgid "New" -msgstr "" +msgstr "Nuovo" #. module: mail #: field:mail.compose.message,notified_partner_ids:0 #: field:mail.message,notified_partner_ids:0 msgid "Notified partners" -msgstr "" +msgstr "Partners notificati" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail_followers.xml:22 #, python-format msgid "Invite others" -msgstr "" +msgstr "Invita altri" #. module: mail #: help:mail.group,public:0 @@ -1334,18 +1351,18 @@ msgstr "" #. module: mail #: field:mail.group,description:0 msgid "Description" -msgstr "" +msgstr "Descrizione" #. module: mail #: model:mail.message.subtype,name:mail.mt_crm_stage #: model:mail.message.subtype,name:mail.mt_issue_change msgid "Stage Changed" -msgstr "" +msgstr "Stato Cambiato" #. module: mail #: model:ir.model,name:mail.model_mail_followers msgid "Document Followers" -msgstr "" +msgstr "Followers del Documento" #. module: mail #: code:addons/mail/mail_message.py:647 @@ -1360,31 +1377,31 @@ msgstr "" #. module: mail #: selection:res.partner,notification_email_send:0 msgid "Never" -msgstr "" +msgstr "Più recente" #. module: mail #: field:mail.mail,mail_server_id:0 msgid "Outgoing mail server" -msgstr "" +msgstr "Mail server in Uscita" #. module: mail #: code:addons/mail/mail_message.py:813 #, python-format msgid "Partners email addresses not found" -msgstr "" +msgstr "Indirizzi email Partner non trovati" #. module: mail #: view:mail.mail:0 #: selection:mail.mail,state:0 msgid "Sent" -msgstr "" +msgstr "Inviato" #. module: mail #: model:ir.actions.act_window,name:mail.action_view_favorites #: model:ir.ui.menu,name:mail.menu_email_favorites #: view:mail.favorite:0 msgid "Favorites" -msgstr "" +msgstr "Preferiti" #. module: mail #: help:res.partner,notification_email_send:0 @@ -1396,7 +1413,7 @@ msgstr "" #: model:ir.actions.act_window,name:mail.action_view_groups #: model:ir.ui.menu,name:mail.mail_allgroups msgid "Join a group" -msgstr "" +msgstr "Unisciti ad un gruppo" #. module: mail #: model:ir.actions.client,help:mail.action_mail_group_feeds @@ -1428,22 +1445,22 @@ msgstr "" #: code:addons/mail/static/src/xml/mail.xml:113 #, python-format msgid "this document" -msgstr "" +msgstr "questo documento" #. module: mail #: field:mail.compose.message,filter_id:0 msgid "Filters" -msgstr "" +msgstr "Filtri" #. module: mail #: model:mail.message.subtype,name:mail.mt_crm_lost msgid "Lost" -msgstr "" +msgstr "Perso" #. module: mail #: field:mail.alias,alias_defaults:0 msgid "Default Values" -msgstr "" +msgstr "Valori Predefiniti" #. module: mail #: help:base.config.settings,alias_domain:0 @@ -1456,14 +1473,14 @@ msgstr "" #: field:mail.compose.message,favorite_user_ids:0 #: field:mail.message,favorite_user_ids:0 msgid "Favorite" -msgstr "" +msgstr "Preferito" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:125 #, python-format msgid "others..." -msgstr "" +msgstr "altri..." #. module: mail #: view:mail.alias:0 @@ -1471,12 +1488,12 @@ msgstr "" #: field:mail.group,alias_id:0 #: field:res.users,alias_id:0 msgid "Alias" -msgstr "" +msgstr "Alias" #. module: mail #: model:ir.model,name:mail.model_mail_mail msgid "Outgoing Mails" -msgstr "" +msgstr "Email in Uscita" #. module: mail #: help:mail.compose.message,notification_ids:0 @@ -1496,12 +1513,12 @@ msgstr "" #: view:mail.alias:0 #: field:mail.message.subtype,res_model:0 msgid "Model" -msgstr "" +msgstr "Modello" #. module: mail #: view:mail.message:0 msgid "Unread" -msgstr "" +msgstr "Non letto" #. module: mail #: help:mail.followers,subtype_ids:0 @@ -1515,7 +1532,7 @@ msgstr "" #: help:mail.thread,message_ids:0 #: help:res.partner,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Storico messaggi e comunicazioni" #. module: mail #: help:mail.mail,references:0 @@ -1525,7 +1542,7 @@ msgstr "" #. module: mail #: field:mail.compose.message,composition_mode:0 msgid "Composition mode" -msgstr "" +msgstr "Modo composizione" #. module: mail #: field:mail.compose.message,model:0 @@ -1553,12 +1570,12 @@ msgstr "" #. module: mail #: help:mail.mail,email_cc:0 msgid "Carbon copy message recipients" -msgstr "" +msgstr "Destinatari CC" #. module: mail #: field:mail.alias,alias_domain:0 msgid "Alias domain" -msgstr "" +msgstr "Alias dominio" #. module: mail #: code:addons/mail/update.py:93 @@ -1588,12 +1605,12 @@ msgstr "" #. module: mail #: selection:mail.mail,state:0 msgid "Delivery Failed" -msgstr "" +msgstr "Invio Fallito" #. module: mail #: field:mail.compose.message,partner_ids:0 msgid "Additional contacts" -msgstr "" +msgstr "Contatti Aggiuntivi" #. module: mail #: help:mail.compose.message,parent_id:0 @@ -1609,20 +1626,20 @@ msgstr "" #. module: mail #: selection:res.partner,notification_email_send:0 msgid "Emails only" -msgstr "" +msgstr "Solo email" #. module: mail #: model:ir.actions.client,name:mail.action_mail_inbox_feeds #: model:ir.ui.menu,name:mail.mail_inboxfeeds msgid "Inbox" -msgstr "" +msgstr "Inbox" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:58 #, python-format msgid "File" -msgstr "" +msgstr "File" #. module: mail #. openerp-web @@ -1635,7 +1652,7 @@ msgstr "" #: model:ir.actions.act_window,name:mail.action_view_message_subtype #: model:ir.ui.menu,name:mail.menu_message_subtype msgid "Subtypes" -msgstr "" +msgstr "Sottotipi" #. module: mail #: model:ir.model,name:mail.model_mail_alias diff --git a/addons/mrp/i18n/nl.po b/addons/mrp/i18n/nl.po index 1f49d02f3d0..5f6151643e1 100644 --- a/addons/mrp/i18n/nl.po +++ b/addons/mrp/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-02-18 14:43+0000\n" +"PO-Revision-Date: 2012-12-09 19:07+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \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: 2012-12-04 05:09+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: mrp #: help:mrp.config.settings,module_mrp_repair:0 @@ -102,7 +102,7 @@ msgstr "Voor voorraadproducten en verbruiksproducten" #: help:mrp.production,message_unread:0 #: help:mrp.production.workcenter.line,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen." #. module: mrp #: help:mrp.routing.workcenter,cycle_nbr:0 @@ -116,7 +116,7 @@ msgstr "" #. module: mrp #: view:product.product:0 msgid "False" -msgstr "" +msgstr "Onwaar" #. module: mrp #: view:mrp.bom:0 @@ -143,6 +143,9 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Bevat de samenvatting van de chatter (aantal berichten,...). Deze " +"samenvatting is direct in html formaat om zo in de kanban weergave te worden " +"ingevoegd." #. module: mrp #: model:process.transition,name:mrp.process_transition_servicerfq0 @@ -212,7 +215,7 @@ msgstr "" #: code:addons/mrp/mrp.py:648 #, python-format msgid "Cannot cancel manufacturing order!" -msgstr "" +msgstr "Het is niet mogelijk de productieorder te annuleren!" #. module: mrp #: field:mrp.workcenter,costs_cycle_account_id:0 @@ -454,7 +457,7 @@ msgstr "Geplande datum" #: code:addons/mrp/procurement.py:113 #, python-format msgid "Manufacturing Order %s created." -msgstr "" +msgstr "Productieorder %s aangemaakt." #. module: mrp #: view:mrp.bom:0 @@ -530,7 +533,7 @@ msgstr "Offerte aanvraag" #: view:mrp.product_price:0 #: view:mrp.workcenter.load:0 msgid "or" -msgstr "" +msgstr "of" #. module: mrp #: model:process.transition,note:mrp.process_transition_billofmaterialrouting0 @@ -550,7 +553,7 @@ msgstr "Producten te produceren" #. module: mrp #: view:mrp.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Toepassen" #. module: mrp #: view:mrp.routing:0 @@ -866,7 +869,7 @@ msgstr "" #. module: mrp #: view:mrp.production:0 msgid "Mark as Started" -msgstr "" +msgstr "Markeert als gestart" #. module: mrp #: view:mrp.production:0 @@ -945,7 +948,7 @@ msgstr "Gereed voor productie" #: field:mrp.production,message_is_follower:0 #: field:mrp.production.workcenter.line,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Is een volger" #. module: mrp #: view:mrp.bom:0 @@ -1150,7 +1153,7 @@ msgstr "Modus" #: help:mrp.production,message_ids:0 #: help:mrp.production.workcenter.line,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Berichten en communicatie historie" #. module: mrp #: field:mrp.workcenter.load,measure_unit:0 @@ -1190,7 +1193,7 @@ msgstr "Lopende productieorders" #. module: mrp #: model:ir.actions.client,name:mrp.action_client_mrp_menu msgid "Open MRP Menu" -msgstr "" +msgstr "Productie menu openen" #. module: mrp #: model:ir.actions.act_window,name:mrp.mrp_production_action4 @@ -1264,7 +1267,7 @@ msgstr "Per week" #: field:mrp.production,message_unread:0 #: field:mrp.production.workcenter.line,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ongelezen berichten" #. module: mrp #: model:process.transition,note:mrp.process_transition_stockmts0 @@ -1309,7 +1312,7 @@ msgstr "Selecteer tijdseenheid" #: model:ir.ui.menu,name:mrp.menu_mrp_product_form #: view:mrp.config.settings:0 msgid "Products" -msgstr "" +msgstr "Producten" #. module: mrp #: view:report.workcenter.load:0 @@ -1336,7 +1339,7 @@ msgstr "" #: code:addons/mrp/mrp.py:521 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Ongeldige actie!" #. module: mrp #: model:process.transition,note:mrp.process_transition_producttostockrules0 @@ -1382,7 +1385,7 @@ msgstr "" #: code:addons/mrp/mrp.py:374 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (kopie)" #. module: mrp #: model:ir.model,name:mrp.model_mrp_production_product_line @@ -1494,7 +1497,7 @@ msgstr "Kostenplaats uren" #: field:mrp.production,product_uom:0 #: field:mrp.production.product.line,product_uom:0 msgid "Product Unit of Measure" -msgstr "" +msgstr "Maateenheid product" #. module: mrp #: view:mrp.production:0 @@ -1765,7 +1768,7 @@ msgstr "Goedkeuren" #. module: mrp #: view:mrp.config.settings:0 msgid "Order" -msgstr "" +msgstr "Opdracht" #. module: mrp #: view:mrp.property.group:0 @@ -1847,7 +1850,7 @@ msgstr "Geannuleerd" #. module: mrp #: view:mrp.production:0 msgid "(Update)" -msgstr "" +msgstr "(Update)" #. module: mrp #: help:mrp.config.settings,module_mrp_operations:0 @@ -1890,7 +1893,7 @@ msgstr "Bedrijf" #. module: mrp #: view:mrp.bom:0 msgid "Default Unit of Measure" -msgstr "" +msgstr "Standaard maateenheid" #. module: mrp #: field:mrp.workcenter,time_cycle:0 @@ -1916,7 +1919,7 @@ msgstr "Automatische verwerkingsregel" #: field:mrp.production,message_ids:0 #: field:mrp.production.workcenter.line,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Berichten" #. module: mrp #: view:mrp.production:0 @@ -1929,7 +1932,7 @@ msgstr "Bereken gegevens" #: code:addons/mrp/wizard/change_production_qty.py:88 #, python-format msgid "Error!" -msgstr "" +msgstr "Fout!" #. module: mrp #: code:addons/mrp/report/price.py:139 @@ -1973,7 +1976,7 @@ msgstr "Productietijd" #: code:addons/mrp/mrp.py:284 #, python-format msgid "Warning" -msgstr "" +msgstr "Waarschuwing" #. module: mrp #: field:mrp.bom,product_uos_qty:0 @@ -1983,7 +1986,7 @@ msgstr "Product hvh. VE" #. module: mrp #: field:mrp.production,move_prod_id:0 msgid "Product Move" -msgstr "" +msgstr "Product mutatie" #. module: mrp #: model:ir.actions.act_window,help:mrp.action_report_in_out_picking_tree @@ -2011,7 +2014,7 @@ msgstr "Productie efficiëntie" #: field:mrp.production,message_follower_ids:0 #: field:mrp.production.workcenter.line,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Volgers" #. module: mrp #: help:mrp.bom,active:0 @@ -2222,7 +2225,7 @@ msgstr "Referentie" #: field:mrp.production.workcenter.line,message_comment_ids:0 #: help:mrp.production.workcenter.line,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Opmerkingen en e-mails." #. module: mrp #: code:addons/mrp/mrp.py:784 @@ -2437,7 +2440,7 @@ msgstr "Reinigingstijd in uren" #: field:mrp.production,message_summary:0 #: field:mrp.production.workcenter.line,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Samenvatting" #. module: mrp #: model:process.transition,name:mrp.process_transition_purchaseprocure0 @@ -2495,12 +2498,12 @@ msgstr "Afwezigheid resource" #. module: mrp #: help:mrp.bom,sequence:0 msgid "Gives the sequence order when displaying a list of bills of material." -msgstr "Geeft de volgorde weer, bij het weergaven van een materiaallijst." +msgstr "Geeft de volgorde weer, bij het weergeven van een materiaallijst." #. module: mrp #: model:ir.model,name:mrp.model_mrp_config_settings msgid "mrp.config.settings" -msgstr "" +msgstr "mrp.config.settings" #. module: mrp #: view:mrp.production:0 @@ -2536,9 +2539,6 @@ msgstr "Producten te verbruiken" #~ msgid "Product Standard Price" #~ msgstr "Standaard productprijs" -#~ msgid "Modification Date" -#~ msgstr "Wijzigingsdatum" - #~ msgid "For stockable and consumable" #~ msgstr "Voor voorraadartikel en verbruiksartikel" @@ -3302,9 +3302,6 @@ msgstr "Producten te verbruiken" #~ msgid "Workcenter Operations" #~ msgstr "Werkcenter operaties" -#~ msgid "Modification name" -#~ msgstr "Naamswijziging" - #~ msgid "alphabetical indices" #~ msgstr "Alfabetische index" @@ -3682,3 +3679,9 @@ msgstr "Producten te verbruiken" #~ "en te beheren, welke moeten worden opgevolgt binnen uw werkplekken om een " #~ "product te produceren. Ze zijn gekoppeld aan een materiaallijst, welke de " #~ "benodigde materialen beschrijft." + +#~ msgid "Modification name" +#~ msgstr "Naam van wijziging" + +#~ msgid "Modification Date" +#~ msgstr "Datum van wijziging" diff --git a/addons/mrp_byproduct/i18n/nl.po b/addons/mrp_byproduct/i18n/nl.po index 0cc23f5780c..abcc7c67d89 100644 --- a/addons/mrp_byproduct/i18n/nl.po +++ b/addons/mrp_byproduct/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-02-18 14:58+0000\n" +"PO-Revision-Date: 2012-12-09 18:53+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \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: 2012-12-04 05:43+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: mrp_byproduct #: help:mrp.subproduct,subproduct_type:0 @@ -36,7 +36,7 @@ msgstr "Product" #. module: mrp_byproduct #: field:mrp.subproduct,product_uom:0 msgid "Product Unit of Measure" -msgstr "" +msgstr "Maateenheid product" #. module: mrp_byproduct #: model:ir.model,name:mrp_byproduct.model_mrp_production @@ -46,13 +46,13 @@ msgstr "Productieorder" #. module: mrp_byproduct #: model:ir.model,name:mrp_byproduct.model_change_production_qty msgid "Change Quantity of Products" -msgstr "" +msgstr "Wijzig de hoeveelheid van producten" #. module: mrp_byproduct #: view:mrp.bom:0 #: field:mrp.bom,sub_products:0 msgid "Byproducts" -msgstr "" +msgstr "Bijproducten" #. module: mrp_byproduct #: field:mrp.subproduct,subproduct_type:0 @@ -73,7 +73,7 @@ msgstr "Aantal" #: code:addons/mrp_byproduct/mrp_byproduct.py:62 #, python-format msgid "Warning" -msgstr "" +msgstr "Waarschuwing" #. module: mrp_byproduct #: field:mrp.subproduct,bom_id:0 @@ -101,4 +101,4 @@ msgstr "" #. module: mrp_byproduct #: model:ir.model,name:mrp_byproduct.model_mrp_subproduct msgid "Byproduct" -msgstr "" +msgstr "Bijproducten" diff --git a/addons/note/i18n/hr.po b/addons/note/i18n/hr.po new file mode 100644 index 00000000000..01be8bbc2b4 --- /dev/null +++ b/addons/note/i18n/hr.po @@ -0,0 +1,290 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:02+0000\n" +"PO-Revision-Date: 2012-12-09 20:42+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: note +#: field:note.note,memo:0 +msgid "Note Content" +msgstr "" + +#. module: note +#: view:note.stage:0 +msgid "Stages of Notes" +msgstr "" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_04 +#: model:note.stage,name:note.note_stage_02 +msgid "This Week" +msgstr "Ovaj tjedan" + +#. module: note +#: model:ir.model,name:note.model_base_config_settings +msgid "base.config.settings" +msgstr "" + +#. module: note +#: model:ir.model,name:note.model_note_tag +msgid "Note Tag" +msgstr "" + +#. module: note +#: model:res.groups,name:note.group_note_fancy +msgid "Notes / Fancy mode" +msgstr "" + +#. module: note +#: model:ir.model,name:note.model_note_note +#: view:note.note:0 +msgid "Note" +msgstr "Bilješka" + +#. module: note +#: view:note.note:0 +msgid "Group By..." +msgstr "Grupiraj po..." + +#. module: note +#: field:note.note,message_follower_ids:0 +msgid "Followers" +msgstr "Pratitelji" + +#. module: note +#: model:ir.actions.act_window,help:note.action_note_note +msgid "" +"

    \n" +" Click to add a personal note.\n" +"

    \n" +" Use notes to organize personal tasks or notes. All\n" +" notes are private; no one else will be able to see them. " +"However\n" +" you can share some notes with other people by inviting " +"followers\n" +" on the note. (Useful for meeting minutes, especially if\n" +" you activate the pad feature for collaborative writings).\n" +"

    \n" +" You can customize how you process your notes/tasks by adding,\n" +" removing or modifying columns.\n" +"

    \n" +" " +msgstr "" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_01 +#: model:note.stage,name:note.note_stage_01 +msgid "Today" +msgstr "Danas" + +#. module: note +#: model:ir.model,name:note.model_res_users +msgid "Users" +msgstr "Korisnici" + +#. module: note +#: view:note.note:0 +msgid "í" +msgstr "í" + +#. module: note +#: view:note.stage:0 +msgid "Stage of Notes" +msgstr "" + +#. module: note +#: field:note.note,message_unread:0 +msgid "Unread Messages" +msgstr "Nepročitane poruke" + +#. module: note +#: field:note.note,current_partner_id:0 +msgid "unknown" +msgstr "nepoznato" + +#. module: note +#: view:note.note:0 +msgid "By sticky note Category" +msgstr "" + +#. module: note +#: help:note.note,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: note +#: field:note.stage,name:0 +msgid "Stage Name" +msgstr "" + +#. module: note +#: field:note.note,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_02 +msgid "Tomorrow" +msgstr "Sutra" + +#. module: note +#: view:note.note:0 +#: field:note.note,open:0 +msgid "Active" +msgstr "Aktivan" + +#. module: note +#: help:note.stage,user_id:0 +msgid "Owner of the note stage." +msgstr "" + +#. module: note +#: model:ir.ui.menu,name:note.menu_notes_stage +msgid "Categories" +msgstr "Kategorije" + +#. module: note +#: field:note.note,message_comment_ids:0 +#: help:note.note,message_comment_ids:0 +msgid "Comments and emails" +msgstr "Komentari i e-pošta." + +#. module: note +#: field:note.tag,name:0 +msgid "Tag Name" +msgstr "Naziv taga" + +#. module: note +#: field:note.note,message_ids:0 +msgid "Messages" +msgstr "Poruke" + +#. module: note +#: view:base.config.settings:0 +#: model:ir.actions.act_window,name:note.action_note_note +#: model:ir.ui.menu,name:note.menu_note_notes +#: view:note.note:0 +#: model:note.stage,name:note.note_stage_04 +msgid "Notes" +msgstr "Bilješke" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_03 +#: model:note.stage,name:note.note_stage_03 +msgid "Later" +msgstr "Kasnije" + +#. module: note +#: model:ir.model,name:note.model_note_stage +msgid "Note Stage" +msgstr "" + +#. module: note +#: field:note.note,message_summary:0 +msgid "Summary" +msgstr "Sažetak" + +#. module: note +#: help:note.stage,sequence:0 +msgid "Used to order the note stages" +msgstr "" + +#. module: note +#: field:note.note,stage_ids:0 +msgid "Stages of Users" +msgstr "" + +#. module: note +#: field:note.note,name:0 +msgid "Note Summary" +msgstr "" + +#. module: note +#: model:ir.actions.act_window,name:note.action_note_stage +#: view:note.note:0 +msgid "Stages" +msgstr "" + +#. module: note +#: help:note.note,message_ids:0 +msgid "Messages and communication history" +msgstr "Poruke i povijest komuniciranja" + +#. module: note +#: view:note.note:0 +msgid "Delete" +msgstr "Briši" + +#. module: note +#: field:note.note,color:0 +msgid "Color Index" +msgstr "Indeks boje" + +#. module: note +#: field:note.note,sequence:0 +#: field:note.stage,sequence:0 +msgid "Sequence" +msgstr "Slijed" + +#. module: note +#: field:note.note,tag_ids:0 +msgid "Tags" +msgstr "Tagovi" + +#. module: note +#: view:note.note:0 +msgid "Archive" +msgstr "Arhiva" + +#. module: note +#: field:base.config.settings,module_note_pad:0 +msgid "Use collaborative pads (etherpad)" +msgstr "" + +#. module: note +#: help:note.note,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" +"Sadrži sažetak konverzacije (broj poruka,..). Ovaj sažetak je u html formatu " +"da bi mogao biti ubačen u kanban pogled." + +#. module: note +#: field:base.config.settings,group_note_fancy:0 +msgid "Use fancy layouts for notes" +msgstr "" + +#. module: note +#: field:note.stage,user_id:0 +msgid "Owner" +msgstr "Vlasnik" + +#. module: note +#: view:note.note:0 +#: field:note.note,stage_id:0 +msgid "Stage" +msgstr "" + +#. module: note +#: field:note.note,date_done:0 +msgid "Date done" +msgstr "Datum izvršenja" + +#. module: note +#: field:note.stage,fold:0 +msgid "Folded by Default" +msgstr "" diff --git a/addons/note_pad/i18n/hr.po b/addons/note_pad/i18n/hr.po new file mode 100644 index 00000000000..2354b2623ff --- /dev/null +++ b/addons/note_pad/i18n/hr.po @@ -0,0 +1,28 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2012-12-09 20:25+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: note_pad +#: model:ir.model,name:note_pad.model_note_note +msgid "Note" +msgstr "Bilješka" + +#. module: note_pad +#: field:note.note,note_pad_url:0 +msgid "Pad Url" +msgstr "Pad Url" diff --git a/addons/pad_project/i18n/hr.po b/addons/pad_project/i18n/hr.po new file mode 100644 index 00000000000..9afc8214c00 --- /dev/null +++ b/addons/pad_project/i18n/hr.po @@ -0,0 +1,38 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2012-12-09 20:44+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: pad_project +#: constraint:project.task:0 +msgid "Error ! Task end-date must be greater then task start-date" +msgstr "Pogreška! Datum završetka zadatka mora biti veći od datuma početka." + +#. module: pad_project +#: field:project.task,description_pad:0 +msgid "Description PAD" +msgstr "" + +#. module: pad_project +#: model:ir.model,name:pad_project.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: pad_project +#: constraint:project.task:0 +msgid "Error ! You cannot create recursive tasks." +msgstr "Greška! Rekurzivni zadaci." diff --git a/addons/plugin/i18n/hr.po b/addons/plugin/i18n/hr.po new file mode 100644 index 00000000000..e1dc542526b --- /dev/null +++ b/addons/plugin/i18n/hr.po @@ -0,0 +1,23 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2012-12-09 20:44+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: plugin +#: model:ir.model,name:plugin.model_plugin_handler +msgid "plugin.handler" +msgstr "plugin.handler" diff --git a/addons/plugin_thunderbird/i18n/it.po b/addons/plugin_thunderbird/i18n/it.po index c54ca6de0ec..4e40d9ae9cd 100644 --- a/addons/plugin_thunderbird/i18n/it.po +++ b/addons/plugin_thunderbird/i18n/it.po @@ -8,42 +8,43 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:53+0000\n" -"PO-Revision-Date: 2011-12-26 19:12+0000\n" -"Last-Translator: tfr (Openerp) \n" +"PO-Revision-Date: 2012-12-09 23:19+0000\n" +"Last-Translator: Sergio Corato \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: 2012-11-25 06:18+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Restart Thunderbird." -msgstr "" +msgstr "Riavvia Thunderbird." #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Thunderbird plug-in installation:" -msgstr "" +msgstr "Installazione plug-in Thunderbird:" #. module: plugin_thunderbird #: view:sale.config.settings:0 msgid "Download and install the plug-in" -msgstr "" +msgstr "Scarica e installa il plug-in" #. module: plugin_thunderbird #: model:ir.actions.act_window,name:plugin_thunderbird.action_thunderbird_installer #: model:ir.ui.menu,name:plugin_thunderbird.menu_base_config_plugins_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Install Thunderbird Plug-In" -msgstr "" +msgstr "Installa il plug-in Thunderbird" #. module: plugin_thunderbird #: help:plugin_thunderbird.installer,plugin_file:0 msgid "" "Thunderbird plug-in file. Save this file and install it in Thunderbird." msgstr "" +"File del plug-in Thunderbird. Salvare il file e installarlo in Thunderbird." #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 @@ -63,12 +64,12 @@ msgstr "Nome file" #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Click \"Install Now\"." -msgstr "" +msgstr "Clicca \"Installa adesso\"." #. module: plugin_thunderbird #: model:ir.model,name:plugin_thunderbird.model_plugin_thunderbird_installer msgid "plugin_thunderbird.installer" -msgstr "" +msgstr "plugin_thunderbird.installer" #. module: plugin_thunderbird #: field:plugin_thunderbird.installer,plugin_file:0 @@ -79,7 +80,7 @@ msgstr "Plug-in Thunderbird" #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Configure your openerp server." -msgstr "" +msgstr "Configurare il server openerp." #. module: plugin_thunderbird #: help:plugin_thunderbird.installer,thunderbird:0 @@ -88,22 +89,22 @@ msgid "" "its attachments." msgstr "" "Permette di selezionare un oggetto che è possibile aggiungere all'email e ai " -"suoi attachment." +"suoi allegati." #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Save the Thunderbird plug-in." -msgstr "" +msgstr "Salvare il plug-in Thunderbird." #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Close" -msgstr "" +msgstr "Chiudi" #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "Select the plug-in (the file named openerp_plugin.xpi)." -msgstr "" +msgstr "Selezionare il plug-in (il file si chiama openerp_plugin.xpi)." #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 @@ -111,11 +112,13 @@ msgid "" "From the Thunderbird menubar: Tools ­> Add-ons -> Screwdriver/Wrench Icon -> " "Install add-on from file..." msgstr "" +"Dalla barra del menu di Thunderbird: Strumenti > Componenti aggiuntivi -> " +"Icona Cacciavite/Chiave -> Installa l'addon da file..." #. module: plugin_thunderbird #: view:plugin_thunderbird.installer:0 msgid "From the Thunderbird menubar: OpenERP -> Configuration." -msgstr "" +msgstr "Dalla barra del menu di Thunderbird: OpenERP -> Configurazione." #~ msgid "Description" #~ msgstr "Descrizione" diff --git a/addons/portal/i18n/hr.po b/addons/portal/i18n/hr.po index 366225c487b..bd41c110a32 100644 --- a/addons/portal/i18n/hr.po +++ b/addons/portal/i18n/hr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-12-19 17:37+0000\n" +"PO-Revision-Date: 2012-12-09 20:50+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: portal #: view:portal.payment.acquirer:0 @@ -52,7 +52,7 @@ msgstr "" #. module: portal #: view:portal.wizard.user:0 msgid "Contacts" -msgstr "" +msgstr "Kontakti" #. module: portal #: view:share.wizard:0 @@ -78,12 +78,12 @@ msgstr "" #. module: portal #: view:share.wizard:0 msgid "Details" -msgstr "" +msgstr "Detalji" #. module: portal #: model:ir.ui.menu,name:portal.portal_orders msgid "Quotations and Sales Orders" -msgstr "" +msgstr "Ponude i prodajni nalozi" #. module: portal #: view:portal.payment.acquirer:0 @@ -100,12 +100,12 @@ msgstr "" #. module: portal #: model:ir.model,name:portal.model_share_wizard msgid "Share Wizard" -msgstr "" +msgstr "Asistent dijeljenja" #. module: portal #: field:portal.wizard.user,email:0 msgid "Email" -msgstr "" +msgstr "E-mail" #. module: portal #: model:ir.actions.client,help:portal.action_news @@ -119,18 +119,18 @@ msgstr "" #. module: portal #: view:portal.wizard:0 msgid "or" -msgstr "" +msgstr "ili" #. module: portal #: model:ir.actions.client,name:portal.action_jobs #: model:ir.ui.menu,name:portal.portal_jobs msgid "Jobs" -msgstr "" +msgstr "Radna mjesta" #. module: portal #: field:portal.wizard,user_ids:0 msgid "Users" -msgstr "" +msgstr "Korisnici" #. module: portal #: code:addons/portal/acquirer.py:74 @@ -198,12 +198,12 @@ msgstr "" #: model:ir.actions.client,name:portal.action_news #: model:ir.ui.menu,name:portal.portal_company_news msgid "News" -msgstr "" +msgstr "Novosti" #. module: portal #: model:ir.ui.menu,name:portal.portal_after_sales msgid "After Sale Services" -msgstr "" +msgstr "Postprodaja" #. module: portal #: model:res.groups,comment:portal.group_portal @@ -222,13 +222,13 @@ msgstr "" #. module: portal #: model:ir.ui.menu,name:portal.portal_projects msgid "Projects" -msgstr "" +msgstr "Projekti" #. module: portal #: model:ir.actions.client,name:portal.action_mail_inbox_feeds_portal #: model:ir.ui.menu,name:portal.portal_inbox msgid "Inbox" -msgstr "" +msgstr "Dolazna pošta" #. module: portal #: view:share.wizard:0 @@ -239,7 +239,7 @@ msgstr "" #. module: portal #: field:portal.wizard.user,wizard_id:0 msgid "Wizard" -msgstr "" +msgstr "Asistent" #. module: portal #: view:portal.payment.acquirer:0 @@ -251,7 +251,7 @@ msgstr "" #. module: portal #: field:portal.payment.acquirer,name:0 msgid "Name" -msgstr "" +msgstr "Naziv" #. module: portal #: model:ir.model,name:portal.model_res_groups @@ -288,7 +288,7 @@ msgstr "" #. module: portal #: field:portal.wizard.user,partner_id:0 msgid "Contact" -msgstr "" +msgstr "Kontakt osoba" #. module: portal #: model:ir.model,name:portal.model_mail_mail @@ -299,7 +299,7 @@ msgstr "" #: code:addons/portal/wizard/portal_wizard.py:194 #, python-format msgid "Email required" -msgstr "" +msgstr "Obavezan e-mail" #. module: portal #: model:ir.ui.menu,name:portal.portal_messages @@ -348,7 +348,7 @@ msgstr "" #. module: portal #: model:ir.ui.menu,name:portal.portal_company msgid "About Us" -msgstr "" +msgstr "O nama" #. module: portal #: view:portal.payment.acquirer:0 @@ -421,7 +421,7 @@ msgstr "" #. module: portal #: field:portal.payment.acquirer,visible:0 msgid "Visible" -msgstr "" +msgstr "Vidljivo" #. module: portal #: code:addons/portal/wizard/share_wizard.py:39 @@ -432,12 +432,12 @@ msgstr "" #. module: portal #: view:portal.wizard:0 msgid "Cancel" -msgstr "" +msgstr "Odustani" #. module: portal #: view:portal.wizard:0 msgid "Apply" -msgstr "" +msgstr "Primjeni" #. module: portal #: view:portal.payment.acquirer:0 @@ -461,7 +461,7 @@ msgstr "" #. module: portal #: view:portal.payment.acquirer:0 msgid "Form Template" -msgstr "" +msgstr "Predložak forme" #. module: portal #: model:ir.actions.act_window,name:portal.partner_wizard_action diff --git a/addons/portal/i18n/nl.po b/addons/portal/i18n/nl.po index 6df34c0f52c..3a2712abbdf 100644 --- a/addons/portal/i18n/nl.po +++ b/addons/portal/i18n/nl.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-06-28 12:51+0000\n" +"PO-Revision-Date: 2012-12-09 19:15+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: portal #: view:portal.payment.acquirer:0 msgid "Mako" -msgstr "" +msgstr "Mako" #. module: portal #: code:addons/portal/wizard/share_wizard.py:50 @@ -47,12 +47,12 @@ msgstr "Selecteer tenminste een groep om mee te delen" #. module: portal #: model:ir.ui.menu,name:portal.company_news_feed_ir_ui_menu msgid "Company's news" -msgstr "" +msgstr "Bedrijfs nieuws" #. module: portal #: view:portal.wizard.user:0 msgid "Contacts" -msgstr "" +msgstr "Contactpersonen" #. module: portal #: view:share.wizard:0 @@ -63,12 +63,12 @@ msgstr "Bestaande groepen" #. module: portal #: view:res.groups:0 msgid "Portal Groups" -msgstr "" +msgstr "Portaal Groepen" #. module: portal #: field:portal.wizard,welcome_message:0 msgid "Invitation Message" -msgstr "" +msgstr "Uitnodigingsbericht invoeren" #. module: portal #: view:res.groups:0 @@ -78,12 +78,12 @@ msgstr "" #. module: portal #: view:share.wizard:0 msgid "Details" -msgstr "" +msgstr "Details" #. module: portal #: model:ir.ui.menu,name:portal.portal_orders msgid "Quotations and Sales Orders" -msgstr "" +msgstr "Offertes en verkooporders" #. module: portal #: view:portal.payment.acquirer:0 @@ -119,13 +119,13 @@ msgstr "" #. module: portal #: view:portal.wizard:0 msgid "or" -msgstr "" +msgstr "of" #. module: portal #: model:ir.actions.client,name:portal.action_jobs #: model:ir.ui.menu,name:portal.portal_jobs msgid "Jobs" -msgstr "" +msgstr "Functies" #. module: portal #: field:portal.wizard,user_ids:0 @@ -136,7 +136,7 @@ msgstr "Gebruikers" #: code:addons/portal/acquirer.py:74 #, python-format msgid "Pay safely online" -msgstr "" +msgstr "Betaal veilig online" #. module: portal #: view:portal.payment.acquirer:0 @@ -168,7 +168,7 @@ msgstr "" #. module: portal #: model:ir.ui.menu,name:portal.company_jobs_ir_ui_menu msgid "Company's jobs" -msgstr "" +msgstr "Bedrijfs functies" #. module: portal #: model:ir.ui.menu,name:portal.portal_menu @@ -192,18 +192,18 @@ msgstr "" #. module: portal #: field:portal.wizard.user,in_portal:0 msgid "In Portal" -msgstr "" +msgstr "In portaal" #. module: portal #: model:ir.actions.client,name:portal.action_news #: model:ir.ui.menu,name:portal.portal_company_news msgid "News" -msgstr "" +msgstr "Nieuws" #. module: portal #: model:ir.ui.menu,name:portal.portal_after_sales msgid "After Sale Services" -msgstr "" +msgstr "Nazorg" #. module: portal #: model:res.groups,comment:portal.group_portal @@ -222,13 +222,13 @@ msgstr "" #. module: portal #: model:ir.ui.menu,name:portal.portal_projects msgid "Projects" -msgstr "" +msgstr "Projecten" #. module: portal #: model:ir.actions.client,name:portal.action_mail_inbox_feeds_portal #: model:ir.ui.menu,name:portal.portal_inbox msgid "Inbox" -msgstr "" +msgstr "Postvak IN" #. module: portal #: view:share.wizard:0 @@ -251,12 +251,12 @@ msgstr "" #. module: portal #: field:portal.payment.acquirer,name:0 msgid "Name" -msgstr "" +msgstr "Naam" #. module: portal #: model:ir.model,name:portal.model_res_groups msgid "Access Groups" -msgstr "" +msgstr "Toegang groepen" #. module: portal #: view:portal.payment.acquirer:0 @@ -288,12 +288,12 @@ msgstr "" #. module: portal #: field:portal.wizard.user,partner_id:0 msgid "Contact" -msgstr "" +msgstr "Contactpersoon" #. module: portal #: model:ir.model,name:portal.model_mail_mail msgid "Outgoing Mails" -msgstr "" +msgstr "Uitgaande E-mails" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:194 @@ -304,7 +304,7 @@ msgstr "Email verplicht" #. module: portal #: model:ir.ui.menu,name:portal.portal_messages msgid "Messaging" -msgstr "" +msgstr "Berichtgeving" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:195 @@ -350,7 +350,7 @@ msgstr "" #. module: portal #: model:ir.ui.menu,name:portal.portal_company msgid "About Us" -msgstr "" +msgstr "Over ons" #. module: portal #: view:portal.payment.acquirer:0 @@ -423,7 +423,7 @@ msgstr "" #. module: portal #: field:portal.payment.acquirer,visible:0 msgid "Visible" -msgstr "" +msgstr "Zichtbaar" #. module: portal #: code:addons/portal/wizard/share_wizard.py:39 @@ -439,7 +439,7 @@ msgstr "Annuleren" #. module: portal #: view:portal.wizard:0 msgid "Apply" -msgstr "" +msgstr "Toepassen" #. module: portal #: view:portal.payment.acquirer:0 @@ -463,7 +463,7 @@ msgstr "" #. module: portal #: view:portal.payment.acquirer:0 msgid "Form Template" -msgstr "" +msgstr "Van sjabloon" #. module: portal #: model:ir.actions.act_window,name:portal.partner_wizard_action diff --git a/addons/portal_claim/i18n/hr.po b/addons/portal_claim/i18n/hr.po new file mode 100644 index 00000000000..0d9f328149b --- /dev/null +++ b/addons/portal_claim/i18n/hr.po @@ -0,0 +1,36 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2012-12-09 20:51+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: portal_claim +#: model:ir.actions.act_window,help:portal_claim.crm_case_categ_claim0 +msgid "" +"

    \n" +" Click to register a new claim. \n" +"

    \n" +" You can track your claims from this menu and the action we\n" +" will take.\n" +"

    \n" +" " +msgstr "" + +#. module: portal_claim +#: model:ir.actions.act_window,name:portal_claim.crm_case_categ_claim0 +#: model:ir.ui.menu,name:portal_claim.portal_after_sales_claims +msgid "Claims" +msgstr "Prigovori/pritužbe" diff --git a/addons/portal_crm/i18n/hr.po b/addons/portal_crm/i18n/hr.po new file mode 100644 index 00000000000..92296baeefb --- /dev/null +++ b/addons/portal_crm/i18n/hr.po @@ -0,0 +1,552 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 20:56+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Lead" +msgstr "Potencijal" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,title:0 +msgid "Title" +msgstr "Naslov" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,probability:0 +msgid "Success Rate (%)" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact us" +msgstr "Kontaktirajte nas" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action:0 +msgid "Next Action Date" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,fax:0 +msgid "Fax" +msgstr "Fax" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,zip:0 +msgid "Zip" +msgstr "Poštanski br." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_unread:0 +msgid "Unread Messages" +msgstr "Nepročitane poruke" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_id:0 +msgid "Company" +msgstr "Organizacija" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_open:0 +msgid "Days to Open" +msgstr "Dana za otvaranje" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you for your interest, we'll respond to your request shortly." +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Highest" +msgstr "Najviši" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,mobile:0 +msgid "Mobile" +msgstr "Mobilni" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,description:0 +msgid "Notes" +msgstr "Bilješke" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages" +msgstr "Poruke" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,color:0 +msgid "Color Index" +msgstr "Indeks boje" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_latitude:0 +msgid "Geo Latitude" +msgstr "Geo Latitude" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_name:0 +msgid "Customer Name" +msgstr "Naziv kupca" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Cancelled" +msgstr "Otkazano" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,channel_id:0 +msgid "Communication channel (mail, direct, phone, ...)" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type_id:0 +msgid "Campaign" +msgstr "Kampanja" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref:0 +msgid "Reference" +msgstr "Oznaka" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_next:0 +#: field:portal_crm.crm_contact_us,title_action:0 +msgid "Next Action" +msgstr "Slijedeća akcija" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: portal_crm +#: model:ir.actions.act_window,name:portal_crm.action_contact_us +msgid "Contact Us" +msgstr "Kontaktirajte nas" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,name:0 +msgid "Subject" +msgstr "Predmet" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,opt_out:0 +msgid "Opt-Out" +msgstr "Isključiti" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,priority:0 +msgid "Priority" +msgstr "Prioritet" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state_id:0 +msgid "State" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_id:0 +msgid "Linked partner (optional). Usually created when converting the lead." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,payment_mode:0 +msgid "Payment Mode" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "New" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type:0 +msgid "Type" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_from:0 +msgid "Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,channel_id:0 +msgid "Channel" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Name" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Lowest" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,create_date:0 +msgid "Creation Date" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Close" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Pending" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type:0 +msgid "Type is used to separate Leads and Opportunities" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,categ_ids:0 +msgid "Categories" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,stage_id:0 +msgid "Stage" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_login:0 +msgid "User Login" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,opt_out:0 +msgid "" +"If opt-out is checked, this contact has refused to receive emails or " +"unsubscribed to a campaign." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,contact_name:0 +msgid "Contact Name" +msgstr "" + +#. module: portal_crm +#: model:ir.ui.menu,name:portal_crm.portal_company_contact +msgid "Contact" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_email:0 +msgid "Partner Contact Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_revenue:0 +msgid "Expected Revenue" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,task_ids:0 +msgid "Tasks" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact form" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_currency:0 +msgid "Currency" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,write_date:0 +msgid "Update Date" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_deadline:0 +msgid "Expected Closing" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref2:0 +msgid "Reference 2" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_email:0 +msgid "User Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_open:0 +msgid "Opened" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "In Progress" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_name:0 +msgid "" +"The name of the future partner company that will be created while converting " +"the lead into opportunity" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_cost:0 +msgid "Planned Costs" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_deadline:0 +msgid "Estimate of the date on which the opportunity will be won." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Low" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_closed:0 +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Closed" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_assign:0 +msgid "Assignation Date" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state:0 +msgid "Status" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Normal" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_cc:0 +msgid "Global CC" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street2:0 +msgid "Street2" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,id:0 +msgid "ID" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,phone:0 +msgid "Phone" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,active:0 +msgid "Active" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_id:0 +msgid "Salesperson" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_close:0 +msgid "Days to Close" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_comment_ids:0 +#: help:portal_crm.crm_contact_us,message_comment_ids:0 +msgid "Comments and emails" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_ids:0 +msgid "Companies" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,section_id:0 +msgid "" +"When sending mails, the default email address is taken from the sales team." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_name:0 +msgid "Partner Contact Name" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_longitude:0 +msgid "Geo Longitude" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_assign:0 +msgid "Last date this case was forwarded/assigned to a partner" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_from:0 +msgid "Email address of the contact" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,city:0 +msgid "City" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Submit" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,function:0 +msgid "Function" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,referred:0 +msgid "Referred By" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Assigned Partner" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Opportunity" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Partner this case has been forwarded/assigned to." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,country_id:0 +msgid "Country" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,state:0 +msgid "" +"The Status is set to 'Draft', when a case is created. If the case is in " +"progress the Status is set to 'Open'. When the case is over, the Status is " +"set to 'Done'. If the case needs to be reviewed then the Status is set to " +"'Pending'." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type_id:0 +msgid "" +"From which campaign (seminar, marketing campaign, mass mailing, ...) did " +"this contact come from?" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "High" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,section_id:0 +msgid "Sales Team" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street:0 +msgid "Street" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_last:0 +msgid "Last Action" +msgstr "" + +#. module: portal_crm +#: model:ir.model,name:portal_crm.model_portal_crm_crm_contact_us +msgid "Contact form for the portal" +msgstr "" diff --git a/addons/portal_crm/i18n/nl.po b/addons/portal_crm/i18n/nl.po new file mode 100644 index 00000000000..7fb749547b8 --- /dev/null +++ b/addons/portal_crm/i18n/nl.po @@ -0,0 +1,573 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 18:30+0000\n" +"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Lead" +msgstr "Lead" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,title:0 +msgid "Title" +msgstr "Titel" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,probability:0 +msgid "Success Rate (%)" +msgstr "Succes ratio (%)" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact us" +msgstr "Contact opnemen" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action:0 +msgid "Next Action Date" +msgstr "Volgende actiedatum" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,fax:0 +msgid "Fax" +msgstr "Fax" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,zip:0 +msgid "Zip" +msgstr "Postcode" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_unread:0 +msgid "Unread Messages" +msgstr "Ongelezen berichten" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_id:0 +msgid "Company" +msgstr "Bedrijf" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_open:0 +msgid "Days to Open" +msgstr "Dagen tot openen" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you for your interest, we'll respond to your request shortly." +msgstr "Bedankt voor uw interesse. U krijgt zo snel mogelijk een reactie." + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Highest" +msgstr "Hoogste" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,mobile:0 +msgid "Mobile" +msgstr "Mobiel" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,description:0 +msgid "Notes" +msgstr "Aantekeningen" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages" +msgstr "Berichten" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,color:0 +msgid "Color Index" +msgstr "Kleur index" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_latitude:0 +msgid "Geo Latitude" +msgstr "Geo breedtegraad" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_name:0 +msgid "Customer Name" +msgstr "Klantnaam" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Cancelled" +msgstr "Geannuleerd" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen." + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,channel_id:0 +msgid "Communication channel (mail, direct, phone, ...)" +msgstr "Communicatie kanaal (e-mail, direct, telefoon,...)" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type_id:0 +msgid "Campaign" +msgstr "Campagne" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref:0 +msgid "Reference" +msgstr "Referentie" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_next:0 +#: field:portal_crm.crm_contact_us,title_action:0 +msgid "Next Action" +msgstr "Volgende actie" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" +"Bevat de samenvatting van de chatter (aantal berichten,...). Deze " +"samenvatting is direct in html formaat om zo in de kanban weergave te worden " +"ingevoegd." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_id:0 +msgid "Partner" +msgstr "Relatie" + +#. module: portal_crm +#: model:ir.actions.act_window,name:portal_crm.action_contact_us +msgid "Contact Us" +msgstr "Neem contact met ons op" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,name:0 +msgid "Subject" +msgstr "Onderwerp" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,opt_out:0 +msgid "Opt-Out" +msgstr "Uitschrijven" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,priority:0 +msgid "Priority" +msgstr "Prioriteit" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state_id:0 +msgid "State" +msgstr "Status" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_follower_ids:0 +msgid "Followers" +msgstr "Volgers" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_id:0 +msgid "Linked partner (optional). Usually created when converting the lead." +msgstr "" +"Gekoppelde relatie (optioneel). Normaliter aangemaakt wanneer de lead wordt " +"geconverteerd." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,payment_mode:0 +msgid "Payment Mode" +msgstr "Betaalwijze" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "New" +msgstr "Nieuw" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type:0 +msgid "Type" +msgstr "Soort" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_from:0 +msgid "Email" +msgstr "E-mail" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,channel_id:0 +msgid "Channel" +msgstr "Kanaal" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Name" +msgstr "Naam" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Lowest" +msgstr "Laagste" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,create_date:0 +msgid "Creation Date" +msgstr "Aanmaakdatum" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Close" +msgstr "Sluiten" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Pending" +msgstr "In afwachting" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type:0 +msgid "Type is used to separate Leads and Opportunities" +msgstr "Soort wordt gebruikt om leads en prospects te scheiden" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,categ_ids:0 +msgid "Categories" +msgstr "Categorieën" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,stage_id:0 +msgid "Stage" +msgstr "Fase" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_login:0 +msgid "User Login" +msgstr "Gebruikersnaam" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,opt_out:0 +msgid "" +"If opt-out is checked, this contact has refused to receive emails or " +"unsubscribed to a campaign." +msgstr "" +"Als uitschrijven is aangevinkt, heeft deze contactpersoon geweigerd emails " +"te ontvangen of uitgeschreven voor een campagne." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,contact_name:0 +msgid "Contact Name" +msgstr "Naam contactpersoon" + +#. module: portal_crm +#: model:ir.ui.menu,name:portal_crm.portal_company_contact +msgid "Contact" +msgstr "Contact" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_email:0 +msgid "Partner Contact Email" +msgstr "Partner contactpersoon e-mail" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_revenue:0 +msgid "Expected Revenue" +msgstr "Verwachte omzet" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,task_ids:0 +msgid "Tasks" +msgstr "Taken" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact form" +msgstr "Contactformulier" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_currency:0 +msgid "Currency" +msgstr "Valuta" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,write_date:0 +msgid "Update Date" +msgstr "Wijzigingsdatum" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_deadline:0 +msgid "Expected Closing" +msgstr "Verwachte sluiting" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref2:0 +msgid "Reference 2" +msgstr "Referentie 2" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_email:0 +msgid "User Email" +msgstr "Gebruikers e-mail" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_open:0 +msgid "Opened" +msgstr "Geopend" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "In Progress" +msgstr "In behandeling" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_name:0 +msgid "" +"The name of the future partner company that will be created while converting " +"the lead into opportunity" +msgstr "" +"De naam van het toekomstige bedrijf, wat wordt aangemaakt als de lead wordt " +"geconverteerd naar een prospect." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_cost:0 +msgid "Planned Costs" +msgstr "Verwachte kosten" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_deadline:0 +msgid "Estimate of the date on which the opportunity will be won." +msgstr "Schat de datum in waarop u verwacht dat de prospect wordt gewonnen." + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" +"Deze email adressen worden toegevoegd aan het CC veld bij alle inkomende en " +"uitgaande emails voor dit record voorafgaand aan versturen. Scheidt " +"verschillende email adressen met een komma." + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Low" +msgstr "Laag" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_closed:0 +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Closed" +msgstr "Gesloten" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_assign:0 +msgid "Assignation Date" +msgstr "Datum toewijzing" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state:0 +msgid "Status" +msgstr "Status" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Normal" +msgstr "Normaal" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_cc:0 +msgid "Global CC" +msgstr "Globale CC" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street2:0 +msgid "Street2" +msgstr "Adres 2" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,id:0 +msgid "ID" +msgstr "ID" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,phone:0 +msgid "Phone" +msgstr "Telefoon" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_is_follower:0 +msgid "Is a Follower" +msgstr "Is een volger" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,active:0 +msgid "Active" +msgstr "Actief" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_id:0 +msgid "Salesperson" +msgstr "Verkoper" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_close:0 +msgid "Days to Close" +msgstr "Dagen tot sluiten" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_comment_ids:0 +#: help:portal_crm.crm_contact_us,message_comment_ids:0 +msgid "Comments and emails" +msgstr "Opmerkingen en e-mails." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_ids:0 +msgid "Companies" +msgstr "Bedrijven" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_summary:0 +msgid "Summary" +msgstr "Samenvatting" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,section_id:0 +msgid "" +"When sending mails, the default email address is taken from the sales team." +msgstr "" +"Wanneer een e-mail, wordt verstuurd, wordt het standaard adres van het " +"verkoopteam gebruikt." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_name:0 +msgid "Partner Contact Name" +msgstr "Relatie contactnaam" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_longitude:0 +msgid "Geo Longitude" +msgstr "Geo lengtegraad" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_assign:0 +msgid "Last date this case was forwarded/assigned to a partner" +msgstr "" +"Laatste datum dat dit dossier was doorgestuurd/toegewezen aan een relatie" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_from:0 +msgid "Email address of the contact" +msgstr "E-mail adres van contactpersoon" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,city:0 +msgid "City" +msgstr "Stad" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Submit" +msgstr "Verstuur" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,function:0 +msgid "Function" +msgstr "Functie" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,referred:0 +msgid "Referred By" +msgstr "Doorverwezen door" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Assigned Partner" +msgstr "Toegewezen relatie" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Opportunity" +msgstr "Prospect" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Partner this case has been forwarded/assigned to." +msgstr "Relatie waaraan dit dossier is toegewezen." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,country_id:0 +msgid "Country" +msgstr "Land" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you" +msgstr "Bedankt" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,state:0 +msgid "" +"The Status is set to 'Draft', when a case is created. If the case is in " +"progress the Status is set to 'Open'. When the case is over, the Status is " +"set to 'Done'. If the case needs to be reviewed then the Status is set to " +"'Pending'." +msgstr "" +"De status is ingesteld op 'Concept' wanneer de lead wordt aangemaakt. Als de " +"lead in behandeling is, is de status ingesteld op 'Open'. wanneer de lead is " +"afgewerkt, wordt de status ingesteld op 'Gereed'. Indien de lead moet worden " +"gecontroleerd, wordt de status op ingesteld op 'In afwachting'." + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages and communication history" +msgstr "Berichten en communicatie historie" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type_id:0 +msgid "" +"From which campaign (seminar, marketing campaign, mass mailing, ...) did " +"this contact come from?" +msgstr "" +"Van welke campagne (seminar, marketing campagne, masse mailing, etc.) komt " +"dit contact?" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "High" +msgstr "Hoog" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,section_id:0 +msgid "Sales Team" +msgstr "Verkoopteam" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street:0 +msgid "Street" +msgstr "Straat" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_last:0 +msgid "Last Action" +msgstr "Laatste actie" + +#. module: portal_crm +#: model:ir.model,name:portal_crm.model_portal_crm_crm_contact_us +msgid "Contact form for the portal" +msgstr "Contact formulier voor het portaal" diff --git a/addons/portal_event/i18n/nl.po b/addons/portal_event/i18n/nl.po new file mode 100644 index 00000000000..0618f851e4d --- /dev/null +++ b/addons/portal_event/i18n/nl.po @@ -0,0 +1,59 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 19:17+0000\n" +"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: portal_event +#: view:event.event:0 +msgid "Portal Settings" +msgstr "Portaal instellingen" + +#. module: portal_event +#: model:ir.actions.act_window,help:portal_event.action_event_view +msgid "There are no public events." +msgstr "Er zijn geen openbare evenementen" + +#. module: portal_event +#: selection:event.event,visibility:0 +msgid "Private" +msgstr "Privé" + +#. module: portal_event +#: model:ir.model,name:portal_event.model_event_event +msgid "Event" +msgstr "Evenement" + +#. module: portal_event +#: model:ir.actions.act_window,name:portal_event.action_event_view +#: model:ir.ui.menu,name:portal_event.portal_company_events +msgid "Events" +msgstr "Evenementen" + +#. module: portal_event +#: field:event.event,visibility:0 +msgid "Visibility" +msgstr "Zichtbaarheid" + +#. module: portal_event +#: help:event.event,visibility:0 +msgid "Event's visibility in the portal's contact page" +msgstr "" + +#. module: portal_event +#: selection:event.event,visibility:0 +msgid "Public" +msgstr "Openbaar" diff --git a/addons/portal_hr_employees/i18n/nl.po b/addons/portal_hr_employees/i18n/nl.po new file mode 100644 index 00000000000..cc48cf11b20 --- /dev/null +++ b/addons/portal_hr_employees/i18n/nl.po @@ -0,0 +1,95 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 18:38+0000\n" +"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Coach" +msgstr "Coach" + +#. module: portal_hr_employees +#: model:ir.actions.act_window,name:portal_hr_employees.action_team +#: view:portal_crm.crm_contact_us:0 +msgid "Meet the team" +msgstr "Maak kennis met het team" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Group By..." +msgstr "Groepeer op..." + +#. module: portal_hr_employees +#: field:hr.employee,public_info:0 +msgid "unknown" +msgstr "onbekend" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Company" +msgstr "Bedrijf" + +#. module: portal_hr_employees +#: selection:hr.employee,visibility:0 +msgid "Public" +msgstr "Openbaar" + +#. module: portal_hr_employees +#: help:hr.employee,visibility:0 +msgid "Employee's visibility in the portal's contact page" +msgstr "Werknemers zichtbaarheid in de ontactpagina van het portaal." + +#. module: portal_hr_employees +#: selection:hr.employee,visibility:0 +msgid "Private" +msgstr "Privé" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Manager" +msgstr "Manager" + +#. module: portal_hr_employees +#: model:ir.model,name:portal_hr_employees.model_hr_employee +msgid "Employee" +msgstr "Werknemer" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Job" +msgstr "Functie" + +#. module: portal_hr_employees +#: field:hr.employee,visibility:0 +msgid "Visibility" +msgstr "Zichtbaarheid" + +#. module: portal_hr_employees +#: model:ir.model,name:portal_hr_employees.model_portal_crm_crm_contact_us +msgid "Contact form for the portal" +msgstr "Contact formulier voor het portaal" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Department" +msgstr "Afdeling" + +#. module: portal_hr_employees +#: view:hr.employee:0 +#: field:portal_crm.crm_contact_us,employee_ids:0 +msgid "Employees" +msgstr "Werknemers" diff --git a/addons/portal_project/i18n/nl.po b/addons/portal_project/i18n/nl.po index 256cdf05861..d696cfa8afb 100644 --- a/addons/portal_project/i18n/nl.po +++ b/addons/portal_project/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 10:25+0000\n" -"PO-Revision-Date: 2012-11-30 19:42+0000\n" +"PO-Revision-Date: 2012-12-09 18:36+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:55+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: portal_project #: model:ir.actions.act_window,help:portal_project.open_view_project @@ -25,12 +25,16 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klik hier om een nieuw project te starten. .\n" +"

    \n" +" " #. module: portal_project #: model:ir.actions.act_window,name:portal_project.open_view_project #: model:ir.ui.menu,name:portal_project.portal_services_projects msgid "Projects" -msgstr "" +msgstr "Projecten" #~ msgid "Tasks" #~ msgstr "Taken" diff --git a/addons/portal_sale/i18n/nl.po b/addons/portal_sale/i18n/nl.po new file mode 100644 index 00000000000..31f2da41fb3 --- /dev/null +++ b/addons/portal_sale/i18n/nl.po @@ -0,0 +1,397 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-09 18:35+0000\n" +"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_account_config_settings +msgid "account.config.settings" +msgstr "account.config.settings" + +#. module: portal_sale +#: model:ir.actions.act_window,help:portal_sale.portal_action_invoices +msgid "We haven't sent you any invoice." +msgstr "Wij hebben u geen factuur toegezonden." + +#. module: portal_sale +#: model:ir.actions.act_window,help:portal_sale.action_orders_portal +msgid "We haven't sent you any sale order." +msgstr "Wij hebben u geen verkooprder toegezonden." + +#. module: portal_sale +#: model:res.groups,name:portal_sale.group_payment_options +msgid "View Online Payment Options" +msgstr "Bekijk de online betalingsmogelijkheden." + +#. module: portal_sale +#: field:account.config.settings,group_payment_options:0 +msgid "Show payment buttons to employees too" +msgstr "Laat betaalknoppen ook aan werknemers zien." + +#. module: portal_sale +#: model:email.template,subject:portal_sale.email_template_edi_sale +msgid "" +"${object.company_id.name} ${object.state in ('draft', 'sent') and " +"'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })" +msgstr "" + +#. module: portal_sale +#: model:ir.actions.act_window,help:portal_sale.action_quotations_portal +msgid "We haven't sent you any quotation." +msgstr "" + +#. module: portal_sale +#: model:ir.ui.menu,name:portal_sale.portal_sales_orders +msgid "Sales Orders" +msgstr "Verkooporders" + +#. module: portal_sale +#: model:email.template,body_html:portal_sale.email_template_edi_invoice +msgid "" +"\n" +"
    \n" +"\n" +"

    Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name " +"or ''},

    \n" +"\n" +"

    A new invoice is available for you:

    \n" +" \n" +"

    \n" +"   REFERENCES
    \n" +"   Invoice number: ${object.number}
    \n" +"   Invoice total: ${object.amount_total} " +"${object.currency_id.name}
    \n" +"   Invoice date: ${object.date_invoice}
    \n" +" % if object.origin:\n" +"   Order reference: ${object.origin}
    \n" +" % endif\n" +" % if object.user_id:\n" +"   Your contact: ${object.user_id.name}\n" +" % endif\n" +"

    \n" +"\n" +" <%\n" +" action = 'portal_sale.portal_action_invoices'\n" +" object.partner_id.signup_prepare()\n" +" signup_url = " +"object.partner_id._get_signup_url_for_action(action=action,view_type='form',r" +"es_id=object.id)[object.partner_id.id]\n" +" %>\n" +" % if signup_url:\n" +"

    \n" +" You can access the invoice document and pay online via our Customer " +"Portal:\n" +"

    \n" +" View Invoice\n" +" % endif\n" +" \n" +" % if object.company_id.paypal_account and object.type in ('out_invoice', " +"'in_refund'):\n" +" <% \n" +" comp_name = quote(object.company_id.name)\n" +" inv_number = quote(object.number)\n" +" paypal_account = quote(object.company_id.paypal_account)\n" +" inv_amount = quote(str(object.residual))\n" +" cur_name = quote(object.currency_id.name)\n" +" paypal_url = \"https://www.paypal.com/cgi-" +"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Invoice%%20%s&" +"\" \\\n" +" " +"\"invoice=%s&amount=%s&currency_code=%s&button_subtype=services&a" +"mp;no_note=1&bn=OpenERP_Invoice_PayNow_%s\" % \\\n" +" " +"(paypal_account,comp_name,inv_number,inv_number,inv_amount,cur_name,cur_name)" +"\n" +" %>\n" +"
    \n" +"

    It is also possible to directly pay with Paypal:

    \n" +" \n" +" \n" +" \n" +" % endif\n" +" \n" +"
    \n" +"

    If you have any question, do not hesitate to contact us.

    \n" +"

    Thank you for choosing ${object.company_id.name or 'us'}!

    \n" +"
    \n" +"
    \n" +"
    \n" +"

    \n" +" ${object.company_id.name}

    \n" +"
    \n" +"
    \n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
    \n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
    \n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
    \n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
    \n" +" % endif\n" +"
    \n" +" % if object.company_id.phone:\n" +"
    \n" +" Phone:  ${object.company_id.phone}\n" +"
    \n" +" % endif\n" +" % if object.company_id.website:\n" +"
    \n" +" Web : ${object.company_id.website}\n" +"
    \n" +" %endif\n" +"

    \n" +"
    \n" +"
    \n" +" " +msgstr "" + +#. module: portal_sale +#: model:res.groups,comment:portal_sale.group_payment_options +msgid "" +"Members of this group see the online payment options\n" +"on Sale Orders and Customer Invoices. These options are meant for customers " +"who are accessing\n" +"their documents through the portal." +msgstr "" + +#. module: portal_sale +#: model:email.template,report_name:portal_sale.email_template_edi_invoice +msgid "" +"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' " +"and 'draft' or ''}" +msgstr "" +"Factuur_${(object.number or '').replace('/','_')}_${object.state == 'draft' " +"and 'draft' or ''}" + +#. module: portal_sale +#: model:email.template,subject:portal_sale.email_template_edi_invoice +msgid "${object.company_id.name} Invoice (Ref ${object.number or 'n/a' })" +msgstr "${object.company_id.name} Factuur (Ref ${object.number or 'n/a' })" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_mail_mail +msgid "Outgoing Mails" +msgstr "Uitgaande E-mails" + +#. module: portal_sale +#: model:ir.actions.act_window,name:portal_sale.action_quotations_portal +#: model:ir.ui.menu,name:portal_sale.portal_quotations +msgid "Quotations" +msgstr "Offertes" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_sale_order +msgid "Sales Order" +msgstr "Verkooporder" + +#. module: portal_sale +#: field:account.invoice,portal_payment_options:0 +#: field:sale.order,portal_payment_options:0 +msgid "Portal Payment Options" +msgstr "Portaal betaalmogelijkheden" + +#. module: portal_sale +#: help:account.config.settings,group_payment_options:0 +msgid "" +"Show online payment options on Sale Orders and Customer Invoices to " +"employees. If not checked, these options are only visible to portal users." +msgstr "" + +#. module: portal_sale +#: model:ir.actions.act_window,name:portal_sale.portal_action_invoices +#: model:ir.ui.menu,name:portal_sale.portal_invoices +msgid "Invoices" +msgstr "Facturen" + +#. module: portal_sale +#: view:account.config.settings:0 +msgid "Configure payment acquiring methods" +msgstr "" + +#. module: portal_sale +#: model:email.template,body_html:portal_sale.email_template_edi_sale +msgid "" +"\n" +"
    \n" +"\n" +"

    Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name " +"or ''},

    \n" +" \n" +"

    Here is your ${object.state in ('draft', 'sent') and 'quotation' or " +"'order confirmation'} from ${object.company_id.name}:

    \n" +"\n" +"

    \n" +"   REFERENCES
    \n" +"   Order number: ${object.name}
    \n" +"   Order total: ${object.amount_total} " +"${object.pricelist_id.currency_id.name}
    \n" +"   Order date: ${object.date_order}
    \n" +" % if object.origin:\n" +"   Order reference: ${object.origin}
    \n" +" % endif\n" +" % if object.client_order_ref:\n" +"   Your reference: ${object.client_order_ref}
    \n" +" % endif\n" +" % if object.user_id:\n" +"   Your contact: ${object.user_id.name}\n" +" % endif\n" +"

    \n" +"\n" +" <%\n" +" action = 'portal_sale.action_quotations_portal' if object.state in " +"('draft', 'sent') else 'portal_sale.action_orders_portal'\n" +" object.partner_id.signup_prepare()\n" +" signup_url = " +"object.partner_id._get_signup_url_for_action(action=action,view_type='form',r" +"es_id=object.id)[object.partner_id.id]\n" +" %>\n" +" % if signup_url:\n" +"

    \n" +" You can access this document and pay online via our Customer Portal:\n" +"

    \n" +" View ${object.state in ('draft', 'sent') " +"and 'Quotation' or 'Order'}\n" +" % endif\n" +"\n" +" % if object.order_policy in ('prepaid','manual') and " +"object.company_id.paypal_account and object.state != 'draft':\n" +" <%\n" +" comp_name = quote(object.company_id.name)\n" +" order_name = quote(object.name)\n" +" paypal_account = quote(object.company_id.paypal_account)\n" +" order_amount = quote(str(object.residual))\n" +" cur_name = quote(object.pricelist_id.currency_id.name)\n" +" paypal_url = \"https://www.paypal.com/cgi-" +"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Order%%20%s\" \\\n" +" " +"\"&invoice=%s&amount=%s&currency_code=%s&button_subtype=servi" +"ces&no_note=1\" \\\n" +" \"&bn=OpenERP_Order_PayNow_%s\" % \\\n" +" " +"(paypal_account,comp_name,order_name,order_name,order_amount,cur_name,cur_nam" +"e)\n" +" %>\n" +"
    \n" +"

    It is also possible to directly pay with Paypal:

    \n" +" \n" +" \n" +" \n" +" % endif\n" +"\n" +"
    \n" +"

    If you have any question, do not hesitate to contact us.

    \n" +"

    Thank you for choosing ${object.company_id.name or 'us'}!

    \n" +"
    \n" +"
    \n" +"
    \n" +"

    \n" +" ${object.company_id.name}

    \n" +"
    \n" +"
    \n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
    \n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
    \n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
    \n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
    \n" +" % endif\n" +"
    \n" +" % if object.company_id.phone:\n" +"
    \n" +" Phone:  ${object.company_id.phone}\n" +"
    \n" +" % endif\n" +" % if object.company_id.website:\n" +"
    \n" +" Web : ${object.company_id.website}\n" +"
    \n" +" %endif\n" +"

    \n" +"
    \n" +"
    \n" +" " +msgstr "" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_account_invoice +msgid "Invoice" +msgstr "Factuur" + +#. module: portal_sale +#: model:ir.actions.act_window,name:portal_sale.action_orders_portal +msgid "Sale Orders" +msgstr "Verkooporders" + +#. module: portal_sale +#: model:email.template,report_name:portal_sale.email_template_edi_sale +msgid "" +"${(object.name or '').replace('/','_')}_${object.state == 'draft' and " +"'draft' or ''}" +msgstr "" +"${(object.name or '').replace('/','_')}_${object.state == 'draft' and " +"'draft' or ''}" diff --git a/addons/product/i18n/hr.po b/addons/product/i18n/hr.po index 4c9a76f7bb2..082ee8e3d3e 100644 --- a/addons/product/i18n/hr.po +++ b/addons/product/i18n/hr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 18:03+0000\n" +"PO-Revision-Date: 2012-12-09 19:51+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: 2012-12-04 05:32+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: product #: field:product.packaging,rows:0 @@ -1536,7 +1536,7 @@ msgstr "" #: field:product.product,active:0 #: field:product.uom,active:0 msgid "Active" -msgstr "Actif" +msgstr "Aktivan" #. module: product #: field:product.product,price_margin:0 diff --git a/addons/project/i18n/nl.po b/addons/project/i18n/nl.po index 2f32f06be1b..a22da21dec1 100644 --- a/addons/project/i18n/nl.po +++ b/addons/project/i18n/nl.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-09-29 14:57+0000\n" +"PO-Revision-Date: 2012-12-09 18:51+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \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: 2012-12-04 05:04+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:36+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: project #: view:project.project:0 msgid "Email Interface" -msgstr "" +msgstr "Email Interface" #. module: project #: help:account.analytic.account,use_tasks:0 @@ -91,7 +91,7 @@ msgstr "Waarschuwing !" #: help:project.project,message_unread:0 #: help:project.task,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen." #. module: project #: model:process.node,name:project.process_node_donetask0 @@ -106,7 +106,7 @@ msgstr "Taak is voltooid" #. module: project #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Onwaar" #. module: project #: model:project.task.type,name:project.project_tt_testing @@ -130,13 +130,16 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Bevat de samenvatting van de chatter (aantal berichten,...). Deze " +"samenvatting is direct in html formaat om zo in de kanban weergave te worden " +"ingevoegd." #. module: project #: code:addons/project/project.py:440 #: code:addons/project/project.py:1414 #, python-format msgid "Warning!" -msgstr "" +msgstr "Waarschuwing!" #. module: project #: model:ir.model,name:project.model_res_partner @@ -195,7 +198,7 @@ msgstr "Validatie taak titel" #. module: project #: model:res.groups,name:project.group_delegate_task msgid "Task Delegation" -msgstr "" +msgstr "Taak delegeren" #. module: project #: field:project.project,planned_hours:0 @@ -207,7 +210,7 @@ msgstr "Geplande tijd" #. module: project #: selection:project.project,privacy_visibility:0 msgid "Public" -msgstr "" +msgstr "Openbaar" #. module: project #: model:project.category,name:project.project_category_01 @@ -273,7 +276,7 @@ msgstr "" #. module: project #: view:project.config.settings:0 msgid "Support" -msgstr "" +msgstr "Ondersteuning" #. module: project #: view:project.project:0 @@ -283,7 +286,7 @@ msgstr "Lid" #. module: project #: view:project.task:0 msgid "Cancel Task" -msgstr "" +msgstr "Taak annuleren" #. module: project #: help:project.project,members:0 @@ -363,7 +366,7 @@ msgstr "Wanneer taak is afgerond, komt deze in de status Voltooid" #: field:project.project,message_summary:0 #: field:project.task,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Samenvatting" #. module: project #: view:project.project:0 @@ -404,7 +407,7 @@ msgstr "De gedelegeerde gebruiker moet worden gespecificeerd" #. module: project #: view:project.project:0 msgid "Project(s) Manager" -msgstr "" +msgstr "Projectanager" #. module: project #: selection:project.project,state:0 @@ -436,12 +439,12 @@ msgstr "Taak her-evalueren" #: code:addons/project/project.py:1292 #, python-format msgid "Stage changed to %s." -msgstr "" +msgstr "Fase veranderd in %s." #. module: project #: view:project.task:0 msgid "Validate planned time" -msgstr "" +msgstr "Bevestig de geplande tijd" #. module: project #: field:project.config.settings,module_pad:0 @@ -456,12 +459,12 @@ msgstr "Voer uw gewerkte uren in." #. module: project #: field:project.project,alias_id:0 msgid "Alias" -msgstr "" +msgstr "Alias" #. module: project #: view:project.task:0 msgid "oe_kanban_text_red" -msgstr "" +msgstr "oe_kanban_text_red" #. module: project #: view:project.task:0 @@ -481,7 +484,7 @@ msgstr "Hiermee wijzigt u naar de open status" #. module: project #: view:project.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Toepassen" #. module: project #: model:ir.model,name:project.model_project_task_delegate @@ -496,7 +499,7 @@ msgstr "De omschrijving van de taak heropnemen in de taak van de gebruiker" #. module: project #: view:project.project:0 msgid "Project Settings" -msgstr "" +msgstr "Projectinstellingen" #. module: project #: view:report.project.task.user:0 @@ -730,7 +733,7 @@ msgstr "Aanmaakdatum" #. module: project #: view:project.project:0 msgid "Miscellaneous" -msgstr "" +msgstr "Diversen" #. module: project #: view:project.task:0 @@ -769,7 +772,7 @@ msgstr "Taken fases" #: view:project.project:0 #: view:project.task:0 msgid "Delete" -msgstr "" +msgstr "Verwijder" #. module: project #: view:report.project.task.user:0 @@ -789,7 +792,7 @@ msgstr "Urgent" #. module: project #: model:project.category,name:project.project_category_02 msgid "Feature request" -msgstr "" +msgstr "Uitbreidingsverzoek" #. module: project #: view:project.task:0 @@ -810,12 +813,12 @@ msgstr "CONTROLEER: %s" #. module: project #: view:project.project:0 msgid "Close Project" -msgstr "" +msgstr "Project sluiten" #. module: project #: field:project.project,tasks:0 msgid "Task Activities" -msgstr "" +msgstr "Taak activiteiten" #. module: project #: field:project.project,effective_hours:0 @@ -827,18 +830,18 @@ msgstr "Bestede tijd" #: view:project.project:0 #: view:project.task:0 msgid "í" -msgstr "" +msgstr "í" #. module: project #: field:account.analytic.account,company_uom_id:0 msgid "unknown" -msgstr "" +msgstr "onbekend" #. module: project #: field:project.project,message_is_follower:0 #: field:project.task,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Is een volger" #. module: project #: field:project.task,work_ids:0 @@ -853,7 +856,7 @@ msgstr "Uitgebreide filters..." #. module: project #: model:ir.ui.menu,name:project.menu_tasks_config msgid "GTD" -msgstr "" +msgstr "GTD" #. module: project #: help:project.task,state:0 @@ -864,6 +867,10 @@ msgid "" "the case needs to be reviewed then the status is set " "to 'Pending'." msgstr "" +"De status is ingesteld op 'Concept' wanneer de klacht wordt aangemaakt. Als " +"de klacht in behandeling is, is de status ingesteld op 'Open'. wanneer de " +"klacht is afgewerkt, wordt de status ingesteld op 'Gereed'. Indien de klacht " +"moet worden gecontroleerd, wordt de status op ingesteld op 'In afwachting'." #. module: project #: model:ir.model,name:project.model_res_company @@ -897,13 +904,13 @@ msgstr "" #. module: project #: view:project.task:0 msgid "10" -msgstr "" +msgstr "10" #. module: project #: code:addons/project/project.py:566 #, python-format msgid "Project has been canceled." -msgstr "" +msgstr "Project is geannuleerd." #. module: project #: help:project.project,analytic_account_id:0 @@ -931,17 +938,17 @@ msgstr "Annuleren" #: code:addons/project/project.py:569 #, python-format msgid "Project has been closed." -msgstr "" +msgstr "Project is afgesloten." #. module: project #: model:ir.actions.server,name:project.actions_server_project_task_read msgid "Task: Mark read" -msgstr "" +msgstr "Taak: Markeer rood" #. module: project #: view:project.project:0 msgid "Other Info" -msgstr "" +msgstr "Overige gegevens" #. module: project #: view:project.task.delegate:0 @@ -977,7 +984,7 @@ msgstr "Gebruikers" #: model:mail.message.subtype,name:project.mt_project_stage #: model:mail.message.subtype,name:project.mt_task_change msgid "Stage Changed" -msgstr "" +msgstr "Fase veranderd" #. module: project #: field:project.task.type,fold:0 @@ -998,7 +1005,7 @@ msgstr "Normaal voor alle projecten" #. module: project #: field:project.category,name:0 msgid "Name" -msgstr "" +msgstr "Naam" #. module: project #: selection:report.project.task.user,month:0 @@ -1025,7 +1032,7 @@ msgstr "Algemeen" #: help:project.project,message_ids:0 #: help:project.task,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Berichten en communicatie historie" #. module: project #: view:project.project:0 @@ -1048,13 +1055,13 @@ msgstr "Samenvatting werk" #: code:addons/project/project.py:563 #, python-format msgid "Project is now pending." -msgstr "" +msgstr "Project is nu in afwachting." #. module: project #: code:addons/project/project.py:560 #, python-format msgid "Project has been opened." -msgstr "" +msgstr "Project is geopend." #. module: project #: view:project.project:0 @@ -1100,7 +1107,7 @@ msgstr "Gedelegeerde taken" #: view:project.task:0 #: field:project.task,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ongelezen berichten" #. module: project #: view:project.task:0 @@ -1111,7 +1118,7 @@ msgstr "Bovenliggende taken" #. module: project #: model:ir.actions.server,name:project.actions_server_project_read msgid "Project: Mark read" -msgstr "" +msgstr "Project: Markeer gelezen" #. module: project #: model:process.node,name:project.process_node_opentask0 @@ -1147,7 +1154,7 @@ msgstr "Geef alleen taken met een deadline weer" #. module: project #: model:project.category,name:project.project_category_04 msgid "Usability" -msgstr "" +msgstr "Gebruiksvriendelijkheid" #. module: project #: view:report.project.task.user:0 @@ -1164,7 +1171,7 @@ msgstr "Gedaan door" #: code:addons/project/project.py:180 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Ongeldige actie!" #. module: project #: help:project.task.type,state:0 @@ -1182,7 +1189,7 @@ msgstr "Extra informatie" #. module: project #: view:project.task:0 msgid "Edit..." -msgstr "" +msgstr "Bewerken..." #. module: project #: view:report.project.task.user:0 @@ -1193,7 +1200,7 @@ msgstr "# taken" #. module: project #: field:project.project,doc_count:0 msgid "Number of documents attached" -msgstr "" +msgstr "Aantal gekoppelde documenten" #. module: project #: model:ir.actions.server,name:project.actions_server_project_task_unread @@ -1277,7 +1284,7 @@ msgstr "Uren vertraging" #. module: project #: view:project.project:0 msgid "Team" -msgstr "" +msgstr "Team" #. module: project #: help:project.config.settings,time_unit:0 @@ -1331,7 +1338,7 @@ msgstr "Title voor uw validatie taak" #. module: project #: field:project.config.settings,time_unit:0 msgid "Working time unit" -msgstr "" +msgstr "Werktijd maateenheid" #. module: project #: view:project.project:0 @@ -1349,7 +1356,7 @@ msgstr "Laag" #: model:mail.message.subtype,name:project.mt_task_closed #: selection:project.project,state:0 msgid "Closed" -msgstr "" +msgstr "Gesloten" #. module: project #: view:project.project:0 @@ -1368,7 +1375,7 @@ msgstr "In afwachting" #. module: project #: field:project.task,categ_ids:0 msgid "Tags" -msgstr "" +msgstr "Labels" #. module: project #: model:ir.model,name:project.model_project_task_history @@ -1417,7 +1424,7 @@ msgstr "" #. module: project #: view:project.config.settings:0 msgid "Helpdesk & Support" -msgstr "" +msgstr "Helpdesk & Support" #. module: project #: help:report.project.task.user,opening_days:0 @@ -1442,7 +1449,7 @@ msgstr "" #: code:addons/project/project.py:219 #, python-format msgid "Attachments" -msgstr "" +msgstr "Bijlagen" #. module: project #: view:project.task:0 @@ -1516,7 +1523,7 @@ msgstr "Manager" #. module: project #: view:project.task:0 msgid "Very Important" -msgstr "" +msgstr "Erg belangrijk" #. module: project #: view:report.project.task.user:0 @@ -1527,7 +1534,7 @@ msgstr "Totaal aantal uren" #. module: project #: model:ir.model,name:project.model_project_config_settings msgid "project.config.settings" -msgstr "" +msgstr "project.config.settings" #. module: project #: view:project.project:0 @@ -1600,7 +1607,7 @@ msgstr "" #. module: project #: field:project.task,total_hours:0 msgid "Total" -msgstr "" +msgstr "Totaal" #. module: project #: model:process.node,note:project.process_node_taskbydelegate0 @@ -1618,6 +1625,8 @@ msgid "" "This stage is not visible, for example in status bar or kanban view, when " "there are no records in that stage to display." msgstr "" +"Deze fase is niet zichtbaar, in bijvoorbeeld de statusbalk of kanban " +"weergave, wanneer er geen records in deze fase zijn om weer te geven." #. module: project #: view:project.task:0 @@ -1647,7 +1656,7 @@ msgstr "Projecten in afwachting" #. module: project #: view:project.task:0 msgid "Remaining" -msgstr "" +msgstr "Resterend" #. module: project #: field:project.task,progress:0 @@ -1681,12 +1690,12 @@ msgstr "" #. module: project #: field:project.config.settings,module_project_mrp:0 msgid "Generate tasks from sale orders" -msgstr "" +msgstr "Genereer Tarn van verkooporders" #. module: project #: model:ir.ui.menu,name:project.menu_task_types_view msgid "Task Stages" -msgstr "" +msgstr "Taak fases" #. module: project #: model:process.node,note:project.process_node_drafttask0 @@ -1697,7 +1706,7 @@ msgstr "Definiëer de benodigdheden en de geplande uren." #: field:project.project,message_ids:0 #: field:project.task,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Berichten" #. module: project #: field:project.project,color:0 @@ -1755,12 +1764,12 @@ msgstr "Einddatum" #. module: project #: field:project.task.type,state:0 msgid "Related Status" -msgstr "" +msgstr "Gerelateerde status" #. module: project #: view:project.project:0 msgid "Documents" -msgstr "" +msgstr "Documenten" #. module: project #: view:report.project.task.user:0 @@ -1772,7 +1781,7 @@ msgstr "# Dagen" #: field:project.project,message_follower_ids:0 #: field:project.task,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Volgers" #. module: project #: model:mail.message.subtype,name:project.mt_project_new @@ -1895,7 +1904,7 @@ msgstr "Projecttaken" #: code:addons/project/project.py:1296 #, python-format msgid "Task has been created." -msgstr "" +msgstr "Task is aangemaakt." #. module: project #: field:account.analytic.account,use_tasks:0 @@ -1919,14 +1928,14 @@ msgstr "December" #: model:mail.message.subtype,name:project.mt_project_canceled #: model:mail.message.subtype,name:project.mt_task_canceled msgid "Canceled" -msgstr "" +msgstr "Geannuleerd" #. module: project #: view:project.config.settings:0 #: view:project.task.delegate:0 #: view:project.task.reevaluate:0 msgid "or" -msgstr "" +msgstr "of" #. module: project #: help:project.config.settings,module_project_mrp:0 @@ -1948,7 +1957,7 @@ msgstr "Geschatte tijd tot sluiting taak door gedelegeerde gebruiker" #. module: project #: model:project.category,name:project.project_category_03 msgid "Experiment" -msgstr "" +msgstr "Experiment" #. module: project #: model:process.transition.action,name:project.process_transition_action_opendrafttask0 @@ -2022,7 +2031,7 @@ msgstr "" #: field:project.task,message_comment_ids:0 #: help:project.task,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Opmerkingen en e-mails." #. module: project #: view:project.task.history.cumulative:0 @@ -2037,7 +2046,7 @@ msgstr "Januari" #. module: project #: model:ir.actions.server,name:project.actions_server_project_unread msgid "Project: Mark unread" -msgstr "" +msgstr "Project: Markeer ongelezen" #. module: project #: field:project.task.delegate,prefix:0 @@ -2071,7 +2080,7 @@ msgstr "projecten waarvan ik manager ben" #: selection:project.task.history,kanban_state:0 #: selection:project.task.history.cumulative,kanban_state:0 msgid "Ready for next stage" -msgstr "" +msgstr "Gereed voor ogende fase" #. module: project #: view:project.task:0 @@ -2148,7 +2157,7 @@ msgstr "" #: view:board.board:0 #: field:project.project,task_count:0 msgid "Open Tasks" -msgstr "" +msgstr "Open taak" #. module: project #: field:project.project,priority:0 diff --git a/addons/project_issue/i18n/nl.po b/addons/project_issue/i18n/nl.po index 391962b01a2..28e740e5adb 100644 --- a/addons/project_issue/i18n/nl.po +++ b/addons/project_issue/i18n/nl.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-01-18 20:31+0000\n" -"Last-Translator: Douwe Wullink (Dypalio) \n" +"PO-Revision-Date: 2012-12-09 18:59+0000\n" +"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:49+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: project_issue #: model:project.category,name:project_issue.project_issue_category_03 msgid "Deadly bug" -msgstr "" +msgstr "Dodelijke bug" #. module: project_issue #: help:project.config.settings,fetchmail_issue:0 @@ -69,18 +69,18 @@ msgstr "Voortgang (%)" #: view:project.issue:0 #: field:project.issue,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ongelezen berichten" #. module: project_issue #: code:addons/project_issue/project_issue.py:560 #, python-format msgid "escalated." -msgstr "" +msgstr "geëscaleerd." #. module: project_issue #: model:ir.actions.server,name:project_issue.actions_server_project_issue_unread msgid "Issue: Mark unread" -msgstr "" +msgstr "Issue: Markeer ongelezen" #. module: project_issue #: field:project.issue,email_cc:0 @@ -90,7 +90,7 @@ msgstr "Emails toeschouwers" #. module: project_issue #: help:project.issue,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen." #. module: project_issue #: help:account.analytic.account,use_issues:0 @@ -188,7 +188,7 @@ msgstr "Geannuleerd" #. module: project_issue #: field:project.issue,description:0 msgid "Private Note" -msgstr "" +msgstr "Privé notitie" #. module: project_issue #: field:project.issue.report,date_closed:0 @@ -218,7 +218,7 @@ msgstr "Gem. werkuren tot openen" #. module: project_issue #: model:ir.model,name:project_issue.model_account_analytic_account msgid "Analytic Account" -msgstr "" +msgstr "Kostenplaats" #. module: project_issue #: help:project.issue,message_summary:0 @@ -226,6 +226,9 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Bevat de samenvatting van de chatter (aantal berichten,...). Deze " +"samenvatting is direct in html formaat om zo in de kanban weergave te worden " +"ingevoegd." #. module: project_issue #: help:project.project,project_escalation_id:0 @@ -257,7 +260,7 @@ msgstr "" #. module: project_issue #: view:project.issue:0 msgid "Edit..." -msgstr "" +msgstr "Bewerken..." #. module: project_issue #: view:project.issue:0 @@ -278,7 +281,7 @@ msgstr "Onderhoud" #: code:addons/project_issue/project_issue.py:547 #, python-format msgid "Project issue converted to task." -msgstr "" +msgstr "Project issue geconverteerd naar taak." #. module: project_issue #: view:project.issue:0 @@ -299,7 +302,7 @@ msgstr "Versie" #. module: project_issue #: field:project.issue,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Volgers" #. module: project_issue #: view:project.issue:0 @@ -334,7 +337,7 @@ msgstr "Laagste" #: code:addons/project_issue/project_issue.py:358 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (kopie)" #. module: project_issue #: view:project.issue:0 @@ -405,7 +408,7 @@ msgstr "Issues analyse" #: code:addons/project_issue/project_issue.py:493 #, python-format msgid "No Subject" -msgstr "" +msgstr "Geen onderwerp" #. module: project_issue #: model:ir.actions.act_window,name:project_issue.action_view_my_project_issue_tree @@ -424,12 +427,12 @@ msgstr "Contactpersoon" #: code:addons/project_issue/project_issue.py:551 #, python-format msgid "Project issue created." -msgstr "" +msgstr "Project issue aangemaakt." #. module: project_issue #: view:project.issue:0 msgid "Delete" -msgstr "" +msgstr "Verwijder" #. module: project_issue #: code:addons/project_issue/project_issue.py:341 @@ -445,7 +448,7 @@ msgstr "# Issues" #. module: project_issue #: model:ir.actions.server,name:project_issue.actions_server_project_issue_read msgid "Issue: Mark read" -msgstr "" +msgstr "Issue: Markeer gelezen" #. module: project_issue #: selection:project.issue.report,month:0 @@ -455,7 +458,7 @@ msgstr "December" #. module: project_issue #: field:project.issue,categ_ids:0 msgid "Tags" -msgstr "" +msgstr "Labels" #. module: project_issue #: view:project.issue:0 @@ -465,12 +468,12 @@ msgstr "Issue tracker boom" #. module: project_issue #: model:project.category,name:project_issue.project_issue_category_01 msgid "Little problem" -msgstr "" +msgstr "Klein probleem" #. module: project_issue #: view:project.project:0 msgid "creates" -msgstr "" +msgstr "Aanmaken" #. module: project_issue #: model:crm.case.categ,name:project_issue.feature_request_categ @@ -485,7 +488,7 @@ msgstr "Datum gewijzigd" #. module: project_issue #: view:project.issue:0 msgid "Project:" -msgstr "" +msgstr "Project:" #. module: project_issue #: view:project.issue:0 @@ -590,12 +593,12 @@ msgstr "Normaal" #. module: project_issue #: field:project.project,issue_count:0 msgid "unknown" -msgstr "" +msgstr "onbekend" #. module: project_issue #: view:project.issue:0 msgid "Category:" -msgstr "" +msgstr "Categorie:" #. module: project_issue #: selection:project.issue.report,month:0 @@ -605,7 +608,7 @@ msgstr "Juni" #. module: project_issue #: help:project.issue,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Berichten en communicatie historie" #. module: project_issue #: view:project.issue:0 @@ -620,7 +623,7 @@ msgstr "Dagen tot sluiten" #. module: project_issue #: field:project.issue,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Is een volger" #. module: project_issue #: help:project.issue,state:0 @@ -631,6 +634,10 @@ msgid "" "the case needs to be reviewed then the status is set " "to 'Pending'." msgstr "" +"De status is ingesteld op 'Concept' wanneer de klacht wordt aangemaakt. Als " +"de klacht in behandeling is, is de status ingesteld op 'Open'. wanneer de " +"klacht is afgewerkt, wordt de status ingesteld op 'Gereed'. Indien de klacht " +"moet worden gecontroleerd, wordt de status op ingesteld op 'In afwachting'." #. module: project_issue #: field:project.issue,active:0 @@ -647,13 +654,13 @@ msgstr "November" #: code:addons/project_issue/project_issue.py:472 #, python-format msgid "Warning!" -msgstr "" +msgstr "Waarschuwing!" #. module: project_issue #: field:project.issue,message_comment_ids:0 #: help:project.issue,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Opmerkingen en e-mails." #. module: project_issue #: view:project.issue.report:0 @@ -688,7 +695,7 @@ msgstr "Deze personen zullen email ontvangen." #. module: project_issue #: field:project.issue,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Samenvatting" #. module: project_issue #: field:project.issue,date:0 @@ -705,7 +712,7 @@ msgstr "Toegekend aan" #. module: project_issue #: view:project.config.settings:0 msgid "Configure" -msgstr "" +msgstr "Instellen" #. module: project_issue #: view:project.issue:0 @@ -774,7 +781,7 @@ msgstr "Aanmaak maand" #: code:addons/project_issue/project_issue.py:557 #, python-format msgid "escalated to '%s'." -msgstr "" +msgstr "geëscaleerd naar '%s'." #. module: project_issue #: view:project.issue.report:0 @@ -800,12 +807,12 @@ msgstr "Issue" #: code:addons/project_issue/project_issue.py:540 #, python-format msgid "Stage changed to %s." -msgstr "" +msgstr "Fase veranderd in %s." #. module: project_issue #: model:project.category,name:project_issue.project_issue_category_02 msgid "PBCK" -msgstr "" +msgstr "PBCK" #. module: project_issue #: view:project.issue:0 @@ -830,7 +837,7 @@ msgstr "Mei" #. module: project_issue #: model:ir.model,name:project_issue.model_project_config_settings msgid "project.config.settings" -msgstr "" +msgstr "project.config.settings" #. module: project_issue #: view:project.issue.report:0 @@ -883,7 +890,7 @@ msgstr "Mijn issues" #. module: project_issue #: help:project.issue.report,delay_open:0 msgid "Number of Days to open the project issue." -msgstr "" +msgstr "Aantal dagen voor het openen van de project issue" #. module: project_issue #: selection:project.issue.report,month:0 @@ -893,7 +900,7 @@ msgstr "April" #. module: project_issue #: view:project.issue:0 msgid "⇒ Escalate" -msgstr "" +msgstr "⇒ Escaleren" #. module: project_issue #: view:project.issue:0 diff --git a/addons/project_long_term/i18n/nl.po b/addons/project_long_term/i18n/nl.po index 757a3103709..72bebf93825 100644 --- a/addons/project_long_term/i18n/nl.po +++ b/addons/project_long_term/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-11-26 20:20+0000\n" +"PO-Revision-Date: 2012-12-09 18:54+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:51+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: project_long_term #: help:project.phase,constraint_date_end:0 @@ -120,7 +120,7 @@ msgstr "Nieuw" #. module: project_long_term #: field:project.phase,product_uom:0 msgid "Duration Unit of Measure" -msgstr "" +msgstr "Maateenheid tijdsduur" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves @@ -319,7 +319,7 @@ msgstr "Taakdetails" #. module: project_long_term #: field:project.project,phase_count:0 msgid "Open Phases" -msgstr "" +msgstr "Open fases" #. module: project_long_term #: help:project.phase,date_end:0 diff --git a/addons/purchase/i18n/nl.po b/addons/purchase/i18n/nl.po index 5fbda5a82ba..98c2cb15999 100644 --- a/addons/purchase/i18n/nl.po +++ b/addons/purchase/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-11-30 19:55+0000\n" +"PO-Revision-Date: 2012-12-09 19:11+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \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: 2012-12-04 05:11+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: purchase #: model:res.groups,name:purchase.group_analytic_accounting @@ -62,7 +62,7 @@ msgstr "" #. module: purchase #: model:ir.actions.server,name:purchase.actions_server_purchase_order_read msgid "Purchase: Mark read" -msgstr "" +msgstr "Purchase: Markeer als gelezen" #. module: purchase #: view:purchase.report:0 @@ -357,7 +357,7 @@ msgstr "Oktober" #: code:addons/purchase/purchase.py:837 #, python-format msgid "Purchase Order for %s cancelled." -msgstr "" +msgstr "Inkooporder voorr %s geannuleerd." #. module: purchase #: field:purchase.order,message_summary:0 @@ -393,7 +393,7 @@ msgstr "Aantal" #: code:addons/purchase/purchase.py:819 #, python-format msgid "Shipment %s scheduled for %s." -msgstr "" +msgstr "Inkomende levering %s geplant for %s." #. module: purchase #: field:purchase.order,fiscal_position:0 @@ -641,7 +641,7 @@ msgstr "" #. module: purchase #: view:purchase.order.line:0 msgid "Invoices and Receptions" -msgstr "" +msgstr "Facturen en ontvangsten" #. module: purchase #: view:purchase.report:0 @@ -786,7 +786,7 @@ msgstr "Offerteaanvraag :" #: model:ir.actions.act_window,name:purchase.action_picking_tree4_picking_to_invoice #: model:ir.ui.menu,name:purchase.menu_action_picking_tree4_picking_to_invoice msgid "On Incoming Shipments" -msgstr "" +msgstr "Op inkomende leveringen" #. module: purchase #: report:purchase.order:0 @@ -1015,7 +1015,7 @@ msgstr "" #. module: purchase #: model:ir.actions.server,name:purchase.actions_server_purchase_order_unread msgid "Purchase: Mark unread" -msgstr "" +msgstr "Inkoop: Markeer als ongelezen" #. module: purchase #: help:purchase.order,message_ids:0 @@ -1242,7 +1242,7 @@ msgstr "" #: code:addons/purchase/purchase.py:310 #, python-format msgid "Please create Invoices." -msgstr "" +msgstr "Maak à.u.b. Facturen." #. module: purchase #: model:ir.model,name:purchase.model_procurement_order @@ -1337,7 +1337,7 @@ msgstr "IO: %s" #. module: purchase #: view:purchase.order:0 msgid "Send by EMail" -msgstr "" +msgstr "Stuur per -mail" #. module: purchase #: code:addons/purchase/purchase.py:498 @@ -1622,7 +1622,7 @@ msgstr "Inkoop menu openen" #. module: purchase #: model:ir.model,name:purchase.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "E-mail samenstellen wizard" #. module: purchase #: field:purchase.order,company_id:0 @@ -2018,7 +2018,7 @@ msgstr "Verzoek om offerte nr." #. module: purchase #: view:purchase.config.settings:0 msgid "Invoicing Settings" -msgstr "" +msgstr "Facturering instellingen" #. module: purchase #: model:email.template,body_html:purchase.email_template_edi_purchase diff --git a/addons/sale/i18n/de.po b/addons/sale/i18n/de.po index 7d736a56b32..ac92aa26c53 100644 --- a/addons/sale/i18n/de.po +++ b/addons/sale/i18n/de.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-10 17:16+0000\n" -"Last-Translator: Ferdinand-camptocamp \n" +"PO-Revision-Date: 2012-12-09 22:57+0000\n" +"Last-Translator: Felix Schubert \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:30+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: sale #: model:ir.model,name:sale.model_account_config_settings msgid "account.config.settings" -msgstr "" +msgstr "account.config.settings" #. module: sale #: view:sale.order.line:0 @@ -45,7 +45,7 @@ msgstr "VE" #: view:sale.report:0 #: field:sale.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Verkäufer" #. module: sale #: help:sale.order,pricelist_id:0 @@ -60,6 +60,7 @@ msgstr "Tag" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancelorder0 +#: view:sale.order:0 msgid "Cancel Order" msgstr "Auftrag stornieren" @@ -67,18 +68,18 @@ msgstr "Auftrag stornieren" #: code:addons/sale/wizard/sale_make_invoice_advance.py:101 #, python-format msgid "Incorrect Data" -msgstr "" +msgstr "Fehlerhafte Daten" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:102 #, python-format msgid "The value of Advance Amount must be positive." -msgstr "" +msgstr "Der Wert eines Vorschussbetrags muss positiv sein" #. module: sale #: help:sale.order,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Wenn aktiviert, erfordern neue Nachrichten Ihr Handeln" #. module: sale #: view:res.partner:0 @@ -88,7 +89,7 @@ msgstr "" #. module: sale #: report:sale.order:0 msgid "Tax" -msgstr "" +msgstr "Steuer" #. module: sale #: help:sale.order,state:0 @@ -102,6 +103,7 @@ msgid "" msgstr "" #. module: sale +#: field:sale.order,project_id:0 #: view:sale.report:0 #: field:sale.report,analytic_account_id:0 #: field:sale.shop,project_id:0 @@ -114,6 +116,9 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Hier finden Sie die Nachrichtenübersicht (Anzahl Nachrichten etc., ...) im " +"html Format, um über dieses Format dann später in einer Kanban Ansicht " +"weiterzuarbeiten." #. module: sale #: view:sale.report:0 @@ -124,7 +129,7 @@ msgstr "Menge" #. module: sale #: help:sale.config.settings,group_discount_per_so_line:0 msgid "Allows you to apply some discount per sale order line." -msgstr "" +msgstr "Ermöglicht die Gewährung eines Rabatts für eine Auftragsposition" #. module: sale #: help:sale.config.settings,group_sale_pricelist:0 @@ -132,6 +137,10 @@ msgid "" "Allows to manage different prices based on rules per category of customers.\n" "Example: 10% for retailers, promotion of 5 EUR on this product, etc." msgstr "" +"Erlaubt die Verwaltung von unterschiedlichen Preisen auf Basis von " +"Kundenkategorien.\n" +"z.B. 10% für Wiederverkäufer, Nachlass um 5 EUR aufgrund einer " +"Verkaufsaktion für das Produkt, etc." #. module: sale #: field:sale.shop,payment_default_id:0 @@ -142,17 +151,17 @@ msgstr "Standard Zahlungsbedingung" #: code:addons/sale/sale.py:662 #, python-format msgid "Invoice paid." -msgstr "" +msgstr "Rechnung bezahlt" #. module: sale #: field:sale.config.settings,group_uom:0 msgid "Allow using different units of measures" -msgstr "" +msgstr "Erlaubt die Verwendung verschiedener Maßeinheiten" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Percentage" -msgstr "" +msgstr "Prozentsatz" #. module: sale #: report:sale.order:0 @@ -163,7 +172,7 @@ msgstr "Rabatt (%)" #: code:addons/sale/sale.py:787 #, python-format msgid "Please define income account for this product: \"%s\" (id:%d)." -msgstr "" +msgstr "Weisen Sie ein Ertragskonto für diese Produkt zu: \"%s\" (id:%d)." #. module: sale #: view:sale.report:0 @@ -214,17 +223,17 @@ msgstr "Andere Informationen" #: code:addons/sale/wizard/sale_make_invoice.py:42 #, python-format msgid "Warning!" -msgstr "" +msgstr "Warnung!" #. module: sale #: view:sale.config.settings:0 msgid "Invoicing Process" -msgstr "" +msgstr "Rechnungsstellungsprozess" #. module: sale #: view:sale.order:0 msgid "Sales Order done" -msgstr "" +msgstr "Auftrag erledigt" #. module: sale #: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order @@ -237,6 +246,8 @@ msgstr "Angebote und Verkäufe" msgid "" "Allows you to select and maintain different units of measure for products." msgstr "" +"Ermöglicht die Auswahl und Verwaltung verschiedener Maßeinheiten für " +"Produkte." #. module: sale #: model:ir.model,name:sale.model_sale_make_invoice @@ -257,7 +268,7 @@ msgstr "Rabatt (%)" #. module: sale #: view:sale.order.line.make.invoice:0 msgid "Create & View Invoice" -msgstr "" +msgstr "Erzeuge und zeige Rechnung an" #. module: sale #: view:board.board:0 @@ -269,6 +280,7 @@ msgstr "Meine Angebote" #: field:sale.config.settings,module_warning:0 msgid "Allow configuring alerts by customer or products" msgstr "" +"Ermöglicht die Konfiguration von Hinweisen nach Kunden oder Produkten" #. module: sale #: field:sale.shop,name:0 @@ -289,27 +301,38 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Hier finden Sie eine Liste mit abrechenbaren " +"Auftragspositionen.\n" +" Sie können Aufträge teilweise, basierend auf " +"Auftragspositionen,\n" +" abrechnen. Sie benötigen diese Liste nicht, wenn Sie auf " +"Basis \n" +" von Lieferscheinen oder die vollständigen Aufträge " +"abrechnen.\n" +"

    \n" +" " #. module: sale #: view:sale.order:0 msgid "Quotation " -msgstr "" +msgstr "Angebot " #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:106 #, python-format msgid "Advance of %s %%" -msgstr "" +msgstr "Abschlagszahlung von %s %%" #. module: sale -#: model:ir.actions.act_window,name:sale.action_orders_exception +#: model:ir.actions.act_window,name:sale.action_order_tree2 msgid "Sales in Exception" msgstr "Verkaufsaufträge in Fehlerliste" #. module: sale #: help:sale.order.line,address_allotment_id:0 msgid "A partner to whom the particular product needs to be allotted." -msgstr "" +msgstr "Ein Partner, dem dieses bestimmte Produkt zugeordnet wurde." #. module: sale #: view:sale.order:0 @@ -339,6 +362,17 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Klicken Sie hier, um ein Angebot zu erzeugen, das in einen " +"Auftrag\n" +" umgewandelt werden kann.\n" +"

    \n" +" OpenERP unterstützt Sie effizient Ihren vollständigen " +"Verkaufsprozess\n" +" abzuwickeln: Angebot, Auftrag, Lieferung, Rechnungsstellung " +"und Bezahlung.\n" +"

    \n" +" " #. module: sale #: selection:sale.report,month:0 @@ -363,23 +397,23 @@ msgstr "Oktober" #. module: sale #: field:sale.order,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Zusammenfassung" #. module: sale #: view:sale.order:0 msgid "View Invoice" -msgstr "" +msgstr "Rechnung anzeigen" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:113 #: code:addons/sale/wizard/sale_make_invoice_advance.py:115 #, python-format msgid "Advance of %s %s" -msgstr "" +msgstr "Abschlagszahlung von %s %s" #. module: sale -#: model:ir.actions.act_window,name:sale.action_quotations -#: model:ir.ui.menu,name:sale.menu_sale_quotations +#: view:board.board:0 +#: model:ir.actions.act_window,name:sale.action_quotation_for_sale #: view:sale.order:0 #: view:sale.report:0 msgid "Quotations" @@ -388,14 +422,13 @@ msgstr "Angebote" #. module: sale #: field:sale.advance.payment.inv,qtty:0 #: report:sale.order:0 -#: field:sale.order.line,product_uom_qty:0 msgid "Quantity" msgstr "Menge" #. module: sale #: help:sale.order,partner_shipping_id:0 msgid "Delivery address for current sales order." -msgstr "" +msgstr "Lieferadress für den aktuellen Auftrag." #. module: sale #: report:sale.order:0 @@ -413,6 +446,7 @@ msgid "Fiscal Position" msgstr "Steuerzuordnung" #. module: sale +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "In Progress" msgstr "In Bearbeitung" @@ -421,7 +455,7 @@ msgstr "In Bearbeitung" #: code:addons/sale/sale.py:667 #, python-format msgid "Draft Invoice of %s %s waiting for validation." -msgstr "" +msgstr "Rechnungsentwurf %s %s wartet auf Bestätigung." #. module: sale #: model:process.transition,note:sale.process_transition_confirmquotation0 @@ -438,6 +472,8 @@ msgstr "" #, python-format msgid "You cannot cancel a sale order line that has already been invoiced." msgstr "" +"Sie können keine Auftragszeile stornieren, wenn sie bereits abgerechnet " +"wurde." #. module: sale #: report:sale.order:0 @@ -452,12 +488,12 @@ msgstr "Rechnungsadresse für diesen Verkaufsauftrag." #. module: sale #: model:ir.model,name:sale.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: sale #: selection:sale.order,order_policy:0 msgid "Before Delivery" -msgstr "" +msgstr "Vor Lieferung" #. module: sale #: code:addons/sale/sale.py:804 @@ -470,17 +506,17 @@ msgstr "" #. module: sale #: model:res.groups,name:sale.group_delivery_invoice_address msgid "Addresses in Sale Orders" -msgstr "" +msgstr "Addressen in Aufträgen" #. module: sale #: field:sale.order,project_id:0 msgid "Contract / Analytic" -msgstr "" +msgstr "Vertrag/Analytisches Konto" #. module: sale #: model:res.groups,name:sale.group_invoice_so_lines msgid "Enable Invoicing Sale order lines" -msgstr "" +msgstr "Rechnungserstellung basierend auf Auftragszeilen" #. module: sale #: view:sale.report:0 @@ -501,10 +537,9 @@ msgstr "" #: view:sale.make.invoice:0 #: view:sale.order.line.make.invoice:0 msgid "or" -msgstr "" +msgstr "oder" #. module: sale -#: field:sale.order,invoice_exists:0 #: field:sale.order,invoiced_rate:0 #: field:sale.order.line,invoiced:0 msgid "Invoiced" @@ -513,7 +548,7 @@ msgstr "Abgerechnet" #. module: sale #: model:res.groups,name:sale.group_analytic_accounting msgid "Analytic Accounting for Sales" -msgstr "" +msgstr "Analytische Konten für den Verkauf" #. module: sale #: field:sale.order,date_confirm:0 @@ -528,7 +563,7 @@ msgstr "Vertriebspartner" #. module: sale #: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv msgid "Invoice Order" -msgstr "" +msgstr "Bestellungsrechnung" #. module: sale #: selection:sale.report,month:0 @@ -538,7 +573,7 @@ msgstr "März" #. module: sale #: model:ir.actions.server,name:sale.actions_server_sale_order_read msgid "Sale: Mark read" -msgstr "" +msgstr "Verkauf: Als gelesen markieren" #. module: sale #: help:sale.order,amount_total:0 @@ -549,6 +584,8 @@ msgstr "Gesamtsumme." #: field:sale.config.settings,module_sale_journal:0 msgid "Allow batch invoicing of delivery orders through journals" msgstr "" +"Stapelverarbeitung zur Erzeugung von Rechnungen auf Basis von Lieferscheinen " +"erlauben" #. module: sale #: field:sale.order.line,price_subtotal:0 @@ -558,7 +595,7 @@ msgstr "Zwischensumme" #. module: sale #: field:sale.config.settings,group_discount_per_so_line:0 msgid "Allow setting a discount on the sale order lines" -msgstr "" +msgstr "Rabatt auf Auftragszeilen erlauben" #. module: sale #: report:sale.order:0 @@ -568,12 +605,12 @@ msgstr "Rechnungsanschrift:" #. module: sale #: field:sale.order.line,product_uom:0 msgid "Unit of Measure " -msgstr "" +msgstr "Maßeinheit " #. module: sale #: field:sale.config.settings,time_unit:0 msgid "The default working time unit for services is" -msgstr "" +msgstr "Standard Zeiteinheit für Dienstleistungen ist" #. module: sale #: field:sale.order,partner_invoice_id:0 @@ -598,14 +635,19 @@ msgid "" " or a fixed price (for advances) directly from the sale " "order form if you prefer." msgstr "" +"Alle Auftragszeilen werden in Rechnung gestellt. Sie können auch einen " +"Prozentsatz\n" +" definieren, der auf die Summe angewendet wird oder einen " +"Festpreis (für Abschlagszahlungen) direkt aus dem Auftrag." #. module: sale #: view:sale.order:0 msgid "(update)" -msgstr "" +msgstr "(aktualisieren)" #. module: sale #: model:ir.model,name:sale.model_sale_order_line +#: field:stock.move,sale_line_id:0 msgid "Sales Order Line" msgstr "Auftragsposition" @@ -613,11 +655,12 @@ msgstr "Auftragsposition" #: field:sale.config.settings,module_analytic_user_function:0 msgid "One employee can have different roles per contract" msgstr "" +"Ein Mitarbeiter kann verschiedene Rollen in verschiedenen Verträgen haben." #. module: sale #: view:sale.order:0 msgid "Print" -msgstr "" +msgstr "Drucken" #. module: sale #: report:sale.order:0 @@ -625,7 +668,6 @@ msgid "Order N°" msgstr "Bestellnummer" #. module: sale -#: view:sale.order:0 #: field:sale.order,order_line:0 msgid "Order Lines" msgstr "Auftragszeilen" @@ -633,7 +675,7 @@ msgstr "Auftragszeilen" #. module: sale #: field:account.config.settings,module_sale_analytic_plans:0 msgid "Use multiple analytic accounts on sales" -msgstr "" +msgstr "Verwenden Sie mehrere Analytische Konten für den Verkauf" #. module: sale #: help:sale.config.settings,module_sale_journal:0 @@ -653,7 +695,7 @@ msgstr "Datum Auftragserstellung" #: code:addons/sale/sale.py:659 #, python-format msgid "Sale Order for %s set to Done" -msgstr "" +msgstr "Auftrag für %s wurde auf Erledigt gesetzt" #. module: sale #: model:ir.actions.act_window,name:sale.action_order_line_tree3 @@ -695,7 +737,7 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:92 #, python-format msgid "There is no income account defined as global property." -msgstr "" +msgstr "Es wurde kein Ertragskonto als allgemeiner Standard festgelegt." #. module: sale #: code:addons/sale/sale.py:984 @@ -703,12 +745,12 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:95 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Konfigurationsfehler!" #. module: sale #: view:sale.order:0 msgid "Send by Email" -msgstr "" +msgstr "E-mail senden" #. module: sale #: code:addons/sale/res_config.py:89 @@ -723,6 +765,7 @@ msgstr "Auftragsdatum" #. module: sale #: view:sale.order.line:0 +#: field:sale.report,shipped:0 msgid "Shipped" msgstr "Ausgeliefert" @@ -732,9 +775,9 @@ msgid "" "To allow your salesman to make invoices for sale order lines using the menu " "'Lines to Invoice'." msgstr "" +"Erlaubt dem Verkäufer Rechnung auf Basis von Auftragspositionen zu erstellen." #. module: sale -#: model:ir.model,name:sale.model_res_partner #: view:sale.report:0 #: field:sale.report,partner_id:0 msgid "Partner" @@ -743,7 +786,7 @@ msgstr "Partner" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Create and View Invoice" -msgstr "" +msgstr "Erzeuge und zeige Rechnung an" #. module: sale #: model:ir.actions.act_window,help:sale.action_shop_form @@ -771,7 +814,7 @@ msgid "You cannot confirm a sale order which has no line." msgstr "Sie können einen Verkaufsauftrag ohne Zeilen nicht bestätigen" #. module: sale -#: code:addons/sale/sale.py:966 +#: code:addons/sale/sale.py:1124 #, python-format msgid "" "You have to select a pricelist or a customer in the sales form !\n" @@ -790,7 +833,7 @@ msgstr "Produktkategorie" #: code:addons/sale/sale.py:555 #, python-format msgid "Cannot cancel this sales order!" -msgstr "" +msgstr "Der Auftrag kann nicht abgebrochen werden!" #. module: sale #: view:sale.order:0 @@ -803,6 +846,7 @@ msgstr "Wiederherstellung Rechnung" msgid "" "In order to delete a confirmed sale order, you must cancel it before !" msgstr "" +"Um einen bestätigten Auftrag zu löschen, muss er vorher storniert werden!" #. module: sale #: report:sale.order:0 @@ -812,17 +856,17 @@ msgstr "Steuern:" #. module: sale #: selection:sale.order,order_policy:0 msgid "On Demand" -msgstr "" +msgstr "Auf Anforderung" #. module: sale #: field:sale.order,currency_id:0 msgid "unknown" -msgstr "" +msgstr "Unbekannt" #. module: sale #: field:sale.order,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Ist ein Follower" #. module: sale #: field:sale.order,date_order:0 @@ -865,7 +909,7 @@ msgstr "Keine gültige Preisliste gefunden" #. module: sale #: field:sale.config.settings,module_sale_margin:0 msgid "Display margins on sales orders" -msgstr "" +msgstr "Gewinnspanne in Aufträgen anzeigen" #. module: sale #: help:sale.order,invoice_ids:0 @@ -884,6 +928,7 @@ msgid "Your Reference" msgstr "Ihre Referenz" #. module: sale +#: view:sale.order:0 #: view:sale.order.line:0 msgid "Qty" msgstr "Anz." @@ -895,9 +940,10 @@ msgstr "Meine Verkaufsauftragspositionen" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancel0 +#: model:process.transition.action,name:sale.process_transition_action_cancel1 +#: model:process.transition.action,name:sale.process_transition_action_cancel2 #: view:sale.advance.payment.inv:0 #: view:sale.make.invoice:0 -#: view:sale.order:0 #: view:sale.order.line:0 #: view:sale.order.line.make.invoice:0 msgid "Cancel" @@ -915,13 +961,15 @@ msgid "" "Cannot find a pricelist line matching this product and quantity.\n" "You have to change either the product, the quantity or the pricelist." msgstr "" +"Es wurde keine Preisliste gefunden, die für diese Produkt und Anzahl " +"zutrifft.\n" +"Sie müssen entweder das Produkt, die Anzahl oder die Preisliste ändern." #. module: sale #: model:process.transition,name:sale.process_transition_invoice0 +#: model:process.transition,name:sale.process_transition_invoiceafterdelivery0 #: model:process.transition.action,name:sale.process_transition_action_createinvoice0 #: view:sale.advance.payment.inv:0 -#: view:sale.order:0 -#: field:sale.order,order_policy:0 #: view:sale.order.line:0 msgid "Create Invoice" msgstr "Erzeuge Rechnung" @@ -948,13 +996,14 @@ msgstr "" #. module: sale #: report:sale.order:0 +#: view:sale.order.line:0 msgid "Price" msgstr "Verkaufspreis" #. module: sale #: view:sale.order:0 msgid "Quotation Number" -msgstr "" +msgstr "Angebotsnummer" #. module: sale #: selection:sale.order.line,type:0 @@ -969,7 +1018,7 @@ msgstr "Lieferanschrift:" #. module: sale #: help:account.config.settings,group_analytic_account_for_sales:0 msgid "Allows you to specify an analytic account on sale orders." -msgstr "" +msgstr "Ermöglicht die Zuordnung eines Analytischen Kontos zu einem Auftrag." #. module: sale #: model:process.node,note:sale.process_node_quotation0 @@ -980,12 +1029,12 @@ msgstr "Entwurf Zustand des Verkaufsauftrags" #: code:addons/sale/sale.py:647 #, python-format msgid "Quotation for %s created." -msgstr "" +msgstr "Angebot für %s erzeugt." #. module: sale #: help:sale.order,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Nachrichten und Kommunikations-Historie" #. module: sale #: view:sale.order:0 @@ -996,12 +1045,12 @@ msgstr "" #: code:addons/sale/sale.py:1007 #, python-format msgid "Cannot delete a sales order line which is in state '%s'." -msgstr "" +msgstr "Kann eine Auftragszeile im Status '%s' nicht löschen." #. module: sale #: model:res.groups,name:sale.group_mrp_properties msgid "Properties on lines" -msgstr "" +msgstr "Eigentschaften von Zeilen" #. module: sale #: code:addons/sale/sale.py:888 @@ -1010,6 +1059,8 @@ msgid "" "Before choosing a product,\n" " select a customer in the sales form." msgstr "" +"Bevor Sie ein Produkt auswählen,\n" +" wählen Sie einen Kunden im Verkaufsformular aus." #. module: sale #: view:sale.order:0 @@ -1030,7 +1081,7 @@ msgstr "Bestätige Angebot" #: model:ir.actions.act_window,name:sale.action_order_line_tree2 #: model:ir.ui.menu,name:sale.menu_invoicing_sales_order_lines msgid "Order Lines to Invoice" -msgstr "" +msgstr "Auftragszeilen für Rechnung" #. module: sale #: view:sale.order:0 @@ -1042,7 +1093,7 @@ msgstr "Gruppierung..." #. module: sale #: view:sale.config.settings:0 msgid "Product Features" -msgstr "" +msgstr "Produkteigenschaften" #. module: sale #: selection:sale.order,state:0 @@ -1054,7 +1105,7 @@ msgstr "Warteliste" #: view:sale.order.line:0 #: field:sale.report,product_uom:0 msgid "Unit of Measure" -msgstr "" +msgstr "Maßeinheit" #. module: sale #: field:sale.order.line,type:0 @@ -1064,18 +1115,18 @@ msgstr "Dispositionsmethode" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Invoice the whole sale order" -msgstr "" +msgstr "Rechnung auf Basis eines vollständigen Auftrags" #. module: sale #: view:sale.order:0 #: field:sale.order,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ungelesene Nachrichten" #. module: sale #: selection:sale.order,state:0 msgid "Draft Quotation" -msgstr "" +msgstr "Angebotsentwurf" #. module: sale #: selection:sale.order,state:0 @@ -1083,6 +1134,7 @@ msgid "Sale Order" msgstr "Verkaufsauftrag" #. module: sale +#: view:sale.order:0 #: field:sale.order,amount_tax:0 #: field:sale.order.line,tax_id:0 msgid "Taxes" @@ -1122,7 +1174,7 @@ msgstr "Erzeuge Rechnungen" #: code:addons/sale/sale.py:1007 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Ungültige Aktion!" #. module: sale #: report:sale.order:0 @@ -1152,13 +1204,14 @@ msgstr "" #. module: sale #: model:ir.actions.act_window,name:sale.action_sale_order_make_invoice #: model:ir.actions.act_window,name:sale.action_view_sale_order_line_make_invoice +#: view:sale.order:0 msgid "Make Invoices" msgstr "Rechnungen erstellen" #. module: sale #: field:res.partner,sale_order_count:0 msgid "# of Sales Order" -msgstr "" +msgstr "# des Auftrags" #. module: sale #: view:sale.order:0 @@ -1182,11 +1235,15 @@ msgid "" "After clicking 'Show Lines to Invoice', select lines to invoice and create " "the invoice from the 'More' dropdown menu." msgstr "" +"Nachdem Sie 'Auftragszeilen zur Verrechnung anzeigen' angeklickt haben, " +"wählen Sie die zu verrechnenden Zeilen aus und erzeugen Sie die Rechnung " +"durch Auswahl des Eintrages im Menu 'Mehr'." #. module: sale #: help:sale.order,invoice_exists:0 msgid "It indicates that sale order has at least one invoice." msgstr "" +"Gibt an das mindestens eine Rechnung für diesen Auftrag erzeugt wurde." #. module: sale #: selection:sale.order,state:0 @@ -1204,16 +1261,17 @@ msgstr "Gruppiere Rechnungen" #, python-format msgid "Quotation for %s converted to Sale Order of %s %s." msgstr "" +"Das Angebot für %s wurde umgewandelt in Auftrag %s %s." #. module: sale #: view:sale.advance.payment.inv:0 msgid "Invoice Sale Order" -msgstr "" +msgstr "Auftrag abrechnen" #. module: sale #: view:sale.config.settings:0 msgid "Contracts Management" -msgstr "" +msgstr "Vertragsverwaltung" #. module: sale #: view:sale.report:0 @@ -1256,7 +1314,7 @@ msgstr "Statistik Verkaufsaufträge" #. module: sale #: model:process.node,name:sale.process_node_quotation0 -#: view:sale.order:0 +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "Quotation" msgstr "Angebot" @@ -1383,7 +1441,7 @@ msgstr "" #. module: sale #: field:sale.config.settings,group_sale_pricelist:0 msgid "Use pricelists to adapt your price per customers" -msgstr "" +msgstr "Benutzen Sie Preislisten, um den Preis auf Kundenbasis anzupassen" #. module: sale #: view:sale.order.line:0 @@ -1405,10 +1463,8 @@ msgid "Customer Invoices" msgstr "Kundenrechnungen" #. module: sale -#: model:ir.actions.act_window,name:sale.open_board_sales -#: model:ir.ui.menu,name:sale.menu_dashboard_sales +#: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order #: model:process.process,name:sale.process_process_salesprocess0 -#: view:res.partner:0 #: view:sale.order:0 #: view:sale.report:0 msgid "Sales" @@ -1430,7 +1486,6 @@ msgid "Unit Price" msgstr "Preis/ME" #. module: sale -#: view:sale.order:0 #: selection:sale.order,state:0 #: view:sale.order.line:0 #: selection:sale.order.line,state:0 @@ -1439,10 +1494,8 @@ msgid "Done" msgstr "Erledigt" #. module: sale -#: code:addons/sale/wizard/sale_line_invoice.py:123 #: model:process.node,name:sale.process_node_invoice0 -#: view:sale.order:0 -#, python-format +#: model:process.node,name:sale.process_node_invoiceafterdelivery0 msgid "Invoice" msgstr "Rechnung" @@ -1477,7 +1530,7 @@ msgstr "Produkt" #. module: sale #: field:sale.config.settings,group_invoice_so_lines:0 msgid "Generate invoices based on the sale order lines" -msgstr "" +msgstr "Erzeugt Rechnungen auf Basis von Auftragszeilen" #. module: sale #: help:sale.order,order_policy:0 @@ -1518,6 +1571,7 @@ msgid "Product UoS" msgstr "Produkt - Verkaufseinheit" #. module: sale +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "Manual In Progress" msgstr "Manuell in Bearbeitung" @@ -1525,7 +1579,7 @@ msgstr "Manuell in Bearbeitung" #. module: sale #: model:ir.actions.server,name:sale.actions_server_sale_order_unread msgid "Sale: Mark unread" -msgstr "" +msgstr "Verkauf: Als ungelesen markieren" #. module: sale #: view:sale.order.line:0 @@ -1535,7 +1589,7 @@ msgstr "Auftrag" #. module: sale #: view:sale.order:0 msgid "Confirm Sale" -msgstr "" +msgstr "Auftrag bestätiguen" #. module: sale #: model:process.transition,name:sale.process_transition_saleinvoice0 @@ -1564,7 +1618,7 @@ msgstr "" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Some order lines" -msgstr "" +msgstr "Einige Auftragspositionen" #. module: sale #: view:res.partner:0 @@ -1574,7 +1628,7 @@ msgstr "" #. module: sale #: model:res.groups,name:sale.group_discount_per_so_line msgid "Discount on lines" -msgstr "" +msgstr "Rabatt auf Auftragspositionen" #. module: sale #: field:sale.order,client_order_ref:0 @@ -1640,6 +1694,7 @@ msgstr "Datum der Auftragsbestätigung" #, python-format msgid "First cancel all invoices attached to this sales order." msgstr "" +"Stornieren Sie zuerst alle Rechnungen, die mit diesem Auftrag verknüpft sind." #. module: sale #: field:sale.order,company_id:0 @@ -1667,7 +1722,7 @@ msgid "Invoice Exception" msgstr "Abrechnungsfehler" #. module: sale -#: code:addons/sale/sale.py:888 +#: code:addons/sale/sale.py:1017 #, python-format msgid "No Customer Defined !" msgstr "Kein Kunde definiert !" @@ -1675,7 +1730,7 @@ msgstr "Kein Kunde definiert !" #. module: sale #: field:sale.order,partner_shipping_id:0 msgid "Delivery Address" -msgstr "" +msgstr "Lieferadresse" #. module: sale #: selection:sale.order,state:0 @@ -1685,17 +1740,17 @@ msgstr "" #. module: sale #: view:sale.config.settings:0 msgid "Warehouse Features" -msgstr "" +msgstr "Lager Eigenschaften" #. module: sale #: field:sale.order,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Nachrichten" #. module: sale #: field:sale.config.settings,module_project:0 msgid "Project" -msgstr "" +msgstr "Projekt" #. module: sale #: code:addons/sale/sale.py:354 @@ -1705,7 +1760,7 @@ msgstr "" #: code:addons/sale/sale.py:803 #, python-format msgid "Error!" -msgstr "" +msgstr "Fehler!" #. module: sale #: report:sale.order:0 @@ -1735,15 +1790,16 @@ msgstr "Suche nicht abgerechnete Auftragspositionen" #. module: sale #: selection:sale.order,state:0 msgid "Quotation Sent" -msgstr "" +msgstr "Angebot gesendet" #. module: sale #: model:ir.model,name:sale.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "E-Mail Assistent" #. module: sale #: model:ir.actions.act_window,name:sale.action_shop_form +#: model:ir.ui.menu,name:sale.menu_action_shop_form #: field:sale.order,shop_id:0 #: view:sale.report:0 #: field:sale.report,shop_id:0 @@ -1760,22 +1816,20 @@ msgstr "Geplante Lieferung am" #, python-format msgid "Please define sales journal for this company: \"%s\" (id:%d)." msgstr "" +"Bitte wählen Sie ein Verkaufsjournal für das Unternehmen \"%s\" (id:%d) aus." #. module: sale #: view:sale.config.settings:0 msgid "Contract Features" -msgstr "" +msgstr "Vertragseigenschaften" #. module: sale -#: code:addons/sale/sale.py:273 -#: code:addons/sale/sale.py:576 #: model:ir.model,name:sale.model_sale_order #: model:process.node,name:sale.process_node_order0 #: model:process.node,name:sale.process_node_saleorder0 -#: field:res.partner,sale_order_ids:0 #: model:res.request.link,name:sale.req_link_sale_order #: view:sale.order:0 -#, python-format +#: field:stock.picking,sale_id:0 msgid "Sales Order" msgstr "Verkaufsauftrag" @@ -1797,7 +1851,7 @@ msgstr "Bestätigt" #. module: sale #: field:sale.order,note:0 msgid "Terms and conditions" -msgstr "" +msgstr "Geschäftsbedingungen" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_confirm0 @@ -1807,9 +1861,10 @@ msgstr "Bestätigen" #. module: sale #: field:sale.order,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Followers" #. module: sale +#: view:sale.order:0 #: field:sale.order.line,invoice_lines:0 msgid "Invoice Lines" msgstr "Rechnungszeilen" @@ -1821,7 +1876,6 @@ msgid "# of Lines" msgstr "# Positionen" #. module: sale -#: model:ir.actions.act_window,name:sale.action_order_line_product_tree #: view:sale.order:0 #: view:sale.order.line:0 msgid "Sales Order Lines" @@ -1830,12 +1884,12 @@ msgstr "Verkaufsauftragpositionen" #. module: sale #: view:sale.config.settings:0 msgid "Default Options" -msgstr "" +msgstr "Standardeinstellungen" #. module: sale #: field:account.config.settings,group_analytic_account_for_sales:0 msgid "Analytic accounting for sales" -msgstr "" +msgstr "Analytische Konten für den Verkauf" #. module: sale #: code:addons/sale/edi/sale_order.py:139 @@ -1872,7 +1926,7 @@ msgstr "" #. module: sale #: view:sale.report:0 msgid "Reference Unit of Measure" -msgstr "" +msgstr "Basis Mengeneinheit" #. module: sale #: model:ir.actions.act_window,help:sale.action_quotations @@ -1895,7 +1949,7 @@ msgid "" msgstr "" #. module: sale -#: code:addons/sale/wizard/sale_line_invoice.py:109 +#: code:addons/sale/wizard/sale_line_invoice.py:111 #, python-format msgid "" "Invoice cannot be created for this Sales Order Line due to one of the " @@ -1919,6 +1973,8 @@ msgid "Weight" msgstr "Gewicht" #. module: sale +#: view:sale.open.invoice:0 +#: view:sale.order:0 #: field:sale.order,invoice_ids:0 msgid "Invoices" msgstr "Alle Rechnungen" @@ -1933,6 +1989,8 @@ msgstr "Dezember" #, python-format msgid "There is no income account defined for this product: \"%s\" (id:%d)." msgstr "" +"Es wurde kein Ertragskonto für dieses Produkt ausgewählt: \"%s\" (Kürzel: " +"%d)." #. module: sale #: view:sale.order.line:0 @@ -1950,7 +2008,10 @@ msgid "Untaxed Amount" msgstr "Nettobetrag" #. module: sale -#: code:addons/sale/wizard/sale_make_invoice_advance.py:202 +#: code:addons/sale/wizard/sale_make_invoice_advance.py:163 +#: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv +#: view:sale.advance.payment.inv:0 +#: view:sale.order:0 #, python-format msgid "Advance Invoice" msgstr "Anzahlungsrechnung" @@ -1958,7 +2019,7 @@ msgstr "Anzahlungsrechnung" #. module: sale #: model:ir.actions.client,name:sale.action_client_sale_menu msgid "Open Sale Menu" -msgstr "" +msgstr "Öffne Menü Verkauf" #. module: sale #: selection:sale.order.line,state:0 @@ -1968,7 +2029,7 @@ msgstr "Entwurf" #. module: sale #: field:sale.config.settings,module_sale_stock:0 msgid "Trigger delivery orders automatically from sale orders" -msgstr "" +msgstr "Erzeuge Lieferscheine automatisch aus Aufträgen" #. module: sale #: help:sale.order,amount_tax:0 @@ -1978,7 +2039,7 @@ msgstr "Steuerbetrag" #. module: sale #: view:sale.order:0 msgid "Sale Order " -msgstr "" +msgstr "Auftrag " #. module: sale #: view:sale.order.line:0 @@ -1991,6 +2052,8 @@ msgid "Email Templates" msgstr "E-Mail Vorlagen" #. module: sale +#: model:ir.actions.act_window,name:sale.action_order_form +#: model:ir.ui.menu,name:sale.menu_sale_order #: view:sale.order:0 msgid "Sales Orders" msgstr "Verkaufsaufträge" @@ -2010,7 +2073,7 @@ msgstr "November" #: field:sale.order,message_comment_ids:0 #: help:sale.order,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Kommentare und E-Mails" #. module: sale #: field:sale.advance.payment.inv,product_id:0 @@ -2028,7 +2091,7 @@ msgid "January" msgstr "Januar" #. module: sale -#: model:ir.actions.act_window,name:sale.action_orders_in_progress +#: model:ir.actions.act_window,name:sale.action_order_tree4 msgid "Sales Order in Progress" msgstr "Auftrag in Bearbeitung" @@ -2041,7 +2104,7 @@ msgstr "" #: code:addons/sale/sale.py:655 #, python-format msgid "Sale Order for %s cancelled." -msgstr "" +msgstr "Auftrag für %s wurde abgebrochen." #. module: sale #: help:sale.order,origin:0 @@ -2057,7 +2120,7 @@ msgstr "Tage bis Auftrag" #. module: sale #: field:sale.report,state:0 msgid "Order Status" -msgstr "" +msgstr "Auftragsstatus" #. module: sale #: view:sale.advance.payment.inv:0 @@ -2094,12 +2157,12 @@ msgstr "Keine Preisliste! " #: model:ir.actions.act_window,name:sale.action_orders #: model:ir.ui.menu,name:sale.menu_sale_order msgid "Sale Orders" -msgstr "" +msgstr "Aufträge" #. module: sale #: field:sale.config.settings,module_account_analytic_analysis:0 msgid "Use contracts management" -msgstr "" +msgstr "Vertragsmanagement benutzen" #. module: sale #: help:sale.order,invoiced:0 @@ -2207,6 +2270,7 @@ msgid "Quotation N°" msgstr "Angebot Nr." #. module: sale +#: field:sale.order,picked_rate:0 #: view:sale.report:0 msgid "Picked" msgstr "Ausgeliefert" diff --git a/addons/sale/i18n/es_AR.po b/addons/sale/i18n/es_AR.po index 4b332db4bff..972215fda66 100644 --- a/addons/sale/i18n/es_AR.po +++ b/addons/sale/i18n/es_AR.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-07 11:48+0000\n" +"PO-Revision-Date: 2012-12-10 03:06+0000\n" "Last-Translator: Guillermo Bisheimer \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: 2012-12-08 04:59+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: sale @@ -584,12 +584,12 @@ msgstr "Domicilio de facturación :" #. module: sale #: field:sale.order.line,product_uom:0 msgid "Unit of Measure " -msgstr "" +msgstr "Unidad de medida " #. module: sale #: field:sale.config.settings,time_unit:0 msgid "The default working time unit for services is" -msgstr "" +msgstr "La unidad por defecto de tiempo de trabajo para servicios es" #. module: sale #: field:sale.order,partner_invoice_id:0 diff --git a/addons/sale/i18n/it.po b/addons/sale/i18n/it.po index aef62851456..7d67a3a9b31 100644 --- a/addons/sale/i18n/it.po +++ b/addons/sale/i18n/it.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-10 18:26+0000\n" -"Last-Translator: simone.sandri \n" +"PO-Revision-Date: 2012-12-09 14:03+0000\n" +"Last-Translator: Davide Corio - agilebg.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: 2012-12-04 05:30+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: sale #: model:ir.model,name:sale.model_account_config_settings msgid "account.config.settings" -msgstr "" +msgstr "account.config.settings" #. module: sale #: view:sale.order.line:0 @@ -31,7 +31,7 @@ msgstr "" #. module: sale #: view:sale.order:0 msgid "UoS" -msgstr "" +msgstr "UoS" #. module: sale #: report:sale.order:0 @@ -42,7 +42,7 @@ msgstr "" #: view:sale.report:0 #: field:sale.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Commerciale" #. module: sale #: help:sale.order,pricelist_id:0 @@ -57,6 +57,7 @@ msgstr "Giorno" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancelorder0 +#: view:sale.order:0 msgid "Cancel Order" msgstr "Annulla Ordine" @@ -64,7 +65,7 @@ msgstr "Annulla Ordine" #: code:addons/sale/wizard/sale_make_invoice_advance.py:101 #, python-format msgid "Incorrect Data" -msgstr "" +msgstr "Dati Errati" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:102 @@ -75,17 +76,17 @@ msgstr "" #. module: sale #: help:sale.order,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Se selezionato, nuovi messaggi richiedono la tua attenzione" #. module: sale #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Falso" #. module: sale #: report:sale.order:0 msgid "Tax" -msgstr "" +msgstr "Imposta" #. module: sale #: help:sale.order,state:0 @@ -99,6 +100,7 @@ msgid "" msgstr "" #. module: sale +#: field:sale.order,project_id:0 #: view:sale.report:0 #: field:sale.report,analytic_account_id:0 #: field:sale.shop,project_id:0 @@ -111,6 +113,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Gestisce il sommario (numero di messaggi, ...) di Chatter. Questo sommario è " +"direttamente in html così da poter essere inserito nelle viste kanban." #. module: sale #: view:sale.report:0 @@ -139,17 +143,17 @@ msgstr "Scadenza Pagamento Predefinita" #: code:addons/sale/sale.py:662 #, python-format msgid "Invoice paid." -msgstr "" +msgstr "Fattura pagata." #. module: sale #: field:sale.config.settings,group_uom:0 msgid "Allow using different units of measures" -msgstr "" +msgstr "Consente di usare differenti unità di misura" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Percentage" -msgstr "" +msgstr "Percentuale" #. module: sale #: report:sale.order:0 @@ -177,7 +181,7 @@ msgstr "" #. module: sale #: view:sale.order:0 msgid "My Sale Orders" -msgstr "" +msgstr "I Miei Ordini di Vendita" #. module: sale #: help:sale.config.settings,timesheet:0 @@ -210,23 +214,23 @@ msgstr "Altre informazioni" #: code:addons/sale/wizard/sale_make_invoice.py:42 #, python-format msgid "Warning!" -msgstr "" +msgstr "Attenzione!" #. module: sale #: view:sale.config.settings:0 msgid "Invoicing Process" -msgstr "" +msgstr "Processo di Fatturazione" #. module: sale #: view:sale.order:0 msgid "Sales Order done" -msgstr "" +msgstr "Ordine di Vendita completato" #. module: sale #: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order #: view:res.partner:0 msgid "Quotations and Sales" -msgstr "" +msgstr "Preventivi e Vendite" #. module: sale #: help:sale.config.settings,group_uom:0 @@ -253,7 +257,7 @@ msgstr "Sconto (%)" #. module: sale #: view:sale.order.line.make.invoice:0 msgid "Create & View Invoice" -msgstr "" +msgstr "Crea e Visualizza Fattura" #. module: sale #: view:board.board:0 @@ -289,7 +293,7 @@ msgstr "" #. module: sale #: view:sale.order:0 msgid "Quotation " -msgstr "" +msgstr "Preventivo " #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:106 @@ -298,7 +302,7 @@ msgid "Advance of %s %%" msgstr "" #. module: sale -#: model:ir.actions.act_window,name:sale.action_orders_exception +#: model:ir.actions.act_window,name:sale.action_order_tree2 msgid "Sales in Exception" msgstr "Vendite in Eccezione" @@ -359,23 +363,23 @@ msgstr "Ottobre" #. module: sale #: field:sale.order,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Riepilogo" #. module: sale #: view:sale.order:0 msgid "View Invoice" -msgstr "" +msgstr "Visualizza Fattura" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:113 #: code:addons/sale/wizard/sale_make_invoice_advance.py:115 #, python-format msgid "Advance of %s %s" -msgstr "" +msgstr "Anticipo su %s %s" #. module: sale -#: model:ir.actions.act_window,name:sale.action_quotations -#: model:ir.ui.menu,name:sale.menu_sale_quotations +#: view:board.board:0 +#: model:ir.actions.act_window,name:sale.action_quotation_for_sale #: view:sale.order:0 #: view:sale.report:0 msgid "Quotations" @@ -384,14 +388,13 @@ msgstr "Preventivi" #. module: sale #: field:sale.advance.payment.inv,qtty:0 #: report:sale.order:0 -#: field:sale.order.line,product_uom_qty:0 msgid "Quantity" msgstr "Quantità" #. module: sale #: help:sale.order,partner_shipping_id:0 msgid "Delivery address for current sales order." -msgstr "" +msgstr "Indirizzo di spedizione per questo ordine di vendita" #. module: sale #: report:sale.order:0 @@ -409,6 +412,7 @@ msgid "Fiscal Position" msgstr "Posizione Fiscale" #. module: sale +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "In Progress" msgstr "In corso" @@ -447,12 +451,12 @@ msgstr "Indirizzo di fatturazione per questo ordine di vendita." #. module: sale #: model:ir.model,name:sale.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: sale #: selection:sale.order,order_policy:0 msgid "Before Delivery" -msgstr "" +msgstr "Prima della Consegna" #. module: sale #: code:addons/sale/sale.py:804 @@ -470,7 +474,7 @@ msgstr "" #. module: sale #: field:sale.order,project_id:0 msgid "Contract / Analytic" -msgstr "" +msgstr "Contratto / Conto Analitico" #. module: sale #: model:res.groups,name:sale.group_invoice_so_lines @@ -494,10 +498,9 @@ msgstr "" #: view:sale.make.invoice:0 #: view:sale.order.line.make.invoice:0 msgid "or" -msgstr "" +msgstr "o" #. module: sale -#: field:sale.order,invoice_exists:0 #: field:sale.order,invoiced_rate:0 #: field:sale.order.line,invoiced:0 msgid "Invoiced" @@ -506,7 +509,7 @@ msgstr "Fatturato" #. module: sale #: model:res.groups,name:sale.group_analytic_accounting msgid "Analytic Accounting for Sales" -msgstr "" +msgstr "Contabilità Analitica su Vendite" #. module: sale #: field:sale.order,date_confirm:0 @@ -521,7 +524,7 @@ msgstr "Ripartizione Partner" #. module: sale #: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv msgid "Invoice Order" -msgstr "" +msgstr "Ordine di Fatturazione" #. module: sale #: selection:sale.report,month:0 @@ -599,6 +602,7 @@ msgstr "" #. module: sale #: model:ir.model,name:sale.model_sale_order_line +#: field:stock.move,sale_line_id:0 msgid "Sales Order Line" msgstr "Linea d'ordine di vendita" @@ -618,7 +622,6 @@ msgid "Order N°" msgstr "Ordine N°" #. module: sale -#: view:sale.order:0 #: field:sale.order,order_line:0 msgid "Order Lines" msgstr "Righe Ordine" @@ -716,6 +719,7 @@ msgstr "Data dell'ordine" #. module: sale #: view:sale.order.line:0 +#: field:sale.report,shipped:0 msgid "Shipped" msgstr "Spedite" @@ -727,7 +731,6 @@ msgid "" msgstr "" #. module: sale -#: model:ir.model,name:sale.model_res_partner #: view:sale.report:0 #: field:sale.report,partner_id:0 msgid "Partner" @@ -764,7 +767,7 @@ msgid "You cannot confirm a sale order which has no line." msgstr "" #. module: sale -#: code:addons/sale/sale.py:966 +#: code:addons/sale/sale.py:1124 #, python-format msgid "" "You have to select a pricelist or a customer in the sales form !\n" @@ -875,6 +878,7 @@ msgid "Your Reference" msgstr "Riferimento" #. module: sale +#: view:sale.order:0 #: view:sale.order.line:0 msgid "Qty" msgstr "Qta'" @@ -886,9 +890,10 @@ msgstr "" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancel0 +#: model:process.transition.action,name:sale.process_transition_action_cancel1 +#: model:process.transition.action,name:sale.process_transition_action_cancel2 #: view:sale.advance.payment.inv:0 #: view:sale.make.invoice:0 -#: view:sale.order:0 #: view:sale.order.line:0 #: view:sale.order.line.make.invoice:0 msgid "Cancel" @@ -909,10 +914,9 @@ msgstr "" #. module: sale #: model:process.transition,name:sale.process_transition_invoice0 +#: model:process.transition,name:sale.process_transition_invoiceafterdelivery0 #: model:process.transition.action,name:sale.process_transition_action_createinvoice0 #: view:sale.advance.payment.inv:0 -#: view:sale.order:0 -#: field:sale.order,order_policy:0 #: view:sale.order.line:0 msgid "Create Invoice" msgstr "Crea fattura" @@ -939,6 +943,7 @@ msgstr "" #. module: sale #: report:sale.order:0 +#: view:sale.order.line:0 msgid "Price" msgstr "Prezzo" @@ -1074,6 +1079,7 @@ msgid "Sale Order" msgstr "Ordine di Vendita" #. module: sale +#: view:sale.order:0 #: field:sale.order,amount_tax:0 #: field:sale.order.line,tax_id:0 msgid "Taxes" @@ -1141,6 +1147,7 @@ msgstr "" #. module: sale #: model:ir.actions.act_window,name:sale.action_sale_order_make_invoice #: model:ir.actions.act_window,name:sale.action_view_sale_order_line_make_invoice +#: view:sale.order:0 msgid "Make Invoices" msgstr "Genera fatture" @@ -1245,7 +1252,7 @@ msgstr "Analisi delle vendite" #. module: sale #: model:process.node,name:sale.process_node_quotation0 -#: view:sale.order:0 +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "Quotation" msgstr "Preventivo" @@ -1395,10 +1402,8 @@ msgid "Customer Invoices" msgstr "" #. module: sale -#: model:ir.actions.act_window,name:sale.open_board_sales -#: model:ir.ui.menu,name:sale.menu_dashboard_sales +#: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order #: model:process.process,name:sale.process_process_salesprocess0 -#: view:res.partner:0 #: view:sale.order:0 #: view:sale.report:0 msgid "Sales" @@ -1420,7 +1425,6 @@ msgid "Unit Price" msgstr "Prezzo unitario" #. module: sale -#: view:sale.order:0 #: selection:sale.order,state:0 #: view:sale.order.line:0 #: selection:sale.order.line,state:0 @@ -1429,10 +1433,8 @@ msgid "Done" msgstr "Completato" #. module: sale -#: code:addons/sale/wizard/sale_line_invoice.py:123 #: model:process.node,name:sale.process_node_invoice0 -#: view:sale.order:0 -#, python-format +#: model:process.node,name:sale.process_node_invoiceafterdelivery0 msgid "Invoice" msgstr "Fattura" @@ -1508,6 +1510,7 @@ msgid "Product UoS" msgstr "Unità di Vendita Prodotto" #. module: sale +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "Manual In Progress" msgstr "Manuale in Progresso" @@ -1656,7 +1659,7 @@ msgid "Invoice Exception" msgstr "Eccezione Fattura" #. module: sale -#: code:addons/sale/sale.py:888 +#: code:addons/sale/sale.py:1017 #, python-format msgid "No Customer Defined !" msgstr "Nessun cliente definito!" @@ -1733,6 +1736,7 @@ msgstr "" #. module: sale #: model:ir.actions.act_window,name:sale.action_shop_form +#: model:ir.ui.menu,name:sale.menu_action_shop_form #: field:sale.order,shop_id:0 #: view:sale.report:0 #: field:sale.report,shop_id:0 @@ -1756,15 +1760,12 @@ msgid "Contract Features" msgstr "" #. module: sale -#: code:addons/sale/sale.py:273 -#: code:addons/sale/sale.py:576 #: model:ir.model,name:sale.model_sale_order #: model:process.node,name:sale.process_node_order0 #: model:process.node,name:sale.process_node_saleorder0 -#: field:res.partner,sale_order_ids:0 #: model:res.request.link,name:sale.req_link_sale_order #: view:sale.order:0 -#, python-format +#: field:stock.picking,sale_id:0 msgid "Sales Order" msgstr "Ordine di vendita" @@ -1799,6 +1800,7 @@ msgid "Followers" msgstr "" #. module: sale +#: view:sale.order:0 #: field:sale.order.line,invoice_lines:0 msgid "Invoice Lines" msgstr "Righe Fattura" @@ -1810,7 +1812,6 @@ msgid "# of Lines" msgstr "Numero Righe" #. module: sale -#: model:ir.actions.act_window,name:sale.action_order_line_product_tree #: view:sale.order:0 #: view:sale.order.line:0 msgid "Sales Order Lines" @@ -1884,7 +1885,7 @@ msgid "" msgstr "" #. module: sale -#: code:addons/sale/wizard/sale_line_invoice.py:109 +#: code:addons/sale/wizard/sale_line_invoice.py:111 #, python-format msgid "" "Invoice cannot be created for this Sales Order Line due to one of the " @@ -1908,6 +1909,8 @@ msgid "Weight" msgstr "Peso" #. module: sale +#: view:sale.open.invoice:0 +#: view:sale.order:0 #: field:sale.order,invoice_ids:0 msgid "Invoices" msgstr "Fatture" @@ -1939,7 +1942,10 @@ msgid "Untaxed Amount" msgstr "Totale Imponibile" #. module: sale -#: code:addons/sale/wizard/sale_make_invoice_advance.py:202 +#: code:addons/sale/wizard/sale_make_invoice_advance.py:163 +#: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv +#: view:sale.advance.payment.inv:0 +#: view:sale.order:0 #, python-format msgid "Advance Invoice" msgstr "Fattura di acconto" @@ -1980,6 +1986,8 @@ msgid "Email Templates" msgstr "" #. module: sale +#: model:ir.actions.act_window,name:sale.action_order_form +#: model:ir.ui.menu,name:sale.menu_sale_order #: view:sale.order:0 msgid "Sales Orders" msgstr "Ordini di Vendita" @@ -2017,7 +2025,7 @@ msgid "January" msgstr "Gennaio" #. module: sale -#: model:ir.actions.act_window,name:sale.action_orders_in_progress +#: model:ir.actions.act_window,name:sale.action_order_tree4 msgid "Sales Order in Progress" msgstr "Ordini di Vendita in esecuzione" @@ -2196,6 +2204,7 @@ msgid "Quotation N°" msgstr "Preventivo N°" #. module: sale +#: field:sale.order,picked_rate:0 #: view:sale.report:0 msgid "Picked" msgstr "Prelevato" diff --git a/addons/sale_crm/i18n/nl.po b/addons/sale_crm/i18n/nl.po index 717a61eba27..ce24e8a0993 100644 --- a/addons/sale_crm/i18n/nl.po +++ b/addons/sale_crm/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-11-24 21:39+0000\n" +"PO-Revision-Date: 2012-12-09 18:40+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \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: 2012-12-04 05:19+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:90 @@ -31,7 +31,7 @@ msgstr "Omzetten naar offerte" #. module: sale_crm #: model:ir.model,name:sale_crm.model_account_invoice_report msgid "Invoices Statistics" -msgstr "" +msgstr "Factuur analyses" #. module: sale_crm #: field:crm.make.sale,close:0 @@ -41,7 +41,7 @@ msgstr "Markeren als gewonnen" #. module: sale_crm #: field:res.users,default_section_id:0 msgid "Default Sales Team" -msgstr "" +msgstr "Standaard verkoopteam" #. module: sale_crm #: view:sale.order:0 @@ -51,7 +51,7 @@ msgstr "Mijn verkoop team(s)" #. module: sale_crm #: model:ir.model,name:sale_crm.model_res_users msgid "Users" -msgstr "" +msgstr "Gebruikers" #. module: sale_crm #: help:crm.make.sale,close:0 @@ -90,7 +90,7 @@ msgstr "Verkoop maken" #. module: sale_crm #: model:ir.model,name:sale_crm.model_account_invoice msgid "Invoice" -msgstr "" +msgstr "Factuur" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:93 diff --git a/addons/sale_mrp/i18n/nl.po b/addons/sale_mrp/i18n/nl.po index b31d113a93e..e4d609f5c7d 100644 --- a/addons/sale_mrp/i18n/nl.po +++ b/addons/sale_mrp/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-02-08 10:27+0000\n" +"PO-Revision-Date: 2012-12-09 18:42+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:46+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: sale_mrp #: model:ir.model,name:sale_mrp.model_mrp_production @@ -35,12 +35,12 @@ msgstr "Toont de klant referentie van de verkooporder." #. module: sale_mrp #: field:mrp.production,sale_ref:0 msgid "Sale Reference" -msgstr "" +msgstr "Verkoop referentie" #. module: sale_mrp #: field:mrp.production,sale_name:0 msgid "Sale Name" -msgstr "" +msgstr "Verkoopnaam" #~ msgid "Sales and MRP Management" #~ msgstr "Verkoop en productie beheer" diff --git a/addons/sale_order_dates/i18n/nl.po b/addons/sale_order_dates/i18n/nl.po index 5a1a6ee179a..163f1333d4d 100644 --- a/addons/sale_order_dates/i18n/nl.po +++ b/addons/sale_order_dates/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-11-24 21:40+0000\n" +"PO-Revision-Date: 2012-12-09 18:41+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:51+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: sale_order_dates #: view:sale.order:0 @@ -40,7 +40,7 @@ msgstr "Datum waarop picking is gemaakt." #. module: sale_order_dates #: help:sale.order,requested_date:0 msgid "Date requested by the customer for the sale." -msgstr "" +msgstr "Datum gevraagd door de klant voor de verkoop" #. module: sale_order_dates #: field:sale.order,requested_date:0 @@ -55,7 +55,7 @@ msgstr "Verkooporder" #. module: sale_order_dates #: help:sale.order,commitment_date:0 msgid "Committed date for delivery." -msgstr "" +msgstr "Bevestigde datum voor levering" #~ msgid "Date on which customer has requested for sales." #~ msgstr "Datum gevraagd klant" diff --git a/addons/share/i18n/zh_CN.po b/addons/share/i18n/zh_CN.po index 88152d61d76..4b568387284 100644 --- a/addons/share/i18n/zh_CN.po +++ b/addons/share/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-11-28 10:18+0000\n" -"Last-Translator: ccdos \n" +"PO-Revision-Date: 2012-12-09 05:00+0000\n" +"Last-Translator: sum1201 \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:47+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: share #: code:addons/share/wizard/share_wizard.py:837 @@ -33,38 +33,38 @@ msgstr "" #. module: share #: view:share.wizard:0 msgid "Include an Optional Personal Message" -msgstr "" +msgstr "包括一个可选的个人信息" #. module: share #: field:share.wizard,embed_option_title:0 msgid "Display title" -msgstr "" +msgstr "显示标题" #. module: share #: view:share.wizard:0 msgid "Access granted!" -msgstr "" +msgstr "存取授权!" #. module: share #: field:share.wizard,record_name:0 msgid "Record name" -msgstr "" +msgstr "记录名称" #. module: share #: help:share.wizard,message:0 msgid "" "An optional personal message, to be included in the email notification." -msgstr "" +msgstr "一个可选的个人信息,被包含在电子邮件通知。" #. module: share #: field:share.wizard,user_type:0 msgid "Sharing method" -msgstr "" +msgstr "共享方式" #. module: share #: field:share.wizard,name:0 msgid "Share Title" -msgstr "" +msgstr "共享标题" #. module: share #: code:addons/share/wizard/share_wizard.py:843 diff --git a/addons/stock/i18n/nl.po b/addons/stock/i18n/nl.po index 2df8f41b411..9139a599d52 100644 --- a/addons/stock/i18n/nl.po +++ b/addons/stock/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-01 16:41+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" +"PO-Revision-Date: 2012-12-09 18:39+0000\n" +"Last-Translator: Leen Sonneveld \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: 2012-12-04 05:06+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:36+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: stock #: field:stock.inventory.line.split,line_exist_ids:0 @@ -2543,7 +2543,7 @@ msgstr "Maateenheid" #. module: stock #: field:stock.config.settings,group_stock_multiple_locations:0 msgid "Manage multiple locations and warehouses" -msgstr "" +msgstr "Beheer meerdere locaties en magazijnen" #. module: stock #: field:stock.config.settings,group_stock_production_lot:0 @@ -4212,7 +4212,7 @@ msgstr "Instellingen" #. module: stock #: model:res.groups,name:stock.group_locations msgid "Manage Multiple Locations and Warehouses" -msgstr "" +msgstr "Beheer meerdere locaties en magazijnen" #. module: stock #: help:stock.change.standard.price,new_price:0 @@ -4558,7 +4558,7 @@ msgstr "Gebruiker" #. module: stock #: field:stock.config.settings,module_stock_location:0 msgid "Create push/pull logistic rules" -msgstr "" +msgstr "Maak push/pull logistieke regels" #. module: stock #: code:addons/stock/wizard/stock_invoice_onshipping.py:98 diff --git a/addons/stock/i18n/sl.po b/addons/stock/i18n/sl.po index 96f286c27de..1ba30d7c9d3 100644 --- a/addons/stock/i18n/sl.po +++ b/addons/stock/i18n/sl.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: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-08 17:04+0000\n" +"PO-Revision-Date: 2012-12-10 00:30+0000\n" "Last-Translator: Dusan Laznik \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: 2012-12-09 04:38+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:36+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: stock @@ -23,7 +23,7 @@ msgstr "" #: field:stock.move.split,line_exist_ids:0 #: field:stock.move.split,line_ids:0 msgid "Serial Numbers" -msgstr "" +msgstr "Serijske številke" #. module: stock #: help:stock.config.settings,group_product_variant:0 @@ -31,7 +31,7 @@ msgid "" "Allow to manage several variants per product. As an example, if you sell T-" "Shirts, for the same \"Linux T-Shirt\", you may have variants on sizes or " "colors; S, M, L, XL, XXL." -msgstr "" +msgstr "Omogoča urejanje več variant za isti izdelek." #. module: stock #: model:ir.model,name:stock.model_stock_move_split_lines @@ -51,24 +51,24 @@ msgstr "" #. module: stock #: view:stock.picking.out:0 msgid "Confirm & Deliver" -msgstr "" +msgstr "Potrditev&Izdobava" #. module: stock #: model:ir.actions.act_window,name:stock.action_view_change_product_quantity #: view:stock.change.product.qty:0 msgid "Update Product Quantity" -msgstr "" +msgstr "Osveži količine" #. module: stock #: field:stock.location,chained_location_id:0 msgid "Chained Location If Fixed" -msgstr "" +msgstr "Povezana lokacija - stalna" #. module: stock #: view:stock.inventory:0 #: view:stock.move:0 msgid "Put in a new pack" -msgstr "" +msgstr "Daj v novi paket" #. module: stock #: code:addons/stock/wizard/stock_traceability.py:54 @@ -76,18 +76,18 @@ msgstr "" #: view:stock.tracking:0 #, python-format msgid "Upstream Traceability" -msgstr "" +msgstr "Sledenje-navzgor" #. module: stock #: code:addons/stock/stock.py:1448 #, python-format msgid "Products have been delivered." -msgstr "" +msgstr "Izdelki so bili izdobavljeni." #. module: stock #: field:product.product,track_outgoing:0 msgid "Track Outgoing Lots" -msgstr "" +msgstr "Sledenje pošiljk" #. module: stock #: model:ir.actions.act_window,name:stock.action_stock_line_date @@ -108,7 +108,7 @@ msgstr "Številka revizije" #. module: stock #: view:stock.move:0 msgid "Orders processed Today or planned for Today" -msgstr "" +msgstr "Naročila izvedena ali planirana za danes" #. module: stock #: view:stock.partial.move.line:0 @@ -124,12 +124,12 @@ msgstr "Premiki izdelka" #: code:addons/stock/stock.py:2650 #, python-format msgid "Please provide proper quantity." -msgstr "" +msgstr "Vnesite pravilno količino" #. module: stock #: model:ir.ui.menu,name:stock.menu_stock_inventory_control msgid "Inventory Control" -msgstr "" +msgstr "Upravljanje zalog" #. module: stock #: help:stock.production.lot,ref:0 @@ -156,7 +156,7 @@ msgstr "Količina ne sme biti negativna" #: view:stock.picking:0 #: view:stock.picking.in:0 msgid "Picking list" -msgstr "" +msgstr "Dobavnica" #. module: stock #: report:lot.stock.overview:0 @@ -197,7 +197,7 @@ msgstr "Inventura" #. module: stock #: selection:stock.location.product,type:0 msgid "Analyse a Period" -msgstr "" +msgstr "Analiza obdobja" #. module: stock #: field:product.category,property_stock_journal:0 @@ -210,30 +210,30 @@ msgstr "Dnevnik zaloge" #: code:addons/stock/stock.py:1449 #, python-format msgid "Products have been received." -msgstr "" +msgstr "Izdelki so prevzeti" #. module: stock #: view:report.stock.move:0 msgid "Incoming" -msgstr "" +msgstr "Naročeno" #. module: stock #: code:addons/stock/wizard/stock_move.py:223 #, python-format msgid "Unable to assign all lots to this move!" -msgstr "" +msgstr "Ni možno povezati vse pošiljke" #. module: stock #: help:stock.move,partner_id:0 msgid "" "Optional address where goods are to be delivered, specifically used for " "allotment" -msgstr "" +msgstr "Opcijski naslov za dostavo" #. module: stock #: model:ir.actions.server,name:stock.action_partial_move_server msgid "Deliver/Receive Products" -msgstr "" +msgstr "Izdaja/Prevzem blaga" #. module: stock #: code:addons/stock/report/report_stock.py:78 @@ -245,7 +245,7 @@ msgstr "Ne morete brisati podatkov" #. module: stock #: view:stock.picking:0 msgid "Delivery orders to invoice" -msgstr "" +msgstr "Dobavnice za fakturiranje" #. module: stock #: view:stock.picking:0 @@ -263,7 +263,7 @@ msgstr "" #: selection:stock.picking.in,invoice_state:0 #: selection:stock.picking.out,invoice_state:0 msgid "Not Applicable" -msgstr "" +msgstr "Brezpredmetno" #. module: stock #: help:stock.change.product.qty,message_unread:0 @@ -282,7 +282,7 @@ msgstr "Druga oznaka ali serijska številka" #: view:stock.move:0 #: view:stock.picking:0 msgid "Origin" -msgstr "" +msgstr "Izvor" #. module: stock #: view:board.board:0 @@ -301,7 +301,7 @@ msgstr "" #: view:stock.tracking:0 #, python-format msgid "Downstream Traceability" -msgstr "" +msgstr "Sledenje-navzdol" #. module: stock #: view:stock.move:0 @@ -322,7 +322,7 @@ msgstr "" #. module: stock #: view:stock.move:0 msgid "New Pack" -msgstr "" +msgstr "Novi paket" #. module: stock #: help:stock.fill.inventory,set_stock_zero:0 @@ -334,7 +334,7 @@ msgstr "" #. module: stock #: view:product.product:0 msgid "Forecasted:" -msgstr "" +msgstr "Napoved:" #. module: stock #: view:stock.partial.move:0 @@ -370,7 +370,7 @@ msgstr "" #: code:addons/stock/wizard/stock_return_picking.py:198 #, python-format msgid "Warning!" -msgstr "" +msgstr "Opozorilo!" #. module: stock #: field:stock.invoice.onshipping,group:0 @@ -405,7 +405,7 @@ msgstr "" #. module: stock #: selection:stock.return.picking,invoice_state:0 msgid "No invoicing" -msgstr "" +msgstr "Se ne zaračunava" #. module: stock #: view:stock.move:0 @@ -416,7 +416,7 @@ msgstr "" #: field:stock.inventory.line.split,use_exist:0 #: field:stock.move.split,use_exist:0 msgid "Existing Serial Numbers" -msgstr "" +msgstr "Obstoječe serijske številke" #. module: stock #: model:res.groups,name:stock.group_inventory_valuation @@ -457,7 +457,7 @@ msgstr "" #. module: stock #: view:stock.location:0 msgid "Accounting Information" -msgstr "" +msgstr "Računovodski podatki" #. module: stock #: field:stock.location,stock_real_value:0 @@ -500,7 +500,7 @@ msgstr "Razpoložljivo" #: view:stock.picking:0 #: view:stock.picking.in:0 msgid "Expected Date" -msgstr "" +msgstr "Predvideni datum" #. module: stock #: field:report.stock.move,product_qty_in:0 @@ -573,7 +573,7 @@ msgstr "Vrsta lokacije" #. module: stock #: view:stock.config.settings:0 msgid "Location & Warehouse" -msgstr "" +msgstr "Lokacija & Skladišče" #. module: stock #: code:addons/stock/stock.py:1848 @@ -662,7 +662,7 @@ msgstr "Notranji premiki" #. module: stock #: field:stock.move,location_dest_id:0 msgid "Destination Location" -msgstr "" +msgstr "Ciljna lokacija" #. module: stock #: model:ir.model,name:stock.model_stock_partial_move_line @@ -695,7 +695,7 @@ msgstr "" #. module: stock #: model:ir.ui.menu,name:stock.menu_stock_uom_categ_form_action msgid "Unit of Measure Categories" -msgstr "" +msgstr "Skupine enot mere" #. module: stock #: report:lot.stock.overview:0 @@ -720,7 +720,7 @@ msgstr "Dodatni podatki" #: report:lot.stock.overview:0 #: report:lot.stock.overview_all:0 msgid "Location / Product" -msgstr "" +msgstr "Lokacija/Izdelek" #. module: stock #: field:stock.move,partner_id:0 @@ -748,7 +748,7 @@ msgstr "" #: field:stock.location,complete_name:0 #: field:stock.location,name:0 msgid "Location Name" -msgstr "" +msgstr "Ime lokacije" #. module: stock #: view:stock.inventory:0 @@ -793,7 +793,7 @@ msgstr "Stranke" #: selection:report.stock.inventory,month:0 #: selection:report.stock.move,month:0 msgid "August" -msgstr "" +msgstr "Avgust" #. module: stock #: model:ir.actions.act_window,name:stock.action_tracking_form @@ -823,7 +823,7 @@ msgstr "" #: selection:report.stock.inventory,month:0 #: selection:report.stock.move,month:0 msgid "June" -msgstr "" +msgstr "Junij" #. module: stock #: help:product.product,track_incoming:0 @@ -850,7 +850,7 @@ msgstr "" #: model:ir.actions.act_window,name:stock.action_location_tree #: model:ir.ui.menu,name:stock.menu_action_location_tree msgid "Location Structure" -msgstr "" +msgstr "Struktura lokacij" #. module: stock #: field:stock.location,child_ids:0 @@ -895,14 +895,14 @@ msgstr "" #: sql_constraint:stock.picking.in:0 #: sql_constraint:stock.picking.out:0 msgid "Reference must be unique per Company!" -msgstr "" +msgstr "Referenca mora biti enoznačna" #. module: stock #: field:stock.picking,date:0 #: field:stock.picking.in,date:0 #: field:stock.picking.out,date:0 msgid "Time" -msgstr "" +msgstr "Čas" #. module: stock #: code:addons/stock/product.py:443 @@ -918,7 +918,7 @@ msgstr "Nujno" #. module: stock #: selection:stock.picking.out,state:0 msgid "Delivered" -msgstr "" +msgstr "Dostavljeno" #. module: stock #: field:stock.move,move_dest_id:0 @@ -935,7 +935,7 @@ msgstr "Naslov lokacije" #: view:stock.move:0 #: view:stock.move.scrap:0 msgid "Scrap Products" -msgstr "" +msgstr "Odpis izdelkov" #. module: stock #: view:product.product:0 @@ -945,7 +945,7 @@ msgstr "" #. module: stock #: report:stock.picking.list:0 msgid "Weight" -msgstr "" +msgstr "Teža" #. module: stock #: field:stock.warehouse,lot_input_id:0 @@ -1021,7 +1021,7 @@ msgstr "" #: model:ir.ui.menu,name:stock.menu_action_picking_tree4 #: view:stock.picking.in:0 msgid "Incoming Shipments" -msgstr "" +msgstr "Prihajajoče pošiljke" #. module: stock #: view:report.stock.inventory:0 @@ -1048,7 +1048,7 @@ msgstr "" #. module: stock #: view:stock.move:0 msgid "Details" -msgstr "" +msgstr "Podrobnosti" #. module: stock #: selection:stock.picking,state:0 @@ -1087,7 +1087,7 @@ msgstr "" #: view:stock.picking.in:0 #: report:stock.picking.list:0 msgid "Journal" -msgstr "" +msgstr "Dnevnik" #. module: stock #: code:addons/stock/stock.py:1409 @@ -1119,7 +1119,7 @@ msgstr "" #: view:stock.move:0 #: view:stock.picking:0 msgid "_Cancel" -msgstr "" +msgstr "_Prekliči" #. module: stock #: field:report.stock.move,day_diff:0 @@ -1144,7 +1144,7 @@ msgstr "" #. module: stock #: view:stock.production.lot:0 msgid "Product Lots" -msgstr "" +msgstr "Izdelek -Sklopi" #. module: stock #: view:stock.picking:0 @@ -1202,17 +1202,17 @@ msgstr "" #. module: stock #: view:stock.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Uporabi" #. module: stock #: field:product.template,loc_row:0 msgid "Row" -msgstr "" +msgstr "Vrsta" #. module: stock #: field:product.template,property_stock_production:0 msgid "Production Location" -msgstr "" +msgstr "Lokacija proizvodnje" #. module: stock #: code:addons/stock/product.py:121 @@ -1300,7 +1300,7 @@ msgstr "" #: view:stock.move:0 #: view:stock.picking.in:0 msgid "Supplier" -msgstr "" +msgstr "Dobavitelj" #. module: stock #: code:addons/stock/stock.py:2929 @@ -1334,7 +1334,7 @@ msgstr "" #: selection:report.stock.inventory,month:0 #: selection:report.stock.move,month:0 msgid "March" -msgstr "" +msgstr "Marec" #. module: stock #: model:ir.actions.act_window,name:stock.action_view_stock_inventory_line_split @@ -1383,13 +1383,13 @@ msgstr "Partnerjeve lokacije" #. module: stock #: selection:stock.picking.in,state:0 msgid "Received" -msgstr "" +msgstr "Prejeto" #. module: stock #: view:report.stock.inventory:0 #: view:report.stock.move:0 msgid "Total quantity" -msgstr "" +msgstr "Skupna količina" #. module: stock #: field:stock.picking,min_date:0 @@ -1407,7 +1407,7 @@ msgstr "" #. module: stock #: report:stock.picking.list:0 msgid "Delivery Order :" -msgstr "" +msgstr "Dobavnica:" #. module: stock #: help:stock.location,chained_delay:0 @@ -1523,7 +1523,7 @@ msgstr "" #: view:stock.move:0 #: view:stock.picking:0 msgid "Ready" -msgstr "" +msgstr "Pripravljeno" #. module: stock #: view:stock.picking:0 @@ -1547,7 +1547,7 @@ msgstr "Dodatne informacije" #: field:stock.partial.picking.line,move_id:0 #: field:stock.return.picking.memory,move_id:0 msgid "Move" -msgstr "" +msgstr "Premik" #. module: stock #: field:stock.location.product,from_date:0 diff --git a/addons/stock/i18n/zh_CN.po b/addons/stock/i18n/zh_CN.po index 61ebaf9d16b..d033265ab80 100644 --- a/addons/stock/i18n/zh_CN.po +++ b/addons/stock/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-11-29 06:23+0000\n" -"Last-Translator: mrshelly \n" +"PO-Revision-Date: 2012-12-09 05:05+0000\n" +"Last-Translator: sum1201 \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: 2012-12-04 05:08+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: stock #: field:stock.inventory.line.split,line_exist_ids:0 @@ -674,7 +674,7 @@ msgstr "目标库位" #. module: stock #: model:ir.model,name:stock.model_stock_partial_move_line msgid "stock.partial.move.line" -msgstr "" +msgstr "stock.partial.move.line" #. module: stock #: model:ir.ui.menu,name:stock.menu_product_packaging_stock_action @@ -702,7 +702,7 @@ msgstr "单据(源)" #. module: stock #: model:ir.ui.menu,name:stock.menu_stock_uom_categ_form_action msgid "Unit of Measure Categories" -msgstr "" +msgstr "计量单位类别" #. module: stock #: report:lot.stock.overview:0 @@ -749,7 +749,7 @@ msgstr "附加的相关单号" #. module: stock #: view:stock.partial.picking.line:0 msgid "Stock Picking Line" -msgstr "" +msgstr "库存挑拣行" #. module: stock #: field:stock.location,complete_name:0 @@ -813,18 +813,18 @@ msgstr "包装" #. module: stock #: view:stock.move:0 msgid "Stock moves that are Available (Ready to process)" -msgstr "" +msgstr "库存调拨可用(已准备好)" #. module: stock #: selection:stock.location.product,type:0 msgid "Analyse Current Inventory" -msgstr "" +msgstr "分析当前库存" #. module: stock #: code:addons/stock/stock.py:1202 #, python-format msgid "You cannot remove the picking which is in %s state!" -msgstr "" +msgstr "不能删除 %s 状态的装箱单!" #. module: stock #: selection:report.stock.inventory,month:0 @@ -890,7 +890,7 @@ msgstr "" #: field:stock.picking.in,message_summary:0 #: field:stock.picking.out,message_summary:0 msgid "Summary" -msgstr "" +msgstr "总计" #. module: stock #: view:product.category:0 @@ -909,7 +909,7 @@ msgstr "必须在公司内唯一!" #: field:stock.picking.in,date:0 #: field:stock.picking.out,date:0 msgid "Time" -msgstr "" +msgstr "时间" #. module: stock #: code:addons/stock/product.py:443 @@ -925,7 +925,7 @@ msgstr "紧急" #. module: stock #: selection:stock.picking.out,state:0 msgid "Delivered" -msgstr "" +msgstr "已送货" #. module: stock #: field:stock.move,move_dest_id:0 diff --git a/addons/warning/i18n/id.po b/addons/warning/i18n/id.po index 485e5a68d64..6ab775b81b9 100644 --- a/addons/warning/i18n/id.po +++ b/addons/warning/i18n/id.po @@ -7,25 +7,25 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2009-11-09 13:58+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2012-12-09 08:35+0000\n" +"Last-Translator: Budhi Hartono \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: 2012-12-04 05:43+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: warning #: model:ir.model,name:warning.model_purchase_order_line #: field:product.product,purchase_line_warn:0 msgid "Purchase Order Line" -msgstr "" +msgstr "Daftar Order Pembelian" #. module: warning #: model:ir.model,name:warning.model_stock_picking_in msgid "Incoming Shipments" -msgstr "" +msgstr "Pengiriman barang masuk" #. module: warning #: field:product.product,sale_line_warn_msg:0 @@ -40,7 +40,7 @@ msgstr "" #. module: warning #: model:ir.model,name:warning.model_stock_picking msgid "Picking List" -msgstr "" +msgstr "Daftar pengambilan" #. module: warning #: field:product.product,sale_line_warn:0 @@ -55,13 +55,13 @@ msgstr "" #. module: warning #: model:ir.model,name:warning.model_product_product msgid "Product" -msgstr "" +msgstr "Produk" #. module: warning #: view:product.product:0 #: view:res.partner:0 msgid "Warnings" -msgstr "" +msgstr "Peringatan" #. module: warning #: selection:product.product,purchase_line_warn:0 @@ -214,9 +214,9 @@ msgstr "" #. module: warning #: model:ir.model,name:warning.model_stock_picking_out msgid "Delivery Orders" -msgstr "" +msgstr "Order Pengiriman" #. module: warning #: model:ir.model,name:warning.model_sale_order_line msgid "Sales Order Line" -msgstr "" +msgstr "Daftar order penjualan" diff --git a/addons/web/i18n/hr.po b/addons/web/i18n/hr.po index ffeb92a4850..1446216b5c7 100644 --- a/addons/web/i18n/hr.po +++ b/addons/web/i18n/hr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-12-06 17:55+0000\n" +"PO-Revision-Date: 2012-12-09 18:47+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-07 04:47+0000\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" "X-Generator: Launchpad (build 16341)\n" #. module: web @@ -59,7 +59,7 @@ msgstr "manje ili jednako od" #: code:addons/web/static/src/js/chrome.js:393 #, python-format msgid "Please enter your previous password" -msgstr "" +msgstr "Upišite trenutno važeću lozinku" #. module: web #. openerp-web @@ -82,7 +82,7 @@ msgstr "Promijeni glavnu lozinku" #: code:addons/web/static/src/js/chrome.js:491 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "" +msgstr "Zaista želite obrisati bazu podataka: %s ?" #. module: web #. openerp-web @@ -96,7 +96,7 @@ msgstr "Traži %(field)s at: %(value)s" #: code:addons/web/static/src/js/chrome.js:537 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Pristup odbijen / zabranjen" #. module: web #. openerp-web @@ -120,7 +120,7 @@ msgstr "Backup baze podataka" #: code:addons/web/static/src/js/dates.js:53 #, python-format msgid "'%s' is not a valid date" -msgstr "" +msgstr "'%s' nije ispravan datum" #. module: web #. openerp-web @@ -147,7 +147,7 @@ msgstr "Datoteka" #: code:addons/web/controllers/main.py:842 #, python-format msgid "You cannot leave any password empty." -msgstr "" +msgstr "Popunite sva polja." #. module: web #. openerp-web @@ -207,7 +207,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:1242 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "" +msgstr "Widget tipa '%s' nije implementiran" #. module: web #. openerp-web @@ -236,7 +236,7 @@ msgstr "(prazno)" #: code:addons/web/static/src/js/formats.js:282 #, python-format msgid "'%s' is not a correct time" -msgstr "" +msgstr "'%s' nije ispravno vrijeme" #. module: web #. openerp-web @@ -271,7 +271,7 @@ msgstr "Nedefiniran" #: code:addons/web/static/src/js/view_form.js:4831 #, python-format msgid "File Upload" -msgstr "" +msgstr "Slanje datoteke" #. module: web #. openerp-web @@ -335,7 +335,7 @@ msgstr "Promijeni lozinku" #: code:addons/web/static/src/js/view_form.js:3382 #, python-format msgid "View type '%s' is not supported in One2Many." -msgstr "" +msgstr "Pogled tipa '%s' nije podržan za JedanNaViše (One2Many) polja." #. module: web #. openerp-web @@ -350,7 +350,7 @@ msgstr "Preuzimanje" #: code:addons/web/static/src/js/formats.js:266 #, python-format msgid "'%s' is not a correct datetime" -msgstr "" +msgstr "'%s' nije ispravno vrijeme" #. module: web #. openerp-web @@ -378,13 +378,13 @@ msgstr "Odabir:" #: code:addons/web/static/src/js/view_form.js:869 #, python-format msgid "The following fields are invalid:" -msgstr "" +msgstr "Popis neispravnih polja:" #. module: web #: code:addons/web/controllers/main.py:863 #, python-format msgid "Languages" -msgstr "" +msgstr "Jezici" #. module: web #. openerp-web @@ -405,7 +405,7 @@ msgstr "Uvoz" #: code:addons/web/static/src/js/chrome.js:543 #, python-format msgid "Could not restore the database" -msgstr "" +msgstr "Oporavak baze podataka nije uspješno dovršen" #. module: web #. openerp-web @@ -518,7 +518,7 @@ msgstr "Operator %s nije podržan unutar domene %s" #: code:addons/web/static/src/js/formats.js:242 #, python-format msgid "'%s' is not a correct float" -msgstr "" +msgstr "'%s' nije ispravna decimalna vrijednost" #. module: web #. openerp-web @@ -532,7 +532,7 @@ msgstr "Oporavljeno" #: code:addons/web/static/src/js/view_list.js:392 #, python-format msgid "%d-%d of %d" -msgstr "" +msgstr "%d-%d od %d" #. module: web #. openerp-web @@ -546,14 +546,14 @@ msgstr "Kreiraj i uredi" #: code:addons/web/static/src/js/pyeval.js:731 #, python-format msgid "Unknown nonliteral type " -msgstr "" +msgstr "Nepoznat tip podatka " #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2345 #, python-format msgid "Resource error" -msgstr "" +msgstr "Greška resursa" #. module: web #. openerp-web @@ -574,7 +574,7 @@ msgstr "Ispiši tijek rada" #: code:addons/web/static/src/js/chrome.js:396 #, python-format msgid "Please confirm your new password" -msgstr "" +msgstr "Potvrdite Vašu novu zaporku" #. module: web #. openerp-web @@ -623,7 +623,7 @@ msgstr "Polja %s modela" #: code:addons/web/static/src/js/view_list.js:890 #, python-format msgid "Setting 'id' attribute on existing record %s" -msgstr "" +msgstr "Postavljanje 'id' atributa na postojećem zapisu %s" #. module: web #. openerp-web @@ -668,13 +668,15 @@ msgstr "Action ID:" #, python-format msgid "Your user's preference timezone does not match your browser timezone:" msgstr "" +"Pojasno vrijeme u Vašim korisničkim podacima ne odgovara pojasnom vremenu " +"zadanom u Vašem Internet pretraživaču" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1238 #, python-format msgid "Field '%s' specified in view could not be found." -msgstr "" +msgstr "Ne postoji polje '%s', a navedeno je u definiciji pogleda." #. module: web #. openerp-web @@ -702,7 +704,7 @@ msgstr "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" #: code:addons/web/static/src/js/chrome.js:481 #, python-format msgid "The database has been duplicated." -msgstr "" +msgstr "Baza podataka je duplicirana." #. module: web #. openerp-web @@ -731,7 +733,7 @@ msgstr "Spremi kao" #: code:addons/web/static/src/js/view_form.js:2316 #, python-format msgid "E-mail error" -msgstr "" +msgstr "E-mail greška" #. module: web #. openerp-web @@ -793,7 +795,7 @@ msgstr "Graničnik:" #: code:addons/web/static/src/xml/base.xml:458 #, python-format msgid "Browser's timezone" -msgstr "" +msgstr "Pojasno vrijeme internet preglednika" #. module: web #. openerp-web @@ -838,7 +840,7 @@ msgstr "OpenERP.com" #: code:addons/web/static/src/js/view_form.js:2316 #, python-format msgid "Can't send email to invalid e-mail address" -msgstr "" +msgstr "Nije moguće poslati email na neispravne e-mail adrese" #. module: web #. openerp-web @@ -859,7 +861,7 @@ msgstr "Postavke" #: code:addons/web/static/src/js/view_form.js:434 #, python-format msgid "Wrong on change format: %s" -msgstr "" +msgstr "Greška u promjeni formata: %s" #. module: web #. openerp-web @@ -874,7 +876,7 @@ msgstr "Obriši bazu podataka" #: code:addons/web/static/src/xml/base.xml:462 #, python-format msgid "Click here to change your user's timezone." -msgstr "" +msgstr "Kliknite ovdje za promjenu korisničkog pojasnog vremena" #. module: web #. openerp-web @@ -920,21 +922,21 @@ msgstr "Korisničko ime" #: code:addons/web/static/src/js/chrome.js:481 #, python-format msgid "Duplicating database" -msgstr "" +msgstr "Dupliciram bazu podataka" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:563 #, python-format msgid "Password has been changed successfully" -msgstr "" +msgstr "Lozinka uspješno promjenjena" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list_editable.js:781 #, python-format msgid "The form's data can not be discarded" -msgstr "" +msgstr "Podaci (form's data) se ne mogu odbaciti" #. module: web #. openerp-web @@ -969,6 +971,10 @@ msgid "" "\n" "%s" msgstr "" +"Greška lokalne evaluacije\n" +"%s\n" +"\n" +"%s" #. module: web #. openerp-web @@ -1003,7 +1009,7 @@ msgstr "Kreirano:" #: code:addons/web/controllers/main.py:851 #, python-format msgid "Error, password not changed !" -msgstr "" +msgstr "Greška, lozika nije promjenjena!" #. module: web #. openerp-web @@ -1025,7 +1031,7 @@ msgstr "/web/binary/upload_attachment" #: code:addons/web/static/src/js/chrome.js:563 #, python-format msgid "Changed Password" -msgstr "" +msgstr "Promjenjena lozinka" #. module: web #. openerp-web @@ -1059,14 +1065,14 @@ msgstr "Arhiviranje/Backup" #: code:addons/web/static/src/js/dates.js:80 #, python-format msgid "'%s' is not a valid time" -msgstr "" +msgstr "'%s' nije ispravno vrijeme" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:274 #, python-format msgid "'%s' is not a correct date" -msgstr "" +msgstr "'%s' nije ispravan datum" #. module: web #. openerp-web @@ -1120,7 +1126,7 @@ msgstr "Zadnju promjenu napravio:" #: code:addons/web/static/src/xml/base.xml:466 #, python-format msgid "Timezone mismatch" -msgstr "" +msgstr "Neslaganje vremenskih pojasa" #. module: web #. openerp-web @@ -1189,7 +1195,7 @@ msgstr "Dodaj napredni filter" #: code:addons/web/controllers/main.py:844 #, python-format msgid "The new password and its confirmation must be identical." -msgstr "" +msgstr "Nova lozinka i potvrda lozinke moraju biti identične." #. module: web #. openerp-web @@ -1204,7 +1210,7 @@ msgstr "Povrati bazu podataka" #: code:addons/web/static/src/js/chrome.js:645 #, python-format msgid "Login" -msgstr "" +msgstr "Prijava" #. module: web #. openerp-web @@ -1247,7 +1253,7 @@ msgstr "Grupiraj po: %s" #: code:addons/web/static/src/js/view_form.js:151 #, python-format msgid "No data provided." -msgstr "" +msgstr "Nema podataka." #. module: web #. openerp-web @@ -1290,7 +1296,7 @@ msgstr "Neispravna pretraga" #: code:addons/web/static/src/js/view_list.js:959 #, python-format msgid "Could not find id in dataset" -msgstr "" +msgstr "Id nije pronađen u podacima" #. module: web #. openerp-web @@ -1318,7 +1324,7 @@ msgstr "%(page)d/%(page_count)d" #: code:addons/web/static/src/js/chrome.js:397 #, python-format msgid "The confirmation does not match the password" -msgstr "" +msgstr "Nova lozinka i potvrda su različite" #. module: web #. openerp-web @@ -1357,7 +1363,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:393 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web #. openerp-web @@ -1371,7 +1377,7 @@ msgstr "1. Uvezi .CSV datoteku" #: code:addons/web/static/src/js/chrome.js:645 #, python-format msgid "No database selected !" -msgstr "" +msgstr "Nije odabrana baza podataka" #. module: web #. openerp-web @@ -1409,7 +1415,7 @@ msgstr "je jednako" #: code:addons/web/static/src/js/views.js:1455 #, python-format msgid "Could not serialize XML" -msgstr "" +msgstr "Could not serialize XML" #. module: web #. openerp-web @@ -1513,14 +1519,14 @@ msgstr "Stablo" #: code:addons/web/controllers/main.py:766 #, python-format msgid "Could not drop database !" -msgstr "" +msgstr "Brisanje baze podataka nije uspjelo!" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:227 #, python-format msgid "'%s' is not a correct integer" -msgstr "" +msgstr "'%s' nije ispravna cjelobrojna vrijednost" #. module: web #. openerp-web @@ -1541,7 +1547,7 @@ msgstr "Nepoznato polje %s unutar domene %s" #: code:addons/web/static/src/js/views.js:1421 #, python-format msgid "Node [%s] is not a JSONified XML node" -msgstr "" +msgstr "Node [%s] nije JSONified XML node" #. module: web #. openerp-web @@ -1555,7 +1561,7 @@ msgstr "Napredno pretraživanje" #: code:addons/web/static/src/js/chrome.js:499 #, python-format msgid "Dropping database" -msgstr "" +msgstr "Brisanje baze podataka" #. module: web #. openerp-web @@ -1578,7 +1584,7 @@ msgstr "Da" #: code:addons/web/static/src/js/view_form.js:4831 #, python-format msgid "There was a problem while uploading your file" -msgstr "" +msgstr "Pojavio se problem kod učitavanja vaše datoteke" #. module: web #. openerp-web @@ -1620,7 +1626,7 @@ msgstr "%d godina prije" #: code:addons/web/static/src/js/view_list.js:1019 #, python-format msgid "Unknown m2m command %s" -msgstr "" +msgstr "Napoznata m2m naredba %s" #. module: web #. openerp-web @@ -1643,14 +1649,14 @@ msgstr "Naziv nove baze podataka:" #: code:addons/web/static/src/js/chrome.js:394 #, python-format msgid "Please enter your new password" -msgstr "" +msgstr "Molim, unesite novu lozinku" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1463 #, python-format msgid "Could not parse string to xml" -msgstr "" +msgstr "Could not parse string to xml" #. module: web #. openerp-web @@ -1699,7 +1705,7 @@ msgstr "Copyright © 2004-TODAY OpenERP SA. Sva prava pridržana." #: code:addons/web/static/src/js/view_form.js:2345 #, python-format msgid "This resource is empty" -msgstr "" +msgstr "Ovaj resurs je prazan" #. module: web #. openerp-web @@ -1757,7 +1763,7 @@ msgstr "Polja pogleda" #: code:addons/web/static/src/xml/base.xml:330 #, python-format msgid "Confirm New Password:" -msgstr "" +msgstr "Potvrda nove zaporke:" #. module: web #. openerp-web @@ -1908,7 +1914,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:319 #, python-format msgid "The record could not be found in the database." -msgstr "" +msgstr "Zapis nije pronađen u bazi podataka." #. module: web #. openerp-web @@ -1929,7 +1935,7 @@ msgstr "Tip:" #: code:addons/web/static/src/js/chrome.js:538 #, python-format msgid "Incorrect super-administrator password" -msgstr "" +msgstr "Neispravna lozinka super-administratora" #. module: web #. openerp-web @@ -1971,6 +1977,8 @@ msgid "" "The type of the field '%s' must be a many2many field with a relation to " "'ir.attachment' model." msgstr "" +"Tip polja '%s' mora biti VišeNaViše (many2many) polje u relaciji sa " +"'ir.attachment' (privici) modelom." #. module: web #. openerp-web @@ -2035,14 +2043,14 @@ msgstr "Učitaj demonstracijske podatke:" #: code:addons/web/static/src/js/dates.js:26 #, python-format msgid "'%s' is not a valid datetime" -msgstr "" +msgstr "'%s' nije ispravno vrijeme" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1471 #, python-format msgid "Could not find a DOM Parser: %s" -msgstr "" +msgstr "Could not find a DOM Parser: %s" #. module: web #. openerp-web @@ -2122,14 +2130,14 @@ msgstr "Preuzimanje \"%s\"" #: code:addons/web/static/src/js/view_form.js:324 #, python-format msgid "New" -msgstr "" +msgstr "Nova(i)" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1746 #, python-format msgid "Can't convert value %s to context" -msgstr "" +msgstr "Vrijednost %s ne odgovara za context" #. module: web #. openerp-web @@ -2202,13 +2210,13 @@ msgstr "O OpenERP-u" #: code:addons/web/static/src/js/formats.js:297 #, python-format msgid "'%s' is not a correct date, datetime nor time" -msgstr "" +msgstr "'%s' nije ispravno vrijeme ili datum" #. module: web #: code:addons/web/controllers/main.py:1306 #, python-format msgid "No content found for field '%s' on '%s:%s'" -msgstr "" +msgstr "Nedostaje kontekst za polje '%s' na '%s:%s'" #. module: web #. openerp-web @@ -2236,7 +2244,7 @@ msgstr "Upravljanje bazama podataka" #: code:addons/web/static/src/js/pyeval.js:765 #, python-format msgid "Evaluation Error" -msgstr "" +msgstr "Greška evaluacije" #. module: web #. openerp-web @@ -2269,7 +2277,7 @@ msgstr "Ne" #: code:addons/web/static/src/js/formats.js:309 #, python-format msgid "'%s' is not convertible to date, datetime nor time" -msgstr "" +msgstr "Interpretacija '%s' ne reultira datumom ili vremenom" #. module: web #. openerp-web @@ -2344,7 +2352,7 @@ msgstr "Polje je prazno. Ništa za snimanje !" #: code:addons/web/static/src/js/view_list.js:1327 #, python-format msgid "%s (%d)" -msgstr "" +msgstr "%s (%d)" #. module: web #. openerp-web @@ -2407,7 +2415,7 @@ msgstr "Obrisati privitak?" #: code:addons/web/static/src/js/views.js:838 #, python-format msgid "Technical Translation" -msgstr "" +msgstr "tehnički prijevod" #. module: web #. openerp-web @@ -2421,14 +2429,14 @@ msgstr "Polje:" #: code:addons/web/static/src/js/chrome.js:499 #, python-format msgid "The database %s has been dropped" -msgstr "" +msgstr "Baza podataka %s je obrisana" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:456 #, python-format msgid "User's timezone" -msgstr "" +msgstr "Korisnikov vremenski pojas" #. module: web #. openerp-web @@ -2457,7 +2465,7 @@ msgstr "Posebno:" #, python-format msgid "" "The old password you provided is incorrect, your password was not changed." -msgstr "" +msgstr "Trenutna lozinka nije točno upisana. Lozinka nije promijenjena." #. module: web #. openerp-web diff --git a/addons/web/i18n/pl.po b/addons/web/i18n/pl.po index 7015784bda8..5f5e26e60f7 100644 --- a/addons/web/i18n/pl.po +++ b/addons/web/i18n/pl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-02-07 20:51+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2012-12-09 20:29+0000\n" +"Last-Translator: Rafał Perczyński \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-01 05:20+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web #. openerp-web @@ -29,14 +29,14 @@ msgstr "Domyślny język:" #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "%d minutes ago" -msgstr "" +msgstr "%d minut temu" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:621 #, python-format msgid "Still loading...
    Please be patient." -msgstr "" +msgstr "Trwa ładowanie...
    Bądź cierpliwy." #. module: web #. openerp-web @@ -59,7 +59,7 @@ msgstr "równe lub mniejsze niż" #: code:addons/web/static/src/js/chrome.js:393 #, python-format msgid "Please enter your previous password" -msgstr "" +msgstr "Wpisz twoje poprzednie hasło" #. module: web #. openerp-web @@ -68,21 +68,21 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:282 #, python-format msgid "Master password:" -msgstr "Hasło madrzędne:" +msgstr "Hasło nadrzędne" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:274 #, python-format msgid "Change Master Password" -msgstr "" +msgstr "Zmień Hasło Główne" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:491 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "" +msgstr "Jesteś pewny że chcesz usunąć bazę danych: %s ?" #. module: web #. openerp-web @@ -96,14 +96,14 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:537 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Odmowa dostępu" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:594 #, python-format msgid "about an hour ago" -msgstr "" +msgstr "około godziny temu" #. module: web #. openerp-web @@ -112,7 +112,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:216 #, python-format msgid "Backup Database" -msgstr "" +msgstr "Kopia zapasowa bazy danych" #. module: web #. openerp-web @@ -120,7 +120,7 @@ msgstr "" #: code:addons/web/static/src/js/dates.js:53 #, python-format msgid "'%s' is not a valid date" -msgstr "" +msgstr "'%s' nie jest poprawną datą" #. module: web #. openerp-web @@ -134,20 +134,20 @@ msgstr "Oto podgląd pliku, którego nie można zaimportować:" #: code:addons/web/static/src/js/coresetup.js:592 #, python-format msgid "about a minute ago" -msgstr "" +msgstr "około minuty temu" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1272 #, python-format msgid "File" -msgstr "" +msgstr "Plik" #. module: web #: code:addons/web/controllers/main.py:842 #, python-format msgid "You cannot leave any password empty." -msgstr "" +msgstr "hasło nie może być puste" #. module: web #. openerp-web @@ -235,7 +235,7 @@ msgstr "" #: code:addons/web/static/src/js/formats.js:282 #, python-format msgid "'%s' is not a correct time" -msgstr "" +msgstr "'%s' nie jest poprawnym czasem" #. module: web #. openerp-web @@ -270,21 +270,21 @@ msgstr "Niezdefiniowany" #: code:addons/web/static/src/js/view_form.js:4831 #, python-format msgid "File Upload" -msgstr "" +msgstr "Wyślij plik" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:598 #, python-format msgid "about a month ago" -msgstr "" +msgstr "około miesiąca temu" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1575 #, python-format msgid "Custom Filters" -msgstr "" +msgstr "Własne filtry" #. module: web #. openerp-web @@ -305,14 +305,14 @@ msgstr "" #: code:addons/web/static/src/js/search.js:1555 #, python-format msgid "Custom Filter" -msgstr "" +msgstr "Własny filtr" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:159 #, python-format msgid "Duplicate Database" -msgstr "" +msgstr "Duplikuj bazę danych" #. module: web #. openerp-web @@ -349,14 +349,14 @@ msgstr "Pobierz" #: code:addons/web/static/src/js/formats.js:266 #, python-format msgid "'%s' is not a correct datetime" -msgstr "" +msgstr "'%s' nie jest poprawną datą" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:415 #, python-format msgid "Group" -msgstr "" +msgstr "Grupa" #. module: web #. openerp-web @@ -383,7 +383,7 @@ msgstr "" #: code:addons/web/controllers/main.py:863 #, python-format msgid "Languages" -msgstr "" +msgstr "Języki" #. module: web #. openerp-web @@ -411,7 +411,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:4811 #, python-format msgid "File upload" -msgstr "" +msgstr "Wysyłanie pliku" #. module: web #. openerp-web diff --git a/addons/web/i18n/ro.po b/addons/web/i18n/ro.po index 4875d1c117e..5c971ac3e04 100644 --- a/addons/web/i18n/ro.po +++ b/addons/web/i18n/ro.po @@ -8,28 +8,28 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-03-15 08:11+0000\n" -"Last-Translator: angelescu \n" +"PO-Revision-Date: 2012-12-09 17:26+0000\n" +"Last-Translator: Fekete Mihai \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-01 05:20+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:133 #, python-format msgid "Default language:" -msgstr "Limba implicita:" +msgstr "Limba implicită:" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "%d minutes ago" -msgstr "" +msgstr "acum %d minute" #. module: web #. openerp-web diff --git a/addons/web_calendar/i18n/hr.po b/addons/web_calendar/i18n/hr.po index d50da7b88be..b3964237249 100644 --- a/addons/web_calendar/i18n/hr.po +++ b/addons/web_calendar/i18n/hr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-11-24 18:16+0000\n" +"PO-Revision-Date: 2012-12-09 18:06+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-01 05:21+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web_calendar #. openerp-web @@ -43,7 +43,7 @@ msgstr "Snimi" #: code:addons/web_calendar/static/src/js/calendar.js:99 #, python-format msgid "Calendar view has a 'date_delay' type != float" -msgstr "" +msgstr "U pogledu tipa kalendar polje 'date_delay' tip != float" #. module: web_calendar #. openerp-web @@ -215,6 +215,7 @@ msgstr "Kalendar" #, python-format msgid "Calendar view has not defined 'date_start' attribute." msgstr "" +"U pogledu tipa kalendar obavezno je polje 'date_start' - početno vrijeme." #~ msgid "Navigator" #~ msgstr "Navigator" diff --git a/addons/web_diagram/i18n/it.po b/addons/web_diagram/i18n/it.po index f08383bdeb5..4ba3419fa05 100644 --- a/addons/web_diagram/i18n/it.po +++ b/addons/web_diagram/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 01:23+0000\n" -"PO-Revision-Date: 2012-02-16 21:55+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-09 22:40+0000\n" +"Last-Translator: Sergio Corato \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: 2012-11-25 06:41+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web_diagram #. openerp-web @@ -35,6 +35,10 @@ msgid "" "\n" "Are you sure ?" msgstr "" +"La cancellazione di questo nodo è irreversibile. \n" +"Saranno cancellate anche tutte le transizioni ad esso correlate.\n" +"\n" +"Sei sicuro ?" #. module: web_diagram #. openerp-web @@ -71,7 +75,7 @@ msgstr "Attività" #: code:addons/web_diagram/static/src/js/diagram.js:422 #, python-format msgid "%d / %d" -msgstr "" +msgstr "%d / %d" #. module: web_diagram #. openerp-web @@ -86,7 +90,7 @@ msgstr "Crea:" #: code:addons/web_diagram/static/src/js/diagram.js:187 #, python-format msgid "Are you sure?" -msgstr "" +msgstr "Sei sicuro?" #. module: web_diagram #. openerp-web @@ -97,3 +101,6 @@ msgid "" "\n" "Are you sure ?" msgstr "" +"La cancellazione di questa transizione è irreversibile.\n" +"\n" +"Sei sicuro?" diff --git a/addons/web_graph/i18n/it.po b/addons/web_graph/i18n/it.po index 3217b790c41..77a0fb7d83e 100644 --- a/addons/web_graph/i18n/it.po +++ b/addons/web_graph/i18n/it.po @@ -8,28 +8,28 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-02-16 21:56+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-09 23:09+0000\n" +"Last-Translator: Sergio Corato \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: 2012-12-01 05:21+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:12 #, python-format msgid "Bars" -msgstr "" +msgstr "Barre" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:33 #, python-format msgid "Show Data" -msgstr "" +msgstr "Visualizza Dati" #. module: web_graph #. openerp-web @@ -43,95 +43,95 @@ msgstr "Grafico" #: code:addons/web_graph/static/src/xml/web_graph.xml:25 #, python-format msgid "Inside" -msgstr "" +msgstr "Interno" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:3 #, python-format msgid "í" -msgstr "" +msgstr "í" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:11 #, python-format msgid "Pie" -msgstr "" +msgstr "Torta" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:28 #, python-format msgid "Actions" -msgstr "" +msgstr "Azioni" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:7 #, python-format msgid "Graph Mode" -msgstr "" +msgstr "Modalità Grafico" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:18 #, python-format msgid "Radar" -msgstr "" +msgstr "Rete" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:34 #, python-format msgid "Download as PNG" -msgstr "" +msgstr "Download come PNG" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:26 #, python-format msgid "Top" -msgstr "" +msgstr "In alto" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:24 #, python-format msgid "Hidden" -msgstr "" +msgstr "Nascosto" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:3 #, python-format msgid "Graph Options" -msgstr "" +msgstr "Opzioni Grafico" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:14 #, python-format msgid "Lines" -msgstr "" +msgstr "Righe" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:20 #, python-format msgid "Legend" -msgstr "" +msgstr "Legenda" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:32 #, python-format msgid "Switch Axis" -msgstr "" +msgstr "Inverti Asse" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:15 #, python-format msgid "Areas" -msgstr "" +msgstr "Aree" diff --git a/addons/web_kanban/i18n/hr.po b/addons/web_kanban/i18n/hr.po index 5087e4db8c7..8d800e989b0 100644 --- a/addons/web_kanban/i18n/hr.po +++ b/addons/web_kanban/i18n/hr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-11-24 18:09+0000\n" +"PO-Revision-Date: 2012-12-09 17:58+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-01 05:21+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web_kanban #. openerp-web @@ -29,7 +29,7 @@ msgstr "Uredi stupac" #: code:addons/web_kanban/static/src/js/kanban.js:413 #, python-format msgid "An error has occured while moving the record to this group." -msgstr "" +msgstr "Greška kod promjene grupe" #. module: web_kanban #. openerp-web @@ -150,7 +150,7 @@ msgstr "ili" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:51 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/it.po b/addons/web_kanban/i18n/it.po index baa19225b27..5ec66ff2641 100644 --- a/addons/web_kanban/i18n/it.po +++ b/addons/web_kanban/i18n/it.po @@ -8,21 +8,21 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-02-16 21:57+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-09 22:52+0000\n" +"Last-Translator: Sergio Corato \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: 2012-12-01 05:21+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:698 #, python-format msgid "Edit column" -msgstr "" +msgstr "Modifica colonna" #. module: web_kanban #. openerp-web @@ -30,6 +30,7 @@ msgstr "" #, python-format msgid "An error has occured while moving the record to this group." msgstr "" +"E' avvenuto un errore durante lo spostamento del record a questo gruppo." #. module: web_kanban #. openerp-web @@ -50,35 +51,35 @@ msgstr "Non definito" #: code:addons/web_kanban/static/src/js/kanban.js:717 #, python-format msgid "Are you sure to remove this column ?" -msgstr "" +msgstr "Sei sicuro di rimuovere questa colonna ?" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:42 #, python-format msgid "Edit" -msgstr "" +msgstr "Modifica" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:188 #, python-format msgid "Add column" -msgstr "" +msgstr "Aggiungi colonna" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:1093 #, python-format msgid "Create: " -msgstr "" +msgstr "Crea: " #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:24 #, python-format msgid "Add a new column" -msgstr "" +msgstr "Aggiungi una nuova colonna" #. module: web_kanban #. openerp-web @@ -86,21 +87,21 @@ msgstr "" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:40 #, python-format msgid "Fold" -msgstr "" +msgstr "Arrotola" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:90 #, python-format msgid "Add" -msgstr "" +msgstr "Aggiungi" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:35 #, python-format msgid "Quick create" -msgstr "" +msgstr "Creazione rapida" #. module: web_kanban #. openerp-web @@ -114,7 +115,7 @@ msgstr "Sicuro di voler eliminare questo record?" #: code:addons/web_kanban/static/src/js/kanban.js:688 #, python-format msgid "Unfold" -msgstr "" +msgstr "Allarga" #. module: web_kanban #. openerp-web @@ -128,7 +129,7 @@ msgstr "Mostra altro... (" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:91 #, python-format msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: web_kanban #. openerp-web @@ -143,21 +144,21 @@ msgstr "rimanenti)" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:90 #, python-format msgid "or" -msgstr "" +msgstr "o" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:51 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:43 #, python-format msgid "Delete" -msgstr "" +msgstr "Elimina" #~ msgid "Create" #~ msgstr "Crea" diff --git a/addons/web_view_editor/i18n/hr.po b/addons/web_view_editor/i18n/hr.po index 84d39cf0f5c..d29e621c55a 100644 --- a/addons/web_view_editor/i18n/hr.po +++ b/addons/web_view_editor/i18n/hr.po @@ -8,21 +8,21 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-11-24 18:01+0000\n" +"PO-Revision-Date: 2012-12-09 17:57+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-01 05:21+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:44+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:164 #, python-format msgid "The following fields are invalid :" -msgstr "" +msgstr "Popis neispravnih polja:" #. module: web_view_editor #. openerp-web @@ -36,7 +36,7 @@ msgstr "Kreiraj" #: code:addons/web_view_editor/static/src/js/view_editor.js:986 #, python-format msgid "New Field" -msgstr "" +msgstr "Novo polje" #. module: web_view_editor #. openerp-web @@ -71,7 +71,7 @@ msgstr "Snimi" #: code:addons/web_view_editor/static/src/js/view_editor.js:393 #, python-format msgid "Select an element" -msgstr "" +msgstr "Odaberite element" #. module: web_view_editor #. openerp-web @@ -86,7 +86,7 @@ msgstr "Ažuriraj" #: code:addons/web_view_editor/static/src/js/view_editor.js:263 #, python-format msgid "Please select view in list :" -msgstr "" +msgstr "Odaberite pogled iz popisa:" #. module: web_view_editor #. openerp-web @@ -150,7 +150,7 @@ msgstr "Da li zaista želite obrisati ovaj čvor?" #: code:addons/web_view_editor/static/src/js/view_editor.js:390 #, python-format msgid "Can't Update View" -msgstr "" +msgstr "Ažuriranje pogleda nije moguće" #. module: web_view_editor #. openerp-web From a4083348d5f571dfb7ffcdd5b389c757b4998cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 10 Dec 2012 09:37:18 +0100 Subject: [PATCH 097/163] =?UTF-8?q?[FIX]=20Portal:=20portal=20inbox=20doma?= =?UTF-8?q?in=20fixed,=20favorite=5Fuser=5Fids=20does=20not=20exist=20anym?= =?UTF-8?q?ore.=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bzr revid: tde@openerp.com-20121210083718-idod6rjgaasz001y --- addons/portal/portal_view.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/portal/portal_view.xml b/addons/portal/portal_view.xml index b7765e63ffd..4aad43716b6 100644 --- a/addons/portal/portal_view.xml +++ b/addons/portal/portal_view.xml @@ -57,9 +57,8 @@ } - - - - Bescarinska zona - - - - - - - - - - - - - - - - Domaći partneri R2 - - - - - - - - - - - Domaći partneri R1 - - - - - Strani partneri - - - - - - - - - - - - - - - - - - - - - - - - - Domaći partneri izvan sustava PDV-a - - - - - - - - - - - - - Carinska uprava - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/addons/l10n_hr/data/fiscal_position.xml b/addons/l10n_hr/data/fiscal_position_template.xml similarity index 50% rename from addons/l10n_hr/data/fiscal_position.xml rename to addons/l10n_hr/data/fiscal_position_template.xml index df91a120a8b..5a74fc0cc2d 100644 --- a/addons/l10n_hr/data/fiscal_position.xml +++ b/addons/l10n_hr/data/fiscal_position_template.xml @@ -1,68 +1,82 @@ - - + + R1 partneri - - - - + + R2 partneri - - - - - - - - - - - - - - - - - - + + + EU Inozemni + + + Inozemni - - - - - - - - - - - - - + + + + + + + - - - + + + + - - + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/l10n_hr/i18n/hr.po b/addons/l10n_hr/i18n/hr.po deleted file mode 100644 index 9f7c1848ee1..00000000000 --- a/addons/l10n_hr/i18n/hr.po +++ /dev/null @@ -1,149 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * l10n_hr -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-20 18:16+0000\n" -"PO-Revision-Date: 2012-03-20 18:16+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pasiva -msgid "Pasiva" -msgstr "Pasiva" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_aktiva -msgid "Aktiva" -msgstr "Aktiva" - -#. module: l10n_hr -#: model:ir.actions.todo,note:l10n_hr.config_call_account_template_hr_rrif -msgid "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" -" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" -msgstr "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" -" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_view -msgid "Sintetika" -msgstr "Sintetika" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_inv_rashod -msgid "Izvanredni rashodi" -msgstr "Izvanredni rashodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pdv -msgid "Obveze za PDV" -msgstr "Obveze za PDV" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_other -msgid "Ostalo" -msgstr "Ostalo" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pas_razgran -msgid "Pasivna vrem. Razgraničenja" -msgstr "Pasivna vrem. Razgraničenja" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_kratk_imovina -msgid "Kratkotrajna imovina" -msgstr "Kratkotrajna imovina" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_upis_kapital -msgid "Potraživanja za upisani kapital" -msgstr "Potraživanja za upisani kapital" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_obveze_dob -msgid "Obveze prema dobavljačima" -msgstr "Obveze prema dobavljačima" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_kapital -msgid "Kapital i rezerve" -msgstr "Kapital i rezerve" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_rezervacije -msgid "Rezerviranja" -msgstr "Rezerviranja" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_potraz_kup -msgid "Potraživanja od kupaca" -msgstr "Potraživanja od kupaca" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_dug_imovina -msgid "Dugotrajna imovina" -msgstr "Dugotrajna imovina" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pretporez -msgid "Potraživanja za pretporez" -msgstr "Potraživanja za pretporez" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_prihod -msgid "Prihod" -msgstr "Prihod" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_fin_prihod -msgid "Financijski prihodi" -msgstr "Financijski prihodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_posl_rashod -msgid "Poslovni rashodi" -msgstr "Poslovni rashodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_dug_obv -msgid "Dugoročne obveze" -msgstr "Dugoročne obveze" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_rashod -msgid "Rashod" -msgstr "Rashod" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_posl_prihod -msgid "Poslovni prihodi" -msgstr "Poslovni prihodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_kratk_obveze -msgid "Kratkoročne obveze" -msgstr "Kratkoročne obveze" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_fin_rashod -msgid "Financijski rashodi" -msgstr "Financijski rashodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_izv_prihod -msgid "Izvanredni prihodi" -msgstr "Izvanredni prihodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_aktiv_razgran -msgid "Aktivna vrem. Razgraničenja" -msgstr "Aktivna vrem. Razgraničenja" - diff --git a/addons/l10n_hr/i18n/l10n_hr.pot b/addons/l10n_hr/i18n/l10n_hr.pot deleted file mode 100644 index 9f7c1848ee1..00000000000 --- a/addons/l10n_hr/i18n/l10n_hr.pot +++ /dev/null @@ -1,149 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * l10n_hr -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-20 18:16+0000\n" -"PO-Revision-Date: 2012-03-20 18:16+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pasiva -msgid "Pasiva" -msgstr "Pasiva" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_aktiva -msgid "Aktiva" -msgstr "Aktiva" - -#. module: l10n_hr -#: model:ir.actions.todo,note:l10n_hr.config_call_account_template_hr_rrif -msgid "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" -" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" -msgstr "Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku.\n" -" Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_view -msgid "Sintetika" -msgstr "Sintetika" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_inv_rashod -msgid "Izvanredni rashodi" -msgstr "Izvanredni rashodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pdv -msgid "Obveze za PDV" -msgstr "Obveze za PDV" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_other -msgid "Ostalo" -msgstr "Ostalo" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pas_razgran -msgid "Pasivna vrem. Razgraničenja" -msgstr "Pasivna vrem. Razgraničenja" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_kratk_imovina -msgid "Kratkotrajna imovina" -msgstr "Kratkotrajna imovina" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_upis_kapital -msgid "Potraživanja za upisani kapital" -msgstr "Potraživanja za upisani kapital" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_obveze_dob -msgid "Obveze prema dobavljačima" -msgstr "Obveze prema dobavljačima" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_kapital -msgid "Kapital i rezerve" -msgstr "Kapital i rezerve" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_rezervacije -msgid "Rezerviranja" -msgstr "Rezerviranja" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_potraz_kup -msgid "Potraživanja od kupaca" -msgstr "Potraživanja od kupaca" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_dug_imovina -msgid "Dugotrajna imovina" -msgstr "Dugotrajna imovina" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_pretporez -msgid "Potraživanja za pretporez" -msgstr "Potraživanja za pretporez" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_prihod -msgid "Prihod" -msgstr "Prihod" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_fin_prihod -msgid "Financijski prihodi" -msgstr "Financijski prihodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_posl_rashod -msgid "Poslovni rashodi" -msgstr "Poslovni rashodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_dug_obv -msgid "Dugoročne obveze" -msgstr "Dugoročne obveze" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_rashod -msgid "Rashod" -msgstr "Rashod" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_posl_prihod -msgid "Poslovni prihodi" -msgstr "Poslovni prihodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_kratk_obveze -msgid "Kratkoročne obveze" -msgstr "Kratkoročne obveze" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_fin_rashod -msgid "Financijski rashodi" -msgstr "Financijski rashodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_izv_prihod -msgid "Izvanredni prihodi" -msgstr "Izvanredni prihodi" - -#. module: l10n_hr -#: model:account.account.type,name:l10n_hr.account_type_aktiv_razgran -msgid "Aktivna vrem. Razgraničenja" -msgstr "Aktivna vrem. Razgraničenja" - diff --git a/addons/l10n_hr/l10n_hr_chart_template.xml b/addons/l10n_hr/l10n_hr_chart_template.xml new file mode 100755 index 00000000000..5532aff9037 --- /dev/null +++ b/addons/l10n_hr/l10n_hr_chart_template.xml @@ -0,0 +1,22 @@ + + + + + + RRIF-ov računski plan za poduzetnike + 0 + + + + + + + + + + + + + + + diff --git a/addons/l10n_hr/l10n_hr_wizard.xml b/addons/l10n_hr/l10n_hr_wizard.xml old mode 100755 new mode 100644 index 1f8a8763137..b736f241607 --- a/addons/l10n_hr/l10n_hr_wizard.xml +++ b/addons/l10n_hr/l10n_hr_wizard.xml @@ -1,47 +1,8 @@ - - - - - - RRIF-ov računski plan za poduzetnike - 0 - - - - - - - - - - - - - - - - - - - - - Generate Chart of Accounts from a Chart Template - Generiranje kontnog plana iz predloška. Asistent će pitati za tvrtku, predložak kontnog plana, broj znamenki šifre konta, bankovne račune, valute i kreirati novi kontni plan za odabranu tvrtku. - Isti čarobnjak se može pokrenuti i naknadno iz izbornika Računovodstvo/Postava/Financijsko računovodstvo/Postava nove tvrtke - podružnice - - automatic - - - - - - + + + + + open + + + diff --git a/addons/l10n_hr/static/src/img/icon.png b/addons/l10n_hr/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0db59f104b4cbd38f7b3c9ffcc8422b88c5701 GIT binary patch literal 17892 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 Date: Mon, 10 Dec 2012 10:05:54 +0100 Subject: [PATCH 099/163] [IMP] resource: improve ugly code in conversion function bzr revid: rco@openerp.com-20121210090554-fb59bzz5ceogehms --- addons/resource/resource.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/addons/resource/resource.py b/addons/resource/resource.py index 45fd9c20bc9..9b20678acaa 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -274,13 +274,10 @@ class resource_calendar_attendance(osv.osv): } resource_calendar_attendance() -def convert_timeformat(time_string): - split_list = str(time_string).split('.') - hour_part = split_list[0] - mins_part = split_list[1] - round_mins = int(round(float(mins_part) * 60,-2)) - converted_string = hour_part + ':' + str(round_mins)[0:2] - return converted_string +def hours_time_string(hours): + """ convert a number of hours (float) into a string with format '%H:%M' """ + minutes = int(round(hours * 60)) + return "%02d:%02d" % divmod(minutes, 60) class resource_resource(osv.osv): _name = "resource.resource" @@ -390,8 +387,8 @@ class resource_resource(osv.osv): wk_days[week['dayofweek']] = week_days[week['dayofweek']] else: raise osv.except_osv(_('Configuration Error!'),_('Make sure the Working time has been configured with proper week days!')) - hour_from_str = convert_timeformat(week['hour_from']) - hour_to_str = convert_timeformat(week['hour_to']) + hour_from_str = hours_time_string(week['hour_from']) + hour_to_str = hours_time_string(week['hour_to']) res_str = hour_from_str + '-' + hour_to_str wktime_list.append((day, res_str)) # Convert into format like [('mon', '8:00-12:00', '13:00-18:00')] From b3cc67fabd6e05d7375eeb3149070391a847a8ea Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Mon, 10 Dec 2012 10:15:02 +0100 Subject: [PATCH 100/163] [FIX]traceback when duplicating vehicle bzr revid: csn@openerp.com-20121210091502-zhai3ohp0hnbdr4f --- addons/fleet/fleet.py | 6 +++--- addons/fleet/fleet_demo.xml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/fleet/fleet.py b/addons/fleet/fleet.py index db999d41d12..28ff0c3dce8 100644 --- a/addons/fleet/fleet.py +++ b/addons/fleet/fleet.py @@ -333,9 +333,9 @@ class fleet_vehicle(osv.Model): 'company_id': fields.many2one('res.company', 'Company'), 'license_plate': fields.char('License Plate', size=32, required=True, help='License plate number of the vehicle (ie: plate number for a car)'), 'vin_sn': fields.char('Chassis Number', size=32, help='Unique number written on the vehicle motor (VIN/SN number)'), - 'driver_id': fields.many2one('res.partner', 'Driver', _idhelp='Driver of the vehicle'), - 'model_id': fields.many2one('fleet.vehicle.model', 'Model', requ_idired=True, help='Model of the vehicle'), - 'log_fuel': fields.one2many('fleet.vehicle.log.f_iduel', 'vehicle_id', 'Fuel Logs'), + 'driver_id': fields.many2one('res.partner', 'Driver', help='Driver of the vehicle'), + 'model_id': fields.many2one('fleet.vehicle.model', 'Model', required=True, help='Model of the vehicle'), + 'log_fuel': fields.one2many('fleet.vehicle.log.fuel', 'vehicle_id', 'Fuel Logs'), 'log_services': fields.one2many('fleet.vehicle.log.services', 'vehicle_id', 'Services Logs'), 'log_contracts': fields.one2many('fleet.vehicle.log.contract', 'vehicle_id', 'Contracts'), 'acquisition_date': fields.date('Acquisition Date', required=False, help='Date when the vehicle has been bought'), diff --git a/addons/fleet/fleet_demo.xml b/addons/fleet/fleet_demo.xml index 03e8bcd38f1..327dfe27c43 100644 --- a/addons/fleet/fleet_demo.xml +++ b/addons/fleet/fleet_demo.xml @@ -30,7 +30,7 @@ 5 - + kilometers 20000 @@ -45,7 +45,7 @@ 5 - + kilometers 16000 @@ -60,7 +60,7 @@ 3 - + kilometers 20000 @@ -75,7 +75,7 @@ 3 - + kilometers 20000 @@ -90,7 +90,7 @@ 5 - + kilometers 18000 From f9e610a890d462b382c66ea4af7aac3594752c1a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 10 Dec 2012 11:01:37 +0100 Subject: [PATCH 101/163] [FIX] don't lose debug mode when clicking on logo bzr revid: xmo@openerp.com-20121210100137-h2ydpz6b63c48b1z --- addons/web/static/src/xml/base.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 2161bc84f3d..e742f336dc0 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -436,7 +436,8 @@ - + +
    - - - - + +
    diff --git a/addons/procurement/procurement_view.xml b/addons/procurement/procurement_view.xml index a0d51c87713..6e5bf24ea6e 100644 --- a/addons/procurement/procurement_view.xml +++ b/addons/procurement/procurement_view.xml @@ -281,7 +281,7 @@ groups="stock.group_stock_user"/> - + diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv index d9f6cb9d2f6..a7cf4618993 100644 --- a/addons/project/security/ir.model.access.csv +++ b/addons/project/security/ir.model.access.csv @@ -17,6 +17,7 @@ access_project_project_sale_user,project.project salesman,model_project_project, access_account_analytic_line_project,account.analytic.line project,analytic.model_account_analytic_line,project.group_project_manager,1,1,1,1 access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0 access_project_task_history_cumulative,project.task.history project,project.model_project_task_history_cumulative,project.group_project_manager,1,0,0,0 +access_project_task_history_cumulative,project.task.history project,project.model_project_task_history_cumulative,project.group_project_user,1,0,0,0 access_resource_calendar,project.resource_calendar manager,resource.model_resource_calendar,project.group_project_manager,1,0,0,0 access_project_category,project.project_category,model_project_category,,1,0,0,0 access_project_category_manager,project.project_category,model_project_category,project.group_project_manager,1,1,1,1 diff --git a/addons/saas_demo/demo/fr_FR.xml b/addons/saas_demo/demo/fr_FR.xml index 3425c58f0c4..f71b059c01e 100644 --- a/addons/saas_demo/demo/fr_FR.xml +++ b/addons/saas_demo/demo/fr_FR.xml @@ -37,7 +37,7 @@ Mr Jean Pierre (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> fr_FR @@ -356,6 +356,81 @@ AElFTkSuQmCC + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + Jean Pierre @@ -708,6 +783,39 @@ AElFTkSuQmCC + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index 22589244a53..7da3f26fc2f 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -9,7 +9,7 @@ - + @@ -271,6 +271,81 @@ m9AZY98DWED2IYjzBkOr2HcwzjlnjK0BsITsQhDnpdgX/X/XQPyOLcBE7QAAAABJRU5ErkJggg== + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + Hans Anders @@ -538,6 +613,39 @@ m9AZY98DWED2IYjzBkOr2HcwzjlnjK0BsITsQhDnpdgX/X/XQPyOLcBE7QAAAABJRU5ErkJggg== + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1020,7 +1128,7 @@ m9AZY98DWED2IYjzBkOr2HcwzjlnjK0BsITsQhDnpdgX/X/XQPyOLcBE7QAAAABJRU5ErkJggg== 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/en_US.xml b/addons/saas_demo/demo/en_US.xml index 608dbd8271d..0df20ad7388 100644 --- a/addons/saas_demo/demo/en_US.xml +++ b/addons/saas_demo/demo/en_US.xml @@ -30,7 +30,7 @@ Mr Doe (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> en_US @@ -817,6 +817,81 @@ RguGWPjJG8TjCQC+eekuogFfj0X1A8PEDvDQc29y3k0PdTFLC8prN9mkHljekQdqkEAIEq0rcR03 + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + John Doe @@ -1637,6 +1712,39 @@ RguGWPjJG8TjCQC+eekuogFfj0X1A8PEDvDQc29y3k0PdTFLC8prN9mkHljekQdqkEAIEq0rcR03 + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -2120,7 +2228,7 @@ RguGWPjJG8TjCQC+eekuogFfj0X1A8PEDvDQc29y3k0PdTFLC8prN9mkHljekQdqkEAIEq0rcR03 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/es_ES.xml b/addons/saas_demo/demo/es_ES.xml index 6024e6af31b..2f9ac27cd75 100644 --- a/addons/saas_demo/demo/es_ES.xml +++ b/addons/saas_demo/demo/es_ES.xml @@ -37,7 +37,7 @@ Sr. Gomez (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> es_ES @@ -728,6 +728,81 @@ dAsLC0t0CwsLS3QLCwtLdAsLixz/BdYkFo1joM5nAAAAAElFTkSuQmCC + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + Juan Gomez @@ -1452,6 +1527,39 @@ dAsLC0t0CwsLS3QLCwtLdAsLixz/BdYkFo1joM5nAAAAAElFTkSuQmCC + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1934,7 +2042,7 @@ dAsLC0t0CwsLS3QLCwtLdAsLixz/BdYkFo1joM5nAAAAAElFTkSuQmCC 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/it_IT.xml b/addons/saas_demo/demo/it_IT.xml index 25668fb86ae..2a426b25b90 100644 --- a/addons/saas_demo/demo/it_IT.xml +++ b/addons/saas_demo/demo/it_IT.xml @@ -37,7 +37,7 @@ Sig Roni (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> it_IT @@ -356,6 +356,81 @@ AAAAAElFTkSuQmCC + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + Luigi Roni @@ -708,6 +783,39 @@ AAAAAElFTkSuQmCC + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1190,7 +1298,7 @@ AAAAAElFTkSuQmCC 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/ja_JP.xml b/addons/saas_demo/demo/ja_JP.xml index be529a4a969..fe428064abc 100644 --- a/addons/saas_demo/demo/ja_JP.xml +++ b/addons/saas_demo/demo/ja_JP.xml @@ -37,7 +37,7 @@ (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> ja_JP @@ -293,6 +293,81 @@ pqamn7jd7tutLhl9/H8d9E1zf32yPgAAAABJRU5ErkJggg== + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + 佐藤さくら @@ -582,6 +657,39 @@ pqamn7jd7tutLhl9/H8d9E1zf32yPgAAAABJRU5ErkJggg== + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1064,7 +1172,7 @@ pqamn7jd7tutLhl9/H8d9E1zf32yPgAAAABJRU5ErkJggg== 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/nl_NL.xml b/addons/saas_demo/demo/nl_NL.xml index db0b56eb316..2b35164279b 100644 --- a/addons/saas_demo/demo/nl_NL.xml +++ b/addons/saas_demo/demo/nl_NL.xml @@ -37,7 +37,7 @@ De heer Van Eyck (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> nl_NL @@ -421,6 +421,81 @@ SUVORK5CYII= + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + Jan Van Eyck @@ -837,6 +912,39 @@ SUVORK5CYII= + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1319,7 +1427,7 @@ SUVORK5CYII= 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/pt_BR.xml b/addons/saas_demo/demo/pt_BR.xml index 021c3928e2e..6928209c181 100644 --- a/addons/saas_demo/demo/pt_BR.xml +++ b/addons/saas_demo/demo/pt_BR.xml @@ -37,7 +37,7 @@ Sr Gómez (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> pt_BR @@ -384,6 +384,81 @@ ieeMI2m2rJqSjSI5yYgEo8RB/04hM5uMwh9UoAmIcDjClYgmwpMaDwQVrkS0/5hqJkk8dO5zzhVZ + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + João Gómez @@ -764,6 +839,39 @@ ieeMI2m2rJqSjSI5yYgEo8RB/04hM5uMwh9UoAmIcDjClYgmwpMaDwQVrkS0/5hqJkk8dO5zzhVZ + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1246,7 +1354,7 @@ ieeMI2m2rJqSjSI5yYgEo8RB/04hM5uMwh9UoAmIcDjClYgmwpMaDwQVrkS0/5hqJkk8dO5zzhVZ 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/ru_RU.xml b/addons/saas_demo/demo/ru_RU.xml index 76236fd0afd..e509d269971 100644 --- a/addons/saas_demo/demo/ru_RU.xml +++ b/addons/saas_demo/demo/ru_RU.xml @@ -37,7 +37,7 @@ (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> ru_RU @@ -649,6 +649,81 @@ gg== + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + Николай Петра @@ -1294,6 +1369,39 @@ gg== + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1776,7 +1884,7 @@ gg== 0 150 - weekly + weekly diff --git a/addons/saas_demo/demo/zh_CN.xml b/addons/saas_demo/demo/zh_CN.xml index 51121879394..583b445af70 100644 --- a/addons/saas_demo/demo/zh_CN.xml +++ b/addons/saas_demo/demo/zh_CN.xml @@ -37,7 +37,7 @@ (4, ref('stock.group_stock_user')), (4, ref('lunch.group_lunch_user')), (4, ref('point_of_sale.group_pos_user')), - (4, ref('base.group_tool_user')), + (4, ref('base.group_hr_user')), ]"/> zh_CN @@ -335,6 +335,81 @@ EF5AwIv/A3KcGOLJemG7AAAAAElFTkSuQmCC + + + + + + + + + manual + + + + Laptop Customized + + 2 + 2 + + 3645.00 + + + + Mouse, Wireless + + 2 + 2 + + 12.50 + + + + + + + + + manual + + + + Laptop E5023 + + 5 + 5 + + 2950.00 + + + + GrapWorks Software + + 1 + 1 + + 173.00 + + + + Datacard + + 1 + 1 + + 40.00 + + + + USB Adapter + + 1 + 1 + + 18.00 + + + 趙生 @@ -666,6 +741,39 @@ EF5AwIv/A3KcGOLJemG7AAAAAElFTkSuQmCC + + + Doctor Appointment + + + + remove + draft + 3 + + + + + Summer Vacation + + + + add + draft + 7 + + + + + International Tour + + + + add + 7 + + + @@ -1148,7 +1256,7 @@ EF5AwIv/A3KcGOLJemG7AAAAAElFTkSuQmCC 0 150 - weekly + weekly From fbc37241cc538372ecfc680393d6add12e720b4b Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 11 Dec 2012 15:40:10 +0100 Subject: [PATCH 153/163] [IMP] modify the condition to auto-install a module: at least one dependency must be 'to install' bzr revid: rco@openerp.com-20121211144010-3bbszb3ajxr3doup --- openerp/addons/base/module/module.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index cbd046a86e3..bd977cd5f0b 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -370,16 +370,20 @@ class module(osv.osv): # Mark the given modules to be installed. self.state_update(cr, uid, ids, 'to install', ['uninstalled'], context) - # Mark (recursively) the newly satisfied modules to also be installed: + # Mark (recursively) the newly satisfied modules to also be installed # Select all auto-installable (but not yet installed) modules. - domain = [('state', '=', 'uninstalled'), ('auto_install', '=', True),] + domain = [('state', '=', 'uninstalled'), ('auto_install', '=', True)] uninstalled_ids = self.search(cr, uid, domain, context=context) uninstalled_modules = self.browse(cr, uid, uninstalled_ids, context=context) - # Keep those with all their dependencies satisfied. + # Keep those with: + # - all dependencies satisfied (installed or to be installed), + # - at least one dependency being 'to install' + satisfied_states = frozenset(('installed', 'to install', 'to upgrade')) def all_depencies_satisfied(m): - return all(x.state in ('to install', 'installed', 'to upgrade') for x in m.dependencies_id) + states = set(d.state for d in m.dependencies_id) + return (states <= satisfied_states) and ('to install' in states) to_install_modules = filter(all_depencies_satisfied, uninstalled_modules) to_install_ids = map(lambda m: m.id, to_install_modules) From f817cd3f3868823a9880fff420e0932a55bb8ff7 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 11 Dec 2012 15:45:51 +0100 Subject: [PATCH 154/163] [IMP] web: move controler download_attachment into mail. change render into _t bzr revid: chm@openerp.com-20121211144551-9uryi1z1sxe9daxv --- addons/web/controllers/main.py | 13 ------------- addons/web/static/src/js/view_form.js | 2 +- addons/web/static/src/xml/base.xml | 2 -- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 38558b26e7c..4b23316e252 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1245,19 +1245,6 @@ class Binary(openerpweb.Controller): [('Content-Type', 'application/octet-stream'), ('Content-Disposition', content_disposition(filename, req))]) - @openerpweb.httprequest - def download_attachment(self, req, model, id, method, attachment_id, **kw): - Model = req.session.model(model) - res = getattr(Model, method)(int(id), int(attachment_id)) - if res: - filecontent = base64.b64decode(res.get('base64')) - filename = res.get('filename') - if filecontent and filename: - return req.make_response(filecontent, - headers=[('Content-Type', 'application/octet-stream'), - ('Content-Disposition', content_disposition(filename, req))]) - return req.not_found() - @openerpweb.httprequest def saveas_ajax(self, req, data, token): jdata = simplejson.loads(data) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index a15bfb90276..a0e7f570b73 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -5124,7 +5124,7 @@ instance.web.form.FieldMany2ManyBinaryMultiFiles = instance.web.form.AbstractFie // TODO : activate send on wizard and form if (result.error || !result.id ) { - this.do_warn( instance.web.qweb.render('message_error_uploading'), result.error); + this.do_warn( _t('Uploading error'), result.error); files = _.filter(files, function (val) { return !val.upload; }); } else { for(var i in files){ diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index ad619345c45..e50d6c68ffa 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -636,8 +636,6 @@
    -Uploading error - From 6c73d8dff8cb3a794a2c35e75da6b85974cc34ff Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 11 Dec 2012 15:53:43 +0100 Subject: [PATCH 155/163] [IMP] web: move controler download_attachment into mail. bzr revid: chm@openerp.com-20121211145343-jhjj9sohn2shkbt9 --- addons/mail/__init__.py | 1 + addons/mail/controllers/__init__.py | 3 +++ addons/mail/controllers/main.py | 22 ++++++++++++++++++++++ addons/mail/static/src/js/mail.js | 2 +- 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 addons/mail/controllers/__init__.py create mode 100644 addons/mail/controllers/main.py diff --git a/addons/mail/__init__.py b/addons/mail/__init__.py index b34993ffd32..b759a08d778 100644 --- a/addons/mail/__init__.py +++ b/addons/mail/__init__.py @@ -35,5 +35,6 @@ import wizard import res_config import mail_group_menu import update +import controllers # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mail/controllers/__init__.py b/addons/mail/controllers/__init__.py new file mode 100644 index 00000000000..e11f9ba81bb --- /dev/null +++ b/addons/mail/controllers/__init__.py @@ -0,0 +1,3 @@ +import main + +# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mail/controllers/main.py b/addons/mail/controllers/main.py new file mode 100644 index 00000000000..4c6f6e56064 --- /dev/null +++ b/addons/mail/controllers/main.py @@ -0,0 +1,22 @@ +import base64 +import openerp.addons.web.http as oeweb +from openerp.addons.web.controllers.main import content_disposition + +#---------------------------------------------------------- +# Controller +#---------------------------------------------------------- +class MailController(oeweb.Controller): + _cp_path = '/mail' + + @oeweb.httprequest + def download_attachment(self, req, model, id, method, attachment_id, **kw): + Model = req.session.model(model) + res = getattr(Model, method)(int(id), int(attachment_id)) + if res: + filecontent = base64.b64decode(res.get('base64')) + filename = res.get('filename') + if filecontent and filename: + return req.make_response(filecontent, + headers=[('Content-Type', 'application/octet-stream'), + ('Content-Disposition', content_disposition(filename, req))]) + return req.not_found() diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index a0b39830ae3..f76e04cf540 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -30,7 +30,7 @@ openerp.mail = function (session) { /* Get the url of an attachment {'id': id} */ get_attachment_url: function (session, message_id, attachment_id) { - return session.url('/web/binary/download_attachment', { + return session.url('/mail/download_attachment', { 'model': 'mail.message', 'id': message_id, 'method': 'download_attachment', From 6576b52d42d82314df474bbfea259f394822846a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Dec 2012 15:56:32 +0100 Subject: [PATCH 156/163] [REV] Url parmaters (hence debug mode) should stay persistent. Use bbq api in order to remove state. Reverted partial feature of Revision: 3509 revid:chm@openerp.com-20121128082130-x16m1x0bdsgo7grp bzr revid: fme@openerp.com-20121211145632-yce8jyyu6k7e2lov --- addons/web/static/src/js/coresetup.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index 74c30334e1e..c88e0ca0512 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -119,9 +119,7 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess }, session_logout: function() { this.set_cookie('session_id', ''); - var url = "#"; - $.bbq.pushState(url); - window.location.search = ""; + $.bbq.removeState(); return this.rpc("/web/session/destroy", {}); }, get_cookie: function (name) { From bc8e74d8b04bc3b5a6ad23172822a3230e10baac Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 11 Dec 2012 15:56:52 +0100 Subject: [PATCH 157/163] [FIX] focusing of form fields, implementation of focusing for tag m2m jQuery's *focus* method must *not* be used: it triggers the blur and focus events in the wrong order (and potentially more than once), breaking the focus handling of the o2m editable list and making it essentially unusable. The DOM method behaves correctly, triggers the blur first and the focus second in a different runloop frame (thus it's possible to bind on blur, wait a set time and execute the actual blurring iif no focus event has been seen within the form). bzr revid: xmo@openerp.com-20121211145652-y63a0ny0gmoiozhn --- addons/web/static/src/js/view_form.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index eab0b38fda1..f9956d50e17 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2275,7 +2275,7 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we return this.get('value') === '' || this._super(); }, focus: function() { - this.$('input:first').focus(); + this.$('input:first')[0].focus(); }, set_dimensions: function (height, width) { this._super(height, width); @@ -2510,7 +2510,7 @@ instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(instanc }, focus: function() { if (this.datewidget && this.datewidget.$input) { - this.datewidget.$input.focus(); + this.datewidget.$input[0].focus(); } }, set_dimensions: function (height, width) { @@ -2584,7 +2584,7 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we return this.get('value') === '' || this._super(); }, focus: function($el) { - this.$textarea.focus(); + this.$textarea[0].focus(); }, set_dimensions: function (height, width) { this._super(height, width); @@ -2665,7 +2665,7 @@ instance.web.form.FieldBoolean = instance.web.form.AbstractField.extend({ this.$checkbox[0].checked = this.get('value'); }, focus: function() { - this.$checkbox.focus(); + this.$checkbox[0].focus(); } }); @@ -2751,7 +2751,7 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instan } }, focus: function() { - this.$el.find('select:first').focus(); + this.$('select:first')[0].focus(); }, set_dimensions: function (height, width) { this._super(height, width); @@ -3237,7 +3237,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc }, focus: function () { if (!this.get('effective_readonly')) { - this.$input.focus(); + this.$input[0].focus(); } }, _quick_create: function() { @@ -4087,6 +4087,9 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(in add_id: function(id) { this.set({'value': _.uniq(this.get('value').concat([id]))}); }, + focus: function () { + this.$text[0].focus(); + }, }); /** @@ -4423,7 +4426,7 @@ instance.web.form.Many2ManyQuickCreate = instance.web.Widget.extend({ }); }, focus: function() { - this.$text.focus(); + this.$text[0].focus(); }, add_id: function(id) { var self = this; From f365052c6c1de5c7ea974b59bf05efe90f1be548 Mon Sep 17 00:00:00 2001 From: "olt@tinyerp.com" <> Date: Tue, 11 Dec 2012 16:04:19 +0100 Subject: [PATCH 158/163] [IMP] analytic: 'code' field: remove size limit bzr revid: olt@tinyerp.com-20121211150419-2sh2n255ej9bewgo --- addons/analytic/analytic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 782fbc4f3ee..420c6516b38 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -166,7 +166,7 @@ class account_analytic_account(osv.osv): _columns = { 'name': fields.char('Account/Contract Name', size=128, required=True), 'complete_name': fields.function(_get_full_name, type='char', string='Full Account Name'), - 'code': fields.char('Reference', size=24, select=True), + 'code': fields.char('Reference', select=True), 'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Contract')], 'Type of Account', required=True, help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\ "The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"\ From dd94a6b00a129c506299ec7e0b5739f5e9668a24 Mon Sep 17 00:00:00 2001 From: Arnaud Pineux Date: Tue, 11 Dec 2012 16:12:03 +0100 Subject: [PATCH 159/163] [IMP] Correct and improve some addons bzr revid: api@openerp.com-20121211151203-5p7yo1sf2d39r7kr --- addons/saas_demo/__init__.py | 23 - addons/saas_demo/__openerp__.py | 74 - addons/saas_demo/demo/de_DE.xml | 1165 ------------ addons/saas_demo/demo/en_US.xml | 2265 ----------------------- addons/saas_demo/demo/es_ES.xml | 2079 --------------------- addons/saas_demo/demo/fr_FR.xml | 1335 ------------- addons/saas_demo/demo/it_IT.xml | 1335 ------------- addons/saas_demo/demo/ja_JP.xml | 1209 ------------ addons/saas_demo/demo/nl_NL.xml | 1464 --------------- addons/saas_demo/demo/pt_BR.xml | 1391 -------------- addons/saas_demo/demo/ru_RU.xml | 1921 ------------------- addons/saas_demo/demo/zh_CN.xml | 1293 ------------- addons/saas_demo/ir_cron.py | 39 - addons/saas_demo/res_users.py | 30 - addons/saas_demo/setup.xml | 22 - addons/saas_demo/static/css/demo.css | 52 - addons/saas_demo/static/js/saas_demo.js | 9 - addons/saas_demo/static/xml/demo.xml | 29 - 18 files changed, 15735 deletions(-) delete mode 100644 addons/saas_demo/__init__.py delete mode 100644 addons/saas_demo/__openerp__.py delete mode 100644 addons/saas_demo/demo/de_DE.xml delete mode 100644 addons/saas_demo/demo/en_US.xml delete mode 100644 addons/saas_demo/demo/es_ES.xml delete mode 100644 addons/saas_demo/demo/fr_FR.xml delete mode 100644 addons/saas_demo/demo/it_IT.xml delete mode 100644 addons/saas_demo/demo/ja_JP.xml delete mode 100644 addons/saas_demo/demo/nl_NL.xml delete mode 100644 addons/saas_demo/demo/pt_BR.xml delete mode 100644 addons/saas_demo/demo/ru_RU.xml delete mode 100644 addons/saas_demo/demo/zh_CN.xml delete mode 100644 addons/saas_demo/ir_cron.py delete mode 100644 addons/saas_demo/res_users.py delete mode 100644 addons/saas_demo/setup.xml delete mode 100644 addons/saas_demo/static/css/demo.css delete mode 100644 addons/saas_demo/static/js/saas_demo.js delete mode 100644 addons/saas_demo/static/xml/demo.xml diff --git a/addons/saas_demo/__init__.py b/addons/saas_demo/__init__.py deleted file mode 100644 index 5384dee7184..00000000000 --- a/addons/saas_demo/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2012-today OpenERP SA () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see -# -############################################################################## - -import res_users -import ir_cron diff --git a/addons/saas_demo/__openerp__.py b/addons/saas_demo/__openerp__.py deleted file mode 100644 index 0e5b2b5ea25..00000000000 --- a/addons/saas_demo/__openerp__.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2012-today OpenERP SA () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see -# -############################################################################## - -{ - 'name': 'saas_demo', - 'category': 'Hidden', - 'description': """Add a red bar on the top with the following sentence: -"This is a demo version, you can subscribe to use online, browse all apps or back to the website." -And add a new button in the right of the menu: "Sign Up" -""", - 'version': '1.0', - "depends": [ - 'account_accountant', - 'account_analytic_analysis', - 'account_asset', - 'account_voucher', - 'crm', - 'fleet', - 'hr_contract', - 'hr_expense', - 'hr_holidays', - 'hr_recruitment', - 'hr_timesheet_invoice', - 'hr_timesheet_sheet', - 'lunch', - 'mrp', - 'mrp_jit', - 'note', - 'pad', - 'point_of_sale', - 'project_issue', - 'purchase', - 'sale', - 'stock', - 'web', - 'web_analytics', - ], - "demo": [ - 'setup.xml', - 'demo/en_US.xml', - 'demo/fr_FR.xml', - 'demo/es_ES.xml', - 'demo/zh_CN.xml', - 'demo/de_DE.xml', - 'demo/it_IT.xml', - 'demo/nl_NL.xml', - 'demo/ru_RU.xml', - 'demo/ja_JP.xml', - 'demo/pt_BR.xml', - ], - 'css': ['static/css/*.css'], - 'qweb': ['static/xml/*.xml'], - 'js': ['static/js/*.js'], - 'auto_install': False, - 'web_preload': False, -} diff --git a/addons/saas_demo/demo/de_DE.xml b/addons/saas_demo/demo/de_DE.xml deleted file mode 100644 index 904256d508d..00000000000 --- a/addons/saas_demo/demo/de_DE.xml +++ /dev/null @@ -1,1165 +0,0 @@ - - - - - - de_DE - - - - - - Hans Anders - - - h.anders@example.com - Europe/Berlin - none - - - - - - Hans Anders - demo_de_DE - demo - -- -Herr Anders - - - de_DE - - - Europe/Berlin - 0420100000005 - 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 - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - Hans Anders - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Hans Anders - - - - - - Berlin - h.anders@example.com - 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 - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Emmental - - - - - - - - confirmed - - +Pilze - - - - - - - - cancelled - - +Salat +Tomaten +Gurken - - - - - - - - confirmed - - +Salat +Tomaten +Eggs - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Bezahlung: 5 Essenmarken (6 €) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/en_US.xml b/addons/saas_demo/demo/en_US.xml deleted file mode 100644 index 0df20ad7388..00000000000 --- a/addons/saas_demo/demo/en_US.xml +++ /dev/null @@ -1,2265 +0,0 @@ - - - - - - John Doe - - - j.doe@example.com - America/New_York - none - - - - - - John doe - demo_en_US - demo - -- -Mr Doe - - - en_US - - - America/New_York - 0420100000005 - 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 - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - John Doe - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - John Doe - - - - - - New York - j.doe@example.com - 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 - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Emmental - - - - - - - - confirmed - - +Mushrooms - - - - - - - - cancelled - - +Salad +Tomatoes +Cucumbers - - - - - - - - confirmed - - +Salad +Tomatoes +Eggs - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Payment: 5 lunch tickets (6€) - 30 - payment - - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/es_ES.xml b/addons/saas_demo/demo/es_ES.xml deleted file mode 100644 index 2f9ac27cd75..00000000000 --- a/addons/saas_demo/demo/es_ES.xml +++ /dev/null @@ -1,2079 +0,0 @@ - - - - - - es_ES - - - - - - Juan Gomez - - - j.gomez@example.com - Europe/Madrid - none - - - - - - Juan Gomez - demo_es_ES - demo - -- -Sr. Gomez - - - es_ES - - - Europe/Madrid - 0420100000005 - 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 - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - Juan Gomez - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Juan Gomez - - - - - - Madrid - j.gomez@example.com - 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 - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Emmental - - - - - - - - confirmed - - +Setas - - - - - - - - cancelled - - +Ensalada +Tomates +Pepinos - - - - - - - - confirmed - - +Ensalada +Tomates +Huevos - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Pago: 5 vales de comida (6 €) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/fr_FR.xml b/addons/saas_demo/demo/fr_FR.xml deleted file mode 100644 index f71b059c01e..00000000000 --- a/addons/saas_demo/demo/fr_FR.xml +++ /dev/null @@ -1,1335 +0,0 @@ - - - - - - fr_FR - - - - - - Jean Pierre - - - j.pierre@example.com - Europe/Paris - none - - - - - - Jean Pierre - demo_fr_FR - demo - -- -Mr Jean Pierre - - - fr_FR - - - Europe/Paris - 0420100000005 - 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 -AElFTkSuQmCC - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - Jean Pierre - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Jean Pierre - - - - - - Paris - j.pierre@example.com - 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 -AElFTkSuQmCC - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Emmental - - - - - - - - confirmed - - +Champignons - - - - - - - - cancelled - - +Salade +Tomates +Concombres - - - - - - - - confirmed - - +Salade +Tomates +Oeufs - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Paiement: 5 tickets repas (6€) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/it_IT.xml b/addons/saas_demo/demo/it_IT.xml deleted file mode 100644 index 2a426b25b90..00000000000 --- a/addons/saas_demo/demo/it_IT.xml +++ /dev/null @@ -1,1335 +0,0 @@ - - - - - - it_IT - - - - - - Luigi Roni - - - l.roni@example.com - Europe/Rome - none - - - - - - Luigi Roni - demo_it_IT - demo - -- -Sig Roni - - - it_IT - - - Europe/Rome - 0420100000005 - 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 -AAAAAElFTkSuQmCC - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - Luigi Roni - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Luigi Roni - - - - - - Roma - l.roni@example.com - iVBORw0KGgoAAAANSUhEUgAAAMUAAAD6CAYAAAARFIOIAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAA -AAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wLFQ8BFyirE/MAACAASURBVHja -7V13fFPl/n7OOdlN0t20ZZS2zFKGgMieKgii7CkiDnCgDHH80Hsvil4HyEXvxXEdCA7wioBKZQ/Z -Q5FdRksplEJ3mz3O+P2R5rTpTNuTJk3PwycfctLkzPd5v+P9DoLjOA4iRIjgQYq3QIQIkRQiRIik -ECFCJIUIEQ2ARLwF/oENGzbAYrHAYDCA4zhIJBKoVCoAgFKpxNSpU8Wb1EggRO+Tb7B06VIcPXoU -V65cQVZWllNskyQIggBBEPx7kiTBcRysVitIkkRsbCw6deqELl26oHfv3pgwYYJ4M0VSNF2sXLkS -v/zyC44dOwaWZaHVahEUFOTx7ymKAsuyKCwshNVqhcPhQFJSEoYPH46PPvpIvMEiKZoOlixZgvXr -1+P69etQqVSIjY2F3W5vuO4rkcBiscBoNIJhGIwYMQLTpk3DpEmTxJsuksI/MX/+fKxfvx75+fmI -iIhAWFgYLBaL147ncDhgMBgwePBgbN26VXwAIin8B/PmzcP69etRUlKCmJgYKBQKQSRDXchht9sx -ZcoUrF69usH7S0lJQW5uLvR6PYxGI+8MUCqV0Gq1iIuLq5Nts3r1amzfvh3Xrl2DXC5HcnIyxowZ -4zcSTiSFgHjmmWewYcMGmM1m6HQ63kj2FWiaBgBMnz4dy5cv9+g3//nPf3DlyhVkZGQgPT0d169f -h8ViAUEQoCiq0svlGGBZFn379sWwYcOwePHiavc/depUbN68GVqtFlKpFHa7HTabDSzLYtCgQdi2 -bZtIikDAnDlz8MMPP4CmaURERPjd+bnI0bt3byQnJyM6Ohosy8JqtSIzMxNXrlzB5cuXkZubyxv0 -FEVBpVJBJpOBZVnY7fZaCc6yLMxmM2QyGSZNmoTPP//c7e/jx49HSkoKwsLCwDBMpd8zDAOpVIoV -K1bgkUceEUnR1JCZmYnXX38dW7ZsAUmSCAkJ8ftzpmmad+1SFOX2PwB+xm4oSJKEwWCAUqnEU089 -hXfeeQdTpkzBli1bqiWECxzHgaZp/Pe///WZOiWSoo5Ys2YNNm3ahD179kChUECj0QTMtXkqETwe -XAQBk8nESx+VSlUjIVyw2+1o2bIlzp8/L5LCn/Haa69h8+bNyMrKgkqlglwuD8jrpGkaDofDp+dA -kiSKi4sxc+bMSiqYSAofq0dffPEF9u7di/Pnz0OhUEChUDSLa7fb7R7N6N4ERVEoKirCd9991+ir -9iIpSrF582ZcvnwZ586dw4kTJ3D79m0olUoolUoQBNGs7gXHcbDZbPD10OA4Dj179sT27dtFUngT -33//PTIzM5GVlcW/0tPTYTAYIJPJoFKpEBQU1OyI4G37or4wm83473//i+nTp4ukEFIC7NmzB4cP -H0ZqaipomoZUKuVfCoWCdzuKcAfDMI266FgdunXrhl27domkaCiWLFmClJQUXLx4ERqNBiqVChKJ -BKK22PQMb6vViq+++goTJ04USVEfLF26FF9++SVu376N8PBwKJVKkQhN3PDmOA49evTAjh07GuV4 -AZN5t3LlSrRr1w7Lli0DTdOIi4uDQqEQCSEAZDIZv8DnCxAEgaNHj2LdunWipPAEKSkpeP/993Ho -0CGEh4dDo9HwYQ0ihJ2t7Xa7T22vVq1a4c8//xQlRU2YN28eJk+ejDNnzqBNmzZQKpUiIbw4W8tk -Mp965dLS0jwObGx2kmL16tVYsWIF8vPzER4eLqpIjQhfu2o1Gg3S09NFSeHC5s2bMXToULz88sug -aRphYWEiIRoZJElCIvFdvYvs7GxBckSavKT49ttv8cMPP2D//v1Qq9WQyWTi6PQxHA6HT1RVmqZx -9913e9UT5RNSrF69GqdPn0ZGRgY/00dHR6N169aIiYlBREQEOI7D1atXsX37dpw+fRrBwcHNJvao -qcAXrlqKomCxWFBcXBwYpFi8eDG+//57mM1mSKVSsCwLlmXBcRzv1SBJslK8v0wmE9UkkRg89Ho9 -PvvsM8yaNcsr+28U5fCbb77Bm2++iczMTOh0OgQHB9fp9yIh/BcymazRVSmZTIaTJ096jRReN7Tf -eOMNPPnkkygoKECLFi18uggkwjuQSqWN6q5VKBReXa/wqvr097//He+99x50Ol2zjzptDmjMAEKz -2Qyj0di0JMWHH36IFStWIDo6WiREM0FjagEymQzz5s1rWpIiMjISCoVCVJeaEViWhc1ma9TjzZ07 -F2+//bb/k6J///5IS0sTXajNDL5Yu+A4Dp07d8b+/fv9V33629/+hgsXLoiEaKY2RWODIAicP38e -Y8aM8Z2k2LRpE/Lz81FcXAyWZfk85uDgYNhsNixatKhOlbRFiKqTENDr9bBarY1HipSUFHzxxRfY -t28fSkpKKhlXUqkUEokEUqkUQUFBoChKHCXNDL5ORLJarZg/fz6WLVvW4H3Vunj3r3/9C6+//jrs -djtiY2PrvPAmIvBRPiLBV5DL5UhNTRVkXzWSYvPmzXjttdcQHBwMlUol5iqIqBI0Tfs86oAgCMFC -yms0tDdu3AiSJCGTyURCiPArA7sqFBUVed+miI+PF0u/iKiVEP5QBgdwhpvcunXLu5LC1aBQhIjq -4E+TplASq1pSfPXVV+Jag4gmozoBwoWZVLuX3Nxcn6YdimgaUsKfwvqVSqV3SVFQUCCuN4hoMqqT -kEGn1ZIiPz9fJIWIJkMKqVQKlUrlXVLk5eWJpBDRZEghkUgEW1gWbQoR9QLHcX6XJhwaGup9UojJ -QSKagpRwnY9QzThrVJ9EiKhJUvgTXMXxvEoKf/I/ixAlRW0wmUyIjIwUxj6p6sMvv/xSNLJFVDsj -OxwO2Gw2MAwDiqIgkUh83hDHZrMhOjrae6Qwm80iKZopJBIJKIqEzWaDXm/gU0xZlkVc65bo1rUT -WraIRWRkOABnyPaVq+nY8MNmaLVan503wzDo16+f90hhs9lEz1MzgWvWd71omoZcLkfbtvHo26cn -unbpjG5dO6NLchKCgqpfBzh0+Bj0epNProEgCEgkEiQlJXmPFP5oSIkQBlarFTabDYmJbTBm9Ah0 -Se4EgiBAkiRCQ4IRGhaCmGhdneOIunROwu8Hj/pkMpXL5YLZE9WSgmEY0dAOABAArDYbrFYrrFYr -tFoNJk96GLMemYKEhDaCHqt792Ts2XfQJ6SQSqWCqm5VXkFQUJCYR9EE4WoK73rpoiLQ464u6JzU -AUMGD8Ddvbp7zVbscVdX2O12n0RWcxwn2MJdtaTQarWipPATMAwNvd7AOz+qSuhRKpVI6tQeSUkd -0CW5E5I7d0Knju2h0agb7Ty7dU0GwzAgCKLRVW+r1ep99al169aipPAhSJKA2WyBXq9H27bx+L9X -5uO+4YMRHh6GvLx85OUXwuGwgyRIRESEIyoqwufewqAgFXr17Ia09MxGj4SgaVqw8jbVkmLIkCEi -KXwAiYRCYWERDAYDundLxuJFb+He4YPdBllkZAQiIyP88vyHDxuMS5e/glQqbfRj5+TkCDcp1WTR -ixAWJpMJBMEhNEQLk8nEqxl2ux35+fnIzLyBvn16YeMPa7Djtx9x371DmlT82fBhA302mebn53tX -UgBAWFiYT/TDQARN09CXlOCF5+dg3nNPAgBWffgpUrbtht1mQ+ek9hg+dCDuu28IWsTGNNnr7JKc -5LPJtLCwULB9VVvNo0ePHigoKBBHdENuLkGgqKgIrVrF4uOP3kfnzh0D/pqH3z8O2bdzfTLxvPPO -O5g7d6731KfIyEix1lMNYFkWRqMRFoulyr/bbDbk5NzB3Kcexe7tm5oFIVzjxheQSqXerxAYFhYG -h8MhhntUAYvFgmfnPgaaYbBi5Wq3hHmSJJGTk4PWrVrgu3WfoHu35GZ1b2Qy34wXjuNw/vx575Ii -Ojpa9EBVJVpJAru2/4iWLWIxZuwMvsI6SRIw6A3QG/R49ukn8PLiec3SWeHLa7569ap3SdGqVStx -Aa8C9Ho9ft3yLVq2iAUA3LiRBYZhYLPZUFhYiG5dO+P9d/+Brl06N2ungq8glLFdrU0RFxcnSopy -KCoqwozpE9CpY3v+s7lzHoNSKUdCfGt8u/YTbE/5X7MmhHPiMPhQdZNhzZo1DXeQ1FRLNjIyUrCy -IU2dEK1bt8D2rT8IVnArUHHviPHIyS3wicSgKAqLFi3CSy+95B1JAUCw+HRfgCAanlLLMAzy8vIw -YfyDSPl5vUgID3AnJxcSyjfNPzmOE6S2QI1n36NHDzgcjiZICAK5uXmw26z1VgEtFgtioiOxeeNa -rHjvDajVYsuy2sCyLPLzC+AMWvfN8W/cuOFdUvTq1cunfczqA6lEguzsbCxb+iqmThlf7TpCTbON -1WLB60sWYtvWH9CrZ3dxtHuIgoJC0DQDlvOdLer1UvwzZsyATCZrMg+FoihkXL+OZ59+HI/Nmgaz -2VynDDK73Y7kzh3w+96fMWPaRLHuVV1VpzvOlWya9p3XUohJvNaVlqSkJKSlpXlNB6RpWrCoSr1e -j2FDBuD1JYsAAIVFxR6HVNO0A++98zeMfuA+cXTXEzl5+SBJ0qdeSyGOXes02r9/f69dJEmSuHPn -DgwGg2CzxAcrlvEzfGbmzVoXkxiGQcuWMdi7c5NIiAYiNzdPsB4R9YUQNnCtV9CtWzev2RUcx4Ek -STz80MgG165lGAb3DhvoFmWafu16jQ/Jbrdj7pMz8fNP6xARES6O6gbCZDL7nBRCLDjXegUTJkzw -6kWQJIln5szGW2/8H7Kzs0HTdI2+i+r0fJPJhPvvG8pv5+Xlo6REX+VN4jgOEorE/9Z/jmefeVy0 -HQRCXW24JispAECn03nVOM7Lz8djs6Zh946f0KljW+Tk5rrlIlssFhQWFuLOnTtQKmTo1LEttJog -6PV6/iFYLBYMHzaI/83lK2lVPiCHw4EuyR2xb/cWJHXqII5kASGVynxOCiFUfY/0lU6dOuHYsWNe -mVFJkkR+vjNmpWOHdvjh+y9wNe0atqbsxNlzF6FQyNC6VUv07NENvXv3QEi5HgQf/vszvPPeh1Ao -FHj4oQcQHh5WjhTpbg+I4zhYLBa8sngeZj82XRzBXkCH9olwOBw+NbaFIKVHpGjfvj0OHjzoFfcs -RVEoKHAP5GrXNgEL5z9d62/nPz8XYx8ahcwbWehzT0+3v127dp0nsdlsRkiwBt9/87Vb7JIIYTGg -/z1QBzX9sCCPaNWuXTuvGdtqtRpFxSX1/n1cXCsMGti3EmE1GjVYlkVubi6GDR2APTs3i4TwMuRy -Od7959+Rn5/fpO00jyTFrFmzMG/ePO+cgEQCg8Eo+H5nPjIZQUEqDBnUH126JIkjtpEwYfwYWKxW -/O0f70Iulzc6OYRY8/JYAROqIUbli/BOplaL2Bg8/9xTIiF8gEemT8Ku7RuRmBAHm83WqMQQIlPU -Y1IkJiZ6xXgiCRImk0kcSQGGtonx2Prz93h72RIAHOx2e6OQQwi7t06kELIKmwscODBiMlNAgiAI -TJsyHscObceEcaNRXFzsdZdto6pPbdu29YqxLdaVCnxotRq8vex1LFv6KvLz8yCTeq+4gRDlQz0m -hbc8UDTNgBRXlAMeHDhMnPAQXl78AvLyvVdPrFHVp/Hjx3vNm6BQiBltgc8Kp0bw+GPT0aF9W69p -CEKoZ3XaQ7t27bxyMb6qFSSiMTnB8YN2wQtzq2wp0OQkhYsUJSUlgl4EQRBiqmczIgUADB7Ur1F7 -Z3iVFN27d69zemdjiTwR/g2W5dwmwmlTxnlF61AqlVi7di2eeeYZzJw5Ey+//DJ++umnuk3UXB3P -TCaToVWrVoKVMCFJAs89PVsM0gtwmExmtzGTk5OLkQ9OFbyiIMMwVRZFa9u2LWbMmIGlS5cKKykA -oE+fPjCbzYLOIKKkaF7qEwDodFFIFLgZJeBMSa4KaWlpeOONN3DfffcJT4qxY8fCaDQKebdEm6IZ -kgIAJo5/UNAoCVfOv0slj4qqXAF99+7dGDx4sLCkWLRoESIihGsv5aBpkRTNlBQjRwwXtJIgy7II -Cw3BO2//Def+OoiLZw/jxJGd+NtrL0Kr1fDfO3DgAF588UXhSAEAc+fOFczgtlqtbslBIpoPKUJC -gtGxY1vBjqFRB+Hg/hQ89cRM6HROKZGQ0Abzn5+LLT+tQ2hIWYLahg0bhCXFq6++ijZt2giSJO5i -t4jARU0q0oSxDwomLWY/Np0nQ0V07dIZry8pkw7Z2dlYt26dcKQAgFdeeUWQ0jQsyyJEJEWzkxIu -DBncXzCto1vXmiu+j7h/mNv2mTNnhCXFhAkTsHDhQkF6AoiSItBJUf3fwsPDkNSpfYMNboqias2s -jI6OQlxcK3778uXLwpICAJYuXYrRo0c3KB9CqVSIo6YZSwoAmDjhoQZ7NKN1UZDLaw/x6Fauf0hW -VpbwpHAZLPHx8fWut6NRq8VRE+ikQM2kGDP6fiiVigbVKk+Ib+3R98Ijypw61RFRkFWzTz75pN5M -DwnRiqOmOetPAFQqFZa8sgAl1Sy8eYKq1iTqC0FI0atXL4wcObJekY9h4aHioGlklJTovZJFWV/1 -CQDGj3sQd3XvUm9P1IXUyx4dx2gsU/WrCzERLGb7gQcewPbt2+scuqvTRYmjtJGQdSsbBw8dQ2rq -ZXAcEBysRXR0FKJ1UYiJ1iE6OgphYaGC58x4MlgJgsBbby7Bgw9Ph0ajqfMxbmff8eh75T1dXifF -7Nmz8eabb9bJi0AQBGKjdeJo9fIsfeVqOg4fOY6MjBuVJEZJiR6XL5e1WpDJZIiKikB0tIsoOkTr -IhuUp+BpzGl8m9YYPnQgjhz7o05VOQgCoCjSo+OYzRY3tc2rpACAUaNG4ccff/S4NxxBEIgRSeEV -MAyDs+cu4vCR48jJ8bwPnN1uR1ZWNrKyst0GXUhICGJidIjWRUGni0JMjM5thbgBJoUbZkyfiD37 -DtZJWkgkEo8LFpSvMebqge51Uqxdu9ZjUrAsi4gIMcRDSNjtdvzx52kcPnJCsPa9HAcUFRWjqKgY -Fy9eLqd+yEolSZRTDYuOQlRUJGQVBmhdshPu7nUX1OogEATh8e84joNWq/FI7Wt0UowePRodOnRA -Xl6eRydI0zSiRUkhCIxGE44eO4kTJ0/BarXVqGpU1KWlUmkldUUuk4EoF9JPkgQUFX5HSSSQSiUw -mkxIS89AWnoGFAo5oiIjSomig0pVt/x7kiQxfOhAbN+5z2OVzWq1oWWLGI/GXH65usXVSSPBk6NH -jBiBzz77DGoP1h/sdjsiI8VmKQ1Bfn4BDh05jtOnz9cYi6ZQyDFwQF/0uadno/cxrGuG3Yj7h+Hn -Xz132tA0jVatWtQ+3hwOt2Le4eHhjUOKf/7zn1i1apVHpGAYRlD/cnPCjZu3cPjIcd6TVB2kUin6 -9umFgQP6QKHwTfRAXUnRt08vSKUSj0v6syyLli1ia5UUBfmFkEqlcDgc4Diu2hQIr5TRiIuL8yg7 -TyGXV9I/RdQ8uC5fScOhw8eRmXmzZjWEInF3z7swZHB/n+er1JUUMpkMgwb2w6HDxz2SFs6+hbG1 -fu/2nRy3tbTq6iN7hRQ9evTAvn37avUIBInJRXXyJB08dBR5eTUXEiNIAt27JmPo0IEee4f8jRRO -FWoo9uw94BEpWJZFCw9sitxcdy9co6lPANC5c2fs3LmzVlKEiiEeHhHi8y+/wa1bt2smAwF06tQB -9w4bhMjICL85//pW7Bg6uD8IAh6pUBRFQueBGp6X7x7RPWnSpKqlrDduRLdu3Txarg8TM+5qBUVR -mDZlPKJrWPlvmxiPuXMew7Qp4/2KEA0hhUqlwqCB/Wot1UoQBN8RtzZJkZOTy7+vadnAK6QYPXq0 -R2IvSmzT6xGCg7V46smZaN8u0e3zVq1a4InZMzDr0alurZIDgRQAMGrkvbXGaLEsi1ieFDXvL79c -DdvqVCevqU8AEB0djeLi4hq/U13qoIiqjc8Z0ydi6287cfPGLdx772B0aF///GaaYZCXWwC9wQiL -1QaSJECRJIKDtQgPCxEsz6Uh9c6GDR0AkiRqVKEYhoEuKsIjSZGbm1+rke1VUrRr1w4nT56sXkSR -pN+Jen8HSZJ46MGR4DiuzkF7VqsNKdv3I/VSGsxmC2iahlKpQER4GEJCgsEwNBwOGkVFxSgsKoZS -qYQuKgKJCa2R3LkDYqIj60mK+rNCpVJh+LBBOHDwWLWaB8uyiPKUFHllpAgNDW18UnTs2BEnTpyo -9kRJkkS4GDZeL3hKCJZlcfnqdRw/eRqXLqWBoihIpVKoVCpIJBIQBAG7g0afe3ohqZOzEjjHsaBp -GgUFhbiZlY0LF67g94PHEde6BUaPHIrY2LpFINSWYFQbxo8djV27f6+WFAzD8JHWtd2XvPx836pP -7dq1A03T1XqgWJZBWKj3SWF3OECRpCDNPJoKLBYrjhz7CydOnoZWq4VSqURwcHCVlRhpmsHPv25H -ePg0REWG8cZ9VGQ4IiNCcVe3JNjtDhw8fBJff/MTXlr0lCDdgjxF/359EKzVgqtG6rAsy69mEwRZ -i01R6FtJMWvWLLz00kvV3kCHg/aaH91oNOHS5au4dPkq0tOvgyRJtIlrhcTENkiIbwOdLrJJt7St -DjabHYeO/IGDh0+iS3IynnlmLhQKBT7698c1liZlGBZ79h7CtCkPASBA8PM7AYCDTCbF8KH9MHxo -v8Y1KuB0t459+AH88OPPVY4lhmEQ16plrZLCbrejpETvW5sCQI3Fc202GyIE9D7duZOLy1fSkHrp -CrKzb1d6FleupuPK1XQAgFodhIT4OCQktEFiYhuEBAc3aTJwHIe/Tl9AyrZ9aNeuHV555WVE66LA -cRwOHDjokV6fm1cAk8mKIJXcjRD+gFmPTsV363+qkhQqlRKtW7es1ftUsXuSTySFywOVm5tbjaRw -ICwspEED4WZWNs6fT0XqpSsorkODeqPRhLPnLuLsuYul+mUYEhLikJgQj4T41h6HvvsDDAYj1v9v -K8xmK559bh7aJiaA49hSInCVVnFrslMyb95CUseECoQgGjTbC1FuXxcViRH3DcHvB4+5SQOGYdCv -b2/+s5okRcVIAJ+RokuXLtizZ0/VB5ZQ9SrDfiv7Ns6fT8W586lu4tA1U4SHh0GpVKK4uARGo9Gj -51lQUIiCgkKcPPkXCAKIiYlGYkIbJCbEo3Xrll7r9d1QZN64he/W/4zeve/BxEkTQZIkOI7lBzXh -mvA9MMglEklpXJA7IQhwuJWdU2cDW2g8P28OduzaVzphEaW2kwUPjrrPzXlTvT3hJ6QYNmwYdu/e -XSWDq0sFrE41On8hFWfPXURRUdnah1odhBYtYtCyRSxatWyBli1j3IhG0wxKSkpQXKxHUXExSkr0 -KC4uQVFxCYqLS6A3GMCxXCUVODv7DrKz7+DgoWOgKApxrVsiMTEenZM6+FXdW6lEgokTJ6Jvv/6l -5+5OCA5EjV6W8qSQSqUVwm6chPjr7EUcP3Eac56Y5jNJAQCtWsbig+XL8NzzLyEkJAQE4awqPnzY -II88T7fv5PLfI0kSU6ZM8Z1NYTKZqgwjr21xyGKx4MzZizj111ncvn0HUqkUMTE6dOrYzkmAVrG1 -2gISCYXw8LBqBzLLsijRG1BcVIwSvQGFhUVuxCnR68EwDK5lZMJB07i7V3e/khSxsTqE6yov4JWn -RYf27bB7995q92G1WhEcHAyFQoEWsbFuhDh+8jRStu3F03Nm+FR9cuHeYYPw+af/wmt//ydoB42V -y9/kvYq19ThxlWDyZI3Hq6TYs2dPtaSQyar2SmVm3sSJk6eQl1+ImOgo9OrZDa1ajoJOFyl4cxeS -JBEaElytF4zjOOj1BhSX6BEbE10nNaqgsAhSicStBHx1x2iIJ4xlaJCU1G0wc+VUoNjYWLRtm4i0 -tPRKx7Xb7VCr1QgJCUF0dCSkUsq5TuFwYPvOfTh1+jzmPDmdXzH2Bwwa2A8H922t8lnWhPKqdm25 -Pl4lxaVLl2Cz2UDTdKV0x4qLMRaLBVm3boMiSTw0ZqTgbZ/qA4IgEBysRXCwtl6EK9HroVQqayRT -Q0lhMRUhSBsJq9VWxT1zkmPCuIfwxVfroNfrwbJOI1wikUCr1UKtVkOj0WDYkH6gaQbnL1zEb9v2 -IiIiFPOeeRTBWk2D7iHXSA4skiQ8JkVtRRG8SoqioiIAgMlkQnAFVUdVwcOjVCrRrm0CAgVajRpm -sxkGo9GrBaStlhLY7Sas/eYnZN26jeTkZLRv3w6xsTGIjo6GhCKhDQ7GozOnYueu/fwk5VQvJZBK -KLRpE4vNW1Jw5uwF6KIiMPL+weiS3F6Q8+MaiRW1SopyRRx8SgqXkVcVKYLqYGg3FCzLIi+/EFm3 -7iD1Ujpyc/NhsdpAO2iwHAuSJKFRByFaF4E2bVqhQ7v4BoegUBQFuUwGi8UCLiS4RmnAsmyDVEOW -oTFz+sO4fScPV65m4PixI7iTk4fi4hJoNVqoglRQKZVQKhXQ6w0wmc2gHQ5YLFZQEgo5ObeREN8K -zz/zaIPc5L6V6jXfv/Iue5+qTy1btiz1AtGw2dzFu1Tm3VCBEr0BqanpSL2chvRrN6DRqEEQBCwW -K0iSBEmSkMpkUAcF4YFRIxEaEoKsrFu4cuUKduw6iNatYjGgX090aF9/6SWXy2GxWmG322tUB4Wa -TWOiI90C9xwOB/R6ZxSsxWKFxWqFTCqFTCaFXO689uBgjVefQ2NJitpU0PKk8KmkiIuL49+bTCa3 -geGNMAu93ojTZy7i9NlUFBYVo2PHdujduxcenTkdW375DWlpGZWS9y1WK379NQVznnoCQ4YMxtCh -Q2CzO3D8+Als+nkroiLDMHbMvfWSHC5ngt3uqJEUrhpHQt8TqVTq86DLxlOfmggp+vTpwz9ws9mM -0NCyOqUUJZwnKS09EwcOnsCd3DwkJ3XA2IdGIiGhDUiKAkGQuHL1eaEiiAAAIABJREFUGtLSMqr9 -vcPhwE+bNuOF5+eBIAjI5XIMHjwI/fr1w2+/peCjj9fhkWkPo13bNnU6L5dzweFBFqI3SNFc4Fp7 -qJEU5QxtrVbrO1K4iqNdunQJLMvCYrHwi3ZCuFczrt/EsROnEaRSYdiw/kiIjwNJUiAIwk3HPHv2 -Yq37ys8vwMWLqUhO7uzmIRs7dhySk7tAoyIB1K3HH0VRIEkSTA2kcE0ajTWjBqKk8GQs1UVSeL2r -+5AhQ9xUKNdFNHRWLCgoAkEQmDZ5DB5+6H4kxLd22ydX7k2Oh/E/6dcyqgyBa9u2LYJD6xe8KKEk -YBjPik4L2VO6OaE2UjgctFtpm9qiKbxOiueff55XIywWCxiGEURKhIeHok1cyyrIxbmmKP4t7UGX -JZIkYbdXnSR//vx52KzGej4wAizn2WAPRGnROJKi5gm2YqNJn5MiKSkJAwYM4LfNZjNYlkViQpvG -eiy1dl91OJyGcFUV9Hbu3Im1a79GcWFePR8Y6bEE4DgErBrlVVLUkkBWvvy+Sy32KSkA4OGHH3ZT -oViWxZTJ4xrtpiXEx1X7N4ZhQFEUVCoVEuLbuEmbn3/+GXv37sHTT02rd5U9kqLqNNADiRSNdS1U -LZqHq1olRVHQaDS+lxQAsGDBAj7TyW63w+FwYPee3xu8X4fDAbZClCu4yqEFvXp0q1IK0DQNjuMQ -GhoKtVqNjp06AgDy8vLx4Ycf4eSJY3j6yWkICW540TZPpUWl6xHRYJvCarPzE6DBYKg1hKjREgUe -fPBBvsO9yWTCoSMn8MTsGQ0jBc0g9XI60tKu4+atO7BarFBr1NBq1IiKjEB4eDgiI8MRHhaGB0ff -h5TfdvPFdQFnaIlKpYJWq0W3bl1x9MhR/PHnn0hPz0C/Pj0wdeL9Dc5Hrqs/weWJEt2znhOitntV -vicFAP8hxezZs91IceNGVoP3qVIq0DW5I7omO2d4mmGQl1eI3Lx8FBQUIyMjA3+e+gsFhcUwGIyQ -SqUgSaqCF6sADEPj4sULiGvdAl2SO2DyhBFQKnxX94hhWEgkTb/QQmOoT54UpKhYUM1vSDFkyBBE -REQgPz8fDMOgIL9Q8BlRQlGVQh3KPyCj0QS9wYicO4UwWW1Qq5WIjgqHRq3yeWVuNxWKYwE0n+oj -DXrmkrqTojabolHzLO+++25s27YNAJB16xZu3MhCXFyrRjk2QRDQaNTQaNRoERvdeAO81JaoTu+t -ro1VQ4MEm4/6VDspyrcJBoBx48b53tB2YfLkyW7bBw8fC/ynxnH1GtyBYHA3jvpU+701mcwICQ72 -uPZXo5Lisccec9PnDh850Qw4wYEk6nabCTgX/MQ1i9rtCU/U79+27UJxSQkYhkHbtm39ixSAe+Ts -4cPHmwUp6ms3NfWwD29z2hN74of/bcHuvQfcbFu/I0Xv3r3599m379Tapqqpg2W5WsMQqgMjxkLV -Qorq3eU0zeDDf3+GFxb+H/+ZQqHAjBkz/I8UDzzwQLOyKxi2brFeblKF48QgwRruU3X2xO8HjmDw -sDFY9vYHbh1jn332Wf+UFNOnT3czeALdrmBZttbYnBpJxYikqFpKSCqppceO/4mHxj2CCZMfw+Ur -aWWDnCSxYMECfPDBB57t2xcXFBYWhry8vIC3K1yr056qT0QVFSpZlgFNEwGxmCcoKcpVSLlw4RLe -eGs59u47WOl74eHhePXVV7F48WLP9+2LC0pISOBJkX37Dq6mXQuoSh4VZ3mKbNiApmmHx4alf6k4 -3lOdpBIJTCYz3nlvFb746hvQtHsCmFwux6RJk/DNN9/Uef8+WR3q2bOn2/auXfsDU3UqzaMQojeG -w2F304+bM6RSCbam7ETfASPx6X+/diOEVCrFhAkTcOjQoXoRwmekSEpKctveuTswSeFKQ/VkgckT -t60zKrh52xiZN25i9pMvYPaTzyP79h23v40aNQobNmzAxo0b0atXr/pLIs5HK0TlB4FUKsHlC8dr -LTHZ1GA0mlBUXIxona7GKoGuge60QUr/L42B58q9XFAoFE0iipZhmEohFvVFYXExPv10Db759n+w -V5FJmZiYiLS0NGHsFV/dMI1GA4PBUDoD0ti1ez8mjB8TUKSgGbrU+0EIMom4SGOz2arMDwlEXMu4 -ju++34iNm36tRLDyWY0JCcLZpD6LOGvfvn3Aq1C8oV2LTVHXWZ9lObdEfP81tBs+GTz62HP4et2G -SoS4/76hbtUMdTpd0ydFYqJ7o/S9ew8EnCHJClSkoTrVxOGg/fr6hajacv99Q9y2kzt3wvfffIaP -Vr2DwsLiwCZFUXEJTv5xOuAkRV2DAeu2f7qSK9Lf0FDP28gRw0GSJIYM6ocv/7sKWzatwz29eyI/ -v8DN6RARIVy7AJ/ZFPHx8ZU+27FzL/rc0zNwJAXHNniNorw9UR0xSJLw29wLiiJBN0Cg9ezZHXt3 -bubbArtQvv2v0KTw2Z3s379/pc+279gTYJKCEcTIrg3+7KolGygpKJKsRAgnKfLdtkMF7MnuM1Ik -JSVVKgpwNe0arl+/EVDE8GQGr0nv9lQnd1Um8TtJ4SUJlldBUkyYMKHpkwIAoqKiKkuLnXsDihRE -I6o1NM34HTG8pdbl5pVJitr6TTR5UmzekhJgkqIB6pMHUqI8CThwfhdV6wzxFj5mq7CgTFK4aooF -BClCQiqXszz111lkClD+xl8GhC9yrf1NWgjZdoGXFLllksKTtshNmhQcx2HLz4EhLSSUpMYy/MJK -JApSiQQSCeV3ISDekBR5BQWBLynKd0/d/PNvAUEKqVQCm91er5mbQO0DmyAISCRSyOVyvyRD2XkK -P8zKu2SFdMf6nBTl3WjlV7PPn09FWnpGkyeFTCYDx3GVinE1WAJJKMjlcp4M/g5vqE85ObmBKSnK -L81XzFDbtHlrkyeFsrQtsl5vbPiDIklIpTIolQrIZLImVShNiHCP8rBYrLBYrIFPCgDo0KFdmQoV -AF4oiYSCWq2G3WGvVOS3NrXIzVaQSiGTyfxaRfKEGIJJidxct+2AUp9mzZrltt2xHCmupl3DhQuX -mjwxQoK1kMtkKC4pqdQ8pHpSOFUOmVQKiYQKiPKZQqpQFUM8AkpSAGW9tp16Yp6bp2JTAEgLgiAQ -EREOuUyGgsJCFJeUVGt4u8q2uBpIBhKElHB5+QVu24MHDw4sUpRv/XXk6Am3AgZbfvktIEpHkiSJ -yMgIhAQHw2g0IScnr1IfNlfD+0DtSyEkyXPLNfakKMqt6mRAkGLixIluWWRXrqbz7zMzb+LPU2cC -ZqbUaNSI1ukgk8tQUFgEvd6A5gIh3bL55SRFVWtdTZ4UEyZMwLx58/jtitGe363fGFCDQyKhEBYa -gtiYaN471RwgZLTwreyyggWRkZGBRwoAWL58ORYuXFil6rDl5988NlCbmjpRUzEDF7gKxQuqejU3 -m+LmzVv8+9jY2MAkBQCsXLkS7777bqW4eIPBiF+37mgWsylXWjvW9WIYxm3b+RlbxWdl32tKRKkv -bjQXUgDAyy+/jMLCQsydO9ct1+Lb738MeBKUDWwOLMuVDv7S9yzLv1iu3PvSv7u/3AkTaAQxmy1u -NkXAk8KFTz/9FNOmTeO3jx3/AxkZmQEpDcoTwDXoWZYBV/o/yzLgWLbKl+t7HFf6O86dKC6p4Q/k -EEp9Ki8lAKBFixbNgxQAMHr0aP5GchyH7zf8FEBkKCcJXIO6dPCzpRKjourEMGWvitKALU8WjgUH -zo0gTc3+qAnXMq43X1JMnjwZ3bp147c3/G9zkyyBU5EMFYnAlhv8vMRg3NWoikQo//fyahMvFVjW -WV0QnHvVQR8SQ6jjXrp0hX+vVCoFTUP1e1IAzob0Lty+nYN9+w81KUJURwauGvWpvIRgGMZNWjgc -DhgMRhQVFUOvN8BstoCm6UrHcBv8fkQMoY554eJl/n3FMknNghTLli1DUFBZf+umsmZRXo+viQwG -g9GNBBUN5PIvkiShUimh1WoQFKSCTCaF2WJBQWERcnPzcfPmLVy9eg137uTxudrVEcM390SY/aRe -usq/b9eunVfOVeLvA2z48OH45ZdfAAA7duxFQUEhwsPDmgAh3AsluwY6w5TO+kYTtBp1lTM3h5pH -kCsBSaVUQlW6AOiyv3Lz8nHs+J+wWC1QKhRITGiD2NhogCT537mO15ghJa62BA1BYVGRWx6Ft0jh -91Fn5VUou8OBDT9sbjqEKCcdDAYjUi9dRVFxCSQSCUKCtW5Fzrhy/8rPruVf5UlTkTiuLqzRuij0 -7dMLw4cOQocObXHh4iV89vlapPy2C+npGT6zy1gBjnv8xCm3bW+Rwmel+OuCxMREXLt2DQAQHx+H -44d3+F0UaZWE4DgUFRUj9dIVhIWGITGxTSW9viIJPHpoRGWp4Zr5XS9ncGFZ8YRLl6/i8JHjKC7W -o0OHtujcqQM6dGjXaJl7JpMZdAPz1Rcufh2//LrdKSVVKphMJq+cq9+rTwAwduxYrFy5EgCQkZGJ -PXsP4L57h/gVISr2lrBYrNh/4DAkFIUB/fuAoiieOFWpSS5C1DRHlbmoy4jBgas1n1sioZCc3AnJ -nTshLe0a9v1+COvPXoBaHYRuXTujV8/uiIyM8Oo9aqiEMpst2FWuMr3Q4eJNTlIAQFBQEMxms9PO -GDYIP3z/hZ8Rosyo/vPP07hw8RKGDxuEaJ2ukuFcnhBualGpCuQa8ATKZn2XN8s187v2w3IcKJJ0 -sxMkEuf3KYriJQcIAiRRJj2uXE3Hr1t3QK83gCCA3nf3xKgH7vWKBKZppsGz+pafU/Diy//gt1et -WoX58+c3b1JMmjQJGzc6vU8kSeL44R2Ij4/zC1K41Ka8vAL8snUbEhPaoF/fuwEQVa4qc+BAkRQk -Eqp04JJ8kWSr1Q6r1QaL1Qa7zQ4HTYOhnWsatbp0KhjOFEVBrpBDoZBDLpNCJpdCqVDwEas2mw1b -ft6G8xdSnRL54VHo2aOb4PfIarXCZmtYP41HZz/Lt5eOiIjgG4k2W/UJAMaNG4effvqJH2Bfff09 -lr3xf35BCgD46/RZHDh4FOPGjkKL2BieKOUlgEwmBUW512ay2R0wGkwwmS0wGS1gGBoEB0gpElIp -BQVFgZJSIEk5n5VIACBKBzZFks6qgER5yQV+kc9mt0NvNsNBO79DSqRQqRTQaFQI1qoxaeJD0BsM -uHEjCzabzSv3x253NGgfaekZOHL0JL89YsQIrz7TJkOK6dOnY9WqVTh50nlzvt/wE159eT6CglQ+ -J8TuvQdw7txFPDZrGrQatZvdQFGkWykammZQojfCZLLAZLKAttsBDpBJSWiVCigVashlUsHdpRzH -wWpzwGZ3wGyx4HaJAXeoPETpItCqZSxu3MhCbEy04PfIIUDh56++/p7fB0VRXlnFbpKkAJwJSS5S -lJTosWnzVsx8ZLJPz2nvvoM4fPg45jw1y9nI0vXwJBJISnOtbXY7SgqNMOiNMJstYBkWMgkJlUIO -pToYCoUMpAAksDtoMAwLgiRAgODVJIJwmuJKhQxKhQwURcKcX1wqeTicO58KjUaNuLhWgt8fewPV -psLiYmwpVxxv8ODBGDdunFefaZPKjn/llVfcyuJ8/uU6n57PwUPHsP/3wxg6ZAB0UZGlA9ApGaQS -CYwmCzJv3EZ62g3kZOeAsdsQrg1Cm9hItIqJRHioFiqlvM6EsDtomCw2mCw2mK12mC02WGx2UBQJ -pUIGhUwKuUwCqYSCVEJBQpGgKBImsxU3b+chr9iAkPBQxMe3wLbtu6HXG9Dnnl6CSye7w9Fgr9O3 -3/7PTa2bOnWq159rk5IUADB+/Hh88sknAICLqVdw5OgJ9Ovbu9HPI+tWNnbv2Y8WLWIwoP89zkoc -pYUHikuMyMsrhMNqg1xGIVwbBHWQss6DnwNgtdrLbJNSj5VcJkWQ0rNHx3IcjCYLig0m0CwHVZAK -sZFhIMBhww+bcC0jEwqFHPf07iH4PbJZG2ajlOj1+Orr7/ntLl264KmnnhJJUREff/wxvvrqK372 -+OzztT4hxYnS1dWxD41yrkEAKC4xIC+vCLTNDqVCiihdGOQyqUf7YxgWVrvDueZAlBnnSnn97Aua -YVBiMMNgNIMjSQRpghAeFgJ1kBJZt7KxfsMmvnDCvcOHQC6XCysl7PYGd1f6as13bkXkZs+e3SjP -tsmRAgCGDRuGbdu2AQBSftuF8+dTkZzcqVHPIS09Ax07tkd0dBRK9Ebk5BaAttmhkEmhq4YMHMfB -ZqfBVBgsRKkBGaRs+MC02R0o1ptgstpASiQIiQhDWFgw5DIpWJbF7weOYO/+g2BL+1jExkbj7l7d -BTfqbQLYEmvWrue3u3btioULF4qkqA5Tp07Fjh07+Jno1deW4dct3zVagFt+fgEMBiMSE9og88Zt -mAxGKGRSxOjCIZVKQNMMrDYHnzLqPC0CJEFALpNAQUkFPyezxYZivRFWOw2pQo7oWB1CQzT8Ylxe -Xj5+2rwVt27d5n8jlUoxacJDgi/YCSElPvroM5hMZn77ySefbLTx1SRJ8eijj2Ljxo349ddfATjT -VTdt3ooJ48c0yvFz85w5wgqFAmazFSzDQK3S8O0EJBKqUWKKGIaF0WxFicEEmnPaC61iddCoVfwE -YTZbcODgERw9/gcvHVx4aMxIRESEC3xODKwNtCWupl3D+h828ds9evTA888/L5KiNvzyyy/QaDQw -Gp0659Jl72PkiOGNsm5RWFjIk3HG9EnIzy9Ggd6EgmIDNColVEo5ZDKnS1ZoOBw0zFY7jCYLbDQN -giSh0WoQFqZFkKqsjhRNMzh+4g/s//1wlYN00MC+6N4tWfDzayghAODtd1by/cFJksRzzz3XqGOr -yZLCJVJXrVoFwJmZt3LVJ/jbay96/biuB5+V5fRAPTzmAdgdNIqL9SgpMUBfWAKwztYCFEVCVtph -SEKRkFAUpFKJM6yjNLyjSq8Ry8JBM3DQDOx2B6x2B+wO2qmOSSgEBakQplZBq1W7SSWbzYY/T53B -4SMnqq1A2LfP3bh3uPABdTabrcGRsHv3HcDBQ8f47ZEjR+Lxxx9v1HHVZGKfqkObNm2Qmems9CGT -ybB312a36uXewI2bt/DFl+t4V2mnTu0x7uFRfMU/h4OG1WqD1WaHw0HDbnfA4aDhsDvAuZJtWKeD -lSD4CA0++pVlnW8IkuAbKSpVCigUcigVcgQFKSvZAcUlJTh69CT+PHWmWiOXIIAhgwdg2NCBgt8T -IYL+zGYLRo6ejFvZTrtHqVTijz/+QFJSkigp6oIFCxbwXgm73Y4XFvwffvv1B6/q9K1btUDPnt3x -xx+nAQCpqVdw8+Yt3Dt8MO7q3gVSqQRSqQQaTVAlrwxNM6BpZ/41U5qGWnFaIkkSVGkFQZlMUm3P -OJZlkZaegT9PnUHqpSvgamg6SVIkxj40Cnd17yL4/eA4rlLB6Ppg1Uef8oQAnK0aGpsQASEpXCJ2 -x46yKoKv/d8iLJz/tFePaXc48Olna5CX514WPiQkGL16dkfHDu2g00V65dg5OXk49dcZnDuf6lEz -GLlchmlTJiAxsY1XzkeIBKILFy9h3MRZ/Ap4QkIC0tPTfTKeAoIUgLPQbn5+fqOqUQWFRfhqzXfV -6u5BQSrooiIRHR2F6GgdwsJCERYaArU6qE7uY5pmcOPGTaRfu46rV6/h9p0cj3+r1Wrw6CNTvEZQ -i8XS4ChYmmYwbtKjuFhaqYMkSXz88ceYO3euSIqGYPny5Xj55Zf57W5dk7Hjtx+97hrNycnDV19/ -V6ci0CRFIlirRXCwFkFBKshlMshkMsjlMn5l2WazwWQ2o6iwGDdu3oLDUfeBF62LwsxHJjsDFb0A -m80miLfp36s/x6qPPuO3x44di82bfZeLHzCkAIBRo0bxK90A8NKL8/DKSy94/bi5uXn4et2GOvW1 -8zbatU3A1CnjIJPJvKM+2u1uzRjri9TUKxg36VE4HE71KyoqCjk5OT69dwFFiopqFEVR+HHDVxg0 -sK/Xj1tSoseG/21GVla2bx8oAQwa2A/Dhg70WnEHoQjhoGmMHT8Tly5fLT13AitWrMCiRYt8eg8D -q7EagCVLlvD6OsMwePq5xW7toLyF4GAtnnz8EWfELOmbFl1yuQxTp0zAvcMH+z0hAGDlvz7hCQE4 -6wf7mhABKSkAZxjIN998w28PGtgXP274qlrXptDIy8vH1pSduNaIldLbt2+LMQ/ej5DgYK8dQygb -AgCOHD2JWY8/x8dI6XQ63Llzxy/GT0CSAgC6deuGs2fP8tuvvPQCXnpxXqOew63s2/jjz9M4d+5i -g6NGq0ObNq0xZFB/r7lbXRCi+IALRSUlGD1mGl/tjyRJfPTRR40eztHsSJGSkoIZM2agpKSEty82 -fPc5hg4Z0OjnwjAMsm/fwY0bWbhx8xby8vJRUFhUKUDPUwQFqdA5qSN6393Da65WFziO44s5C4Wn -n1vsVsNp5syZWLdund+MnYAlBeBsGbZ48WI+6V2r1WDPjk1+URqHYRgYjEYYjSaYTGaYzRaYTCa+ -oJrVaoVEIkFObh7vvweAoUMGYOiQAY0SJs+yLMxmi6ClNtdv2ITX//FPfjspKQkXLlzwq3EjQQBj -0aJFOHfuHL7++msAgF5vwLRH5mDnto1e8917CoqiEBIcXKsNcOVquhsprFZboxCCphmYzWZBq5Rf -y7iOt95ZyW+rVCr84x//8LtxQyLAsWbNGgwcWBYAl5aegTlPL2wyDWBCQ9xJU6LXe/2YdoejVGoJ -RwiLxYoXFi6B1VrmuVq4cCEmT54sksIXOHDggFuDj917D+DNt1c0DVKEhroV/vP2AqHVaoVF4BbN -DMvipVf+gdTUsi5Ew4cPx1tvveWX97xZkAIA3n33XYSEhPDbqz/+EmvKVYrwV0gkFDSaMlWvujgr -IewHo9EkuJeMA4elb76HbTv28J/FxMRg9+7dfnvPmw0pJk6ciGXLlrm1In71tWXYXu5h+SvCwsp6 -ixuMRsG7ETkcNIxGk6AqpescV3zwMb5fX9bEU61W45133vHr+91sSAEA8+bNc6tUzTAMnnp6Ef48 -dabJ2BUsw7ol9DcUNptNUIPaarXx5/f5l9/g0/+u4f+mUCjw7rvvYtasWSIp/AnLly/HE088Uc4A -tGD6zLl+3ae7vKQAAL2h4SoUyzrJJdQKNcMwuHnzFux2O4KCVFi/YRPeW/5ROTVQgjfeeMNvFuhE -UlTAF1984VaPtKCgEJOnP4mCgkK/PN/wsFCQFAmKcpbuNxoblvbpTB01C7Ygdz3zBjIyMtGiRQy0 -Wg2+XPMd/v7Gu249M1577TW30H6RFH6ITZs2YcCAstXtjIxMjJv4KEpK9H53rmHhoZBJpaXpqdIG -qU82mw0mk6nBdZkAIC+/AMdPnEJIcDDatk1wJgd9ugb/fPdfboRYuHAhli5d2mTGRrMlBQAcPHjQ -LQf4YuoVTJ72hKA6uzA2RQikUimkUikkEkm98qGFVJfMZjOOHf8Debn5uLtXd4SU2jwrVq7GB/9a -XTa4SBKLFy/GBx980KTGRbMmBQBcuHABcXFlYR9/njqDR2Y97ZUGJvWFSqVEkEoFqVQKuVxWpyw/ -IdUlmqZx/kIqjp84hU6d2iMpqQNIkgTLsXjrnx/gk8/WuBFiyZIleP/996vcV2ZmZgeRFH6M1atX -IyYmpkyCHDqGJ+YsgN3h8JtzDAsPhVwmg1QirdNsb7fbG6wusSyLaxmZ2Lf/EBRyOYYM7o9grbbU -UWHFc8+/4lb3VSqV4o033sCyZcuq3WdcXNxlkRR+jNGjR2PVqlWIiCjrELp9xx48/cyLfJqkrxER -HgaJVAKpTOqRFHOVnWloQlBObh5+P3AEeXkF6N//HrRtm1DWyD43H1NnPIWdu/bx35fJZHj77bfx -+uuvN9nxIBEp4cTkyZNhs9nwwgsvoLi4GADwy1Znz+bPPlkJqdS3tyo4WAtZ6cKjoxY1SIjo1hK9 -Hpcvp8FgMCKpUwfExOjc/p6aegVPzl2AO6U5EYAzJOXdd9/FnDlzmvRYEElRDjNnzoTdbseCBQv4 -GrW/bN0ODhw++2QlPyh9gZCQYEikEhAE4SykxjBVZhI2NLrVZrMjLe0asm/fQYvYGPS4qytfONqF -nbv248WX/+Zm28THx2P58uVe70cnksIHeOKJJ0AQBObPn88T49etO8CyC/D5Z6t8RgyNWs0fmyAI -WCxWqNXuFQjtDke9g/lomkbmjSzcvHkLSqUSd/e6i/cqueBwOPDein/j67Xr3UjXu3dvHD9+PGDG -gGhTVIHHH38cH374IdRqNf9Zym+7MPuJ531mfGs0aqdbViar0q6w2Wz1IgTDsLh58xZOnDyFnJxc -tGuXgN53VybEzaxsTJr6ONaU61QKOGs0BRIhRFLUQoyPPvrILUJ1x869GD9xFi6kXm50cqhUSshk -MsikUsikMtjsZdGsFoulzusPDMPg9u0cnPrrDLJuZUOni8Ldve5Ci9iYSklMu3b/jofGzcC586n8 -Z0qlEq+99ppPi5Z5CwGdjioE1qxZgwULFkBfLrmnX9/eeGTGJLRsEYP4NnHQ6SK9VlKmPA4cPMpL -iPbt26J1qxawWKweVw+kaWe7gOLiYhQWFYPjgPDwULRsEQuFonJrMb3egHfe+xA//vSzm3RISEjA -W2+9hWnTpgXkMxdtilowe/Zs3sZwEePI0ROQy2V4es5jOHb8D8jlcrRu1QKtWrVAcLDWqyoUwzAg -CAIOh6PWggI0TcNgcOaB6/UGWKxWXgqEh4chNiYaSqWiyt/u2v07/v7Gu5VqZo0aNQopKSkB/cxF -SeEhvv76ayxYsICvDuKSGMvfXYqbWbf43GmtVoNWLWMRGxsteMnKq2nXkJubB45zVvRIqFCAwWKx -wmx2FkEwGE2wWa1wpe0RBMGfX7QuqloyFBQUYumb7+O37e70+8dvAAAECElEQVRJQGq1Gi+++GKT -imESSdEIWLt2LebPn+9GjA7t2+KT1SugUimRmXnTLRDOORvrEB4eJkghtuzbd3DzppOACoUc0dE6 -WEqrgFhtNjAMy0sCl1lAEAQIEFCrgxAVFVktGRw0jXXrNuA/n3xZKbtv0KBB+OCDD9CrV69m8ZxF -UtQR69atw/z58/kFPsC5irtw/tN4eu5juHXrNnJz8/k+2ARBQCKhEBYWCglV1ijSNWrLLwpKKIof -1GS59xRJgiRJFJeU4EZmFt9knicAnMdBFYRQKZWIiAyHSqms9pp27tqPd5d/iMzMm26fh4aGYtGi -RU16dVokRSPh22+/xZIlS3DzpvsgapsYjzeXvorBg/ohO/sO8vILSmOOCLcZnCin0pRXbSp/XjbT -MyzrVgmj0m/hTgiFUoGw0BCoVNU3xvzrzDn8851/4dRfZyv9bcSIEdi+fXuzfL4iKRqAMWPGYOvW -rZU+v6d3Dyx44WkMGzoQJXoD9CV6mExm2B2OatWbioQATxTnKrW9/LpEtWQClAoFgoODq/QmufDn -qTP47PO12LvvYKWV7zZt2mD+/PlYsGBBs32uIikaiA8//BArVqxAVlZWpb+1TYzH47NnYOxDDyAq -KhI0zZSuKVhhtdngsDvgoGk3O6TiYKcdNKw2WxmJ4P4dEAQkFAVVkBLqoKBqbRcOHPbvP4RPP1/L -9+orj/DwcDz22GNYsWJFs3+mIikEwrPPPovvvvvObT3DBYqiMKD/PRg/7kE8OOr+Sm5bh4MGTTs7 -qDIsC5ZlwbEsrDY7zKWlNHkBQRAgSdK5ui2RQC6XVYpNKg+bzYaUbbvw+Rff4srVtEp/l8vlmDp1 -Kl9FUYRICsHx+OOP48cff+TjpipCJpOhzz090eeeXujX92706tkdCkVljxDDOBOD6vt4/jp9Fhs3 -bUXKbzurLKAml8sxevRoPPLII2756iJEUngNCxYswJYtW/ge39VBKpXgru5d0a1rZyQmxiMhPg4J -8XEICQmuU81Yvd6A9GsZOH7iFDZt3or0a9er/J5Go8H48eNFySCSwnf4+uuvsWvXLuzevRu5ubke -/04mlSIiIhxarQZqjRrBWg3kpYuBRpOzcBnLssjPL8St7Nu1pqhGRUVh8uTJ+Pe//y0+FJEU/oNP -PvkER44cwZkzZ5Camipoz4eqIJFI0L9/f4wZMwYvvvii+ABEUvg//vOf/+D06dO4cuUKbty4gezs -7Hq1Bq6IxMREjB49Gh9++KF4k0VSNH1s3LgRmZmZyM3NhV6vh9FodHsRBAGFQgGCICCVShEUFITw -8HDodDpERkYiJiYGkyZNEm+kSAoRIoSDmGQkQoRIChEiRFKIECGSoinDn8tJNhf8P8eYCqRSXL8J -AAAAAElFTkSuQmCC - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Emmental - - - - - - - - confirmed - - +Funghi - - - - - - - - cancelled - - +Insalata +Pomodori +Cetrioli - - - - - - - - confirmed - - +Insalata +Pomodori +Uova - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Pagamento: 5 buoni pasto (6 €) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/ja_JP.xml b/addons/saas_demo/demo/ja_JP.xml deleted file mode 100644 index fe428064abc..00000000000 --- a/addons/saas_demo/demo/ja_JP.xml +++ /dev/null @@ -1,1209 +0,0 @@ - - - - - - ja_JP - - - - - - 佐藤さくら - - - demo_jp@example.com - Asia/Tokyo - none - - - - - - 佐藤さくら - demo_ja_JP - demo - -- -佐藤氏 - - - ja_JP - - - Asia/Tokyo - 0420100000005 - iVBORw0KGgoAAAANSUhEUgAAAMkAAAD6CAYAAAALKGMGAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAA -AAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wLFQ8BKwfEb3QAACAASURBVHja -7Z15eBzVlbffW1W9qNVaLGuzLMuyZFteMd4wxgEbg1nCDiFhCHsgTMKXAGEymYQQksyQyQRCNoYA -IUwIhLCasITNG2C877slW7YlS7Y2a231WlX3+6PbtmTJ1i51S/U+Tz+W5O7qqlv3V+ece889V0gp -JRb9zoEDB76Rn59fCpwLpAFuwBX5t+XrTHgBT+TV8udGYAOwUUp52GrtniEskfQtHo/nxYSEhKXA -TCCzxSs18upLGoEqoKLFv3uAxVLKcuvuWCIZmAYVYiJwLTAZGAvkAelRdpr1wCGgKPJ6S0q5xbp7 -lkj6UhjfAuYDUyKicMXYJQQjotkLrGxqapridrtvt+6sJZKeiGIkcBcwNyKMnEF2iRXAdmA98Ccp -ZYklEovOiuP7wKXADCBliFx2LbAT+FRK+RNLJBbtCeN84F7gvIgrNZQpBVYDz0opV1giscTxKLAo -YjVcVou0wgtsBj6UUj5miWToieMJ4EpggtUanWI/8IGU8ruWSAYxkbmMJuAywsO2Ft0Ty/tSygcs -kQwiIrPecyLiyLH6ea+J5V0p5fcskQyOmONWy3L0GTuB30kp/2SJJPbEcSPwEOGcKYu+xQ8sBx6U -UhZaIol+cUwEHgcWYo1W9TdHgJellP9uiSR6BfJL4A7CiYUWA8da4F4p5TZLJNFlPf4IXAAoVh+N -CkqBX0spf2eJZOAF8gPgPqxRq2iNVd6VUn7VEsnAiGMk8GfgYkCz+mNUsxn4lpRyXTSfpDLIBHI5 -sILwvIclkOhnBvCGEOIGSyT95169CIy3+l5MkQM8K4R40HK3+lYgfwFuApxWn4tZPMBz0ThTH9OW -5KGHHioQQnxKeHjXEkhs4wa+K4R4xbIkvWc9pgF/I7wy0GJw8YqU8mbLkvRMIHOBNyyBDFpuEkK8 -bImk+wK5KGJBrAB98KIANwshnrdE0nWBXEF4DiTP6kdDQih3CCGesUTSeYHcCPwJyLX6z5BBA+4W -QjxiBe4dC+Qa4FmsBMWhSj1wj5TyDUskpw/S/2a5WEOeQ8BVUsodlkhaC2QM8LEVpFtE2Kzreoqq -qv3qckd7TPKWJRCLFszQNG2vFbiftCKvE06As7BoySWR+gRDWyRCiO8AV1v9weI0ffZbkVi1X9Ci -UCDTgPewcrEsTk8m8JuhbEl+h7Wa0KJjzhVCPD3kRCKEeAj4knX/LTrJLZE5tKEhkgMHDnwD+BbW -ikKLzpMI/HDIiCQ/P/8irGqKFt1zux4d9CIRQhQAl1j326Kb3C6EGDHYLcnP6PudaC0GL3n04WjX -gIskYkUWWvfZoodcKYRYNFgtySNE3xbOFrGHm3Ah9EEpkvOs+2vRS1wghLh0UIlECPFDrBR4i97D -Bdw/2CzJpdZ9tehlFkTqIMS+SIQQ04FzrHtq0QfW5MFBIRLgTqzNdCz6LjaZPhhEcpZ1Ly36iETg -O711sAHJk4psj7DDupcWfUivJcoOlCW5DUix7qNFHzI+klUesyKZaN1Di37gqlgWiZXta9EfnCOE -mB2rIrFWHlr0By7Co6ixJZJIElqWdf8s+okZMScSYBbWdtEW/ceUSHGRmBLJSOu+WfQjbuAbsSYS -a3GVRUy5XJZILIaKyzUylkRi5WtZ9DfJwFdjSSRWZUaLgWBmLInEqqtlMRCMjyWRWO6WxUAwtrtx -iTVfYTFUSAG+Eisi8Vr3y2KAmBorIjGte2UxQGTHikj81r2yGCCyYkUklrtlMVBkejyeF2NBJDXW -vbIYINITEhJeiQWR1Fr3ymIAmW+JxMLizKTGgkjWWffJYgBJjnqRSCnfASo6+/68zBQumJyLENbd -jXaEABH9N6rLIhmoPKpSwtsMd8i0MZl8+4pz2H+0lheXbmFt4WGrN0YJ+SNSuHDqGCblpJM/IgWX -w0ZINzhUVc9Hm/bx/oZCTFNG22kndln8Usp+vwohxOt0MnX5e9fN4/KZ4078vudwNX/+ZBPbDlZY -vXQAyEpJYOG0PC48K4+ctKQzvnfDvnJ+8vIydCOq5o/3SiknxIIl2dvZN47JGNbq94mj0njiG5ex -ancpz328kSPHGq2e2w9u1PS8LG6YN4nZ47I77frOHjeS2y+awZ8/2RjT7tZAWZIxwJaOTlgIwbuP -fB2nvX0t64bJe+v38tdlW/H4g1Zv7mXsmspF0/K47rxJbR5WnQp4NRXFFsclP/gjId2Ilsuq0XXd -o6pqblRbEinlQSHEajrY5UoRgqSkJAI+L9BWy5qqcN3cScyfOobnP97I0q3FSGl17p7idtq5+twJ -XDd3Esnx3VsjZ7M7cMSFV0XMGJvNur0l0XJ5mqZp86WUJVEtkgg7OxKJy2HDZrejahp+bzOmobf7 -vhR3HP9+w/l8edZ4/vDeOg5UWFMx3SHFHcf18yZz1TkFuBy2bh1DEQoOVzyqdrJrzZ82NppEYu+y -qgbwZF8D7jjTSQ9PjA83vKLgcicQCvgJBnyntRZTRmfw9Lev5L31hby4dIvlgnUhGL/x/ClcOn0s -Nk3tngsNaA4HDocr/EvL+5I7IpouV6OLI1wDJhIp5TIhxHrOsNvV+FGtN+W1OZyoNjsBnxdDD7X7 -GVVRuPbcicyfksufLBfsjORlpnDTBVOYP2UMitL9+Q1N07A741DU9rtTSmJULUa108X5wYFeb778 -dCIRQnD+1LZ7jiqKQly8m1AwSNDvQ0qThmY/lfUeGr0BmnwBDFOSnhTPrReezaXTx/HU+2s5VFVv -qSLC1NwMbrpgapdGqtp9IKkqdmccqnZm18xhi7qyBskxI5Lvfe97//fkk0/ewWkmFrPTWl9Ldb2H -ZVuKKK9p4GhtI0dqGjha24A/qJ8xCJ08Op3MFDdbiyvwh/QhKQwhYM74Udx0wVQmj07v0bEUVcXu -iEOzdS5uMaJvQrFL8wYDMgR8isVYDFzf3v8t+dW3ccc5Tvy+61AFd//6723cq/RkN2lJLpJdThJd -DhRFUNXQTFV9M4eq6k7M+goBCXEOGr2BISMOh01j0dn5XD9vEqNSk3p0LFXTsDviWgXlnaGyrolr -f/J8tDSJF5gupSyMFXcL4DFg4akm0GHTWgnkuGW567I5jBieRGZKIiNSEslMSUBVFCSgBwPhwL7F -k8sbCLH9UAXrC8v5bOfBEwLRFAXdHLwriYcnuLjm3AlcMbuARJejRyZIs9mxOxwoSveC+iiaIwEI -0sXVsQNuSSLW5F3g6pZ/G5maxJuP3tWdEQGCAR/BQJBT51Z0w2RdYRmL1+xmeyStRQiBHESR/fiR -qVw/dyLzp45BU7ufv6qoKjabA81u73HS4sbCUr7z1FvR0kQ1UsoupctHS0T138ACWgzNjUxN7q7i -sDtdaHYnwYAfPXjStdJUhXmTcpg3KYc9h6t57fMdrN57+IQrFqtaccfZuWhaPl+eNY68zJ5sRSmw -2e3Y7PbTjlR1h90lUZVn1+UaC1EhEinlmlNjk3Ej03oWXCoKzjgXpt1BMOBDD7UeMp44Ko2ffn0h -pdUNvLhsCyt3HYopyyJEeF7oitkFfGnSaBw2tdvH0mw2NJsd1WZD0Pup7sVHj0VT0+kxKZII3yFc -Ij9XEYKCUem9clBFVXG63BiGQSjgxwgFWzlhOWlJPHLTAorKa/jzJ5vZXHwkqmOWUalJzJ+ay0XT -8slOTez2cVRNQ7PbsWl2+nqxTmllVGVAeGNWJFLKciHEz4EfS1BGpSf36vFVVUV1xWMaToJBP3ow -2MaX/587L2Fz8RH+9NFG9h8N39jkeOeJuZeBshj5mSnMKRjFBVNGd9udEghUm4Zqs6GpdoTSf4uj -jtY2WSLpRaH8RAixXUp51qi0YX3yHYqq4oyLRzriwjFLKNAqFpmRn8XT376K5dsP8sKSTVTVNyME -TM5JJ9HlYEdJJR5f36a7ZCS7mZKbwbTcDM4pyGZ4QvdmrIWioGk2NM0WHrYdgFWDppQ0ev2WSHqZ -I/FO+1nxTnuffolQFBxxLhzOOILBIHoogGkYJ+KSi6bl8aVJo/nH2j28+tl2dpVWoakK15w7gQum -5HKosp49h6s5WFFHRb2Hhuaud4REl4OUBBc5aUmMyRjG6PRkJoxKJS2Ss9Yde6FpGkpEFKqqDvjN -3F5cHm0x3qAQiTc9OaFf/Rm7w4Hd4cAwQoQCQfRQ2FI4bCpfO38Kl80cy8vLt/H+hkLeWrWbjzfv -5/ffvIIvzzpZzd8bCFFV76HBG8Af1PEHdTz+IIqA44J3OWzEOWykJrpIccd1O5mwtRupoWgamqZR -0+jjcEUtFXVNHD0Wzkqo8/iob/LhDQQxTJOEOCdul4PMYQkUjEpnwqgMCnLSsfWRoFZs2x9t/cs/ -GETiz23H7/b4Ajz/0QZCJrjsCmNHpFCQnU5OxjCUXnIjVNWG6rJhyjj0UFgspm6Q5HJy35VzuG7u -RJ77eCNHaz1tgmaXw0ZuxrC+VjSqpmKgUFJVz/6jtewvr6H4SA37yqvx+DqTSdBw4qf31+4CYFiC -iyvmTOKquVPISe/da9i6vzzqHsIxLxIB6e2NbK3ZfYglW/dTW1uHqqokJSZiGDrBYJBJedlMyk4l -Nz2Z0RkpjExNItkd1/24RSjY7U7sdiemaaKHAuihEFnDE/npzQvxB/V+qQqiqCoB3eRgZT37jxxj -35FjFB6u4mDFsTbrxhUhGJmazJjMFLKGJzFieDgjIT05gcR4J5qq4LBpNPkCeLwBKuoaKTxcxbbi -crYdKOflpRt5eelGFkwby22LzmHi6IxeuYaSylpLJL3eMRRlUn5W2wnR6eOyCfjDltIwDGrr6rDb -7WRkZFDZGKDpUB3rDtbS2LiVJo8HQ9fJykgjLyuN8SOSKcgaxoScDBJdzq6eD3ZHHHZHHKZhYOgh -NC2Ebhi9N/soBKqiomgqqqJS4/Hx9Lur2VdeTWllHeYp3xNntzExJ5Px2WmMy05jbFYaeSOGE9eJ -hVLHHx4TR2dw4dnhAhulVXW8s2oH76zewafb9vPptv3MGj+KWxfN5pwJo7t9WaXVdQSiL6E09kVi -mGZWeyY/NTGeq+ZO5p3Vu/D5fHz3u9/l/vvvR0pJIBAgGAzi8/lobm6msrKSffv28fLLL7NhzwE2 -F6kYuo7P5yM5KYF5ZxUwOz+dWWOzSOiCaBRVDadrOJxICYYewjBCGKFQuCOfRjQCER5yFQqKEnmp -KkJRUITaZjjWHQdLNhVGfnYwPjuNCaMyGD8qPexipg/r0fqPU8lJH8Z3rruAuy4/l7dWbuP1T7ew -segwG4sOUzAqnXuvnMfcSbldPu4/vtgRhd58bE8mIoSYKoTYljU8qd2ko29fdR6rd5fQYLeTk5ND -Xl5e+ya+pISHH36YkpK2S0aramr5aM1Wlm204ff7yMsewde+NJn5Z+V36knc4uEfmam2ndgqVUrZ -aiRHhIfRujzy6o5z8D/3XE1+1vDup+d0g3inndsWzeamBdP557rd/G3ZJgoPV3Hg6LFuiWTt7oOD -QiRRkeDYQiTXpSS4XvznL+497VRy8ZEa7n/mXTS7k9dff50LLrigzXsWLlzIihUrTt8J3W7OP/98 -vvjiC1RVZcSIEZSWlDB3yli+f8O8LrtkgxXTlCzbUsTcSbltMrI7/KyUXPDA7zGiL2vhUSnlz7rk -ckfZBUzITh92RqXnZ6XyyL9chKkHufnmm/nwww9bP73Wrj2jQACee+45/v73v/Pcc89RX1/PJZdc -wh+feQaZkMYNP/8r//3aCkKGMeRFoiiCRTMLuiwQgNU7D0ajQLoVk0SbSArGjUzt8DE+Z+Jofn7L -IkJ+Lw899BCPPfYYuh7W1po1azr8kuPG8/i/lZWVZGZm8uCDD/Krxx/naMDGXb9ZTPGRY1h0j8Vf -bIvWU6uPaZFoqjohf0Rqp3Iwzh47kucf+ArD7SbPPfsMF154IVu2bOnU7O43v/lNbrzxRu65556w -Lx4fz8KFC5k4cSLjxo3j0Ucf5eobvsr9z77PhxuKrB7fDbZFEkWjkFifTJRjs7qwxDQt2c3jd3+Z -pZuLeP7jjVxz1VWMHT+e+Ph4mpubT/u55uZmlixZcuL3GTNmoKoqeXl5jB49mtLSUux2OxMmTOAX -v/gFFY1e7rzobKvnd5KDFcfwBqK2nFOXJ26iLXDntUfu6Nasr2lKlm4u4oUlG/EGTUK6Tn19x5Y1 -LS2NAwcO4Ha7W/09FApRXFzMrl27+PHDD3Pt7DyumTPBUkAn+MUrS3hvzc5oPb1LpZQfx6QlEUIU -AIUjUrq3RkJRBJfMKuDimeP5fHsxH20uZsMeP05nHM1eL4FA25QNl8vF66+/3kYgADabjQkTJjB6 -9GhSU1O55eabmD95dI9m8ocKn23fP6iuJ5rcrZx4p91r09QeVTJThGDBtLEsmDaWRq+f5Vv28fGW -A+wrPUpSUhJOlwu/309OTg5PP/0006dPP+Px4uLiyMvLw+lwcqyxud9F4guG2FtSyY5DRykqq6LR -F8LjDxEIhhBC4HY5SE+KJz0pnlFpSYzOSGFM5nCS4gdmGHtfWTVNzX5LJH1EbkZyQq/mMCS6nFw7 -byrXzpuKNxBkx4Gj4copReXs3LGd66+9mhGZmWSOyCI3L5+CgoJwge5AgPr6enbv3M7GDes5VFLK -TQum0166TF9wqKKWpVv2saG4gsJDZYwamc3o3FzSC2aS63JRVFTEjh07cLvdmCGFxhofhZUejD3l -+LxeGhqbcLviOHvcKCZnpzI1bwQTRmWctjp/b/Lap5uJ8sXPXR4CjpqYRAjxX+dPyX/gV/de7e6X -IQIJxxo9lNc0cORYI6XVDQR0k0ZfkIQ4G/F2jfSkeMZlp1GQnd6raSCno6axmV8v/oIt+8tYsOBC -Zs2axYQJE4iLO2m9XnnlFV55peNdluPj4xk2bBhudzw11TU0NjZy9vjRzC0YyXmTx/R6tu/xNl30 -70/T7O84G9muqdg0lRnjsnHHOVm35xBNvkB/lB86X0q5MiYtiQJ5OZnDXP0nSkhNcpOa5GZa/sio -aIOHX/yEidPn8Pf/fILk5GTsdjsOhwO73Y7NZmP37t289tprHQ5+3HnnnTgcDp599lkefvhhpk+f -zvr169m0aRMf7yrl+Y/Wk5Lo5pyCUcwaN5Kz8rJISeh50+86dLTDUS1FCGyayreu+hJfmT8NVQnP -QphS8uryzfzxvS+ibWes6BGJ3ablpie7o21ys9PsPHiU1KR4Mrs58CAlFJdV8sIr32fmzJntvudH -P/oRRgeZAOeddx5PPvlk2G07dIhVq1Zxzz33kJuby8KFCwkGgxw4cIAlS5aw98AB1hRtoLqmhtTk -RKaPzWZGfibnTsw9UdG/K7z+2ZnnqRQhiHPYePbBr7VxXRUhuPmimSiK4Jn3VkVV9nD0xCRCZA5P -iI9VjfDEG8u5cf7ZXDFncrct2wPXXcCllyzinXffY968ea3+3zRNPvjggw6Pc/DgQaqrq7Hb7ezd -u5fGxkZGjRrFqFGjkFLS2NjIhAkTmDVrFnV1dWzdupW3336bjRs3Unmsnk+37UMPreDyOZP5/o3z -TzzpO8I0JV/sPHDG96iKwv9+98YzxnZfXTCdxV9sp6y6rq/qoMVuWophmikDNSLTU0wpOVRRS15m -zwL7K8+dxP1Xn8cVl1/Gj374w1YTojU14biiI44cOcLkyZMpKCjg4MGDaC3q9orIzmH5+fnMnTuX -iy++mFtuuYWnnnqKhx56KNyDvD6CoRCrdpew48DRTp/7pn2HCZyhcLldU/nXq+d1WCpKEYLbFs3u -y0r0iTErEt0wE5NidA6irLqekGGQOyKlx8daNHM8Lzz0VVZ+uJi83NE88cQTNDQ04Ha7O70aMhgM -4o8sUJsyZcrpO25kycGcOXP45S9/ybRp0wDIzs4m2R3H1LzOb77z1sptbRaHtbQguZkp3LRgRqeO -NX1sdl+6W/aYFInH43lRSqkMS3DFpEi27C9j/Mh04uy2Xjle1vAkHr/7Cn52y0W89eKzZI3I5Jpr -rmbs2LFdPtbdd9/d4XuKioq49957KSsrY1x+Pi7V4Nf3XNFpV8sf1Fm968xrRx697fJOjxCOTE0i -3unoq9vV5U4WFTFJQkLCL4DbY9Xd2ryvjJnjs3v9uGfnj+Ts/JEcOdbA0s1FlAQ8aJpKfHw8Npud -YDB4Rhfs+uuv52tf+1qbv4dCIQoLC1myZAkffPAB27dvJ2VYMn5vMxfOGc8tF8/sUvWUz7bvP23A -rqkKty06h7wRw7t07Unxzk4Wtuh7dytaAvdUh00L2lTVHmsCMU3JhsJSfnrbZX32HVnDk7ht0Wxu -WzSbRq+fdXtK2Lj/CLtLq/D7fMTFOXE6nZgSmpqa8Pv9jB8/nszMTB544AE8Hg/V1dU0NjYSDAap -q6vDpmk0N3s4cvQo40ZlctHULC6786JuzdS/9dnW0w7bpiW7ueOy9nf8M3Q9XKNZgMPhbFU8z9Z3 -NcOUWBVJcoLLoXfHXxxwV6u4DN0wmTFuVL98X6LLyaKZBSyaWXBCpIer69hfXkP5sQaa/CGONQXw -h3RWLfsQXyCEwx6u95UY5yROVcgZmUDWsHhyM8YzZcwIXI7uN3tVvYedJUdPG4Q/dueVrTu8lOFi -gMEA/mCQvYerOWtMJqqqoNlOulh9mEUcs5Yk0dlL/nx/s3zLPuafld+jvUB69FhUBKMzUhidkTIg -3//R+j1oitpmJacArpw7pVVpolAwSDDgJRQyeGfdHl5fuZPk+Dieue/qNset8/j66pSdsSqSmJxE -DIR0lmwq5LG7rmCo8vaq7e0udU5wOXnghvlh42Ga+P1ejFCIfUeO8cTiL/AHdb556SwWnDUGRVVQ -tZPWrMnr78v0lPhYFQmqosTc3mzLt+wj0eVg5vhRQ1Igu0sqqKr3tPm7EIKf3n45cXYbpjTxN3sw -TYPPdx3iV2+u5MrZE7hz0XQcNg2BwOlytRreLiyrxq6pBPtGKPZYFYnbZbfFnDV54/MtXD13Sq+V -WY01/rluN4qAU59ucyaOZu6kXKSU+D0Rgew8xK/eWsm/Xf8lFkwdc+K9DpcLVW3tau8+dLQvK2Ra -7lZ/sXb3IUor67juS2cNSYGYpmTppsI2o1p2m8bPbr8cgKDPh2kaHK5p4InFq/jhjfOZNynn5Hud -cWi2tg/2TfvK+nIy0RWznVPTYksnf/lkPTecP61LFSAHE5v3l+ELhE5xs+Chrywg0eUM7ywWCs9z -/PGf67lqTkErgYT3gm/bdiHdYOv+sr48dXusiiQxLobcrU37DlN0uIp/WThzyAbsSzftRZ6yvGpi -TiZXnzcVAD0YTovZWVJJ8dFabr2wdSENR5zrtOLr42LkWqyKxOML6jETuP/fh+u47ktnDdn17rph -smzLvlaultOu8bv7rj/5nshGru9vKOKSGWNbrYoMbzDUfl/9dOv+vl5PErPulj+o6zHRQdbtLWFX -yVFuvmjoWpFNRYcJnhIzPHbXlScqPZq6EamLDOsLyzh3QuvRv5aThi0JhnQ+3rinrys/OmNWJM3+ -YNR3jpBh8Js3P+XWRed0a1HSYOHA0ZpWjta186Zy3uQxLYL6sIDKjjXgC4YYl9Uyb0u0G6wDfLpt -P/2wmDxmRdIYhftYtOHvyzejGya3DGErAiAj7hXA7IIcfnDTxae4Y+H5jT2l1eRnpmBvse2dpmmn -rbL/2qdbCIRCfX36sZkFDFQ1eHxRnbdVXe/hLx+v4z/vvAK7TRvSIrnw7HGs21PC+Ow0vn31+W1F -FLEkByvryMtsXXBC1dpPP9oZKZnUD5YkZnO3aoK6oQVCel+uSOsRv138GTPGZjOvhVsxVBmRktgq -SD/VypiRMZiymkam5LbeVk47TY7ec++vPu2iLcvdAqSUxQDHGpujslN8snEv6/eW8G9fXYhFB/fS -NE8MDZcfayQn7WRtZ0XVEKJtlys8XMXmfWWYZr+IJHYnE22a6qmsa4q6m15V7+GJN1bw4A0Lul0J -ZUiJJBKP+IIhymsbGdNiR2Kb3d7OAxL+57Wl/XmKLiHE6NgUiaqWltc0RNcNl/DY3z5h5rhsvjxn -kqWATqAb4cB7z+FqhsXHkTksXGtQKAq2dka1lmzay/7ymv7c8McNpMSkSEKGUXO4uj6qbvhfPlnH -wYpjbUZvLM4gksjo1M6SKqbknqyM4nDGceqwVpPXzxNvrOiPqo2n9vmcWBWJM5r2/F63p4QXP17P -Y3ddYVWS7ySmaSAjFmHt3sOcWxCeRFQ1rc3ciJTw6IsfEQiGBuJUx3flzdEzlOQkfV95dVScSll1 -PT/964fcd835TB2TZfX+zj7oIktutx+soKqhmQum5CIQOOLaTry+8dkWNhaV9rcVOc6Irrw5aiyJ -SBDpR4814g8O7KRiZV0Tv138GRfPGM+N863drTofwIGuB9ANk6c/WM/XF0zDrqnYnXEop5Qm2lh0 -mN+//flACQQgOeZEIoS4iARcmqayf4CtSW2Tl+ljs/neVxai6yECfi++Zg/epgZ8Hg9+bzOhgB9D -D51wLSwgGPAhTcmv316FIgRXzynA5nBgc7TO09p1qIJ/e+YfmHJA265Lw5TR4W45uRMgITmePaWV -TBkzYsBOZUJOOvkZyXg9De2IwAQD9BZutFAUVFVFUVRUTUNRbQy1hYqmYeDzefntO2vYeuAov//X -K3A6nTicrackio/UcP//vkVQ1xngDT9iUiRn221OtEQX2w6UD5ibI02Jt7kRaZocqW0iGNLJGp7Y -Kveo7WdMdNMEQhCppaZqNmx2O5rNRrhuyCCOQ4IBDldU88s3Pqe2yceTd19OVtrw8GhWC3YeOsp3 -n3qLQHDABQJdHAKODpHYyXXHu4lXE9m05/AAugxe1hce5sm3V1Hn8WPTFEYOT+Q391zepRKmhh7C -0EMIRcFxmiWqsUq9x0eiy4miCHzNHgw9hG6YjEhJ4Oe3LCItdVibz6C5hgAAFiNJREFUtSLr9pbw -78++Q8gwiZI9o7oUkwz4TldCiGuUHOWdkaNzSXKnsOujTbz+yB1kpyX3+7n4mpuormtiZ2klc8Zn -oyoKDzz3AfMm5fAv80+/lv1IbROfbN7PkdpGEuIcFGSnMiM/i9TEsLthd8a1u1Q1FvnBc++Qn5XG -N688j4Dfhx7whycK7U40hx1xiuV8dcVmnvrHSkxpEj37PFMhpcyMJUtyudTAptlRNZXklAQ27Ts8 -ICLR7HZSElxcMDn3xN/uuHg6x5ra39IiqBv8ZekW3l6zm1ljRzJu5HAavQHeWrWbJxavYsrodO67 -Yg5js4YPCpE0NDWxdk8Jd1x6LhCeIDzVrTqOP6jz33//hBVb9/fnbHqnLYkQokBKWRgrIpkihRnx -38E+zM3q3Ye4JrJWuj+x2RyoCTaCfu+JmeNZ406/VdzR2ia2Hazg19+4nEk5aa3+r7Lew5ItxSTF -O/t6zXb/BOfS5NMtRaQmuVtVZWyPwsNV/Mfz71Hb2DyQw7xnjoKh0yX6B1QkQohRwLaw3xcZdsgc -xvoNRYR0A5um9vs5KYqC0+XGCIWHf80zPAVHpyfzv9+6st3/y0h2c+uF09DsDuyO2J+xD3ib+Wzn -IS6aMZ5jzc38y1//Ssg0uH32OdxxTrggtmGavLRkA3/+cC2mKfsr9b27TIgVd+suIEUgMMzwE8eV -7AZFsHl/GXMmjB6wE1NtNuJsiYSCAUJ+f5cCTiFEeHTL7kBR1JgXSDDgo8HjZWNRGfdedT5/WLkS -xeYgK2UEL6xby1lZWTh0jZ+/9BEVtY1RtzHoaRgRKyKZDSAMQTAUDBdpFeBOS+KLnQcGVCThUxHY -7U5sNgehYBAjFMA0jDb7lAshUFQVVdVQbTYUVW0TwMasm2UYhPwBVu8pJSMlEcUpWFpUyMSZs7C7 -4/A01/OTdz6krqgZJNFuPVqSEisimQIgdU4UMgNIyExh6eYiHrxhQVSUEBVCYHc4wOEAKcNWT0pA -oCgCMQisRXtIJAFfMxLJJ1uKuWzWRF5Yt47hKWm4Z2aAXSGtJpvdxzYhbfLEPFGM4O60Cz6AHe9W -IBdANps0Np1Mk09IS8IXDLGtuDz6mlaIsMXQbKiaNmgFAhDy+zEMg4o6DzsOVTBrSg6fF+9nxOSx -iDgVoQrixg4jOXE4IiXmLGdK1IsEuPTETx7w+jwEI9ZEKIKkESl8uGEPFgPkZukGwUC4CuMnW/Yz -cngST69YiSsuAUdWwklXJNNJenoW0iXBZomkT1yt8CMLaICDJYUEQ+F064SsFJZtKWp37wuLPnaz -JPj9zZGfJS8t38rh6np21laQmpKBiDtpPYVTJS7eRXxcIiTE1GWmRrVIhBDzOGUITh6TBOr9FO7f -Rk1dJXFJLoSq8tm2/Vav7WeCfi9m5OG041Bl+I+OcG9JTBiG9OqtFCV1SWpKOkpSTBU9TxVC5Edz -4H4rp5Z2kSCPSmSC5KheSrl6CGEXvP75Vi6eUWD13H5CD4UIBU9G4O9tKEJVFIx4kwR3MkIIgsUe -7IoAu4JRGh7VSkwYhlQid9UfE5fqAs6OZpGc/uSawGwyQYAUkl11RymvqWdkat+mqfj9QcoOV3Gk -rIojR2qoqWmgob6J+joPQhGomopNU0kZnsSwlASGpSQyadIY8saOHDSb+EjTJOA7mYJTWe9h5c6D -GKZEcSskJoTvgWzWCWyta+2SKAoJ8Uk0xtfFikgApkelSIQQk4F1Hd+x8EvTVN5auY3vXje/V8/D -MEz27i1h7+5DFBWWUnusAZc7Ds2uoWgKuikJSBOR4AABhpQYSMqP1VFWfQxpmHy6YjOKEGRlp3Hh -wpmcPW0cQoldwfi9zcgWi6HeXLU7bEWkgbRJXHFnHjVNTk7B09iAeSxmFqOld6rP9ncWsBDit8AD -XfmM027jg1/cS5yj58Mn1VV1fLZiC5s27UW1qRhIdCkR3dxESJoSGTIwQwaaUDhnziS+fOV5uGJs -c5+A30cocNIEVDc2c8eTi8P7FjpAZCtMnTjrjHloIT3I7qItcJC2e8RFJ4ullNdHo7s1q+ujLZLF -X2zn6z0oVG3oBv98bxWrV+9Ac9rQ7QqGAuF59e4//YUiEA4NxaEhDZM163exds1OzpkziWuvm4/d -Ef3jonoo2EogAC8u23pSEA6Ic8R1mKhp0+xoiobu0MEXEyLplCXp1+EIIcQYWg79dvYpF9L529KN -PRoOXvzmp+zadZD07FR0lT5xi4SqoLrsiHg76zbu4ZGHn2X1qh1R3UtM08Dva11e9kBFLcu2Fp/c -t9AJrvjOTVA7nfHhkbAYGeGKOpEA99LFVWHHaQ4EWbqpsNtfXFlZS3bmcFLtTqaMyGRmXg5n5+WQ -m5FKgsOBpvReUwhFoLrsmHaVxW+t4LdPvkpzc/RFs1JKfM0eWiajGabJ44tXtcpPU2wKNq1zqysd -Dkc0FarqiBTDMA5Fm0jO7e4HgyGdFz5a1+3VbRcsmM7R6jqklJimJOALovuCuBWN0SnDmJCRztTs -LMZmpJOW4CbB4UDtoXCEpqDEOzh8pJqfP/o8O7YVR1cc4m1uU+zi1c93UlbTgNEyk1cFtZPpN3ab -A8URM/MlqZqm3Rg1MUlk4mZTT45RUdvI+r0lzJnY9ezgs6aNpXBvCeWllQyLd7XrX0vDxKkoON0n -XQsTiTcQxB/S8ekhArpOMGRg0km1CsJWJWTwl/97nylT87nltsuwDfAWEwG/D11vXT1xV0kVL6/Y -2jbVXYLspHcqFBFLtS8U4JxosiTf6a6rddIVkDz/4Zpuf/66rywgJTWZ8uq6E7sxddxAArfDQao7 -nlHJyYxNTWXSiAwmZKQxZngKI5OTSHXHk+R0EmfTUET7TSpsKmqCg527D/CTHz/Hpo17B2zNdygQ -aBOoVzc288jflmG0s/2B1OWJlZodunBmzKTKH6fDWff+fJyd29MDSCnZU1LBtuJypuWP7PLnNVXl -1ju+zLv/+Iz1a3eRnZFKfFz3okxNUdHsKu3tnGhISSAUImAY+EMhArpB0DAI6TpqvANdN3jzzRWs -/Gwrd919JYlJ7n67CbquE/C3XrPvDYR45KXl+AKhdheXyaAkGAx08kFmII2YEkqHwXu/zJMIIWYD -n9GNDVTaPNmFoGBUOi98/+YeHWfHtmJeefkjhiXEk5Ga3D/r0IUARRAwdDy+AA0NHlQEP/jRbf0y -VGwaBr7mplZCCIR0fvTXpewtq2mzo+4JEsE50kXB2I7rDhQf3IOnrBHqY0YkH0gpvxwN7ta9vSEQ -CK9821dezapdB3t0nKnT8vmPh2/HneymqOQojR5vfwwngWHiQGF4XBy56al4vX6q+2HLCdM08Xk9 -rQSiGyY/e2UFReXHTi8QAC/4g942MUx7lt7rb461xVcdlhbqL5HM6s2DGabk94s/6/FS0aRkN9/+ -7le44asLqa5v4mBZFV5f/9xhT7OPA4crmDlrIiOz0/pWINLE39zUaiTLNCX/9dpn7Cytwt/R9gc6 -KAGFiqqyM76tprYCDBlLuVvQiQnFPne3hBBXAG8DvVrG0Kap/Pjrl3DJrAm9cjzdMFj56VaWLdmA -TVVITognKTG+V5MXpZTUNzVzrK4JE7j2KwuY1Uvnf6bv9DU3nUh9Py6QXy3+gjV7DuONbJfQcRAG -IkcwbFgaIzNHt6oUL5FU1xylorIMeSTmRKIDc6SUmwZSJC8Dt/TFsdOS3Sz+6TfQ1N4ziLphsHXz -Plat3Ep5WTVJbheuOAeJble3ShxJKWlq9tHQ5KWhyUtKSiLzF05n9rmT0VS1zwXi9zZh6K0F8uQ7 -q/lsx6GOLcip2EHJVFCcKsNT0rFrDgJBP3X11eghA1lhxko6yqk8KKX8zUCKZC9dqHHUpXumqdx/ -/XyuP39an5x7Q2Mzu3ceZMfWfRw4UI6iKMTHOdAUFYddw2bTUFUFRSjhrQQk6LpBUDcI6jqBYAhP -s49hwxKYODGX886fRkZmSr/c9eOz6aaht4pBfvXWF6zZW9r9fWAE4AYRryBUgdRNZLOEZkASqzwl -pfx/AyISIcQ9wLN9Gfskupz84+d390qGcEdUV9dTdriSyopaaqrraW720dzsbzU77U6IIzExnoyM -FLKz08nOycDdz9vJtSeQkG7wX699xubiIwO+UVIU8qaU8itn8DT7lOv6enDAHwzxwkdrue+a8/u8 -JdPSkkkbgBrFXXaxThFIIKTz6N9WsKu00hJI+2QNyOhWZK/sc/r66oK6wd9XbCbadu4dKIH4mpsw -WgjEGwjxHy8uYVdplSWQbo5w9eVT/iG6UJGiR4IEHn9t2ZC+y6Y08XkaW41iVTc0c/9zH7D/yLGu -B+lDi8zIMo5+F8mX+usKdcNky/6yHk8wxqxATBOfp6lVce/9R2v5f8+8z5Eo2Kw1BnAD5/WrSIQQ -NwBn9edVGqbk8deWRWup/767bj2Ez9N6onB9URkPPPcB9c3+8PJbi84wvb8tydfp56U3UkrqPD7+ -vnzzkLmroWAQX7OnVfGG99YX8ujflhMI6ZimtLp+LwTvvS4Sj8fzYn8E7O0G8SGdP3+4hup6z+AO -0IGAz0egxbJb3TD5w3vreOaD9bGy9UHUxSX9JpKEhITDQPZAdqDHX18+iBUi8Xs9hIIncz9qGr08 -+PyHLNmy33KvYkEkwMUD6oLoBmt2H+SLnQcGX4BuGHg9jRgtFkBtPVDBvU+9S/HRWnzWCFZPSI94 -QW1j7N6ccRdCXAq8w6klTPsZISDZ7eKtR+/ql5n4/kAPBfH7vBxfziglvLlqFy8s2YRhymjZ+jnW -uVRK+XFfW5JvDLRAjnegZl+AZ95bNSgCkIDXi9/bfEIgdR4fj7y8jBeXbUGPnr3RBwPn96m7FTFV -50XL1QZ1gzdXbqXwcFXM3jHD0PF6GlrtArZ6Tyl3//4fbCk+crIulkVvkdOnIklISDg6kAH76fjZ -Sx/F5FBo0O9rNUHoDYR48h+r+c9XP6XRG7AC9L4hu68D94uj7YpNU1JeXc+rn8bO3IlpGng9TSd2 -mQLYVVrFvU+9y6fbD1rDu31LVp8F7kKI64DX6OXVh72FTVN59ce3kzU8KYpjD0kw4CcUCCAjCzM8 -/iAvLNnMBxuKMKUVnPcDjcBUKWVJX1iSW6NVIOH+J/n5Sx8TrX3MMEInrMdxgazYfpC7fvs2y7cd -wDCt4LyfSKSdnMMep44IIUYAW6L5ynXDZHdJBe+v3clVc6dEzXmZ0iTo96EHT64zP1rbxO/fW8uO -Q5UEdR1LG/3OzF4XCfB9OlGWZaAJ6QZPvrmCuZNySe3HYnCnsW0EA/5w3BERgS8Y4tXPd/DmF7tw -2DRr5CqKgvcexyRCiK10cu+5aIhNZozL5rffvn7AzkEPhQj4vCeSEg3T5J8binhp+VYk0NDst7rp -wLJaSnler1kSIcS/AC/FytWHdINNRYdZsqmQRTP7d7NSXQ8R8vswIouipAzPeTz30QY8/iDN/mC7 -dXgt+p2sXrUkQoj3gStjrRXinQ7efPROkvuhQIOh6wT8vhNrzqWEDfvKeXnFVg5V1qMo0Oy3cq6i -CD8wW0q5o8ciiaxh30Q/LdHtbbfr7PyR/O6+G+irEsBhy+E/sd7cNCWf7zrEq5/voPxYI3ZNo9Fr -uVZRyneklH/oDXfrB7EokONu19bicv784Rru/vLcXgzHJUYwRDDgOzFTrhsmS7bs57WVO6lv9iME -+IO6taQ2uinorZjkglhuhZBu8OIn69FUhTsundMzcZiSUChAKBg4sYy2qr6ZDzcV8cGGIkKGSSCk -W6kksUN2j2MSIcQ3gD/R/9vJ9YnrNbsgh0duubTLMYph6IQCAfRQeJ7DGwixdu9hlm8/wIaichLj -ndR7fFaXiz02Siln9VQknwCXDJYWsWkqihDccvEsrp039YzzKNKU6HqAUCCIaRqU1TSys6SS1XtK -2bj/CHF2G0HdcqdinAopZWa3RSKEKADWACmDrWUcNo2QbjB+VDpzJ+UydmQa6UluNE1BD4Worm2k -qr6J2iYv+4/WsrOkEo8vyLCEOLz+kLUycPBgAouklMu6G5N8fzAKBDgxy723tJLi8hrsNhUhBKoi -0A0TRRFIGS6t2jIb91ij1+pWgwsFuLAngft5Q6GVQoZByLAC7SFMbkvFdMXVuoc+2kbBwiLKyOqW -SOiHKvEWFlFCTpdFIoQYRS/vfWhhEc2WJDJI1SWr8CCd2ITRwmKQ4CKyJL0rIrnAajeLIcbUTotE -CHE5/Vwl3sIiWoL3zlqS24niNewWFn0ZvHdqxl0IcYgW48YWFkOEKl3XvUonBPJDSyAWQ5R0TdO+ -1Rl36yKrrSyGMBdqHViRkcA2q50shnLw3pEluY8YXX1oYdFbLldHIjnPaiOLIU6KcgZXawzW3IiF -hf1MluRbDNJ1IxYWXUA5k0jOtdrHwgK/chpXq4AYKV1qYdHHeJQzuFqJVvtYWFB2OpGcY7WNhQUA -e9rkbkVcrXVAstU+FkOcemBae5bkTksgFhZAuEhdSXsisQJ2C4sw70E7qfJCiDKicKtpC4t+Zr2U -8hw4ZdGVEOI+SyAWFgSB/z3+y6nu1jyrfSwseF9K+eLpRGIVnrMY6mwvLi7+ZysP63hMIoQYR3ir -abfVThZDlDLga1LKVS3/2NKS3GwJxGIIUwM8eKpAThXJNKudLIYopcA3pJRvtPefLZfvjrfaymII -sjsikDWne4MSiUfysSqiWAw91gLXnEkgLd2t6614xGII0Qg8I6U8V0q5r6M3HxfJVKvdLIYI24Fb -pZT/2tkPHBdJntV2FoOcqoj1OEtK+U5XPng8cLfiEYvBihdYCjwspdzRnQMoQoi5QKbVlhaDVBzX -SCmv7q5AjrtbF9O9DUYtLKKRWmAxcJWU8mIp5ZKeHlAD8q12tRgEHAA+Bf5HSllIeMS2VxDAkog1 -sbCINeqBjcDHUsrH++pLBLADmGK1t0UMxRq7gfXA7yJWo08RwEGs0S2L6KYR2BmxGi9JKTf055cL -oBArb8siujAJJx3uJTz596fOzIz3pUhWAAus+2IxwNRERLEbWHK6jNyBEsl/Aj+27pHFAFiKA8B+ -YF1xcTF5eXl/jsaTFYQ3dV+Dtc2CRd9RERHFcWF8LKVcFisnLyL/Xgy8hDXzbtEz/BFBHCG8FLYU -WCGl/GcsX5Ro8fPFwB+wikFYdIyHcMJgVUQQR4A9wHIp5Z7BdrHilN9zCNcbWoC1vmQooxNO72iM -BNRVkX+PAJuAzVLKkqHSGOI0f78YeJBwdXlrY9HBFzTXEp6tbvnv8VchsFXX9fdUVc21muv0IjlO -NuEdeM8FxgJZtK3VZREd7o+H8Gz08Z8bW/x8/PdCYGdxcfHZ0TqSFIsiaYkLuAS4KCKW468UyzXr -lU7uj7yCLX72Rl7+U16NQB0nR4uOSCkPWs048CJpD3tEKGMJV6MfERGTKyIcVwuBATgJZx4727FI -5ili0ziZwu86wzl4I5+lG1ZOj7xOd9yW7wue0qmPf5c/8v1mi3Pxt/hMMPLz8fc1RN5XE3F1KoDG -pqamn7jd7tutLhl9/H8d9E1zf32yPgAAAABJRU5ErkJggg== - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - 佐藤さくら - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 佐藤さくら - - - - - - Tokyo - demo_jap@example.com - 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 - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +エメンタール - - - - - - - - confirmed - - +キノコ - - - - - - - - cancelled - - +サラダ+トマト+キュウリ - - - - - - - - confirmed - - +サラダ+トマト+卵 - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - お支払い方法:5食事券(6€) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/nl_NL.xml b/addons/saas_demo/demo/nl_NL.xml deleted file mode 100644 index 2b35164279b..00000000000 --- a/addons/saas_demo/demo/nl_NL.xml +++ /dev/null @@ -1,1464 +0,0 @@ - - - - - - nl_NL - - - - - - Jan Van Eyck - - - j.vaneyck@example.com - Europe/Amsterdam - none - - - - - - Jan Van Eyck - demo_nl_NL - demo - -- -De heer Van Eyck - - - nl_NL - - - Europe/Amsterdam - j.vaneyck@example.com - 0420100000005 - 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 -SUVORK5CYII= - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - Jan Van Eyck - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Jan Van Eyck - - - - - - Amsterdam - j.vaneyck@example.com - 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 -SUVORK5CYII= - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Emmental - - - - - - - - confirmed - - +Champignons - - - - - - - - cancelled - - +Salade +tomaten +komkommers - - - - - - - - confirmed - - +Salade +Tomaten +Eieren - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Betaling: 5 maaltijd tickets (€ 6) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/pt_BR.xml b/addons/saas_demo/demo/pt_BR.xml deleted file mode 100644 index 6928209c181..00000000000 --- a/addons/saas_demo/demo/pt_BR.xml +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - - pt_BR - - - - - - João Gómez - - - j.gómez@example.com - Europe/Lisbon - none - - - - - - João Gómez - demo_pt_BR - demo - -- -Sr Gómez - - - pt_BR - - - Europe/Lisbon - 0420100000005 - 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 - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - João Gómez - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - João Gómez - - - - - - Lisbon - j.gómez@example.com - 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 - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Queijo emmental - - - - - - - - confirmed - - +cogumelos - - - - - - - - cancelled - - +Alface +Tomates +Pepinos - - - - - - - - confirmed - - +Alface +Tomates +Ovos - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Pagamento: 5 tickets de refeição (6 €) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/ru_RU.xml b/addons/saas_demo/demo/ru_RU.xml deleted file mode 100644 index e509d269971..00000000000 --- a/addons/saas_demo/demo/ru_RU.xml +++ /dev/null @@ -1,1921 +0,0 @@ - - - - - - ru_RU - - - - - - Николай Петра - - - Николай.Петра@example.com - Europe/Moscow - none - - - - - - Иоанна Петра - demo_ru_RU - demo - -- -г-н Петра - - - ru_RU - - - Europe/Moscow - 0420100000005 - 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 -gg== - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - Николай Петра - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Николай Петра - - - - - - Moscow - Николай.Петра@example.com - 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 -gg== - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +Эмменталь - - - - - - - - confirmed - - +грибы - - - - - - - - cancelled - - + Салат + помидоры + огурцы - - - - - - - - confirmed - - + Салат + помидоры + яйца - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - Оплата: 5 талоны на питание (6 €) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/demo/zh_CN.xml b/addons/saas_demo/demo/zh_CN.xml deleted file mode 100644 index 583b445af70..00000000000 --- a/addons/saas_demo/demo/zh_CN.xml +++ /dev/null @@ -1,1293 +0,0 @@ - - - - - - zh_CN - - - - - - 趙生 - - - demo_cn@example.com - Asia/Taipei - none - - - - - - 趙生 - demo_zh_CN - demo - -- -陳左 - - - zh_CN - - - Asia/Taipei - 0420100000005 - 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 -EF5AwIv/A3KcGOLJemG7AAAAAElFTkSuQmCC - - - - - - - - - - - - manual - - - - Laptop Customized - - 2 - 2 - - 3645.00 - - - - Mouse, Wireless - - 2 - 2 - - 12.50 - - - - - - - - - manual - - - - Laptop E5023 - - 5 - 5 - - 2950.00 - - - - GrapWorks Software - - 1 - 1 - - 173.00 - - - - Datacard - - 1 - 1 - - 40.00 - - - - USB Adapter - - 1 - 1 - - 18.00 - - - - - - 趙生 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 趙生 - - - - - - Taipei - demo_cn@example.com - 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 -EF5AwIv/A3KcGOLJemG7AAAAAElFTkSuQmCC - - - - - - Doctor Appointment - - - - remove - draft - 3 - - - - - Summer Vacation - - - - add - draft - 7 - - - - - International Tour - - - - add - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - note.note - - - - - - - - - - new - - - - - - - confirmed - - - - - - - partially - - - - - - - new - - +艾蒙达 - - - - - - - - confirmed - - +蘑菇 - - - - - - - - cancelled - - +沙拉+西红柿+黄瓜 - - - - - - - - confirmed - - +沙拉+番茄+鸡蛋 - - - - - - - Pizza Italiana - -7.40 - - order - - - - - - Chicken curry - -2.60 - - order - - - - - - 付款方式:5飯票(6€) - 30 - payment - - - - - 1-ACK-205 - 5454541 - - Black - Grand-Rosiere - 5 - - - - kilometers - 20000 - - - - - - 2012-01-01 - 0 - - - - - - 6 - 2012-01-01 - 40 - 1.3 - 52 - 67458 - - First refueling - - - - - 2012-02-11 - 658 - - - - - - 6 - 2012-02-11 - 50 - 1.3 - 65 - 455812 - - Second refueling of the car - - - - - 2012-03-23 - 1360 - - - - - - 6 - 2012-03-23 - 45 - 1.32 - 59.4 - 45199877 - - Some notes ... - - - - - 2012-04-5 - 2044 - - - - - - 6 - 2012-04-5 - 55 - 1.32 - 72.6 - 654 - - Some notes - - - - - 2012-04-25 - 2756 - - - - - - 6 - 2012-04-25 - 40 - 1.35 - 54 - 55488 - - Some notes - - - - - 2012-05-15 - 3410 - - - - - - 6 - 2012-05-15 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-06-11 - 3750 - - - - - - 6 - 2012-06-11 - 55.8 - 1.35 - 75.33 - 4952 - - Some notes - - - - - 2012-07-02 - 4115 - - - - - - 6 - 2012-07-02 - 47.8 - 1.35 - 64.53 - 15151 - - Some notes - - - - - 2012-07-28 - 4750 - - - - - - 6 - 2012-07-28 - 25 - 1.35 - 33.75 - 874195 - - Some notes - - - - - 2012-08-17 - 5171 - - - - - - 6 - 2012-08-17 - 51.2 - 1.35 - 69.12 - 4431 - - Some notes - - - - - 2012-09-11 - 5873 - - - - - - 6 - 2012-09-11 - 45.36 - 1.35 - 61.236 - 11234 - - Some notes - - - - - 2012-10-06 - 6571 - - - - - - 6 - 2012-10-06 - 53.4 - 1.37 - 73.158 - 798846 - - Some notes - - - - - 2012-11-02 - 7954 - - - - - - 6 - 2012-11-02 - 48.5 - 1.37 - 66.445 - 7954 - - Some notes - - - - - 2012-12-02 - 7981 - - - - - - 6 - 2012-12-02 - 35 - 1.4 - 49 - 545 - - Some notes - - - - - 2012-10-01 - 1000 - - - - - 513 - - 2012-10-15 - - 124 - - Maintenance - - - - - 0 - 150 - weekly - - - - - - - Weekly leasing contract - - - - - 50 - - 2012-01-01 - - - - - - 25 - - 2012-01-01 - - - - - - 100 - - 2012-01-01 - - - - diff --git a/addons/saas_demo/ir_cron.py b/addons/saas_demo/ir_cron.py deleted file mode 100644 index 911a80c22de..00000000000 --- a/addons/saas_demo/ir_cron.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2011 OpenERP SA (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from osv import osv - -class ir_cron(osv.osv): - """ extend ir.cron to make sure all cron jobs are inactive - """ - _inherit = 'ir.cron' - - def create(self, cr, uid, vals, context=None): - vals['active'] = False - return super(ir_cron, self).create(cr, uid, vals, context=context) - - def write(self, cr, uid, ids, vals, context=None): - vals['active'] = False - return super(ir_cron, self).write(cr, uid, ids, vals, context=context) - - def deactivate_all(self, cr, uid, context=None): - ids = self.search(cr, uid, [], context=context) - return self.write(cr, uid, ids, {'active': False}, context=context) diff --git a/addons/saas_demo/res_users.py b/addons/saas_demo/res_users.py deleted file mode 100644 index 65afdf1a426..00000000000 --- a/addons/saas_demo/res_users.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2011 OpenERP SA (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from osv import osv -from tools.translate import _ - -class res_users(osv.osv): - _inherit = 'res.users' - - def change_password(self, cr, uid, old_passwd, new_passwd, context=None): - raise osv.except_osv(_('Operation Canceled'), - _('You are not allowed to change account passwords in demo databases.')) diff --git a/addons/saas_demo/setup.xml b/addons/saas_demo/setup.xml deleted file mode 100644 index dae718853c2..00000000000 --- a/addons/saas_demo/setup.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - done - - - - - - - - - - - Demo Company - - - - - - diff --git a/addons/saas_demo/static/css/demo.css b/addons/saas_demo/static/css/demo.css deleted file mode 100644 index 1be84909a5c..00000000000 --- a/addons/saas_demo/static/css/demo.css +++ /dev/null @@ -1,52 +0,0 @@ -.demo_subscribe_bar { - color: #ffffff; - height: 30px; - vertical-align: middle !important; - text-align: center !important; - width: 100%; - - border: 0 !important; - margin: 0 !important; - padding: 0 !important; - - background-color: #8785C0; - background-image: -webkit-linear-gradient(135deg, rgba(255, 255, 255, 0.05) 25%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0.05) 50%, rgba(255, 255, 255, 0.05) 75%, rgba(255, 255, 255, 0) 75%, rgba(255, 255, 255, 0) 100% ); - background-size: 40px 40px; - -webkit-transition: all 350ms ease; - text-shadow: 0px 0px 2px rgba(0,0,0,0.2); - box-shadow: 0px 2px 10px rgba(0,0,0,0.38) inset; -} - -.demo_subscribe_bar a { - font-weight: bold; - color: #d3ffb0 !important; - text-decoration: none !important; - border-radius: 3px; - padding: 5px 8px; - cursor: pointer; - -webkit-transition: all 350ms ease; -} -/* -.demo_subscribe_bar:hover { - height: 50px; - -webkit-transition: all 350ms ease; -} -.demo_subscribe_bar:hover a{ - background: rgba(0,0,0,0.06); - box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.24) inset, 0px -1px rgba(255, 255, 255, 0.13) inset; - -webkit-transition: all 350ms ease; -} -*/ - -.demo_subscribe_bar .arrow{ - display: inline-block; - width: 18px; - height: 13px; - position: relative; -} - -.demo_subscribe_bar .arrow .oe_e{ - position: absolute; - top: -9px; - left: -1px; -} diff --git a/addons/saas_demo/static/js/saas_demo.js b/addons/saas_demo/static/js/saas_demo.js deleted file mode 100644 index c647c235039..00000000000 --- a/addons/saas_demo/static/js/saas_demo.js +++ /dev/null @@ -1,9 +0,0 @@ -openerp.saas_demo = function (instance) { - -instance.web.WebClient.include({ - check_timezone: function() { - // Disable timezone check for saas demo - }, -}); - -}; diff --git a/addons/saas_demo/static/xml/demo.xml b/addons/saas_demo/static/xml/demo.xml deleted file mode 100644 index 1602a1191fa..00000000000 --- a/addons/saas_demo/static/xml/demo.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - This is a shared demo version. - - - - - - - - - - - - - - - - - - From d63db5ef0ae0bec6405d774e8b628097606d8fef Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Dec 2012 16:18:24 +0100 Subject: [PATCH 160/163] [FIX] Once DB Manager's 'Back to Login' button is used, logging in won't show application. bzr revid: fme@openerp.com-20121211151824-ywcuhi4hdcvphn7g --- addons/web/static/src/js/chrome.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index be88f89e711..afd311c72ad 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -565,8 +565,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ }, do_exit: function () { this.$el.remove(); - instance.webclient.toggle_bars(false); - this.do_action('login'); + instance.webclient.show_login(); } }); instance.web.client_actions.add("database_manager", "instance.web.DatabaseManager"); From 22128a21722a58eeb4085c25c4b533b5828694fa Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Dec 2012 16:45:50 +0100 Subject: [PATCH 161/163] [IMP] Improved notebook styling Inverted active state color of tabs bzr revid: fme@openerp.com-20121211154550-q25v2rfiu8rxdeck --- addons/web/static/src/css/base.css | 3 +++ addons/web/static/src/css/base.sass | 2 ++ 2 files changed, 5 insertions(+) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index e7c9aba399b..07614dc2c6b 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -608,6 +608,9 @@ } .openerp .oe_notebook > li > a { display: block; + color: gray; +} +.openerp .oe_notebook > li.ui-tabs-active > a { color: #4c4c4c; } .openerp .oe_notebook { diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index effb9d6634d..d9f3644135b 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -530,6 +530,8 @@ $sheet-padding: 16px float: left .oe_notebook > li > a display: block + color: #808080 + .oe_notebook > li.ui-tabs-active > a color: #4c4c4c .oe_notebook border-color: #ddd From 533399ff20b70310101a1f3f93f688249d50944c Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 11 Dec 2012 19:02:02 +0100 Subject: [PATCH 162/163] [FIX] project_long_term: quick hacks to avoid crash at project phase creation This is broken by design, and crashes now that the "Day" UOM was renamed to "Day(s)". Needs to be reviewed correctly, there are other things that will break. bzr revid: odo@openerp.com-20121211180202-df5ngpmzkp2sfdkd --- addons/project_long_term/project_long_term.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index db6c532d503..419aa5e3381 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -123,7 +123,6 @@ class project_phase(osv.osv): _defaults = { 'state': 'draft', 'sequence': 10, - 'product_uom': lambda self,cr,uid,c: self.pool.get('product.uom').search(cr, uid, [('name', '=', _('Day'))], context=c)[0] } _order = "project_id, date_start, sequence" _constraints = [ @@ -169,11 +168,12 @@ class project_phase(osv.osv): for phase in phases: if phase.state in ('done','cancelled'): continue + # FIXME: brittle and not working if context['lang'] != 'en_US' duration_uom = { - 'days': 'd', 'day': 'd', 'd':'d', - 'months': 'm', 'month':'month', 'm':'m', - 'weeks': 'w', 'week': 'w', 'w':'w', - 'hours': 'H', 'hour': 'H', 'h':'H', + 'day(s)': 'd', 'days': 'd', 'day': 'd', 'd':'d', + 'month(s)': 'm', 'months': 'm', 'month':'month', 'm':'m', + 'week(s)': 'w', 'weeks': 'w', 'week': 'w', 'w':'w', + 'hour(s)': 'H', 'hours': 'H', 'hour': 'H', 'h':'H', }.get(phase.product_uom.name.lower(), "H") duration = str(phase.duration) + duration_uom result += ''' From 2e7f68e09f2ece0924668aabf83490ad02bbcbbb Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 12 Dec 2012 04:54:14 +0000 Subject: [PATCH 163/163] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20121212043903-maiyd94p4ifgdqew bzr revid: launchpad_translations_on_behalf_of_openerp-20121212044145-k216g0bcavdlf2o3 bzr revid: launchpad_translations_on_behalf_of_openerp-20121212045414-tgg69aaw4dz72b0p --- addons/account/i18n/de.po | 4 +- addons/account/i18n/es.po | 71 +- addons/account/i18n/hr.po | 40 +- addons/account/i18n/pt.po | 22 +- addons/account_accountant/i18n/pt.po | 10 +- addons/account_analytic_analysis/i18n/es.po | 51 +- addons/account_analytic_analysis/i18n/it.po | 55 +- addons/account_analytic_default/i18n/it.po | 8 +- addons/account_analytic_plans/i18n/es.po | 26 +- addons/account_asset/i18n/es.po | 13 +- addons/account_asset/i18n/it.po | 4 +- addons/account_asset/i18n/pt.po | 12 +- .../i18n/nb.po | 20 +- addons/account_budget/i18n/es.po | 17 +- addons/account_budget/i18n/pt.po | 12 +- addons/account_check_writing/i18n/es.po | 22 +- addons/account_check_writing/i18n/ru.po | 182 +++ addons/account_followup/i18n/es.po | 175 +-- addons/account_followup/i18n/pt.po | 14 +- addons/account_followup/i18n/pt_BR.po | 383 ++++-- addons/account_payment/i18n/es.po | 16 +- addons/account_payment/i18n/pt.po | 22 +- addons/account_payment/i18n/pt_BR.po | 42 +- addons/account_voucher/i18n/es.po | 109 +- addons/account_voucher/i18n/pt.po | 38 +- addons/analytic/i18n/es.po | 90 +- .../analytic_contract_hr_expense/i18n/es.po | 10 +- .../analytic_contract_hr_expense/i18n/it.po | 4 +- .../analytic_contract_hr_expense/i18n/pt.po | 10 +- addons/analytic_user_function/i18n/es.po | 33 +- addons/analytic_user_function/i18n/it.po | 33 +- addons/anonymization/i18n/es.po | 26 +- addons/anonymization/i18n/nb.po | 26 +- addons/anonymization/i18n/pt.po | 18 +- addons/audittrail/i18n/es.po | 21 +- addons/audittrail/i18n/it.po | 28 +- addons/auth_anonymous/i18n/es.po | 30 + addons/auth_ldap/i18n/it.po | 19 +- addons/auth_oauth/i18n/es.po | 38 +- addons/auth_openid/i18n/hr.po | 97 ++ addons/auth_openid/i18n/it.po | 97 ++ addons/auth_openid/i18n/pt.po | 10 +- addons/auth_signup/i18n/es.po | 275 ++++ addons/auth_signup/i18n/it.po | 83 +- addons/auth_signup/i18n/ru.po | 258 ++++ addons/base_action_rule/i18n/es.po | 39 +- addons/base_action_rule/i18n/it.po | 22 +- addons/base_action_rule/i18n/pt.po | 16 +- addons/base_calendar/i18n/es.po | 29 +- addons/base_crypt/i18n/pt.po | 10 +- addons/base_gengo/i18n/es.po | 267 ++++ addons/base_import/i18n/ru.po | 1164 +++++++++++++++++ addons/base_report_designer/i18n/es.po | 11 +- addons/base_report_designer/i18n/pt.po | 10 +- addons/base_setup/i18n/es.po | 27 +- addons/base_setup/i18n/nb.po | 79 +- addons/base_vat/i18n/pt.po | 10 +- addons/board/i18n/es.po | 60 +- addons/board/i18n/pl.po | 40 +- addons/contacts/i18n/es.po | 18 +- addons/contacts/i18n/pt.po | 37 + addons/crm/i18n/es.po | 34 +- addons/crm_claim/i18n/es.po | 92 +- addons/crm_helpdesk/i18n/es.po | 40 +- addons/crm_partner_assign/i18n/es.po | 26 +- addons/crm_profiling/i18n/es.po | 12 +- addons/crm_profiling/i18n/pt.po | 10 +- addons/crm_todo/i18n/es.po | 12 +- addons/delivery/i18n/es.po | 37 +- addons/document/i18n/es.po | 4 +- addons/document_ftp/i18n/es.po | 14 +- addons/document_ftp/i18n/pt.po | 12 +- addons/document_page/i18n/es.po | 53 +- addons/edi/i18n/es.po | 16 +- addons/edi/i18n/pt.po | 16 +- addons/email_template/i18n/es.po | 16 +- addons/email_template/i18n/it.po | 22 +- addons/email_template/i18n/pt.po | 24 +- addons/event/i18n/es.po | 4 +- addons/event_sale/i18n/es.po | 93 ++ addons/event_sale/i18n/it.po | 89 ++ addons/fetchmail/i18n/es.po | 13 +- addons/fetchmail/i18n/it.po | 75 +- addons/fleet/i18n/es.po | 4 +- addons/fleet/i18n/it.po | 244 ++-- addons/google_base_account/i18n/es.po | 20 +- addons/google_base_account/i18n/pt.po | 20 +- addons/google_docs/i18n/es.po | 192 +++ addons/google_docs/i18n/it.po | 189 +++ addons/hr/i18n/es.po | 145 +- addons/hr/i18n/pt.po | 94 +- addons/hr_contract/i18n/pt.po | 16 +- addons/hr_holidays/i18n/zh_CN.po | 37 +- addons/hr_timesheet/i18n/es.po | 73 +- addons/hr_timesheet/i18n/it.po | 48 +- addons/hr_timesheet/i18n/pt.po | 22 +- addons/hr_timesheet_invoice/i18n/es.po | 96 +- addons/hr_timesheet_sheet/i18n/es.po | 126 +- addons/hr_timesheet_sheet/i18n/hr.po | 38 +- addons/knowledge/i18n/es.po | 30 +- addons/knowledge/i18n/it.po | 20 +- addons/l10n_multilang/i18n/pt.po | 16 +- addons/mail/i18n/es.po | 85 +- addons/mail/i18n/hr.po | 8 +- addons/marketing/i18n/es.po | 21 +- addons/membership/i18n/pt.po | 18 +- addons/mrp/i18n/hu.po | 145 +- addons/mrp_byproduct/i18n/pt.po | 10 +- addons/multi_company/i18n/it.po | 19 +- addons/note/i18n/es.po | 288 ++++ addons/note/i18n/pt.po | 26 +- addons/note_pad/i18n/it.po | 28 + addons/pad/i18n/it.po | 22 +- addons/pad_project/i18n/it.po | 40 + addons/portal/i18n/pl.po | 154 ++- addons/portal_crm/i18n/pl.po | 561 ++++++++ addons/portal_sale/i18n/pl.po | 44 +- addons/portal_sale/i18n/pt.po | 393 ++++++ addons/process/i18n/de.po | 22 +- addons/process/i18n/pt_BR.po | 24 +- addons/procurement/i18n/pt.po | 16 +- addons/product/i18n/de.po | 310 ++++- addons/product/i18n/pt.po | 43 +- addons/product_margin/i18n/pt.po | 10 +- addons/project_gtd/i18n/pt.po | 14 +- addons/project_long_term/i18n/ru.po | 509 +++++++ addons/project_mrp/i18n/pt.po | 14 +- addons/purchase/i18n/pl.po | 313 +++-- addons/purchase_analytic_plans/i18n/pl.po | 14 +- addons/purchase_double_validation/i18n/pl.po | 18 +- addons/purchase_double_validation/i18n/pt.po | 18 +- addons/report_webkit/i18n/es.po | 37 +- addons/sale/i18n/de.po | 324 ++++- addons/sale/i18n/pl.po | 371 ++++-- addons/sale/i18n/sl.po | 46 +- addons/sale_crm/i18n/de.po | 31 +- addons/sale_journal/i18n/de.po | 16 +- addons/sale_margin/i18n/pt.po | 10 +- addons/sale_mrp/i18n/pt.po | 12 +- addons/sale_order_dates/i18n/pt.po | 10 +- addons/sale_stock/i18n/de.po | 88 +- addons/sale_stock/i18n/pl.po | 83 +- addons/share/i18n/de.po | 77 +- addons/stock/i18n/pl.po | 84 +- addons/subscription/i18n/pt.po | 10 +- addons/survey/i18n/pt.po | 24 +- addons/warning/i18n/pt.po | 12 +- addons/web/i18n/de.po | 4 +- addons/web/i18n/it.po | 219 ++-- addons/web/i18n/pt_BR.po | 15 +- addons/web_calendar/i18n/it.po | 60 +- addons/web_linkedin/i18n/es.po | 142 ++ addons/web_linkedin/i18n/it.po | 137 ++ addons/web_view_editor/i18n/it.po | 184 +++ openerp/addons/base/i18n/de.po | 4 +- openerp/addons/base/i18n/es.po | 4 +- openerp/addons/base/i18n/hu.po | 563 +++++++- openerp/addons/base/i18n/it.po | 400 +++--- openerp/addons/base/i18n/pl.po | 100 +- openerp/addons/base/i18n/pt.po | 18 +- openerp/addons/base/i18n/pt_BR.po | 34 +- 161 files changed, 10144 insertions(+), 2719 deletions(-) create mode 100644 addons/account_check_writing/i18n/ru.po create mode 100644 addons/auth_anonymous/i18n/es.po create mode 100644 addons/auth_openid/i18n/hr.po create mode 100644 addons/auth_openid/i18n/it.po create mode 100644 addons/auth_signup/i18n/es.po create mode 100644 addons/auth_signup/i18n/ru.po create mode 100644 addons/base_gengo/i18n/es.po create mode 100644 addons/base_import/i18n/ru.po create mode 100644 addons/contacts/i18n/pt.po create mode 100644 addons/event_sale/i18n/es.po create mode 100644 addons/event_sale/i18n/it.po create mode 100644 addons/google_docs/i18n/es.po create mode 100644 addons/google_docs/i18n/it.po create mode 100644 addons/note/i18n/es.po create mode 100644 addons/note_pad/i18n/it.po create mode 100644 addons/pad_project/i18n/it.po create mode 100644 addons/portal_crm/i18n/pl.po create mode 100644 addons/portal_sale/i18n/pt.po create mode 100644 addons/project_long_term/i18n/ru.po create mode 100644 addons/web_linkedin/i18n/es.po create mode 100644 addons/web_linkedin/i18n/it.po create mode 100644 addons/web_view_editor/i18n/it.po diff --git a/addons/account/i18n/de.po b/addons/account/i18n/de.po index b54b24e630a..ccbd24f2f5d 100644 --- a/addons/account/i18n/de.po +++ b/addons/account/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:47+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 diff --git a/addons/account/i18n/es.po b/addons/account/i18n/es.po index 152e6ff4798..2ebcd8b1cfd 100644 --- a/addons/account/i18n/es.po +++ b/addons/account/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 21:35+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-12 02:01+0000\n" +"Last-Translator: Roberto Lizana (trey.es) \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: 2012-12-11 04:48+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -184,6 +184,9 @@ msgid "" "which is set after generating opening entries from 'Generate Opening " "Entries'." msgstr "" +"Tiene que establecer un diario para el asiento de cierre para este año " +"fiscal, que se crea después de generar el asiento de apertura desde " +"\"Generar asiento de apertura\"." #. module: account #: field:account.fiscal.position.account,account_src_id:0 @@ -293,7 +296,7 @@ msgstr "" #. module: account #: field:account.config.settings,sale_refund_sequence_next:0 msgid "Next credit note number" -msgstr "" +msgstr "Número siguiente de nota de crédito" #. module: account #: help:account.config.settings,module_account_voucher:0 @@ -497,6 +500,15 @@ msgid "" "should choose 'Round per line' because you certainly want the sum of your " "tax-included line subtotals to be equal to the total amount with taxes." msgstr "" +"Si selecciona 'Redondeo por línea': para cada impuesto, el importe de " +"impuesto será calculado y redondeado para cada línea de PO/SO/Factura y los " +"importes serán sumados, resultando al importe total para ese impuesto. Si " +"selecciona 'Redondeo de forma global': Para cada impuesto, el importe de " +"impuesto será calculado para cada línea de PO/SO/Factura, los importes serán " +"sumados y este importe total será redondeado. Si vende con impuestos " +"incluidos, debería escoger 'Redondeo por línea' porque seguramente quiere " +"que la suma de los subtotales de línea, impuestos incluidos sea igual al " +"importe total con impuestos." #. module: account #: model:ir.model,name:account.model_wizard_multi_charts_accounts @@ -735,6 +747,8 @@ msgid "" "Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' " "and 'draft' or ''}" msgstr "" +"Factura_${(object.number or '').replace('/','_')}_${object.state == 'draft' " +"and 'draft' or ''}" #. module: account #: view:account.period:0 @@ -985,6 +999,10 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"No se han encontrado elementos de diario.\n" +"

    \n" +" " #. module: account #: code:addons/account/account.py:1632 @@ -1643,6 +1661,8 @@ msgid "" "There is nothing to reconcile. All invoices and payments\n" " have been reconciled, your partner balance is clean." msgstr "" +"No hay nada que conciliar. Todas las facturas y pagos han sido conciliados. " +"El saldo del cliente está limpio." #. module: account #: field:account.chart.template,code_digits:0 @@ -1865,6 +1885,15 @@ msgid "" "should choose 'Round per line' because you certainly want the sum of your " "tax-included line subtotals to be equal to the total amount with taxes." msgstr "" +"Si selecciona 'Redondeo por línea': para cada impuesto, el importe de " +"impuesto será calculado y redondeado para cada línea de PO/SO/Factura y los " +"importes serán sumados, resultando al importe total para ese impuesto. Si " +"selecciona 'Redondeo de forma global': Para cada impuesto, el importe de " +"impuesto será calculado para cada línea de PO/SO/Factura, los importes serán " +"sumados y este importe total será redondeado. Si vende con impuestos " +"incluidos, debería escoger 'Redondeo por línea' porque seguramente quiere " +"que la suma de los subtotales de línea, impuestos incluidos sea igual al " +"importe total con impuestos." #. module: account #: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all @@ -2234,7 +2263,7 @@ msgstr "Análisis de facturas" #. module: account #: model:ir.model,name:account.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "Asistente para la redacción de e-mail" #. module: account #: model:ir.model,name:account.model_account_period_close @@ -2839,7 +2868,7 @@ msgstr "Conciliciación empresa" #. module: account #: view:account.analytic.line:0 msgid "Fin. Account" -msgstr "" +msgstr "Cuenta financiera" #. module: account #: field:account.tax,tax_code_id:0 @@ -3868,6 +3897,10 @@ msgid "" "quotations with a button \"Pay with Paypal\" in automated emails or through " "the OpenERP portal." msgstr "" +"Cuenta Paypal (e-mail) para recibir pagos (tarjeta de crédito, etc). Si se " +"establece una cuenta de PayPal, el cliente podrá pagar sus facturas o " +"presupuestos desde el botón \"Pagar con Paypal\" de los correos electrónicos " +"automáticos o a través del portal OpenERP ." #. module: account #: code:addons/account/account_move_line.py:535 @@ -3878,6 +3911,10 @@ msgid "" "You can create one in the menu: \n" "Configuration/Journals/Journals." msgstr "" +"No se puede encontrar el diario %s para esta empresa.\n" +"\n" +"Puede crear un diario en el menú:\n" +"Configuración / Diarios / Diarios." #. module: account #: model:ir.actions.act_window,name:account.action_account_unreconcile @@ -3945,6 +3982,8 @@ msgid "" "You have not supplied enough arguments to compute the initial balance, " "please select a period and a journal in the context." msgstr "" +"Usted no ha proporcionado suficientes argumentos para calcular el saldo " +"inicial, seleccione un período y un diario en el contexto." #. module: account #: model:ir.actions.report.xml,name:account.account_transfers @@ -4050,6 +4089,8 @@ msgid "" "There is no fiscal year defined for this date.\n" "Please create one from the configuration of the accounting menu." msgstr "" +"No ha definido un ejercicio fiscal para esta fecha.\n" +"Por favor crea uno en la configuración del menú de contabilidad." #. module: account #: view:account.addtmpl.wizard:0 @@ -4082,6 +4123,8 @@ msgstr "Detalle" #: help:account.config.settings,default_purchase_tax:0 msgid "This purchase tax will be assigned by default on new products." msgstr "" +"Este impuesto de compra será asignado de forma predeterminada en los nuevos " +"productos." #. module: account #: report:account.invoice:0 @@ -4250,7 +4293,7 @@ msgstr "" #. module: account #: field:account.config.settings,group_check_supplier_invoice_total:0 msgid "Check the total of supplier invoices" -msgstr "" +msgstr "Compruebe el total de las facturas de proveedores" #. module: account #: view:account.tax:0 @@ -4361,7 +4404,7 @@ msgstr "" #. module: account #: model:mail.message.subtype,name:account.mt_invoice_paid msgid "paid" -msgstr "" +msgstr "pagado" #. module: account #: field:account.move.line,date:0 @@ -4372,7 +4415,7 @@ msgstr "Fecha vigencia" #: code:addons/account/wizard/account_fiscalyear_close.py:100 #, python-format msgid "The journal must have default credit and debit account." -msgstr "" +msgstr "El diario debe teneruna cuenta del debe y del haber por defecto." #. module: account #: model:ir.actions.act_window,name:account.action_bank_tree @@ -4394,7 +4437,7 @@ msgstr "ID de la empresa" #: help:account.bank.statement,message_ids:0 #: help:account.invoice,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Mensajes e historial de comunicación" #. module: account #: help:account.journal,analytic_journal_id:0 @@ -4435,7 +4478,7 @@ msgstr "" #: code:addons/account/account_move_line.py:1131 #, python-format msgid "You cannot use an inactive account." -msgstr "" +msgstr "No puede usar una cuenta inactiva." #. module: account #: model:ir.actions.act_window,name:account.open_board_account @@ -4466,7 +4509,7 @@ msgstr "Hijos consolidados" #: code:addons/account/wizard/account_invoice_refund.py:146 #, python-format msgid "Insufficient Data!" -msgstr "" +msgstr "¡Datos insuficientes!" #. module: account #: help:account.account,unrealized_gain_loss:0 @@ -4535,7 +4578,7 @@ msgstr "Activo" #. module: account #: view:account.config.settings:0 msgid "Accounting & Finance" -msgstr "" +msgstr "Contabilidad y finanzas" #. module: account #: view:account.invoice.confirm:0 diff --git a/addons/account/i18n/hr.po b/addons/account/i18n/hr.po index daf1dcd26b7..89fa2f1008f 100644 --- a/addons/account/i18n/hr.po +++ b/addons/account/i18n/hr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 08:32+0000\n" +"PO-Revision-Date: 2012-12-11 16:20+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: 2012-12-11 04:47+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -42,7 +42,7 @@ msgstr "" #. module: account #: view:account.move.reconcile:0 msgid "Journal Entry Reconcile" -msgstr "Zatvaranje stavke dnevnika(IOS)" +msgstr "Zatvaranje IOS-a" #. module: account #: view:account.account:0 @@ -166,7 +166,7 @@ msgstr "Upozorenje!" #: code:addons/account/account.py:3139 #, python-format msgid "Miscellaneous Journal" -msgstr "" +msgstr "Ostali dokumenti" #. module: account #: code:addons/account/wizard/account_open_closed_fiscalyear.py:39 @@ -217,8 +217,8 @@ msgid "" "invoice) to create analytic entries, OpenERP will look for a matching " "journal of the same type." msgstr "" -"Tip analitičkog dnevnika. Kod kreiranja analitičkih knjiženja koristi se " -"ovdje definirani analitički dnevnik odgovarajućeg tipa." +"Tip analitičkog dokumenta. Kod kreiranja analitičkih knjiženja koristit će " +"se dokument istog tipa." #. module: account #: help:account.tax,account_analytic_collected_id:0 @@ -539,7 +539,7 @@ msgstr "" #. module: account #: field:account.bank.statement,account_id:0 msgid "Account used in this journal" -msgstr "Konto ovog dnevnika" +msgstr "Konto" #. module: account #: help:account.aged.trial.balance,chart_account_id:0 @@ -986,7 +986,7 @@ msgstr "Dospijeće" #. module: account #: field:account.config.settings,purchase_journal_id:0 msgid "Purchase journal" -msgstr "" +msgstr "Dokument nabave" #. module: account #: code:addons/account/account.py:1316 @@ -1693,7 +1693,7 @@ msgstr "Traži izvode banke" #. module: account #: view:account.move.line:0 msgid "Unposted Journal Items" -msgstr "Nepotvrđene stavke dnevnika" +msgstr "Nepotvrđena knjiženja" #. module: account #: view:account.chart.template:0 @@ -2213,7 +2213,7 @@ msgstr "" #: field:account.invoice,move_name:0 #: field:account.move.line,move_id:0 msgid "Journal Entry" -msgstr "Temeljnica" +msgstr "" #. module: account #: view:account.invoice:0 @@ -2290,7 +2290,7 @@ msgstr "" #: code:addons/account/static/src/xml/account_move_line_quickadd.xml:14 #, python-format msgid "Journal :" -msgstr "" +msgstr "Dokument :" #. module: account #: sql_constraint:account.fiscal.position.tax:0 @@ -3166,7 +3166,7 @@ msgstr "" #. module: account #: field:account.config.settings,sale_journal_id:0 msgid "Sale journal" -msgstr "" +msgstr "Dokument prodaje" #. module: account #: code:addons/account/account.py:2293 @@ -3637,7 +3637,7 @@ msgstr "Ostavite prazno za korištenje konta troška" #: model:ir.ui.menu,name:account.menu_journals #: model:ir.ui.menu,name:account.menu_journals_report msgid "Journals" -msgstr "Dnevnici" +msgstr "Vrste dokumenta" #. module: account #: field:account.partner.reconcile.process,to_reconcile:0 @@ -3779,7 +3779,7 @@ msgstr "Stablo poreza" #. module: account #: view:account.journal:0 msgid "Search Account Journal" -msgstr "Traži dnevnik" +msgstr "Traži vrstu dokumenta" #. module: account #: model:ir.actions.act_window,name:account.action_invoice_tree_pending_invoice @@ -6186,7 +6186,7 @@ msgstr "Max. kol.:" #: view:account.invoice:0 #: model:ir.actions.act_window,name:account.action_account_invoice_refund msgid "Refund Invoice" -msgstr "Storno računi" +msgstr "Storniraj račun" #. module: account #: model:ir.actions.act_window,help:account.action_account_entries_report_all @@ -6872,7 +6872,7 @@ msgstr "" #: selection:report.invoice.created,type:0 #, python-format msgid "Supplier Refund" -msgstr "Povrat URA" +msgstr "Odobrenje dobavljača" #. module: account #: field:account.bank.statement,move_line_ids:0 @@ -8457,7 +8457,7 @@ msgstr "Iznos ovog poreza dodati osnovici prije izračuna slijedećeg poreza." #: code:addons/account/account.py:3138 #, python-format msgid "Purchase Refund Journal" -msgstr "Dnevnik odobrenja dobavljača" +msgstr "Knjiga odobrenja dobavljača" #. module: account #: code:addons/account/account.py:1292 @@ -8778,7 +8778,7 @@ msgstr "Fiscalyear Close state" #. module: account #: field:account.invoice.refund,journal_id:0 msgid "Refund Journal" -msgstr "Dnevnik povrata" +msgstr "Knjiga odobrenja" #. module: account #: report:account.account.balance:0 @@ -10839,7 +10839,7 @@ msgstr "Traži račun" #: view:account.invoice:0 #: view:account.invoice.report:0 msgid "Refund" -msgstr "Povrat novca" +msgstr "Odobrenje" #. module: account #: model:ir.model,name:account.model_res_partner_bank diff --git a/addons/account/i18n/pt.po b/addons/account/i18n/pt.po index 118b1c50f05..bc935977be9 100644 --- a/addons/account/i18n/pt.po +++ b/addons/account/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-06-20 16:19+0000\n" -"Last-Translator: Tiago Rodrigues \n" +"PO-Revision-Date: 2012-12-11 17:04+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:24+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -212,7 +212,7 @@ msgstr "Rótulo da Coluna" #. module: account #: help:account.config.settings,code_digits:0 msgid "No. of digits to use for account code" -msgstr "" +msgstr "Número de algarismos a usar no código da conta" #. module: account #: help:account.analytic.journal,type:0 @@ -278,7 +278,7 @@ msgstr "" #. module: account #: field:account.config.settings,sale_refund_sequence_next:0 msgid "Next credit note number" -msgstr "" +msgstr "Próximo número de nota de crédito" #. module: account #: help:account.config.settings,module_account_voucher:0 @@ -336,7 +336,7 @@ msgstr "Desconciliar Contas" #. module: account #: field:account.config.settings,module_account_budget:0 msgid "Budget management" -msgstr "" +msgstr "Gestão de orçamento" #. module: account #: view:product.template:0 @@ -391,7 +391,7 @@ msgstr "" #: view:account.invoice.report:0 #: field:account.invoice.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Vendedor" #. module: account #: model:ir.model,name:account.model_account_tax_template @@ -457,7 +457,7 @@ msgstr "" #: code:addons/account/static/src/xml/account_move_line_quickadd.xml:8 #, python-format msgid "Period :" -msgstr "" +msgstr "Período" #. module: account #: field:account.account.template,chart_template_id:0 @@ -906,7 +906,7 @@ msgstr "Diário da contabilidade analítica" #. module: account #: view:account.invoice:0 msgid "Send by Email" -msgstr "" +msgstr "Enviar por email" #. module: account #: help:account.central.journal,amount_currency:0 @@ -1202,7 +1202,7 @@ msgstr "" #. module: account #: view:account.invoice:0 msgid "Refund " -msgstr "" +msgstr "Reembolso " #. module: account #: help:account.config.settings,company_footer:0 diff --git a/addons/account_accountant/i18n/pt.po b/addons/account_accountant/i18n/pt.po index 51fc17acc13..6505706853f 100644 --- a/addons/account_accountant/i18n/pt.po +++ b/addons/account_accountant/i18n/pt.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:51+0000\n" -"PO-Revision-Date: 2011-01-23 11:19+0000\n" -"Last-Translator: Tiago Baptista \n" +"PO-Revision-Date: 2012-12-11 15:29+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_accountant #: model:ir.actions.client,name:account_accountant.action_client_account_menu msgid "Open Accounting Menu" -msgstr "" +msgstr "Abrir menu de contabilidade" #~ msgid "Accountant" #~ msgstr "Contabilista" diff --git a/addons/account_analytic_analysis/i18n/es.po b/addons/account_analytic_analysis/i18n/es.po index cd083b4c930..d141cfb393a 100644 --- a/addons/account_analytic_analysis/i18n/es.po +++ b/addons/account_analytic_analysis/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 21:37+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 12:28+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-12-11 04:48+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -69,6 +69,9 @@ msgid "" "to\n" " define the customer invoice price rate." msgstr "" +"Cuando se factura sobre el parte de horas, OpenERP usa la tarifa del " +"contrato que usa el precio definido en el producto relacionado con cada " +"empleado para definir la tasa de precio de la factura del cliente." #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -139,6 +142,18 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" Pulse para definir un nuevo contrato.\n" +"

    \n" +" Encontrará aquí los contratos a ser renovados porque la " +"fecha final esté pasada o el esfuerzo de trabajo sea superior al máximo " +"autorizado.\n" +"

    \n" +" OpenERP establece automaticamente los contratos a ser " +"renovados al estado pendiente. Después de la negociación, el comercial debe " +"cerrarlos o renovar los contratos pendientes.\n" +"

    \n" +" " #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -196,6 +211,8 @@ msgid "" "{'required': [('type','=','contract')], 'invisible': [('type','in',['view', " "'normal','template'])]}" msgstr "" +"{'required': [('type','=','contract')], 'invisible': [('type','in',['view', " +"'normal','template'])]}" #. module: account_analytic_analysis #: field:account.analytic.account,real_margin_rate:0 @@ -387,6 +404,14 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"Pulse aquí para crear una nueva plantilla de contrato.\n" +"

    \n" +"Las plantillas se usan para preconfigurar contratos/proyectos que pueden ser " +"seleccionados por los comerciales para configurar rápidamente los plazos y " +"condiciones de un contrato.\n" +"

    \n" +" " #. module: account_analytic_analysis #: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_user @@ -436,6 +461,15 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"Pulse para crear un nuevo contrato.\n" +"

    \n" +"Use los contratos para seguir tareas, incidencias, partes de horas o " +"facturación basada en el trabajo realizado, en gastos y/o en pedidos de " +"venta. OpenERP administrará automáticamente las alertas para la renovación " +"de los contratos al comercial adecuado.\n" +"

    \n" +" " #. module: account_analytic_analysis #: field:account.analytic.account,toinvoice_total:0 @@ -486,6 +520,13 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"Encontrará aquí los partes de tiempo y las compras que se han hecho para los " +"contratos que pueden ser re-facturadas al cliente. Si quiere registrar " +"nuevas actividades a facturar, debería utilizar el menú de parte de horas en " +"su lugar.\n" +"

    \n" +" " #. module: account_analytic_analysis #: field:account.analytic.account,hours_qtt_non_invoiced:0 @@ -557,7 +598,7 @@ msgstr "Fecha del último trabajo realizado en esta cuenta." #. module: account_analytic_analysis #: model:ir.model,name:account_analytic_analysis.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "Configuración de las ventas" #. module: account_analytic_analysis #: field:sale.config.settings,group_template_required:0 diff --git a/addons/account_analytic_analysis/i18n/it.po b/addons/account_analytic_analysis/i18n/it.po index 641209e35ce..ad74ca1dcba 100644 --- a/addons/account_analytic_analysis/i18n/it.po +++ b/addons/account_analytic_analysis/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-09 13:20+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-11 12:02+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-10 04:38+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -69,6 +69,10 @@ msgid "" "to\n" " define the customer invoice price rate." msgstr "" +"Quando si fattura dal timesheet, OpenERP usa il \n" +"listino del contratto il quale utilizza il prezzo\n" +"definito nel prodotto relativo ad ogni impiegato per\n" +"definire il prezzo finale di fatturazione al cliente." #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -138,6 +142,19 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"Cliccare per definire un nuovo contratto.\n" +"

    \n" +"Potrete trovare qui i contratti che devono essere rinnovati perchè\n" +"la data di termine e' passata o l'impegno lavorativo e' maggiore del massimo " +"autorizzato

    \n" +"OpenERP automaticamente imposta i contratti che devono essere rinnovati in " +"uno \n" +"stato pendente. Dopo la negoziazione, il venditore dovrebbe chiudere o " +"rinnovare\n" +"i vari contratti pendenti.\n" +"

    \n" +" " #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -389,6 +406,15 @@ msgid "" "

    \n" " " msgstr "" +"Copy text \t\n" +"

    \n" +"Cliccare qui per creare un modello del contratto\n" +"

    \n" +"I modelli sono utilizzati per creare un contratto / progetto tipo che\n" +"puo' essere selezionato dal commerciale per configurare velocemente i\n" +"termini e le condizioni del contratto stesso.\n" +"

    \n" +" " #. module: account_analytic_analysis #: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_user @@ -436,6 +462,15 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"Cliccare per creare un nuovo contratto.\n" +"

    \n" +"Usare i contratti per sequire le attivita', i problemi, i timesheet o le " +"fatture basate su\n" +"lavoro fatto, spese e/o ordini di vendita. OpenERP gestita' automaticamente\n" +"gli avvisi per i rinnovi dei contratti ai commerciali di riferimento.\n" +"

    \n" +" " #. module: account_analytic_analysis #: field:account.analytic.account,toinvoice_total:0 @@ -450,7 +485,7 @@ msgstr "Ordini di Vendita" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Open" -msgstr "" +msgstr "Apri" #. module: account_analytic_analysis #: field:account.analytic.account,invoiced_total:0 @@ -486,6 +521,13 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"Troverete qui timesheet e acquisti fatti per\n" +"i contratti che possono essere rifatturato al cliente. Se volete\n" +"registrare le nuove attivita' da fatturare, dovreste usare in alternativa\n" +"il menu timesheet.\n" +"

    \n" +" " #. module: account_analytic_analysis #: field:account.analytic.account,hours_qtt_non_invoiced:0 @@ -509,6 +551,9 @@ msgid "" "remaining subtotals which, in turn, are computed as the maximum between " "'(Estimation - Invoiced)' and 'To Invoice' amounts" msgstr "" +"Aspettative di reddito residuo per il presente contratto. Calcolato come la " +"somma dei totali parziali rimanenti, che, a loro volta, sono calcolati come " +"il massimo tra '(stima - tatturato)' e importi 'da fatturare'" #. module: account_analytic_analysis #: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue diff --git a/addons/account_analytic_default/i18n/it.po b/addons/account_analytic_default/i18n/it.po index 5e8b992ece4..71f8ab5ad73 100644 --- a/addons/account_analytic_default/i18n/it.po +++ b/addons/account_analytic_default/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-01-13 09:49+0000\n" +"PO-Revision-Date: 2012-12-11 12:06+0000\n" "Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:37+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_analytic_default #: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner @@ -31,7 +31,7 @@ msgstr "Raggruppa per..." #. module: account_analytic_default #: help:account.analytic.default,date_stop:0 msgid "Default end date for this Analytic Account." -msgstr "" +msgstr "Date termine di default per questo conto analitico" #. module: account_analytic_default #: model:ir.model,name:account_analytic_default.model_stock_picking diff --git a/addons/account_analytic_plans/i18n/es.po b/addons/account_analytic_plans/i18n/es.po index 1650a238592..e5214fdf552 100644 --- a/addons/account_analytic_plans/i18n/es.po +++ b/addons/account_analytic_plans/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-02-08 19:35+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 11:44+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-12-04 05:34+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_analytic_plans #: field:account.analytic.plan.instance,account4_ids:0 @@ -48,7 +48,7 @@ msgstr "Tasa (%)" #: code:addons/account_analytic_plans/account_analytic_plans.py:234 #, python-format msgid "The total should be between %s and %s." -msgstr "" +msgstr "El total debería estar entre %s y %s." #. module: account_analytic_plans #: view:account.analytic.plan:0 @@ -132,7 +132,7 @@ msgstr "No mostrar líneas vacías" #: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61 #, python-format msgid "There are no analytic lines related to account %s." -msgstr "" +msgstr "No hay líneas analíticas relacionadas con la cuenta %s." #. module: account_analytic_plans #: field:account.analytic.plan.instance,account3_ids:0 @@ -143,7 +143,7 @@ msgstr "Id cuenta3" #: view:account.crossovered.analytic:0 #: view:analytic.plan.create.model:0 msgid "or" -msgstr "" +msgstr "o" #. module: account_analytic_plans #: model:ir.model,name:account_analytic_plans.model_account_analytic_line @@ -282,7 +282,7 @@ msgstr "Línea extracto bancario" #: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: account_analytic_plans #: report:account.analytic.account.crossovered.analytic:0 @@ -298,7 +298,7 @@ msgstr "Imprimir analítica cruzada" #: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61 #, python-format msgid "User Error!" -msgstr "" +msgstr "¡Error de usuario!" #. module: account_analytic_plans #: field:account.analytic.plan.instance,account6_ids:0 @@ -316,7 +316,7 @@ msgstr "Diario analítico" #: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38 #, python-format msgid "Please put a name and a code before saving the model." -msgstr "" +msgstr "Por favor ponga un nombre y un código antes de guardar el modelo." #. module: account_analytic_plans #: report:account.analytic.account.crossovered.analytic:0 @@ -348,7 +348,7 @@ msgstr "Diario" #: code:addons/account_analytic_plans/account_analytic_plans.py:486 #, python-format msgid "You have to define an analytic journal on the '%s' journal." -msgstr "" +msgstr "Debe definir un diario analítico en el diario '%s'." #. module: account_analytic_plans #: code:addons/account_analytic_plans/account_analytic_plans.py:342 @@ -376,7 +376,7 @@ msgstr "Línea factura" #: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41 #, python-format msgid "There is no analytic plan defined." -msgstr "" +msgstr "No hay plan analítico definido." #. module: account_analytic_plans #: model:ir.model,name:account_analytic_plans.model_account_bank_statement @@ -403,7 +403,7 @@ msgstr "Distribución analítica" #: code:addons/account_analytic_plans/account_analytic_plans.py:221 #, python-format msgid "A model with this name and code already exists." -msgstr "" +msgstr "Ya existe un modelo con este nombre y código." #. module: account_analytic_plans #: help:account.analytic.plan.line,root_analytic_id:0 diff --git a/addons/account_asset/i18n/es.po b/addons/account_asset/i18n/es.po index 13c000b6aec..bf05b47e6dd 100755 --- a/addons/account_asset/i18n/es.po +++ b/addons/account_asset/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 21:45+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 11:45+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_asset #: view:account.asset.asset:0 @@ -676,6 +676,11 @@ msgid "" "

    \n" " " msgstr "" +"

    Desde este informe, se puede tener una vista global de todas las " +"depreciaciones. Se puede utilizar también la herramienta de búsqueda para " +"personalizar los informes de activos y, de esa forma, hacer que el análisis " +"case con sus necesidades;

    \n" +" " #. module: account_asset #: field:account.asset.asset,purchase_value:0 diff --git a/addons/account_asset/i18n/it.po b/addons/account_asset/i18n/it.po index c294ef8dc17..9d58e84167c 100644 --- a/addons/account_asset/i18n/it.po +++ b/addons/account_asset/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_asset #: view:account.asset.asset:0 diff --git a/addons/account_asset/i18n/pt.po b/addons/account_asset/i18n/pt.po index 45be4e24118..4072bf34f2b 100755 --- a/addons/account_asset/i18n/pt.po +++ b/addons/account_asset/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-31 15:07+0000\n" -"Last-Translator: ThinkOpen Solutions \n" +"PO-Revision-Date: 2012-12-11 15:47+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_asset #: view:account.asset.asset:0 @@ -200,7 +200,7 @@ msgstr "# Linhas de depreciação" #. module: account_asset #: field:account.asset.asset,method_period:0 msgid "Number of Months in a Period" -msgstr "" +msgstr "Número de meses num período" #. module: account_asset #: view:asset.asset.report:0 @@ -388,7 +388,7 @@ msgstr "Método tempo" #: view:asset.depreciation.confirmation.wizard:0 #: view:asset.modify:0 msgid "or" -msgstr "" +msgstr "ou" #. module: account_asset #: field:account.asset.asset,note:0 diff --git a/addons/account_bank_statement_extensions/i18n/nb.po b/addons/account_bank_statement_extensions/i18n/nb.po index 1bcdd64cfc6..9189a2ab065 100644 --- a/addons/account_bank_statement_extensions/i18n/nb.po +++ b/addons/account_bank_statement_extensions/i18n/nb.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-08-28 12:44+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 14:34+0000\n" +"Last-Translator: Kaare Pettersen \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -59,7 +59,7 @@ msgstr "Avbryt valgte setning linjer" #. module: account_bank_statement_extensions #: field:account.bank.statement.line,val_date:0 msgid "Value Date" -msgstr "" +msgstr "Verdi Dato." #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -104,7 +104,7 @@ msgstr "Satsvis Betalingsinformasjon" #. module: account_bank_statement_extensions #: field:account.bank.statement.line,state:0 msgid "Status" -msgstr "" +msgstr "Status." #. module: account_bank_statement_extensions #: code:addons/account_bank_statement_extensions/account_bank_statement.py:129 @@ -113,11 +113,13 @@ msgid "" "Delete operation not allowed. Please go to the associated bank " "statement in order to delete and/or modify bank statement line." msgstr "" +"Slette operasjonen er ikke tillatt. Vennligst gå til den tilknyttede " +"kontoutskrift for å slette og / eller endre kontoutskrift linjen." #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 msgid "or" -msgstr "" +msgstr "Eller." #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 @@ -219,7 +221,7 @@ msgstr "Manuell" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Bank Transaction" -msgstr "" +msgstr "Bank Transaksjon." #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -326,7 +328,7 @@ msgstr "Kontoutskrift linjer." #: code:addons/account_bank_statement_extensions/account_bank_statement.py:129 #, python-format msgid "Warning!" -msgstr "" +msgstr "Advarsel!" #. module: account_bank_statement_extensions #: view:account.bank.statement.line.global:0 diff --git a/addons/account_budget/i18n/es.po b/addons/account_budget/i18n/es.po index 5343ea9c7e3..557c92a08ba 100644 --- a/addons/account_budget/i18n/es.po +++ b/addons/account_budget/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 21:48+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 11:49+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-12-11 04:48+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_budget #: view:account.budget.analytic:0 @@ -368,6 +368,15 @@ msgid "" "

    \n" " " msgstr "" +"

    Un presupuesto es un pronóstico de los ingresos y gastos esperados de la " +"compañía para un periodo en el futuro. Un preseupuesto se define en varias " +"cuentas financieras y/o en cuentas analíticas (que pueden representar " +"proyectos, departamentos, categorías de productos, etc.).

    \n" +"

    Manteniendo el rastro de dónde va el dinero, será más difícil realizar " +"sobregastos, y más fácil conseguir las metas financieras. Prevea un " +"presupuesto detallando los ingresos esperados por cuenta analítica y " +"monitorice su evolución basada en los reales durante ese periodo.

    \n" +" " #. module: account_budget #: report:account.budget:0 diff --git a/addons/account_budget/i18n/pt.po b/addons/account_budget/i18n/pt.po index 20caac5282c..64070c0ab25 100644 --- a/addons/account_budget/i18n/pt.po +++ b/addons/account_budget/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2010-12-15 05:16+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:30+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:42+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_budget #: view:account.budget.analytic:0 @@ -234,7 +234,7 @@ msgstr "Para aprovar orçamentos" #. module: account_budget #: view:crossovered.budget:0 msgid "Duration" -msgstr "" +msgstr "Duração" #. module: account_budget #: field:account.budget.post,code:0 @@ -332,7 +332,7 @@ msgstr "Montante Teórico" #: view:account.budget.crossvered.summary.report:0 #: view:account.budget.report:0 msgid "or" -msgstr "" +msgstr "ou" #. module: account_budget #: field:crossovered.budget.lines,analytic_account_id:0 diff --git a/addons/account_check_writing/i18n/es.po b/addons/account_check_writing/i18n/es.po index 664d9b911c6..b9b7f61df05 100644 --- a/addons/account_check_writing/i18n/es.po +++ b/addons/account_check_writing/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-11-09 12:09+0000\n" +"PO-Revision-Date: 2012-12-11 11:55+0000\n" "Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_check_writing #: selection:res.company,check_layout:0 @@ -107,6 +107,16 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +"Pulse para crear un nuevo cheque.\n" +"

    \n" +"

    \n" +"El formulario de pago por cheque le permite registrar los pagos que hace a " +"sus proveedores usando cheques. Cuando selecciona un proveedor, el método de " +"pago y la cantidad para el pago, OpenERP le propondrá reconciliar su pago " +"con las facturas abiertas del proveedor.\n" +"

    \n" +" " #. module: account_check_writing #: field:account.voucher,allow_check:0 @@ -128,7 +138,7 @@ msgstr "Usar cheque preimpreso" #. module: account_check_writing #: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom msgid "Print Check (Bottom)" -msgstr "" +msgstr "Imprimir cheque (abajo)" #. module: account_check_writing #: report:account.print.check.bottom:0 @@ -140,7 +150,7 @@ msgstr "Fecha de vencimiento" #. module: account_check_writing #: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle msgid "Print Check (Middle)" -msgstr "" +msgstr "Imprimir cheque (en medio)" #. module: account_check_writing #: model:ir.model,name:account_check_writing.model_res_company @@ -156,7 +166,7 @@ msgstr "Saldo pendiente" #. module: account_check_writing #: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top msgid "Print Check (Top)" -msgstr "" +msgstr "Imprimir cheque (arriba)" #. module: account_check_writing #: report:account.print.check.bottom:0 diff --git a/addons/account_check_writing/i18n/ru.po b/addons/account_check_writing/i18n/ru.po new file mode 100644 index 00000000000..e51d88ef609 --- /dev/null +++ b/addons/account_check_writing/i18n/ru.po @@ -0,0 +1,182 @@ +# Russian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:02+0000\n" +"PO-Revision-Date: 2012-12-11 13:00+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: account_check_writing +#: selection:res.company,check_layout:0 +msgid "Check on Top" +msgstr "" + +#. module: account_check_writing +#: view:account.voucher:0 +msgid "Print Check" +msgstr "" + +#. module: account_check_writing +#: selection:res.company,check_layout:0 +msgid "Check in middle" +msgstr "" + +#. module: account_check_writing +#: help:res.company,check_layout:0 +msgid "" +"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. " +"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on " +"bottom is compatible with Peachtree, ACCPAC and DacEasy only" +msgstr "" + +#. module: account_check_writing +#: selection:res.company,check_layout:0 +msgid "Check on bottom" +msgstr "" + +#. module: account_check_writing +#: help:account.journal,allow_check_writing:0 +msgid "Check this if the journal is to be used for writing checks." +msgstr "" + +#. module: account_check_writing +#: field:account.journal,allow_check_writing:0 +msgid "Allow Check writing" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Description" +msgstr "" + +#. module: account_check_writing +#: model:ir.model,name:account_check_writing.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_check_writing +#: model:ir.actions.act_window,name:account_check_writing.action_write_check +#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check +msgid "Write Checks" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Discount" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Original Amount" +msgstr "" + +#. module: account_check_writing +#: model:ir.actions.act_window,help:account_check_writing.action_write_check +msgid "" +"

    \n" +" Click to create a new check. \n" +"

    \n" +" The check payment form allows you to track the payment you " +"do\n" +" to your suppliers using checks. When you select a supplier, " +"the\n" +" payment method and an amount for the payment, OpenERP will\n" +" propose to reconcile your payment with the open supplier\n" +" invoices or bills.\n" +"

    \n" +" " +msgstr "" + +#. module: account_check_writing +#: field:account.voucher,allow_check:0 +msgid "Allow Check Writing" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Payment" +msgstr "" + +#. module: account_check_writing +#: field:account.journal,use_preprint_check:0 +msgid "Use Preprinted Check" +msgstr "" + +#. module: account_check_writing +#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom +msgid "Print Check (Bottom)" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Due Date" +msgstr "" + +#. module: account_check_writing +#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle +msgid "Print Check (Middle)" +msgstr "" + +#. module: account_check_writing +#: model:ir.model,name:account_check_writing.model_res_company +msgid "Companies" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +msgid "Balance Due" +msgstr "" + +#. module: account_check_writing +#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top +msgid "Print Check (Top)" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Check Amount" +msgstr "" + +#. module: account_check_writing +#: model:ir.model,name:account_check_writing.model_account_voucher +msgid "Accounting Voucher" +msgstr "" + +#. module: account_check_writing +#: field:account.voucher,amount_in_word:0 +msgid "Amount in Word" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.top:0 +msgid "Open Balance" +msgstr "" + +#. module: account_check_writing +#: field:res.company,check_layout:0 +msgid "Choose Check layout" +msgstr "" diff --git a/addons/account_followup/i18n/es.po b/addons/account_followup/i18n/es.po index 372bd6e077b..78f712df135 100644 --- a/addons/account_followup/i18n/es.po +++ b/addons/account_followup/i18n/es.po @@ -7,30 +7,30 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-02-08 19:51+0000\n" +"PO-Revision-Date: 2012-12-11 23:01+0000\n" "Last-Translator: Ana Juaristi Olalde \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: 2012-12-04 05:20+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,manual_action:0 msgid "Manual Action" -msgstr "" +msgstr "Acción manual" #. module: account_followup #: help:res.partner,latest_followup_level_id:0 msgid "The maximum follow-up level" -msgstr "" +msgstr "Nivel máximo de seguimiento" #. module: account_followup #: view:res.partner:0 msgid "Group by" -msgstr "" +msgstr "Agrupar por" #. module: account_followup #: view:account_followup.stat:0 @@ -46,27 +46,27 @@ msgstr "Seguimiento" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(date)s" -msgstr "" +msgstr "%(date)s" #. module: account_followup #: field:res.partner,payment_next_action_date:0 msgid "Next Action Date" -msgstr "" +msgstr "Fecha de la próxima acción" #. module: account_followup #: field:account_followup.sending.results,needprinting:0 msgid "Needs Printing" -msgstr "" +msgstr "Requiere impresión" #. module: account_followup #: view:res.partner:0 msgid "⇾ Mark as Done" -msgstr "" +msgstr "Marcar como terminado" #. module: account_followup #: field:account_followup.followup.line,manual_action_note:0 msgid "Action To Do" -msgstr "" +msgstr "Acción a realizar" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level0 @@ -148,7 +148,7 @@ msgstr "" #. module: account_followup #: view:res.partner:0 msgid "Follow-ups to do" -msgstr "" +msgstr "Seguimientos a realizar" #. module: account_followup #: field:account_followup.followup,company_id:0 @@ -156,7 +156,7 @@ msgstr "" #: field:account_followup.stat,company_id:0 #: field:account_followup.stat.by.partner,company_id:0 msgid "Company" -msgstr "Compañía" +msgstr "Compañia" #. module: account_followup #: report:account_followup.followup.print:0 @@ -192,32 +192,32 @@ msgstr "" #. module: account_followup #: view:account_followup.followup.line:0 msgid "days overdue, do the following actions:" -msgstr "" +msgstr "días desde vencimiento, ejecute las siguientes acciones:" #. module: account_followup #: view:account_followup.followup.line:0 msgid "Follow-up Steps" -msgstr "" +msgstr "Pasos del seguimiento" #. module: account_followup #: field:account_followup.print,email_body:0 msgid "Email Body" -msgstr "" +msgstr "Cuerpo del mensaje" #. module: account_followup #: help:res.partner,payment_responsible_id:0 msgid "Responsible for making sure the action happens." -msgstr "" +msgstr "Responsable para asegurar que la acción sucede." #. module: account_followup #: view:res.partner:0 msgid "Overdue amount" -msgstr "" +msgstr "Importe adeudado" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_print msgid "Send Follow-Ups" -msgstr "" +msgstr "Enviar seguimientos" #. module: account_followup #: report:account_followup.followup.print:0 @@ -227,7 +227,7 @@ msgstr "Importe" #. module: account_followup #: view:res.partner:0 msgid "No Responsible" -msgstr "" +msgstr "Sin responsable" #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -242,12 +242,12 @@ msgstr "Total debe" #. module: account_followup #: field:res.partner,payment_next_action:0 msgid "Next Action" -msgstr "" +msgstr "Próxima acción" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Partner Name" -msgstr "" +msgstr "Nombre empresa" #. module: account_followup #: view:account_followup.followup:0 @@ -282,12 +282,12 @@ msgstr "Fecha :" #. module: account_followup #: view:res.partner:0 msgid "I am responsible" -msgstr "" +msgstr "Yo soy el responsable" #. module: account_followup #: sql_constraint:account_followup.followup:0 msgid "Only one follow-up per company is allowed" -msgstr "" +msgstr "Solo se permite un seguimiento por compañía" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line4 @@ -314,7 +314,7 @@ msgstr "" #. module: account_followup #: help:account_followup.followup.line,send_letter:0 msgid "When processing, it will print a letter" -msgstr "" +msgstr "Al ser procesado, imprimirá una carta" #. module: account_followup #: view:account_followup.stat:0 @@ -324,17 +324,17 @@ msgstr "No litigio" #. module: account_followup #: view:res.partner:0 msgid "Without responsible" -msgstr "" +msgstr "Sin responsable" #. module: account_followup #: view:account_followup.print:0 msgid "Send emails and generate letters" -msgstr "" +msgstr "Enviar correos electrónicos y generar cartas" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_customer_followup msgid "Manual Follow-Ups" -msgstr "" +msgstr "Seguimientos manuales" #. module: account_followup #: view:account_followup.followup.line:0 @@ -349,17 +349,17 @@ msgstr "Debe" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_stat msgid "Follow-up Statistics" -msgstr "" +msgstr "Seguir estadísticas" #. module: account_followup #: view:res.partner:0 msgid "Send Overdue Email" -msgstr "" +msgstr "Enviar correo de vencimiento" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup_line msgid "Follow-up Criteria" -msgstr "" +msgstr "Criterio seguimiento" #. module: account_followup #: help:account_followup.followup.line,sequence:0 @@ -372,34 +372,34 @@ msgstr "" #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid " will be sent" -msgstr "" +msgstr " Será enviado" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": User's Company Name" -msgstr "" +msgstr "Nombre de compañía del usuario" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_letter:0 msgid "Send a Letter" -msgstr "" +msgstr "Enviar una carta" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form msgid "Payment Follow-ups" -msgstr "" +msgstr "Seguimiento de pagos" #. module: account_followup #: field:account_followup.followup.line,delay:0 msgid "Due Days" -msgstr "" +msgstr "Días vencimiento" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:155 #, python-format msgid "Nobody" -msgstr "" +msgstr "Nadie" #. module: account_followup #: field:account.move.line,followup_line_id:0 @@ -416,12 +416,12 @@ msgstr "Último seguimiento" #: model:ir.actions.act_window,name:account_followup.action_account_manual_reconcile_receivable #: model:ir.ui.menu,name:account_followup.menu_manual_reconcile_followup msgid "Reconcile Invoices & Payments" -msgstr "" +msgstr "Reconciliar facturas y pagos" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_s msgid "Do Manual Follow-Ups" -msgstr "" +msgstr "Hacer seguimientos manuales" #. module: account_followup #: report:account_followup.followup.print:0 @@ -431,17 +431,17 @@ msgstr "Li." #. module: account_followup #: field:account_followup.print,email_conf:0 msgid "Send Email Confirmation" -msgstr "" +msgstr "Enviar confirmación por correo electrónico" #. module: account_followup #: view:res.partner:0 msgid "Print Overdue Payments" -msgstr "" +msgstr "Imprimir pagos pendientes" #. module: account_followup #: field:account_followup.stat.by.partner,date_followup:0 msgid "Latest follow-up" -msgstr "" +msgstr "Ultimo seguimiento" #. module: account_followup #: field:account_followup.print,partner_lang:0 @@ -452,13 +452,13 @@ msgstr "Enviar correo en el idioma de la empresa" #: code:addons/account_followup/wizard/account_followup_print.py:169 #, python-format msgid " email(s) sent" -msgstr "" +msgstr " correo(s) enviados" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_print #: model:ir.model,name:account_followup.model_account_followup_print_all msgid "Print Follow-up & Send Mail to Customers" -msgstr "" +msgstr "imprimir seguimiento y enviar mail al cliente" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line1 @@ -497,17 +497,17 @@ msgstr "Mensaje impreso" #. module: account_followup #: field:res.partner,latest_followup_level_id_without_lit:0 msgid "Latest Follow-up Level without litigation" -msgstr "" +msgstr "Ultimo nivel de seguimiento sin litigio" #. module: account_followup #: view:res.partner:0 msgid "Partners with Credits" -msgstr "" +msgstr "Empresas con créditos" #. module: account_followup #: help:account_followup.followup.line,send_email:0 msgid "When processing, it will send an email" -msgstr "" +msgstr "Al procesar, se enviará un correo" #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -518,6 +518,7 @@ msgstr "Empresa a recordar" #: view:res.partner:0 msgid "Print overdue payments report independent of follow-up line" msgstr "" +"Imprimir informe de pagos vencidos independiente de la línea de seguimiento" #. module: account_followup #: field:account_followup.followup.line,followup_id:0 @@ -530,11 +531,13 @@ msgstr "Seguimientos" #, python-format msgid "Email not sent because of email address of partner not filled in" msgstr "" +"Correo no enviado porque no se ha rellenado el campo email en la ficha de la " +"empresa" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup msgid "Account Follow-up" -msgstr "" +msgstr "Seguimiento de cuenta" #. module: account_followup #: help:res.partner,payment_next_action_date:0 @@ -543,11 +546,14 @@ msgid "" "the current date if the action fields are empty and the partner gets a " "follow-up level that requires a manual action. " msgstr "" +"Esto es cuando se requiere un seguimiento posterior. La fecha se ha " +"establecido a la fecha actual si los campos de acción están vacíos y el " +"cliente tiene un nivel de seguimiento que requiere una acción manual. " #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_sending_results msgid "Results from the sending of the different letters and emails" -msgstr "" +msgstr "Resultados de enviar diferentes cartas y correos" #. module: account_followup #: constraint:account_followup.followup.line:0 @@ -567,7 +573,7 @@ msgstr "" #. module: account_followup #: view:res.partner:0 msgid "Search Partner" -msgstr "" +msgstr "Buscar empresa" #. module: account_followup #: view:res.partner:0 @@ -582,28 +588,28 @@ msgstr "" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_print_menu msgid "Send Letters and Emails" -msgstr "" +msgstr "Enviar cartas y correos" #. module: account_followup #: view:account_followup.followup:0 msgid "Search Follow-up" -msgstr "" +msgstr "Buscar seguimiento" #. module: account_followup #: view:res.partner:0 msgid "Account Move line" -msgstr "" +msgstr "Apunte contable" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:240 #, python-format msgid "Send Letters and Emails: Actions Summary" -msgstr "" +msgstr "Enviar correos e emails: Resumen de acciones" #. module: account_followup #: view:account_followup.print:0 msgid "or" -msgstr "" +msgstr "o" #. module: account_followup #: field:account_followup.stat,blocked:0 @@ -613,17 +619,17 @@ msgstr "Bloqueado" #. module: account_followup #: sql_constraint:account_followup.followup.line:0 msgid "Days of the follow-up levels must be different" -msgstr "" +msgstr "Los días de los niveles de seguimiento deben ser distintos" #. module: account_followup #: view:res.partner:0 msgid "Click to mark the action as done." -msgstr "" +msgstr "Haga click para establecer la acción como realizada" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_action_followup_stat_follow msgid "Follow-Ups Analysis" -msgstr "" +msgstr "Análisis de seguimientos" #. module: account_followup #: help:account_followup.print,date:0 @@ -641,7 +647,7 @@ msgstr "Fecha envío del seguimiento" #. module: account_followup #: field:res.partner,payment_responsible_id:0 msgid "Follow-up Responsible" -msgstr "" +msgstr "Responsable del seguimiento" #. module: account_followup #: report:account_followup.followup.print:0 @@ -657,12 +663,12 @@ msgstr "Recordatorio facturas" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_menu msgid "Follow-up Levels" -msgstr "" +msgstr "Niveles de seguimiento" #. module: account_followup #: view:res.partner:0 msgid "Future Follow-ups" -msgstr "" +msgstr "Seguimientos futuros" #. module: account_followup #: view:account_followup.followup:0 @@ -680,7 +686,7 @@ msgstr "" #. module: account_followup #: view:account_followup.stat:0 msgid "Follow-up Entries with period in current year" -msgstr "" +msgstr "Realizar seguimiento a asientos con periodo en el año actual" #. module: account_followup #: field:account.move.line,followup_date:0 @@ -690,24 +696,24 @@ msgstr "Último seguimiento" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Download Letters" -msgstr "" +msgstr "Descargar cartas" #. module: account_followup #: field:account_followup.print,company_id:0 #: field:res.partner,unreconciled_aml_ids:0 msgid "unknown" -msgstr "" +msgstr "desconocido" #. module: account_followup #: code:addons/account_followup/account_followup.py:245 #, python-format msgid "Printed overdue payments report" -msgstr "" +msgstr "Impresión del informe de pagos vencidos" #. module: account_followup #: model:ir.model,name:account_followup.model_email_template msgid "Email Templates" -msgstr "" +msgstr "Plantillas de correo electrónico" #. module: account_followup #: help:account_followup.followup.line,manual_action:0 @@ -715,18 +721,22 @@ msgid "" "When processing, it will set the manual action to be taken for that " "customer. " msgstr "" +"Al procesar, se establecerá la acción manual que deberá hacerse para ese " +"cliente. " #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " email(s) should have been sent, but " -msgstr "" +msgstr " Los correos deberían haber sido enviados, pero " #. module: account_followup #: help:account_followup.print,test_print:0 msgid "" "Check if you want to print follow-ups without changing follow-ups level." msgstr "" +"Verifique si quiere imprimir seguimientos sin cambiar los niveles de " +"seguimiento." #. module: account_followup #: model:ir.model,name:account_followup.model_account_move_line @@ -741,7 +751,7 @@ msgstr "Total:" #. module: account_followup #: field:account_followup.followup.line,email_template_id:0 msgid "Email Template" -msgstr "" +msgstr "Plantilla email" #. module: account_followup #: view:account_followup.followup.line:0 @@ -762,7 +772,7 @@ msgstr "Resumen" #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_email:0 msgid "Send an Email" -msgstr "" +msgstr "Enviar un correo" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line2 @@ -879,12 +889,14 @@ msgid "" "The maximum follow-up level without taking into account the account move " "lines with litigation" msgstr "" +"El máximo nivel de seguimiento sin tener en cuenta los apuntes contables con " +"litigio" #. module: account_followup #: view:account_followup.stat:0 #: field:res.partner,latest_followup_date:0 msgid "Latest Follow-up Date" -msgstr "" +msgstr "Ultima fecha de seguimiento" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level1 @@ -985,7 +997,7 @@ msgstr "" #. module: account_followup #: view:res.partner:0 msgid "My Follow-ups" -msgstr "" +msgstr "Mis seguimientos" #. module: account_followup #: view:account_followup.followup.line:0 @@ -1017,7 +1029,7 @@ msgstr "" #. module: account_followup #: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report msgid "Follow-up Report" -msgstr "" +msgstr "Informe seguimiento" #. module: account_followup #: view:res.partner:0 @@ -1025,6 +1037,9 @@ msgid "" ", the latest payment follow-up\n" " was:" msgstr "" +", el último seguimiento\n" +" " +" era:" #. module: account_followup #: view:account_followup.print:0 @@ -1034,7 +1049,7 @@ msgstr "Cancelar" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Close" -msgstr "" +msgstr "Cerrar" #. module: account_followup #: view:account_followup.stat:0 @@ -1051,23 +1066,23 @@ msgstr "Nivel superior seguimiento máx." #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " had unknown email address(es)" -msgstr "" +msgstr " Tiene dirección(es) de correo desconocida(s)" #. module: account_followup #: view:res.partner:0 msgid "Responsible" -msgstr "" +msgstr "Responsable" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_finance_followup #: view:res.partner:0 msgid "Payment Follow-up" -msgstr "" +msgstr "Seguimiento de pagos" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Current Date" -msgstr "" +msgstr ": Fecha actual" #. module: account_followup #: field:res.partner,payment_amount_due:0 @@ -1077,7 +1092,7 @@ msgstr "" #. module: account_followup #: field:account_followup.followup.line,name:0 msgid "Follow-Up Action" -msgstr "" +msgstr "Acciones de seguimiento" #. module: account_followup #: view:account_followup.stat:0 @@ -1101,7 +1116,7 @@ msgstr "" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Summary of actions" -msgstr "" +msgstr "Resumen de acciones" #. module: account_followup #: report:account_followup.followup.print:0 @@ -1111,7 +1126,7 @@ msgstr "Ref." #. module: account_followup #: view:account_followup.followup.line:0 msgid "After" -msgstr "" +msgstr "Después" #. module: account_followup #: view:account_followup.stat:0 diff --git a/addons/account_followup/i18n/pt.po b/addons/account_followup/i18n/pt.po index 234b3bf1191..8c59f4adfb8 100644 --- a/addons/account_followup/i18n/pt.po +++ b/addons/account_followup/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-07 10:43+0000\n" -"Last-Translator: Andrei Talpa (multibase.pt) \n" +"PO-Revision-Date: 2012-12-11 17:05+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-08 04:58+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_followup #: view:account_followup.followup.line:0 @@ -202,7 +202,7 @@ msgstr "" #. module: account_followup #: field:account_followup.print,email_body:0 msgid "Email Body" -msgstr "" +msgstr "Corpo da mensagem" #. module: account_followup #: help:res.partner,payment_responsible_id:0 @@ -242,12 +242,12 @@ msgstr "Débito total" #. module: account_followup #: field:res.partner,payment_next_action:0 msgid "Next Action" -msgstr "" +msgstr "Próxima ação" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Partner Name" -msgstr "" +msgstr ": Nome do parceiro" #. module: account_followup #: view:account_followup.followup:0 diff --git a/addons/account_followup/i18n/pt_BR.po b/addons/account_followup/i18n/pt_BR.po index fdd61858b36..71e1d63976d 100644 --- a/addons/account_followup/i18n/pt_BR.po +++ b/addons/account_followup/i18n/pt_BR.po @@ -7,31 +7,31 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-07-28 20:47+0000\n" +"PO-Revision-Date: 2012-12-11 13:13+0000\n" "Last-Translator: Fábio Martinelli - http://zupy.com.br " "\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: 2012-12-04 05:20+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,manual_action:0 msgid "Manual Action" -msgstr "" +msgstr "Ação Manual" #. module: account_followup #: help:res.partner,latest_followup_level_id:0 msgid "The maximum follow-up level" -msgstr "" +msgstr "Nível máximo de acompanhamento de cobrança" #. module: account_followup #: view:res.partner:0 msgid "Group by" -msgstr "" +msgstr "Agrupar por" #. module: account_followup #: view:account_followup.stat:0 @@ -47,27 +47,27 @@ msgstr "Cobrança" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(date)s" -msgstr "" +msgstr "%(date)s" #. module: account_followup #: field:res.partner,payment_next_action_date:0 msgid "Next Action Date" -msgstr "" +msgstr "Data da Próxima Ação" #. module: account_followup #: field:account_followup.sending.results,needprinting:0 msgid "Needs Printing" -msgstr "" +msgstr "É necessário Impressão" #. module: account_followup #: view:res.partner:0 msgid "⇾ Mark as Done" -msgstr "" +msgstr "⇾ Marcar como Concluído" #. module: account_followup #: field:account_followup.followup.line,manual_action_note:0 msgid "Action To Do" -msgstr "" +msgstr "Ação a ser feita" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level0 @@ -145,11 +145,82 @@ msgid "" "
\n" " " msgstr "" +"\n" +"
\n" +"\n" +"

Prezado ${object.name},

\n" +"

\n" +" Consta em nossos registros que o seguinte valor permanece sem aberto. " +"Por favor providencie o pagamento o mais breve possível.\n" +"\n" +"Se o pagamento já foi efetuado, desconsidere essa mensagem. \n" +"Qualquer dúvida entre em contato com nosso departamento financeiro por " +"telefone.\n" +"\n" +"

\n" +"
\n" +"Atenciosamente,\n" +"\n" +"
\n" +"${user.name}\n" +"\n" +"
\n" +"
\n" +"<%\n" +" from openerp.addons.account_followup.report import " +"account_followup_print\n" +" rml_parse = account_followup_print.report_rappel(object._cr, user.id, " +"\"followup_rml_parser\")\n" +" final_res = rml_parse._lines_get_with_partner(object, " +"user.company_id.id)\n" +" followup_table = ''\n" +" for currency_dict in final_res:\n" +" currency_symbol = currency_dict.get('line', [{'currency_id': " +"user.company_id.currency_id}])[0]['currency_id'].symbol\n" +" followup_table += '''\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" ''' % (currency_symbol)\n" +" total = 0\n" +" for aml in currency_dict['line']:\n" +" block = aml['blocked'] and 'X' or ' '\n" +" total += aml['balance']\n" +" strbegin = \" \"\n" +" date = aml['date_maturity'] or aml['date']\n" +" if date <= ctx['current_date'] and aml['balance'] > 0:\n" +" strbegin = \"\"\n" +" followup_table +=\"\" + strbegin + str(aml['date']) + strend " +"+ strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin " +"+ str(aml['balance']) + strend + strbegin + block + strend + \"\"\n" +" total = rml_parse.formatLang(total, dp='Account', " +"currency_obj=object.company_id.currency_id)\n" +" followup_table += '''\n" +"
Data da FaturaReferenciaData de VencimentoValor (%s)Lit.
\"\n" +" strend = \"\"\n" +" strend = \"
\n" +"
Valor em aberto: %s
''' % (total)\n" +"\n" +"%>\n" +"\n" +"${followup_table}\n" +"\n" +"
\n" +"\n" +"
\n" +" " #. module: account_followup #: view:res.partner:0 msgid "Follow-ups to do" -msgstr "" +msgstr "Cobranças a serem feitas" #. module: account_followup #: field:account_followup.followup,company_id:0 @@ -189,36 +260,52 @@ msgid "" "Best Regards,\n" " " msgstr "" +"\n" +"Prezado %(partner_name)s,\n" +"\n" +"Apesar de vários avisos, ainda não detectamos o pagamento de sua fatura.\n" +"\n" +"A menos que o pagamento total seja efetuado nos próximos 8 dias, acões " +"legais poderão ser tomadas sem outros avisos.\n" +"\n" +"Temos certeza de que essas ações não serão necessárias, evite o protesto de " +"seu titulo, os detalhes do pagamento em aberto encontram-se abaixo.\n" +"\n" +"Em caso de dúvidas referente a esta questão, entre em contato com nosso " +"Departamento Financeiro.\n" +"\n" +"Atenciosamente,\n" +" " #. module: account_followup #: view:account_followup.followup.line:0 msgid "days overdue, do the following actions:" -msgstr "" +msgstr "Dias em atraso, executar as seguintes ações" #. module: account_followup #: view:account_followup.followup.line:0 msgid "Follow-up Steps" -msgstr "" +msgstr "Passos da Cobrança" #. module: account_followup #: field:account_followup.print,email_body:0 msgid "Email Body" -msgstr "" +msgstr "Corpo do Email" #. module: account_followup #: help:res.partner,payment_responsible_id:0 msgid "Responsible for making sure the action happens." -msgstr "" +msgstr "Responsável para garantir que a ação aconteça" #. module: account_followup #: view:res.partner:0 msgid "Overdue amount" -msgstr "" +msgstr "Valor em Atraso" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_print msgid "Send Follow-Ups" -msgstr "" +msgstr "Enviar Cobranças" #. module: account_followup #: report:account_followup.followup.print:0 @@ -228,7 +315,7 @@ msgstr "Valor" #. module: account_followup #: view:res.partner:0 msgid "No Responsible" -msgstr "" +msgstr "Nenhum Responsável" #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -243,12 +330,12 @@ msgstr "Débito Total" #. module: account_followup #: field:res.partner,payment_next_action:0 msgid "Next Action" -msgstr "" +msgstr "Próxima Ação" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Partner Name" -msgstr "" +msgstr ": Nome do Parceiro" #. module: account_followup #: view:account_followup.followup:0 @@ -283,12 +370,12 @@ msgstr "Data :" #. module: account_followup #: view:res.partner:0 msgid "I am responsible" -msgstr "" +msgstr "Eu sou o reponsável" #. module: account_followup #: sql_constraint:account_followup.followup:0 msgid "Only one follow-up per company is allowed" -msgstr "" +msgstr "Apenas uma cobrança por empresa é permitida" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line4 @@ -311,11 +398,27 @@ msgid "" "Best Regards,\n" " " msgstr "" +"\n" +"Prezado %(partner_name)s,\n" +"\n" +"Apesar de vários avisos, ainda não detectamos o pagamento de sua fatura.\n" +"\n" +"Efetue o pagamento nos próximos dias, evitando assim o protesto de sua " +"fatura, caso contrário o protesto poderá ocorrer sem outros avisos.\n" +"\n" +"Temos certeza de que essas ações não serão necessárias os detalhes dos " +"pagamentos em atraso encontram-se abaixo.\n" +"\n" +"Em caso de dúvidas referente a esta questão, entre em contato com nosso " +"departamento financeiro.\n" +"\n" +"Atenciosamente,\n" +" " #. module: account_followup #: help:account_followup.followup.line,send_letter:0 msgid "When processing, it will print a letter" -msgstr "" +msgstr "Quando processado, irá imprimir uma carta" #. module: account_followup #: view:account_followup.stat:0 @@ -325,22 +428,22 @@ msgstr "Sem Litígio" #. module: account_followup #: view:res.partner:0 msgid "Without responsible" -msgstr "" +msgstr "Sem responsável" #. module: account_followup #: view:account_followup.print:0 msgid "Send emails and generate letters" -msgstr "" +msgstr "Enviar emails e gerar cartas" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_customer_followup msgid "Manual Follow-Ups" -msgstr "" +msgstr "Cobranças manuais" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(partner_name)s" -msgstr "" +msgstr "%(partner_name)s" #. module: account_followup #: field:account_followup.stat,debit:0 @@ -350,17 +453,17 @@ msgstr "Débito" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_stat msgid "Follow-up Statistics" -msgstr "" +msgstr "Estatísticas de Cobranças" #. module: account_followup #: view:res.partner:0 msgid "Send Overdue Email" -msgstr "" +msgstr "Enviar Email em Atraso" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup_line msgid "Follow-up Criteria" -msgstr "" +msgstr "Critérios de Cobrança" #. module: account_followup #: help:account_followup.followup.line,sequence:0 @@ -371,34 +474,34 @@ msgstr "Define a sequência ao mostrar a lista de linhas de cobrança." #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid " will be sent" -msgstr "" +msgstr " será enviado" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": User's Company Name" -msgstr "" +msgstr ": Nome da Empresa do usuário" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_letter:0 msgid "Send a Letter" -msgstr "" +msgstr "Enviar uma Carta" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form msgid "Payment Follow-ups" -msgstr "" +msgstr "Acompanhamento dos Pagamentos" #. module: account_followup #: field:account_followup.followup.line,delay:0 msgid "Due Days" -msgstr "" +msgstr "Dias em Atraso" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:155 #, python-format msgid "Nobody" -msgstr "" +msgstr "Ninguém" #. module: account_followup #: field:account.move.line,followup_line_id:0 @@ -415,12 +518,12 @@ msgstr "Última cobrança" #: model:ir.actions.act_window,name:account_followup.action_account_manual_reconcile_receivable #: model:ir.ui.menu,name:account_followup.menu_manual_reconcile_followup msgid "Reconcile Invoices & Payments" -msgstr "" +msgstr "Reconciliar Faturas & Pagamentos" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_s msgid "Do Manual Follow-Ups" -msgstr "" +msgstr "Fazer Cobrança Manual" #. module: account_followup #: report:account_followup.followup.print:0 @@ -430,17 +533,17 @@ msgstr "Li." #. module: account_followup #: field:account_followup.print,email_conf:0 msgid "Send Email Confirmation" -msgstr "" +msgstr "Enviar Email de Confirmação" #. module: account_followup #: view:res.partner:0 msgid "Print Overdue Payments" -msgstr "" +msgstr "Imprimir Pagamentos em Atraso" #. module: account_followup #: field:account_followup.stat.by.partner,date_followup:0 msgid "Latest follow-up" -msgstr "" +msgstr "Última Cobrança" #. module: account_followup #: field:account_followup.print,partner_lang:0 @@ -451,13 +554,13 @@ msgstr "Enviar Email no Idioma do Parceiro" #: code:addons/account_followup/wizard/account_followup_print.py:169 #, python-format msgid " email(s) sent" -msgstr "" +msgstr " email(s) enviados" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_print #: model:ir.model,name:account_followup.model_account_followup_print_all msgid "Print Follow-up & Send Mail to Customers" -msgstr "" +msgstr "Imprimir Cobranças & Enviar email a Clientes" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line1 @@ -496,17 +599,17 @@ msgstr "Mensagem Impressa" #. module: account_followup #: field:res.partner,latest_followup_level_id_without_lit:0 msgid "Latest Follow-up Level without litigation" -msgstr "" +msgstr "Último nível de Cobrança sem processo" #. module: account_followup #: view:res.partner:0 msgid "Partners with Credits" -msgstr "" +msgstr "Parceiros com Créditos" #. module: account_followup #: help:account_followup.followup.line,send_email:0 msgid "When processing, it will send an email" -msgstr "" +msgstr "Quando executado, irá enviar um email" #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -516,7 +619,7 @@ msgstr "Parceiros para Lembrete" #. module: account_followup #: view:res.partner:0 msgid "Print overdue payments report independent of follow-up line" -msgstr "" +msgstr "Imprimir pagamentos em atraso independente da linha de cobrança" #. module: account_followup #: field:account_followup.followup.line,followup_id:0 @@ -528,12 +631,12 @@ msgstr "Cobranças" #: code:addons/account_followup/account_followup.py:227 #, python-format msgid "Email not sent because of email address of partner not filled in" -msgstr "" +msgstr "Email não enviado, por que o email do parceiro não está preenchido" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup msgid "Account Follow-up" -msgstr "" +msgstr "Acompanhamento de Contas" #. module: account_followup #: help:res.partner,payment_next_action_date:0 @@ -542,11 +645,14 @@ msgid "" "the current date if the action fields are empty and the partner gets a " "follow-up level that requires a manual action. " msgstr "" +"Isto é para quando uma cobrança ainda for necessária. A data será definida " +"como a data atual, se os campos de ação estão vazios e o parceiro recebe um " +"nível de cobrança que requer uma ação manual. " #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_sending_results msgid "Results from the sending of the different letters and emails" -msgstr "" +msgstr "Resultado do envio de diferentes cartas e emails" #. module: account_followup #: constraint:account_followup.followup.line:0 @@ -561,12 +667,12 @@ msgstr "" #: code:addons/account_followup/wizard/account_followup_print.py:172 #, python-format msgid " manual action(s) assigned:" -msgstr "" +msgstr " Ação manual atribuída:" #. module: account_followup #: view:res.partner:0 msgid "Search Partner" -msgstr "" +msgstr "Buscar Parceiro" #. module: account_followup #: view:res.partner:0 @@ -577,32 +683,35 @@ msgid "" " order to not include it in the next payment\n" " follow-ups." msgstr "" +"Segue o histórico de todas as transações desde cliente.\n" +" Você pode definir uma Fatura em protesto\n" +" Para não incluir na próxima cobrança." #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_print_menu msgid "Send Letters and Emails" -msgstr "" +msgstr "Enviar Cartas e Emails" #. module: account_followup #: view:account_followup.followup:0 msgid "Search Follow-up" -msgstr "" +msgstr "Procurar Cobrança" #. module: account_followup #: view:res.partner:0 msgid "Account Move line" -msgstr "" +msgstr "Linha de Movimentação" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:240 #, python-format msgid "Send Letters and Emails: Actions Summary" -msgstr "" +msgstr "Envio de Cartas e Emails: Resumo das Ações" #. module: account_followup #: view:account_followup.print:0 msgid "or" -msgstr "" +msgstr "ou" #. module: account_followup #: field:account_followup.stat,blocked:0 @@ -612,17 +721,17 @@ msgstr "Bloqueado" #. module: account_followup #: sql_constraint:account_followup.followup.line:0 msgid "Days of the follow-up levels must be different" -msgstr "" +msgstr "Os dias dos níveis de cobrança devem ser diferentes" #. module: account_followup #: view:res.partner:0 msgid "Click to mark the action as done." -msgstr "" +msgstr "Clique para marcar como feito" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_action_followup_stat_follow msgid "Follow-Ups Analysis" -msgstr "" +msgstr "Análise de Cobranças" #. module: account_followup #: help:account_followup.print,date:0 @@ -639,7 +748,7 @@ msgstr "Data para o Envio da Cobrança" #. module: account_followup #: field:res.partner,payment_responsible_id:0 msgid "Follow-up Responsible" -msgstr "" +msgstr "Responsável pela Cobrança" #. module: account_followup #: report:account_followup.followup.print:0 @@ -655,12 +764,12 @@ msgstr "Lembrete de Faturas" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_menu msgid "Follow-up Levels" -msgstr "" +msgstr "Níveis de Cobrança" #. module: account_followup #: view:res.partner:0 msgid "Future Follow-ups" -msgstr "" +msgstr "Cobranças Futuras" #. module: account_followup #: view:account_followup.followup:0 @@ -674,11 +783,18 @@ msgid "" "certain\n" " amount of days." msgstr "" +"Para lembrar os clientes de pagar as suas faturas, você pode\n" +"                         definir ações diferentes, dependendo do tempo " +"atraso\n" +" do cliente. Essas ações agrupadas em níveis de " +"cobrança\n" +" que são acionadas quando o atraso é superior a um " +"período." #. module: account_followup #: view:account_followup.stat:0 msgid "Follow-up Entries with period in current year" -msgstr "" +msgstr "Cobranças com prazo neste ano" #. module: account_followup #: field:account.move.line,followup_date:0 @@ -688,24 +804,24 @@ msgstr "Última Cobrança" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Download Letters" -msgstr "" +msgstr "Download de Cartas" #. module: account_followup #: field:account_followup.print,company_id:0 #: field:res.partner,unreconciled_aml_ids:0 msgid "unknown" -msgstr "" +msgstr "Desconhecido" #. module: account_followup #: code:addons/account_followup/account_followup.py:245 #, python-format msgid "Printed overdue payments report" -msgstr "" +msgstr "Relatórios de pagamentos em atraso impresso" #. module: account_followup #: model:ir.model,name:account_followup.model_email_template msgid "Email Templates" -msgstr "" +msgstr "Modelos de Email" #. module: account_followup #: help:account_followup.followup.line,manual_action:0 @@ -713,18 +829,21 @@ msgid "" "When processing, it will set the manual action to be taken for that " "customer. " msgstr "" +"Quando executado, irá definir uma ação manual a ser tomada para este " +"cliente. " #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " email(s) should have been sent, but " -msgstr "" +msgstr " emails(s) deveriam ter sido enviados, mas " #. module: account_followup #: help:account_followup.print,test_print:0 msgid "" "Check if you want to print follow-ups without changing follow-ups level." msgstr "" +"Marque se você deseja imprimir as cobranças sem alterar o nível de cobrança" #. module: account_followup #: model:ir.model,name:account_followup.model_account_move_line @@ -739,12 +858,12 @@ msgstr "Total:" #. module: account_followup #: field:account_followup.followup.line,email_template_id:0 msgid "Email Template" -msgstr "" +msgstr "Modelo de Email" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(user_signature)s" -msgstr "" +msgstr "%(user_signature)s" #. module: account_followup #: model:ir.model,name:account_followup.model_res_company @@ -760,7 +879,7 @@ msgstr "Resumo" #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_email:0 msgid "Send an Email" -msgstr "" +msgstr "Enviar um Email" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line2 @@ -786,6 +905,25 @@ msgid "" "Best Regards,\n" " " msgstr "" +"\n" +"Prezado %(partner_name)s,\n" +"\n" +"Estamos desapontados em ver que apesar de enviarmos um lembrete, sua conta " +"agora está seriamente atrasada.\n" +"\n" +"É essencial que o pagamento imediato seja feito, caso contrário iremos " +"suspender sua conta e você não receberá mais nenhum produto ou serviço.\n" +"Por favor tome as medidas apropriadas para regularizar esse pagamento nos " +"próximos dias.\n" +"\n" +"Se tiver alguma dúvida ou problema para efetuar o pagamento desta fatura que " +"não estejamos cientes, entre em contato com nosso departamento financeiro, " +"para que possamos resolver essa questão o mais breve possível.\n" +"\n" +"Detalhes dos pagamentos em atraso estão impressos abaixo.\n" +"\n" +"Atenciosamente,\n" +" " #. module: account_followup #: report:account_followup.followup.print:0 @@ -877,12 +1015,14 @@ msgid "" "The maximum follow-up level without taking into account the account move " "lines with litigation" msgstr "" +"O número máximo de cobranças que será executadas antes dessa conta ir para " +"litígio" #. module: account_followup #: view:account_followup.stat:0 #: field:res.partner,latest_followup_date:0 msgid "Latest Follow-up Date" -msgstr "" +msgstr "Última Data de Cobrança" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level1 @@ -978,17 +1118,17 @@ msgstr "Saldo" #. module: account_followup #: help:res.partner,payment_note:0 msgid "Payment Note" -msgstr "" +msgstr "Obs do Pagamento" #. module: account_followup #: view:res.partner:0 msgid "My Follow-ups" -msgstr "" +msgstr "Minhas Cobranças" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(company_name)s" -msgstr "" +msgstr "%(company_name)s" #. module: account_followup #: field:account_followup.stat,date_move_last:0 @@ -1010,19 +1150,19 @@ msgstr "Período" #: code:addons/account_followup/wizard/account_followup_print.py:231 #, python-format msgid "%s partners have no credits and as such the action is cleared" -msgstr "" +msgstr "%s parceiros não possuem créditos e essa ação foi desmarcada" #. module: account_followup #: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report msgid "Follow-up Report" -msgstr "" +msgstr "Relatório de Cobrança" #. module: account_followup #: view:res.partner:0 msgid "" ", the latest payment follow-up\n" " was:" -msgstr "" +msgstr ", a última cobrança" #. module: account_followup #: view:account_followup.print:0 @@ -1032,7 +1172,7 @@ msgstr "Cancelar" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Close" -msgstr "" +msgstr "Fechar" #. module: account_followup #: view:account_followup.stat:0 @@ -1049,33 +1189,33 @@ msgstr "Nível Máximo de Cobrança" #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " had unknown email address(es)" -msgstr "" +msgstr " possuem emails desconhecidos" #. module: account_followup #: view:res.partner:0 msgid "Responsible" -msgstr "" +msgstr "Responsável" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_finance_followup #: view:res.partner:0 msgid "Payment Follow-up" -msgstr "" +msgstr "Acompanhamento de Cobranças" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Current Date" -msgstr "" +msgstr ": Data Atual" #. module: account_followup #: field:res.partner,payment_amount_due:0 msgid "Total amount due" -msgstr "" +msgstr "Valor total em aberto" #. module: account_followup #: field:account_followup.followup.line,name:0 msgid "Follow-Up Action" -msgstr "" +msgstr "Ação de Cobrança" #. module: account_followup #: view:account_followup.stat:0 @@ -1094,12 +1234,12 @@ msgstr "Descrição" #: model:email.template,subject:account_followup.email_template_account_followup_level1 #: model:email.template,subject:account_followup.email_template_account_followup_level2 msgid "${user.company_id.name} Payment Follow-up" -msgstr "" +msgstr "${user.company_id.name} Cobrança de Pagamento" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Summary of actions" -msgstr "" +msgstr "Resumo das ações" #. module: account_followup #: report:account_followup.followup.print:0 @@ -1109,7 +1249,7 @@ msgstr "Ref" #. module: account_followup #: view:account_followup.followup.line:0 msgid "After" -msgstr "" +msgstr "Em seguida" #. module: account_followup #: view:account_followup.stat:0 @@ -1122,6 +1262,8 @@ msgid "" "If not specified by the latest follow-up level, it will send from the " "default follow-up of overdue invoices template" msgstr "" +"Se não for especificado pelo último nível de cobrança, será enviado o modelo " +"padrão de cobrança" #. module: account_followup #: model:ir.actions.act_window,help:account_followup.action_account_manual_reconcile_receivable @@ -1131,6 +1273,10 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Nenhum item de diário encontrado.\n" +"

\n" +" " #. module: account_followup #: view:account.move.line:0 @@ -1140,12 +1286,12 @@ msgstr "Lançamentos do parceiro" #. module: account_followup #: view:account_followup.stat:0 msgid "Follow-up lines" -msgstr "" +msgstr "Linhas de Cobrança" #. module: account_followup #: field:account_followup.followup.line,manual_action_responsible_id:0 msgid "Assign a Responsible" -msgstr "" +msgstr "Associar a um Responsável" #. module: account_followup #: view:account_followup.print:0 @@ -1153,6 +1299,9 @@ msgid "" "This action will send follow-up emails, print the letters and\n" " set the manual actions per customers." msgstr "" +"Esta ação irá enviar emails de cobrança, imprimir cartas e\n" +" " +" definir ação manual por clientes." #. module: account_followup #: help:account_followup.print,partner_lang:0 @@ -1174,6 +1323,13 @@ msgid "" "installed\n" " using to top right icon." msgstr "" +"Escreva aqui a introdução na carta,\n" +"                             de acordo com o nível da cobrança. você pode\n" +"                             utilizar as seguintes palavras-chave no texto. " +"não\n" +"                             esqueça de traduzir em todos os idiomas " +"instalados\n" +"                             usando o ícone superior direito." #. module: account_followup #: view:account_followup.stat:0 @@ -1189,7 +1345,7 @@ msgstr "Nome" #. module: account_followup #: field:res.partner,latest_followup_level_id:0 msgid "Latest Follow-up Level" -msgstr "" +msgstr "Último Nível de Cobrança" #. module: account_followup #: field:account_followup.stat,date_move:0 @@ -1200,18 +1356,18 @@ msgstr "Primeiro movimento" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_stat_by_partner msgid "Follow-up Statistics by Partner" -msgstr "" +msgstr "Estatísticas de Cobrança por Parceiro" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:172 #, python-format msgid " letter(s) in report" -msgstr "" +msgstr " cartas no relatório" #. module: account_followup #: view:res.partner:0 msgid "Customer Followup" -msgstr "" +msgstr "Cobrança de Clientes" #. module: account_followup #: model:ir.actions.act_window,help:account_followup.action_account_followup_definition_form @@ -1227,6 +1383,17 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Clique para definir os níveis de cobrança e ações " +"relacionadas.\n" +"

\n" +" Para cada passo, especifique a ação que será tomada e o " +"prazo em dias. \n" +" É possível usar os modelos de impressão e email para enviar " +"mensagens\n" +" específicas ao cliente.\n" +"

\n" +" " #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level2 @@ -1315,22 +1482,25 @@ msgid "" "set when the action fields are empty and the partner gets a follow-up level " "that requires a manual action. " msgstr "" +"Esta é a próxima ação a ser tomada pelo usuário. Ele será automaticamente " +"definida quando os campos de ação estiverem vazios e o parceiro recebe um " +"nível de cobrança que requer uma ação manual. " #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid "Follow-up letter of " -msgstr "" +msgstr "Carta de Cobrança de " #. module: account_followup #: view:res.partner:0 msgid "The" -msgstr "" +msgstr "O" #. module: account_followup #: view:account_followup.print:0 msgid "Send follow-ups" -msgstr "" +msgstr "Enviar Cobranças" #. module: account_followup #: view:account.move.line:0 @@ -1345,7 +1515,7 @@ msgstr "Crédito" #. module: account_followup #: view:res.partner:0 msgid "Follow-ups To Do" -msgstr "" +msgstr "Cobranças a Serem Feitas" #. module: account_followup #: report:account_followup.followup.print:0 @@ -1359,11 +1529,14 @@ msgid "" "the reminder. Could be negative if you want to send a polite alert " "beforehand." msgstr "" +"O número de dias após a data de vencimento da fatura para esperar antes de " +"enviar o lembrete. Pode ser negativo se você quiser enviar um aviso educado " +"de antemão." #. module: account_followup #: help:res.partner,latest_followup_date:0 msgid "Latest date that the follow-up level of the partner was changed" -msgstr "" +msgstr "Última data em que o nível de cobrança do parceiro foi alterado" #. module: account_followup #: field:account_followup.print,test_print:0 @@ -1373,22 +1546,22 @@ msgstr "Testar Impressão" #. module: account_followup #: view:res.partner:0 msgid "Search view" -msgstr "" +msgstr "Visão da Busca" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": User Name" -msgstr "" +msgstr ": Nome do Usuário" #. module: account_followup #: view:res.partner:0 msgid "Accounting" -msgstr "" +msgstr "Contabilidade" #. module: account_followup #: field:res.partner,payment_note:0 msgid "Customer Payment Promise" -msgstr "" +msgstr "Promessa de Pagamento do Cliente" #~ msgid "Invalid XML for View Architecture!" #~ msgstr "Invalido XML para Arquitetura da View" diff --git a/addons/account_payment/i18n/es.po b/addons/account_payment/i18n/es.po index 2f454167094..eaefdb7011f 100644 --- a/addons/account_payment/i18n/es.po +++ b/addons/account_payment/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 21:53+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 11:59+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-12-11 04:48+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_payment #: model:ir.actions.act_window,help:account_payment.action_payment_order_tree @@ -28,6 +28,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para crear una nueva orden de pago.\n" +"

\n" +"

\n" +"Una orden de pago es una petición de pago de su compañía para pagar una " +"factura de proveedor o una factura rectificativa de cliente.\n" +"

\n" +" " #. module: account_payment #: field:payment.line,currency:0 diff --git a/addons/account_payment/i18n/pt.po b/addons/account_payment/i18n/pt.po index 4f62864f630..1ea4c2532ee 100644 --- a/addons/account_payment/i18n/pt.po +++ b/addons/account_payment/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2010-12-09 08:30+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:48+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:35+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_payment #: model:ir.actions.act_window,help:account_payment.action_payment_order_tree @@ -129,7 +129,7 @@ msgstr "" #: code:addons/account_payment/account_move_line.py:110 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: account_payment #: report:payment.order:0 @@ -261,7 +261,7 @@ msgstr "" #. module: account_payment #: field:payment.order,date_created:0 msgid "Creation Date" -msgstr "" +msgstr "Data de criação" #. module: account_payment #: help:payment.mode,journal:0 @@ -450,7 +450,7 @@ msgstr "Procurar" #. module: account_payment #: field:payment.order,user_id:0 msgid "Responsible" -msgstr "" +msgstr "Responsável" #. module: account_payment #: field:payment.line,date:0 @@ -465,7 +465,7 @@ msgstr "Total:" #. module: account_payment #: field:payment.order,date_done:0 msgid "Execution Date" -msgstr "" +msgstr "Data de execução" #. module: account_payment #: view:account.payment.populate.statement:0 @@ -583,7 +583,7 @@ msgstr "Comunicação 2" #. module: account_payment #: field:payment.order,date_scheduled:0 msgid "Scheduled Date" -msgstr "" +msgstr "Data programada" #. module: account_payment #: view:account.payment.make.payment:0 @@ -678,14 +678,14 @@ msgstr "Fazer pagamento" #. module: account_payment #: field:payment.order,date_prefered:0 msgid "Preferred Date" -msgstr "" +msgstr "Data preferida" #. module: account_payment #: view:account.payment.make.payment:0 #: view:account.payment.populate.statement:0 #: view:payment.order.create:0 msgid "or" -msgstr "" +msgstr "ou" #. module: account_payment #: help:payment.mode,bank_id:0 diff --git a/addons/account_payment/i18n/pt_BR.po b/addons/account_payment/i18n/pt_BR.po index 0c76cd592f8..02dd5ca440d 100644 --- a/addons/account_payment/i18n/pt_BR.po +++ b/addons/account_payment/i18n/pt_BR.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-02-15 11:26+0000\n" -"Last-Translator: Rafael Sales - http://www.tompast.com.br \n" +"PO-Revision-Date: 2012-12-11 12:23+0000\n" +"Last-Translator: Fábio Martinelli - http://zupy.com.br " +"\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: 2012-12-04 05:35+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_payment #: model:ir.actions.act_window,help:account_payment.action_payment_order_tree @@ -28,6 +29,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Clique para criar uma ordem de pagamento.\n" +"

\n" +" Uma Ordem de Pagamento é um pedido da sua empresa \n" +" para efetuar o pagamento de uma Fatura de Fornecedor ou Reembolso a " +"Cliente.\n" +"

\n" +" " #. module: account_payment #: field:payment.line,currency:0 @@ -123,13 +132,15 @@ msgid "" "You cannot cancel an invoice which has already been imported in a payment " "order. Remove it from the following payment order : %s." msgstr "" +"Você não pode cancelar uma fatura em que já foi importado a ordem de " +"pagamento. Remova-a da seguinte ordem de pagamento: %s." #. module: account_payment #: code:addons/account_payment/account_invoice.py:43 #: code:addons/account_payment/account_move_line.py:110 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: account_payment #: report:payment.order:0 @@ -194,6 +205,9 @@ msgid "" " Once the bank is confirmed the status is set to 'Confirmed'.\n" " Then the order is paid the status is 'Done'." msgstr "" +"Quando um pedido é criado a situação é 'Provisória'.\n" +" Assim que o houver confirmação bancária a situação é 'Confirmada'.\n" +" Quando a Ordem é paga, a situação é 'Concluído'." #. module: account_payment #: view:payment.order:0 @@ -219,7 +233,7 @@ msgstr "Estruturado" #. module: account_payment #: view:account.bank.statement:0 msgid "Import Payment Lines" -msgstr "" +msgstr "Importar Linhas de Pagamento" #. module: account_payment #: view:payment.line:0 @@ -261,7 +275,7 @@ msgstr "" #. module: account_payment #: field:payment.order,date_created:0 msgid "Creation Date" -msgstr "" +msgstr "Data de Criação" #. module: account_payment #: help:payment.mode,journal:0 @@ -369,7 +383,7 @@ msgstr "Preencher o Extrato da Conta de Pagamentos" #: code:addons/account_payment/account_move_line.py:110 #, python-format msgid "There is no partner defined on the entry line." -msgstr "" +msgstr "Não existe nenhum parceiro definido na linha de entrada." #. module: account_payment #: help:payment.mode,name:0 @@ -401,7 +415,7 @@ msgstr "Provisório" #: view:payment.order:0 #: field:payment.order,state:0 msgid "Status" -msgstr "" +msgstr "Situação" #. module: account_payment #: help:payment.line,communication2:0 @@ -450,7 +464,7 @@ msgstr "Pesquisar" #. module: account_payment #: field:payment.order,user_id:0 msgid "Responsible" -msgstr "" +msgstr "Responsável" #. module: account_payment #: field:payment.line,date:0 @@ -465,7 +479,7 @@ msgstr "Total:" #. module: account_payment #: field:payment.order,date_done:0 msgid "Execution Date" -msgstr "" +msgstr "Data de Execução" #. module: account_payment #: view:account.payment.populate.statement:0 @@ -583,7 +597,7 @@ msgstr "Comunicação 2" #. module: account_payment #: field:payment.order,date_scheduled:0 msgid "Scheduled Date" -msgstr "" +msgstr "Data Programada" #. module: account_payment #: view:account.payment.make.payment:0 @@ -678,14 +692,14 @@ msgstr "Realizar Pagamento" #. module: account_payment #: field:payment.order,date_prefered:0 msgid "Preferred Date" -msgstr "" +msgstr "Data Preferida" #. module: account_payment #: view:account.payment.make.payment:0 #: view:account.payment.populate.statement:0 #: view:payment.order.create:0 msgid "or" -msgstr "" +msgstr "ou" #. module: account_payment #: help:payment.mode,bank_id:0 diff --git a/addons/account_voucher/i18n/es.po b/addons/account_voucher/i18n/es.po index f533447ce87..f8b2cf389ea 100644 --- a/addons/account_voucher/i18n/es.po +++ b/addons/account_voucher/i18n/es.po @@ -7,24 +7,24 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-05-10 17:38+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-12 02:10+0000\n" +"Last-Translator: Roberto Lizana (trey.es) \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: 2012-12-04 05:41+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_voucher #: field:account.bank.statement.line,voucher_id:0 msgid "Reconciliation" -msgstr "" +msgstr "Conciliación" #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_config_settings msgid "account.config.settings" -msgstr "" +msgstr "Parámetros de configuración contable" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:348 @@ -65,7 +65,7 @@ msgstr "" #. module: account_voucher #: view:account.voucher:0 msgid "(Update)" -msgstr "" +msgstr "(Actualizar)" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:1093 @@ -74,6 +74,9 @@ msgid "" "You have to delete the bank statement line which the payment was reconciled " "to manually. Please check the payment of the partner %s by the amount of %s." msgstr "" +"Tiene que borrar manualmente la línea del extracto bancario con la que fue " +"conciliado el pago. Por favor verifique el pago de la empresa %s por la " +"cantidad de %s." #. module: account_voucher #: view:account.voucher:0 @@ -100,7 +103,7 @@ msgstr "Marzo" #. module: account_voucher #: field:account.voucher,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensajes sin leer" #. module: account_voucher #: view:account.voucher:0 @@ -110,7 +113,7 @@ msgstr "Pagar factura" #. module: account_voucher #: view:account.voucher:0 msgid "Are you sure you want to cancel this receipt?" -msgstr "" +msgstr "¿Está seguro de que desea cancelar este recibo?" #. module: account_voucher #: view:account.voucher:0 @@ -131,7 +134,7 @@ msgstr "Agrupar por año de la fecha de factura" #: view:sale.receipt.report:0 #: field:sale.receipt.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Comercial" #. module: account_voucher #: view:account.voucher:0 @@ -145,6 +148,8 @@ msgid "" "You can not change the journal as you already reconciled some statement " "lines!" msgstr "" +"¡No puede cambiar el diario, puesto que ya ha conciliado varias líneas del " +"extracto!" #. module: account_voucher #: view:account.voucher:0 @@ -162,6 +167,13 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para registrar un recibo de compras.\n" +"

\n" +"Cuando se confirma un recibo de compra, puede registrar el pago de proveedor " +"relacionado con este recibo de compra.\n" +"

\n" +" " #. module: account_voucher #: view:account.voucher:0 @@ -211,7 +223,7 @@ msgstr "Notas" #. module: account_voucher #: field:account.voucher,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensajes" #. module: account_voucher #: selection:account.voucher,type:0 @@ -229,7 +241,7 @@ msgstr "Apunte contable" #: code:addons/account_voucher/account_voucher.py:964 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: account_voucher #: field:account.voucher.line,amount:0 @@ -277,7 +289,7 @@ msgstr "" #. module: account_voucher #: help:account.voucher,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si está marcado, hay nuevos mensajes que requieren su atención" #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_bank_statement_line @@ -299,7 +311,7 @@ msgstr "Impuesto" #: code:addons/account_voucher/account_voucher.py:864 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "¡Acción no válida!" #. module: account_voucher #: field:account.voucher,comment:0 @@ -317,6 +329,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: account_voucher #: view:account.voucher:0 @@ -326,7 +340,7 @@ msgstr "Información de pago" #. module: account_voucher #: view:account.voucher:0 msgid "(update)" -msgstr "" +msgstr "(actualizar)" #. module: account_voucher #: view:account.voucher:0 @@ -387,7 +401,7 @@ msgstr "Comprobante de proveedor" #. module: account_voucher #: field:account.voucher,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: account_voucher #: selection:account.voucher.line,type:0 @@ -398,7 +412,7 @@ msgstr "Debe" #: code:addons/account_voucher/account_voucher.py:1558 #, python-format msgid "Unable to change journal !" -msgstr "" +msgstr "¡Imposible cambiar el diario!" #. module: account_voucher #: view:sale.receipt.report:0 @@ -526,12 +540,20 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para registrar un nuevo pago \n" +"

\n" +"Introduzca el cliente y el método de pago y entonces, o bien cree " +"manualmente un registro de pago u OpenERP le propondrá automáticamente la " +"conciliación del pago con las facturas abiertas o con los recibos de venta.\n" +"

\n" +" " #. module: account_voucher #: field:account.config.settings,expense_currency_exchange_account_id:0 #: field:res.company,expense_currency_exchange_account_id:0 msgid "Loss Exchange Rate Account" -msgstr "" +msgstr "Pérdida por diferencia de cambio" #. module: account_voucher #: view:account.voucher:0 @@ -574,7 +596,7 @@ msgstr "Líneas de gastos" #. module: account_voucher #: view:account.voucher:0 msgid "Sale voucher" -msgstr "" +msgstr "Comprobante de venta" #. module: account_voucher #: help:account.voucher,is_multi_currency:0 @@ -587,7 +609,7 @@ msgstr "" #. module: account_voucher #: view:account.invoice:0 msgid "Register Payment" -msgstr "" +msgstr "Registrar pago" #. module: account_voucher #: field:account.statement.from.invoice.lines,line_ids:0 @@ -625,17 +647,17 @@ msgstr "A pagar y a cobrar" #. module: account_voucher #: view:account.voucher:0 msgid "Voucher Payment" -msgstr "" +msgstr "Comprobante de pago" #. module: account_voucher #: field:sale.receipt.report,state:0 msgid "Voucher Status" -msgstr "" +msgstr "Estado del comprobante" #. module: account_voucher #: view:account.voucher:0 msgid "Are you sure to unreconcile this record?" -msgstr "" +msgstr "¿Está seguro de que desea romper la conciliación de este registro?" #. module: account_voucher #: field:account.voucher,company_id:0 @@ -659,7 +681,7 @@ msgstr "Conciliar saldo del pago" #: code:addons/account_voucher/account_voucher.py:960 #, python-format msgid "Configuration Error !" -msgstr "" +msgstr "¡Error de configuración!" #. module: account_voucher #: view:account.voucher:0 @@ -676,14 +698,14 @@ msgstr "Total con impuestos" #. module: account_voucher #: view:account.voucher:0 msgid "Purchase Voucher" -msgstr "" +msgstr "Comprobante de compra" #. module: account_voucher #: view:account.voucher:0 #: field:account.voucher,state:0 #: view:sale.receipt.report:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: account_voucher #: view:account.voucher:0 @@ -694,7 +716,7 @@ msgstr "Asignación" #: view:account.statement.from.invoice.lines:0 #: view:account.voucher:0 msgid "or" -msgstr "" +msgstr "o" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -719,7 +741,7 @@ msgstr "Octubre" #: code:addons/account_voucher/account_voucher.py:961 #, python-format msgid "Please activate the sequence of selected journal !" -msgstr "" +msgstr "¡Active por favor la secuencia del diario seleccionado!" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -739,7 +761,7 @@ msgstr "Pagado" #. module: account_voucher #: field:account.voucher,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Es un seguidor." #. module: account_voucher #: field:account.voucher,analytic_id:0 @@ -777,7 +799,7 @@ msgstr "Importe conciliado" #: field:account.voucher,message_comment_ids:0 #: help:account.voucher,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentarios y correos" #. module: account_voucher #: model:ir.actions.act_window,help:account_voucher.action_vendor_payment @@ -826,18 +848,18 @@ msgstr "Compañías" #. module: account_voucher #: field:account.voucher,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumen" #. module: account_voucher #: field:account.voucher,active:0 msgid "Active" -msgstr "" +msgstr "Activo" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:965 #, python-format msgid "Please define a sequence on the journal." -msgstr "" +msgstr "Por favor defina una secuencia en el diario." #. module: account_voucher #: view:account.voucher:0 @@ -853,7 +875,7 @@ msgstr "Agrupar por fecha factura" #: code:addons/account_voucher/account_voucher.py:1093 #, python-format msgid "Wrong bank statement line" -msgstr "" +msgstr "Línea de extracto bancaria incorrecta." #. module: account_voucher #: view:account.voucher:0 @@ -905,7 +927,7 @@ msgstr "Extracto bancario" #. module: account_voucher #: view:account.bank.statement:0 msgid "onchange_amount(amount)" -msgstr "" +msgstr "onchange_amount(amount)" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -950,7 +972,7 @@ msgstr "Cancelar" #. module: account_voucher #: model:ir.actions.client,name:account_voucher.action_client_invoice_menu msgid "Open Invoicing Menu" -msgstr "" +msgstr "Abrir menú de facturación" #. module: account_voucher #: selection:account.voucher,state:0 @@ -970,6 +992,8 @@ msgstr "Apuntes contables" #, python-format msgid "Please define default credit/debit accounts on the journal \"%s\"." msgstr "" +"Por favor defina las cuentas de ingresos y gastos por defecto en el diario " +"\"%s\"." #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.act_pay_voucher @@ -1049,7 +1073,7 @@ msgstr "Mayo" #. module: account_voucher #: view:account.voucher:0 msgid "Sale Receipt" -msgstr "" +msgstr "Recibo de ventas" #. module: account_voucher #: view:account.voucher:0 @@ -1145,7 +1169,7 @@ msgstr "Año" #: field:account.config.settings,income_currency_exchange_account_id:0 #: field:res.company,income_currency_exchange_account_id:0 msgid "Gain Exchange Rate Account" -msgstr "" +msgstr "Ingresos por diferencia de cambio" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -1165,7 +1189,7 @@ msgstr "Tipo por defecto" #. module: account_voucher #: help:account.voucher,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Mensajes e historial de comunicación" #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_statement_from_invoice_lines @@ -1189,12 +1213,13 @@ msgid "" "The amount of the voucher must be the same amount as the one on the " "statement line." msgstr "" +"El importe del comprobante debe ser el mismo que el de la línea del extracto." #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:864 #, python-format msgid "Cannot delete voucher(s) which are already opened or paid." -msgstr "" +msgstr "No se pueden borrar comprobantes que ya están abiertos o pagados." #. module: account_voucher #: help:account.voucher,date:0 @@ -1204,7 +1229,7 @@ msgstr "Fecha efectiva para entradas contables." #. module: account_voucher #: model:mail.message.subtype,name:account_voucher.mt_voucher msgid "Status Change" -msgstr "" +msgstr "Cambio de estado" #. module: account_voucher #: selection:account.voucher,payment_option:0 @@ -1253,7 +1278,7 @@ msgstr "Abrir balance" #: code:addons/account_voucher/account_voucher.py:1001 #, python-format msgid "Insufficient Configuration!" -msgstr "" +msgstr "¡Configuraciín insuficiente!" #. module: account_voucher #: help:account.voucher,active:0 diff --git a/addons/account_voucher/i18n/pt.po b/addons/account_voucher/i18n/pt.po index afcf5a43ee4..6926107185d 100644 --- a/addons/account_voucher/i18n/pt.po +++ b/addons/account_voucher/i18n/pt.po @@ -7,24 +7,24 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-05-10 18:24+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 17:16+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:41+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: account_voucher #: field:account.bank.statement.line,voucher_id:0 msgid "Reconciliation" -msgstr "" +msgstr "Reconciliação" #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_config_settings msgid "account.config.settings" -msgstr "" +msgstr "account.config.settings" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:348 @@ -100,7 +100,7 @@ msgstr "Março" #. module: account_voucher #: field:account.voucher,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensagens por ler" #. module: account_voucher #: view:account.voucher:0 @@ -131,7 +131,7 @@ msgstr "Agrupar por ano da data de fatura" #: view:sale.receipt.report:0 #: field:sale.receipt.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Vendedor" #. module: account_voucher #: view:account.voucher:0 @@ -211,7 +211,7 @@ msgstr "Notas" #. module: account_voucher #: field:account.voucher,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensagens" #. module: account_voucher #: selection:account.voucher,type:0 @@ -229,7 +229,7 @@ msgstr "Item do Diário" #: code:addons/account_voucher/account_voucher.py:964 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: account_voucher #: field:account.voucher.line,amount:0 @@ -299,7 +299,7 @@ msgstr "Imposto" #: code:addons/account_voucher/account_voucher.py:864 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Ação inválida!" #. module: account_voucher #: field:account.voucher,comment:0 @@ -326,7 +326,7 @@ msgstr "Informação de pagamento" #. module: account_voucher #: view:account.voucher:0 msgid "(update)" -msgstr "" +msgstr "(atualizar)" #. module: account_voucher #: view:account.voucher:0 @@ -387,7 +387,7 @@ msgstr "Fornecedor de voucher" #. module: account_voucher #: field:account.voucher,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: account_voucher #: selection:account.voucher.line,type:0 @@ -660,7 +660,7 @@ msgstr "Reconciliar Balanço de Pagamentos" #: code:addons/account_voucher/account_voucher.py:960 #, python-format msgid "Configuration Error !" -msgstr "" +msgstr "Erro de configuração!" #. module: account_voucher #: view:account.voucher:0 @@ -695,7 +695,7 @@ msgstr "Alocação" #: view:account.statement.from.invoice.lines:0 #: view:account.voucher:0 msgid "or" -msgstr "" +msgstr "ou" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -740,7 +740,7 @@ msgstr "Pago" #. module: account_voucher #: field:account.voucher,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "É um seguidor" #. module: account_voucher #: field:account.voucher,analytic_id:0 @@ -827,12 +827,12 @@ msgstr "Empresas" #. module: account_voucher #: field:account.voucher,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumo" #. module: account_voucher #: field:account.voucher,active:0 msgid "Active" -msgstr "" +msgstr "Ativo" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:965 @@ -1252,7 +1252,7 @@ msgstr "Abrir Balanço" #: code:addons/account_voucher/account_voucher.py:1001 #, python-format msgid "Insufficient Configuration!" -msgstr "" +msgstr "Configuração incompleta!" #. module: account_voucher #: help:account.voucher,active:0 diff --git a/addons/analytic/i18n/es.po b/addons/analytic/i18n/es.po index ca4ec679802..5bc3bfc725a 100644 --- a/addons/analytic/i18n/es.po +++ b/addons/analytic/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-02-10 17:16+0000\n" -"Last-Translator: Carlos Ch. \n" +"PO-Revision-Date: 2012-12-11 12:55+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:46+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: analytic #: field:account.analytic.account,child_ids:0 @@ -25,12 +25,12 @@ msgstr "Cuentas hijas" #. module: analytic #: selection:account.analytic.account,state:0 msgid "In Progress" -msgstr "" +msgstr "En proceso" #. module: analytic #: model:mail.message.subtype,name:analytic.mt_account_status msgid "Status Change" -msgstr "" +msgstr "Cambio de estado" #. module: analytic #: selection:account.analytic.account,state:0 @@ -40,7 +40,7 @@ msgstr "Plantilla" #. module: analytic #: view:account.analytic.account:0 msgid "End Date" -msgstr "" +msgstr "Fecha final" #. module: analytic #: help:account.analytic.line,unit_amount:0 @@ -60,12 +60,16 @@ msgid "" "the\n" " customer." msgstr "" +"Una vez que se ha sobrepasado la fecha final del contrato o el número máximo " +"de unidades de servicio (por ejemplo, un contrato de soporte), el gestor de " +"la cuenta es notificado por correo electrónico para renovar el contrato con " +"el cliente." #. module: analytic #: code:addons/analytic/analytic.py:222 #, python-format msgid "Contract: " -msgstr "" +msgstr "Contrato: " #. module: analytic #: field:account.analytic.account,manager_id:0 @@ -75,13 +79,13 @@ msgstr "Gestor contable" #. module: analytic #: field:account.analytic.account,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: analytic #: code:addons/analytic/analytic.py:319 #, python-format msgid "Contract created." -msgstr "" +msgstr "Contrato creado." #. module: analytic #: selection:account.analytic.account,state:0 @@ -101,18 +105,18 @@ msgstr "Nuevo" #. module: analytic #: field:account.analytic.account,user_id:0 msgid "Project Manager" -msgstr "" +msgstr "Gestor de proyectos" #. module: analytic #: field:account.analytic.account,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: analytic #: code:addons/analytic/analytic.py:261 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (copia)" #. module: analytic #: model:ir.model,name:analytic.model_account_analytic_line @@ -128,17 +132,17 @@ msgstr "Descripción" #. module: analytic #: field:account.analytic.account,name:0 msgid "Account/Contract Name" -msgstr "" +msgstr "Nombre del contrato/cuenta" #. module: analytic #: field:account.analytic.account,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensajes sin leer" #. module: analytic #: constraint:account.analytic.account:0 msgid "Error! You cannot create recursive analytic accounts." -msgstr "" +msgstr "¡Error! No puede crear cuentas analíticas recursivas." #. module: analytic #: field:account.analytic.account,company_id:0 @@ -149,12 +153,12 @@ msgstr "Compañía" #. module: analytic #: view:account.analytic.account:0 msgid "Renewal" -msgstr "" +msgstr "Renovación" #. module: analytic #: help:account.analytic.account,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Mensajes e historial de comunicación" #. module: analytic #: help:account.analytic.account,quantity_max:0 @@ -162,6 +166,9 @@ msgid "" "Sets the higher limit of time to work on the contract, based on the " "timesheet. (for instance, number of hours in a limited support contract.)" msgstr "" +"Establece el límite máximo de tiempo para trabajar en el contrato, basado en " +"los partes de horas (por ejemplo, nº de horas en un contrato de soporte " +"limitado)." #. module: analytic #: code:addons/analytic/analytic.py:153 @@ -183,7 +190,7 @@ msgstr "" #. module: analytic #: field:account.analytic.account,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Es un seguidor." #. module: analytic #: field:account.analytic.line,user_id:0 @@ -212,17 +219,24 @@ msgid "" "The special type 'Template of Contract' allows you to define a template with " "default data that you can reuse easily." msgstr "" +"Si selecciona el tipo 'Vista', no podrá crear asientos usando esta cuenta. " +"El tipo 'Cuenta analítica' está para las cuentas usuales que sólo se quieren " +"usar en contabilidad. Si selecciona 'Contrato o proyecto', le permite la " +"posibilidad de administrar una validez y opciones de facturación para esta " +"cuenta.\n" +"El tipo especial 'Plantilla de contrato' permite definir una plantilla con " +"los datos por defecto que se podrán reutilizar fácilmente." #. module: analytic #: field:account.analytic.account,message_comment_ids:0 #: help:account.analytic.account,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentarios y correos" #. module: analytic #: field:account.analytic.account,partner_id:0 msgid "Customer" -msgstr "" +msgstr "Cliente" #. module: analytic #: field:account.analytic.account,child_complete_ids:0 @@ -232,33 +246,33 @@ msgstr "Jerarquía de la cuenta" #. module: analytic #: field:account.analytic.account,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensajes" #. module: analytic #: constraint:account.analytic.line:0 msgid "You cannot create analytic line on view account." -msgstr "" +msgstr "No puede crear una línea analítica en una cuenta de tipo vista." #. module: analytic #: view:account.analytic.account:0 msgid "Contract Information" -msgstr "" +msgstr "Información del contrato" #. module: analytic #: field:account.analytic.account,template_id:0 #: selection:account.analytic.account,type:0 msgid "Template of Contract" -msgstr "" +msgstr "Plantilla de contrato" #. module: analytic #: field:account.analytic.account,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumen" #. module: analytic #: field:account.analytic.account,quantity_max:0 msgid "Prepaid Service Units" -msgstr "" +msgstr "Unidades del servicio pre-pago" #. module: analytic #: field:account.analytic.account,credit:0 @@ -274,12 +288,12 @@ msgstr "Importe" #: code:addons/analytic/analytic.py:321 #, python-format msgid "Contract for %s has been created." -msgstr "" +msgstr "El contrato para %s ha sido creado." #. module: analytic #: view:account.analytic.account:0 msgid "Terms and Conditions" -msgstr "" +msgstr "Plazos y condiciones" #. module: analytic #: selection:account.analytic.account,state:0 @@ -289,7 +303,7 @@ msgstr "Cancelado" #. module: analytic #: selection:account.analytic.account,type:0 msgid "Analytic View" -msgstr "" +msgstr "Vista analítica" #. module: analytic #: field:account.analytic.account,balance:0 @@ -299,12 +313,12 @@ msgstr "Balance" #. module: analytic #: help:account.analytic.account,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si está marcado, hay nuevos mensajes que requieren su atención" #. module: analytic #: selection:account.analytic.account,state:0 msgid "To Renew" -msgstr "" +msgstr "Para renovar" #. module: analytic #: field:account.analytic.account,quantity:0 @@ -320,13 +334,13 @@ msgstr "Fecha final" #. module: analytic #: field:account.analytic.account,code:0 msgid "Reference" -msgstr "" +msgstr "Referencia" #. module: analytic #: code:addons/analytic/analytic.py:153 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: analytic #: model:res.groups,name:analytic.group_analytic_accounting @@ -336,7 +350,7 @@ msgstr "Contabilidad analítica" #. module: analytic #: selection:account.analytic.account,type:0 msgid "Contract or Project" -msgstr "" +msgstr "Contrato o proyecto" #. module: analytic #: field:account.analytic.account,complete_name:0 @@ -362,16 +376,18 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: analytic #: field:account.analytic.account,type:0 msgid "Type of Account" -msgstr "" +msgstr "Tipo de cuenta" #. module: analytic #: field:account.analytic.account,date_start:0 msgid "Start Date" -msgstr "" +msgstr "Fecha de inicio" #. module: analytic #: help:account.analytic.line,amount:0 diff --git a/addons/analytic_contract_hr_expense/i18n/es.po b/addons/analytic_contract_hr_expense/i18n/es.po index a2f83a7c929..21114981da9 100644 --- a/addons/analytic_contract_hr_expense/i18n/es.po +++ b/addons/analytic_contract_hr_expense/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-05 20:20+0000\n" -"Last-Translator: Santi (Pexego) \n" +"PO-Revision-Date: 2012-12-11 12:02+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-06 04:41+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: analytic_contract_hr_expense #: view:account.analytic.account:0 @@ -64,7 +64,7 @@ msgstr "Estimación de gastos a facturar" #. module: analytic_contract_hr_expense #: field:account.analytic.account,charge_expenses:0 msgid "Charge Expenses" -msgstr "" +msgstr "Cargar gastos" #. module: analytic_contract_hr_expense #: view:account.analytic.account:0 diff --git a/addons/analytic_contract_hr_expense/i18n/it.po b/addons/analytic_contract_hr_expense/i18n/it.po index 6cf67ff7543..bee2b304211 100644 --- a/addons/analytic_contract_hr_expense/i18n/it.po +++ b/addons/analytic_contract_hr_expense/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: analytic_contract_hr_expense #: view:account.analytic.account:0 diff --git a/addons/analytic_contract_hr_expense/i18n/pt.po b/addons/analytic_contract_hr_expense/i18n/pt.po index 7abdc790eda..b477c92dd6f 100644 --- a/addons/analytic_contract_hr_expense/i18n/pt.po +++ b/addons/analytic_contract_hr_expense/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 18:23+0000\n" -"Last-Translator: Andrei Talpa (multibase.pt) \n" +"PO-Revision-Date: 2012-12-11 17:54+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: analytic_contract_hr_expense #: view:account.analytic.account:0 @@ -35,7 +35,7 @@ msgstr "despesas" #. module: analytic_contract_hr_expense #: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account msgid "Analytic Account" -msgstr "" +msgstr "Conta analítica" #. module: analytic_contract_hr_expense #: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:134 diff --git a/addons/analytic_user_function/i18n/es.po b/addons/analytic_user_function/i18n/es.po index 08df5642b54..95a21586cdc 100644 --- a/addons/analytic_user_function/i18n/es.po +++ b/addons/analytic_user_function/i18n/es.po @@ -7,45 +7,44 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-01-16 18:03+0000\n" -"Last-Translator: Jordi Esteve (www.zikzakmedia.com) " -"\n" +"PO-Revision-Date: 2012-12-11 13:06+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-12-04 05:42+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: analytic_user_function #: model:ir.model,name:analytic_user_function.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Línea analítica" #. module: analytic_user_function #: view:account.analytic.account:0 msgid "Invoice Price Rate per User" -msgstr "" +msgstr "Precio de facturación por usuario" #. module: analytic_user_function #: field:analytic.user.funct.grid,product_id:0 msgid "Service" -msgstr "" +msgstr "Servicio" #. module: analytic_user_function #: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid msgid "Price per User" -msgstr "" +msgstr "Precio por usuario" #. module: analytic_user_function #: field:analytic.user.funct.grid,price:0 msgid "Price" -msgstr "" +msgstr "Precio" #. module: analytic_user_function #: help:analytic.user.funct.grid,price:0 msgid "Price per hour for this user." -msgstr "" +msgstr "Precio por hora para este usuario." #. module: analytic_user_function #: field:analytic.user.funct.grid,account_id:0 @@ -58,12 +57,12 @@ msgstr "Cuenta analítica" #: code:addons/analytic_user_function/analytic_user_function.py:135 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: analytic_user_function #: view:analytic.user.funct.grid:0 msgid "Invoicing Data" -msgstr "" +msgstr "Datos de facturación" #. module: analytic_user_function #: field:account.analytic.account,user_product_ids:0 @@ -79,11 +78,14 @@ msgid "" " of the default values when invoicing the " "customer." msgstr "" +"Define un servicio específico (por ejemplo, consultor senior) y un precio " +"para que ciertos usuarios utilicen estos datos en lugar de los datos por " +"defecto cuando se facture al cliente." #. module: analytic_user_function #: field:analytic.user.funct.grid,uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unidad de medida" #. module: analytic_user_function #: code:addons/analytic_user_function/analytic_user_function.py:107 @@ -107,6 +109,9 @@ msgid "" " specific user. This allows to set invoicing\n" " conditions for a group of contracts." msgstr "" +"OpenERP buscará recursivamente en las cuentas padres para comprobar si se " +"han definido condiciones específicas para el usuario en concreto. Esto " +"permite establecer condiciones de facturación para un grupo de contratos." #. module: analytic_user_function #: field:analytic.user.funct.grid,user_id:0 diff --git a/addons/analytic_user_function/i18n/it.po b/addons/analytic_user_function/i18n/it.po index 3a4c90ff4a7..8df85533e55 100644 --- a/addons/analytic_user_function/i18n/it.po +++ b/addons/analytic_user_function/i18n/it.po @@ -7,44 +7,44 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-01-12 16:48+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 08:02+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:42+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: analytic_user_function #: model:ir.model,name:analytic_user_function.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Riga analitica" #. module: analytic_user_function #: view:account.analytic.account:0 msgid "Invoice Price Rate per User" -msgstr "" +msgstr "Tasso di prezzo fatturato per utente" #. module: analytic_user_function #: field:analytic.user.funct.grid,product_id:0 msgid "Service" -msgstr "" +msgstr "Servizio" #. module: analytic_user_function #: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid msgid "Price per User" -msgstr "" +msgstr "Prezzo per utente" #. module: analytic_user_function #: field:analytic.user.funct.grid,price:0 msgid "Price" -msgstr "" +msgstr "Prezzo" #. module: analytic_user_function #: help:analytic.user.funct.grid,price:0 msgid "Price per hour for this user." -msgstr "" +msgstr "Prezzo per ora utente corrente" #. module: analytic_user_function #: field:analytic.user.funct.grid,account_id:0 @@ -57,12 +57,12 @@ msgstr "Conto Analitico" #: code:addons/analytic_user_function/analytic_user_function.py:135 #, python-format msgid "Error!" -msgstr "" +msgstr "Errore!" #. module: analytic_user_function #: view:analytic.user.funct.grid:0 msgid "Invoicing Data" -msgstr "" +msgstr "Dati Fatturazione" #. module: analytic_user_function #: field:account.analytic.account,user_product_ids:0 @@ -78,11 +78,14 @@ msgid "" " of the default values when invoicing the " "customer." msgstr "" +"Definisce un servizio specifico (es. Consulente Senjor)\n" +"ed un prezzo per alcuni utenti per usare poi questo dato al posto\n" +"del valore predefinito durante la fatturazione al cliente." #. module: analytic_user_function #: field:analytic.user.funct.grid,uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unità di misura" #. module: analytic_user_function #: code:addons/analytic_user_function/analytic_user_function.py:107 @@ -106,6 +109,10 @@ msgid "" " specific user. This allows to set invoicing\n" " conditions for a group of contracts." msgstr "" +"OpenERP cercherà ricorsivamente sui conti padre\n" +"per verificare se condizioni specifiche sono definite per\n" +"un dato utente. Questo permette di impostare le\n" +"condizioni di fatturazione per un gruppo di contratti." #. module: analytic_user_function #: field:analytic.user.funct.grid,user_id:0 diff --git a/addons/anonymization/i18n/es.po b/addons/anonymization/i18n/es.po index fc164dd489b..bd0434ac337 100644 --- a/addons/anonymization/i18n/es.po +++ b/addons/anonymization/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2011-02-15 15:37+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 14:05+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard @@ -25,17 +25,17 @@ msgstr "ir.model.fields.anonymize.wizard" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix msgid "ir.model.fields.anonymization.migration.fix" -msgstr "" +msgstr "Parche de migración de los campos de anonimización" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,target_version:0 msgid "Target Version" -msgstr "" +msgstr "Versión objetivo" #. module: anonymization #: selection:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "sql" -msgstr "" +msgstr "sql" #. module: anonymization #: field:ir.model.fields.anonymization,field_name:0 @@ -62,7 +62,7 @@ msgstr "ir.model.fields.anonymization" #: field:ir.model.fields.anonymization.history,state:0 #: field:ir.model.fields.anonymize.wizard,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: anonymization #: field:ir.model.fields.anonymization.history,direction:0 @@ -135,7 +135,7 @@ msgstr "Hacer anónima la base de datos" #. module: anonymization #: selection:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "python" -msgstr "" +msgstr "python" #. module: anonymization #: view:ir.model.fields.anonymization.history:0 @@ -189,7 +189,7 @@ msgstr "Histórico de hacer anónima" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,model_name:0 msgid "Model" -msgstr "" +msgstr "Modelo" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history @@ -202,6 +202,8 @@ msgid "" "This is the file created by the anonymization process. It should have the " "'.pickle' extention." msgstr "" +"Éste es el archivo creado por el proceso de anonimización. Debería tener la " +"extensión '.pickle'." #. module: anonymization #: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard @@ -217,7 +219,7 @@ msgstr "Nombre de archivo" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Secuencia" #. module: anonymization #: selection:ir.model.fields.anonymization.history,direction:0 @@ -238,7 +240,7 @@ msgstr "Hecho" #: field:ir.model.fields.anonymization.migration.fix,query:0 #: field:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "Query" -msgstr "" +msgstr "Consulta" #. module: anonymization #: view:ir.model.fields.anonymization.history:0 diff --git a/addons/anonymization/i18n/nb.po b/addons/anonymization/i18n/nb.po index c7cc74a8983..3b13e7fd740 100644 --- a/addons/anonymization/i18n/nb.po +++ b/addons/anonymization/i18n/nb.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-08-28 12:11+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 14:09+0000\n" +"Last-Translator: Kaare Pettersen \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard @@ -25,17 +25,17 @@ msgstr "ir.modell.felt.anonymisere.veiviseren" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix msgid "ir.model.fields.anonymization.migration.fix" -msgstr "" +msgstr "ir.modell.felt.anonymisering.migrasjon.fikse." #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,target_version:0 msgid "Target Version" -msgstr "" +msgstr "Mål versjon." #. module: anonymization #: selection:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "sql" -msgstr "" +msgstr "Sql." #. module: anonymization #: field:ir.model.fields.anonymization,field_name:0 @@ -62,7 +62,7 @@ msgstr "ir.modell.felt.anonymisering" #: field:ir.model.fields.anonymization.history,state:0 #: field:ir.model.fields.anonymize.wizard,state:0 msgid "Status" -msgstr "" +msgstr "Status." #. module: anonymization #: field:ir.model.fields.anonymization.history,direction:0 @@ -135,7 +135,7 @@ msgstr "anonymisere database" #. module: anonymization #: selection:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "python" -msgstr "" +msgstr "Python." #. module: anonymization #: view:ir.model.fields.anonymization.history:0 @@ -189,7 +189,7 @@ msgstr "Anonymisering Historie" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,model_name:0 msgid "Model" -msgstr "" +msgstr "Modell." #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history @@ -202,6 +202,8 @@ msgid "" "This is the file created by the anonymization process. It should have the " "'.pickle' extention." msgstr "" +"Dette er filen som er opprettet av anonymisering prosessen. Det bør ha ». " +"Pickle 'forlengelse." #. module: anonymization #: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard @@ -217,7 +219,7 @@ msgstr "Filnavn" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Sekvens." #. module: anonymization #: selection:ir.model.fields.anonymization.history,direction:0 @@ -238,7 +240,7 @@ msgstr "Utført" #: field:ir.model.fields.anonymization.migration.fix,query:0 #: field:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "Query" -msgstr "" +msgstr "Spørring." #. module: anonymization #: view:ir.model.fields.anonymization.history:0 diff --git a/addons/anonymization/i18n/pt.po b/addons/anonymization/i18n/pt.po index 082c206efdc..de04192d510 100644 --- a/addons/anonymization/i18n/pt.po +++ b/addons/anonymization/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-05-18 12:06+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 17:01+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard @@ -25,7 +25,7 @@ msgstr "ir.model.fields.anonymize.wizard" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix msgid "ir.model.fields.anonymization.migration.fix" -msgstr "" +msgstr "ir.model.fields.anonymization.migration.fix" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,target_version:0 @@ -35,7 +35,7 @@ msgstr "" #. module: anonymization #: selection:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "sql" -msgstr "" +msgstr "sql" #. module: anonymization #: field:ir.model.fields.anonymization,field_name:0 @@ -135,7 +135,7 @@ msgstr "Anonimizar Base de Dados" #. module: anonymization #: selection:ir.model.fields.anonymization.migration.fix,query_type:0 msgid "python" -msgstr "" +msgstr "python" #. module: anonymization #: view:ir.model.fields.anonymization.history:0 @@ -189,7 +189,7 @@ msgstr "Histórico de Anonimizações" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,model_name:0 msgid "Model" -msgstr "" +msgstr "Modelo" #. module: anonymization #: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history @@ -217,7 +217,7 @@ msgstr "Nome do Ficheiro" #. module: anonymization #: field:ir.model.fields.anonymization.migration.fix,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Sequência" #. module: anonymization #: selection:ir.model.fields.anonymization.history,direction:0 diff --git a/addons/audittrail/i18n/es.po b/addons/audittrail/i18n/es.po index bd80836e631..92df0e569c0 100644 --- a/addons/audittrail/i18n/es.po +++ b/addons/audittrail/i18n/es.po @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2010-12-27 09:26+0000\n" -"Last-Translator: Jordi Esteve (www.zikzakmedia.com) " -"\n" +"PO-Revision-Date: 2012-12-11 14:06+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-11-25 06:14+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: audittrail #: view:audittrail.log:0 @@ -45,7 +44,7 @@ msgstr "Suscrito" #: code:addons/audittrail/audittrail.py:408 #, python-format msgid "'%s' Model does not exist..." -msgstr "" +msgstr "El modelo '%s' no existe..." #. module: audittrail #: view:audittrail.rule:0 @@ -62,7 +61,7 @@ msgstr "Regla de auditoría" #: view:audittrail.rule:0 #: field:audittrail.rule,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: audittrail #: view:audittrail.view.log:0 @@ -222,7 +221,7 @@ msgstr "Seleccione el objeto sobre el cuál quiere generar el historial." #. module: audittrail #: model:ir.ui.menu,name:audittrail.menu_audit msgid "Audit" -msgstr "" +msgstr "Auditar" #. module: audittrail #: field:audittrail.rule,log_workflow:0 @@ -307,7 +306,7 @@ msgstr "Registros eliminaciones" #: view:audittrail.log:0 #: view:audittrail.rule:0 msgid "Model" -msgstr "" +msgstr "Modelo" #. module: audittrail #: field:audittrail.log.line,field_description:0 @@ -348,7 +347,7 @@ msgstr "Valor nuevo" #: code:addons/audittrail/audittrail.py:223 #, python-format msgid "'%s' field does not exist in '%s' model" -msgstr "" +msgstr "El campo '%s' no existe en el modelo '%s'" #. module: audittrail #: view:audittrail.log:0 @@ -402,7 +401,7 @@ msgstr "Línea de registro" #. module: audittrail #: view:audittrail.view.log:0 msgid "or" -msgstr "" +msgstr "o" #. module: audittrail #: field:audittrail.rule,log_action:0 diff --git a/addons/audittrail/i18n/it.po b/addons/audittrail/i18n/it.po index 780f21fbfb0..ce16615a1ba 100644 --- a/addons/audittrail/i18n/it.po +++ b/addons/audittrail/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2011-01-28 07:46+0000\n" +"PO-Revision-Date: 2012-12-11 08:00+0000\n" "Last-Translator: Nicola Riolini - Micronaet \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: 2012-11-25 06:14+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: audittrail #: view:audittrail.log:0 @@ -25,7 +25,7 @@ msgstr "Vecchio valore del campo: " #: code:addons/audittrail/audittrail.py:76 #, python-format msgid "WARNING: audittrail is not part of the pool" -msgstr "" +msgstr "ATTENZIONE: audittrail non è parte del gruppo" #. module: audittrail #: field:audittrail.log.line,log_id:0 @@ -44,12 +44,12 @@ msgstr "Iscritto" #: code:addons/audittrail/audittrail.py:408 #, python-format msgid "'%s' Model does not exist..." -msgstr "" +msgstr "Il modello '%s' non esiste..." #. module: audittrail #: view:audittrail.rule:0 msgid "Subscribed Rule" -msgstr "" +msgstr "Regola sottoscritta" #. module: audittrail #: view:audittrail.rule:0 @@ -61,7 +61,7 @@ msgstr "Regola audit" #: view:audittrail.rule:0 #: field:audittrail.rule,state:0 msgid "Status" -msgstr "" +msgstr "Stato" #. module: audittrail #: view:audittrail.view.log:0 @@ -221,7 +221,7 @@ msgstr "Seleziona l'oggetto per il quale volete generare il log" #. module: audittrail #: model:ir.ui.menu,name:audittrail.menu_audit msgid "Audit" -msgstr "" +msgstr "Audit" #. module: audittrail #: field:audittrail.rule,log_workflow:0 @@ -237,7 +237,7 @@ msgstr "Log letture" #: code:addons/audittrail/audittrail.py:77 #, python-format msgid "Change audittrail depends -- Setting rule as DRAFT" -msgstr "" +msgstr "Cambio dipendente audittrail -- Imposto la regola a BOZZA" #. module: audittrail #: field:audittrail.log,line_ids:0 @@ -290,6 +290,8 @@ msgid "" "There is already a rule defined on this object\n" " You cannot define another: please edit the existing one." msgstr "" +"Esiste già una rego su questo oggetto\n" +" Non è possibile definirne altre: prego modificare una esistente." #. module: audittrail #: field:audittrail.rule,log_unlink:0 @@ -300,7 +302,7 @@ msgstr "Log cancellazioni" #: view:audittrail.log:0 #: view:audittrail.rule:0 msgid "Model" -msgstr "" +msgstr "Modello" #. module: audittrail #: field:audittrail.log.line,field_description:0 @@ -341,7 +343,7 @@ msgstr "Nuovo valore" #: code:addons/audittrail/audittrail.py:223 #, python-format msgid "'%s' field does not exist in '%s' model" -msgstr "" +msgstr "Il campo '%s' non esiste nel modello '%s'" #. module: audittrail #: view:audittrail.log:0 @@ -351,7 +353,7 @@ msgstr "Logs di AuditTrail" #. module: audittrail #: view:audittrail.rule:0 msgid "Draft Rule" -msgstr "" +msgstr "Regola bozza" #. module: audittrail #: view:audittrail.log:0 @@ -395,7 +397,7 @@ msgstr "Riga log" #. module: audittrail #: view:audittrail.view.log:0 msgid "or" -msgstr "" +msgstr "o" #. module: audittrail #: field:audittrail.rule,log_action:0 diff --git a/addons/auth_anonymous/i18n/es.po b/addons/auth_anonymous/i18n/es.po new file mode 100644 index 00000000000..977ae9253a9 --- /dev/null +++ b/addons/auth_anonymous/i18n/es.po @@ -0,0 +1,30 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-11 14:07+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: auth_anonymous +#. openerp-web +#: code:addons/auth_anonymous/static/src/xml/auth_anonymous.xml:9 +#, python-format +msgid "Login" +msgstr "Inicio de sesión" + +#. module: auth_anonymous +#: model:res.groups,name:auth_anonymous.group_anonymous +msgid "Anonymous Group" +msgstr "Grupo anónimo" diff --git a/addons/auth_ldap/i18n/it.po b/addons/auth_ldap/i18n/it.po index 0e68be1e3ff..88c0639973f 100644 --- a/addons/auth_ldap/i18n/it.po +++ b/addons/auth_ldap/i18n/it.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-01-13 03:44+0000\n" +"PO-Revision-Date: 2012-12-11 07:56+0000\n" "Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: auth_ldap #: field:res.company.ldap,user:0 msgid "Template User" -msgstr "" +msgstr "Utente modello" #. module: auth_ldap #: help:res.company.ldap,ldap_tls:0 @@ -29,6 +29,9 @@ msgid "" "option requires a server with STARTTLS enabled, otherwise all authentication " "attempts will fail." msgstr "" +"Richiede criptazione sicura TLS/SSL quando si connette al server LDAP. " +"Questa opzione richiede un server con abilitato STARTTLS, altrimenti tutti i " +"tentativi di autenticazione falliranno." #. module: auth_ldap #: view:res.company:0 @@ -62,6 +65,8 @@ msgid "" "Automatically create local user accounts for new users authenticating via " "LDAP" msgstr "" +"Crea automaticamente un account utente locale per ogni autenticazione via " +"LDAP" #. module: auth_ldap #: field:res.company.ldap,ldap_base:0 @@ -96,7 +101,7 @@ msgstr "res.company.ldap" #. module: auth_ldap #: help:res.company.ldap,user:0 msgid "User to copy when creating new users" -msgstr "" +msgstr "Modello utente da copiare quando ne viene creato un nuovo" #. module: auth_ldap #: field:res.company.ldap,ldap_tls:0 @@ -144,11 +149,13 @@ msgid "" "The user account on the LDAP server that is used to query the directory. " "Leave empty to connect anonymously." msgstr "" +"Account utente sul server LDAP che viene usato per interrogare la directory. " +"Lasciare vuoto per connettere anonimanente." #. module: auth_ldap #: model:ir.model,name:auth_ldap.model_res_users msgid "Users" -msgstr "" +msgstr "Utenti" #. module: auth_ldap #: field:res.company.ldap,ldap_filter:0 diff --git a/addons/auth_oauth/i18n/es.po b/addons/auth_oauth/i18n/es.po index aefcdf946a9..c1d7f1f0d82 100644 --- a/addons/auth_oauth/i18n/es.po +++ b/addons/auth_oauth/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-10 21:55+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 14:10+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: auth_oauth #: field:auth.oauth.provider,validation_endpoint:0 @@ -30,7 +30,7 @@ msgstr "URL Autenticación" #. module: auth_oauth #: model:ir.model,name:auth_oauth.model_base_config_settings msgid "base.config.settings" -msgstr "" +msgstr "Parámetros de configuración base" #. module: auth_oauth #: field:auth.oauth.provider,name:0 @@ -45,7 +45,7 @@ msgstr "Ámbito" #. module: auth_oauth #: field:res.users,oauth_provider_id:0 msgid "OAuth Provider" -msgstr "" +msgstr "Proveedor OAuth" #. module: auth_oauth #: field:auth.oauth.provider,css_class:0 @@ -70,66 +70,66 @@ msgstr "Desconocido" #. module: auth_oauth #: field:res.users,oauth_access_token:0 msgid "OAuth Access Token" -msgstr "" +msgstr "Palabra de acceso (token) OAuth" #. module: auth_oauth #: field:auth.oauth.provider,client_id:0 #: field:base.config.settings,auth_oauth_facebook_client_id:0 #: field:base.config.settings,auth_oauth_google_client_id:0 msgid "Client ID" -msgstr "" +msgstr "Id. de cliente" #. module: auth_oauth #: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers msgid "OAuth Providers" -msgstr "" +msgstr "Proveedores OAuth" #. module: auth_oauth #: model:ir.model,name:auth_oauth.model_auth_oauth_provider msgid "OAuth2 provider" -msgstr "" +msgstr "Proveedor OAuth2" #. module: auth_oauth #: field:res.users,oauth_uid:0 msgid "OAuth User ID" -msgstr "" +msgstr "Id. de usuario OAuth" #. module: auth_oauth #: field:base.config.settings,auth_oauth_facebook_enabled:0 msgid "Allow users to sign in with Facebook" -msgstr "" +msgstr "Permitir a los usuarios ingresar con Facebook" #. module: auth_oauth #: sql_constraint:res.users:0 msgid "OAuth UID must be unique per provider" -msgstr "" +msgstr "El id. de usuario OAuth debe ser único por proveedor" #. module: auth_oauth #: help:res.users,oauth_uid:0 msgid "Oauth Provider user_id" -msgstr "" +msgstr "Id. de usuario OAuth para el proveedor" #. module: auth_oauth #: field:auth.oauth.provider,data_endpoint:0 msgid "Data URL" -msgstr "" +msgstr "URL de los datos" #. module: auth_oauth #: view:auth.oauth.provider:0 msgid "arch" -msgstr "" +msgstr "arquitectura" #. module: auth_oauth #: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider msgid "Providers" -msgstr "" +msgstr "Proveedores" #. module: auth_oauth #: field:base.config.settings,auth_oauth_google_enabled:0 msgid "Allow users to sign in with Google" -msgstr "" +msgstr "Permitir a los usuarios ingresar con Google" #. module: auth_oauth #: field:auth.oauth.provider,enabled:0 msgid "Allowed" -msgstr "" +msgstr "Permitido" diff --git a/addons/auth_openid/i18n/hr.po b/addons/auth_openid/i18n/hr.po new file mode 100644 index 00000000000..777ad73a39f --- /dev/null +++ b/addons/auth_openid/i18n/hr.po @@ -0,0 +1,97 @@ +# Croatian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:02+0000\n" +"PO-Revision-Date: 2012-12-11 15:13+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24 +#, python-format +msgid "Username" +msgstr "Korisničko ime" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:12 +#: view:res.users:0 +#, python-format +msgid "OpenID" +msgstr "OpenID" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:30 +#: field:res.users,openid_url:0 +#, python-format +msgid "OpenID URL" +msgstr "OpenID URL" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:9 +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10 +#, python-format +msgid "Google" +msgstr "Google" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:11 +#, python-format +msgid "Launchpad" +msgstr "Launchpad" + +#. module: auth_openid +#: help:res.users,openid_email:0 +msgid "Used for disambiguation in case of a shared OpenID URL" +msgstr "Koristi se za razlikovanje u slučaju dijeljenog OpenID URL" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:18 +#, python-format +msgid "Google Apps Domain" +msgstr "Google Apps Domain" + +#. module: auth_openid +#: field:res.users,openid_email:0 +msgid "OpenID Email" +msgstr "OpenID Email" + +#. module: auth_openid +#: field:res.users,openid_key:0 +msgid "OpenID Key" +msgstr "OpenID ključ" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8 +#, python-format +msgid "Password" +msgstr "Lozinka" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10 +#, python-format +msgid "Google Apps" +msgstr "Google aplikacije" + +#. module: auth_openid +#: model:ir.model,name:auth_openid.model_res_users +msgid "Users" +msgstr "Korisnici" diff --git a/addons/auth_openid/i18n/it.po b/addons/auth_openid/i18n/it.po new file mode 100644 index 00000000000..2b4289395d0 --- /dev/null +++ b/addons/auth_openid/i18n/it.po @@ -0,0 +1,97 @@ +# Italian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:02+0000\n" +"PO-Revision-Date: 2012-12-11 07:47+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24 +#, python-format +msgid "Username" +msgstr "Nome utente" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:12 +#: view:res.users:0 +#, python-format +msgid "OpenID" +msgstr "OpenID" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:30 +#: field:res.users,openid_url:0 +#, python-format +msgid "OpenID URL" +msgstr "URL OpenID" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:9 +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10 +#, python-format +msgid "Google" +msgstr "Google" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:11 +#, python-format +msgid "Launchpad" +msgstr "Launchpad" + +#. module: auth_openid +#: help:res.users,openid_email:0 +msgid "Used for disambiguation in case of a shared OpenID URL" +msgstr "Usato per distinguere nel caso di OpenID URL condivisi" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:18 +#, python-format +msgid "Google Apps Domain" +msgstr "Dominio Google Apps" + +#. module: auth_openid +#: field:res.users,openid_email:0 +msgid "OpenID Email" +msgstr "Email OpenID" + +#. module: auth_openid +#: field:res.users,openid_key:0 +msgid "OpenID Key" +msgstr "Chiave OpenID" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8 +#, python-format +msgid "Password" +msgstr "Password" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10 +#, python-format +msgid "Google Apps" +msgstr "Gooble Apps" + +#. module: auth_openid +#: model:ir.model,name:auth_openid.model_res_users +msgid "Users" +msgstr "Utenti" diff --git a/addons/auth_openid/i18n/pt.po b/addons/auth_openid/i18n/pt.po index 88f375645bd..5ef8e08c809 100644 --- a/addons/auth_openid/i18n/pt.po +++ b/addons/auth_openid/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-06-05 09:43+0000\n" -"Last-Translator: Tiago Baptista \n" +"PO-Revision-Date: 2012-12-11 15:30+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: auth_openid #. openerp-web @@ -95,7 +95,7 @@ msgstr "Google Apps" #. module: auth_openid #: model:ir.model,name:auth_openid.model_res_users msgid "Users" -msgstr "" +msgstr "Utilizadores" #~ msgid "res.users" #~ msgstr "res.users" diff --git a/addons/auth_signup/i18n/es.po b/addons/auth_signup/i18n/es.po new file mode 100644 index 00000000000..247758371ea --- /dev/null +++ b/addons/auth_signup/i18n/es.po @@ -0,0 +1,275 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-04 14:41+0000\n" +"PO-Revision-Date: 2012-12-11 14:32+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_uninvited:0 +msgid "Allow external users to sign up" +msgstr "Permitir ingresar a usuarios externos" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16 +#, python-format +msgid "Confirm Password" +msgstr "Confirmar contraseña" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_uninvited:0 +msgid "If unchecked, only invited users may sign up." +msgstr "Si no está marcado, sólo los usuarios invitados pueden ingresar." + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_base_config_settings +msgid "base.config.settings" +msgstr "Parámetros de configuración base" + +#. module: auth_signup +#: code:addons/auth_signup/res_users.py:248 +#, python-format +msgid "Cannot send email: user has no email address." +msgstr "" +"No se puede enviar el correo eléctronico: el usuario no tiene dirección de " +"correo." + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25 +#, python-format +msgid "Reset password" +msgstr "Restablecer contraseña" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_template_user_id:0 +msgid "Template user for new users created through signup" +msgstr "" +"Plantilla de usuario para los nuevos usuarios creados a través del ingreso" + +#. module: auth_signup +#: model:email.template,subject:auth_signup.reset_password_email +msgid "Password reset" +msgstr "Restablecer contraseña" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#, python-format +msgid "Please enter a password and confirm it." +msgstr "Por favor introduzca una contraseña y confírmela." + +#. module: auth_signup +#: view:res.users:0 +msgid "Send an email to the user to (re)set their password." +msgstr "Enviar un correo al usuario para restablecer su contraseña." + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23 +#, python-format +msgid "Sign Up" +msgstr "Registro" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "New" +msgstr "Nuevo" + +#. module: auth_signup +#: field:res.users,state:0 +msgid "Status" +msgstr "Estado" + +#. module: auth_signup +#: model:email.template,body_html:auth_signup.reset_password_email +msgid "" +"\n" +"

A password reset was requested for the OpenERP account linked to this " +"email.

\n" +"\n" +"

You may change your password by following this link.

\n" +"\n" +"

Note: If you do not expect this, you can safely ignore this email.

" +msgstr "" +"\n" +"

Se ha requerido un cambio de contraseña dese la cuenta de OpenERP " +"asociada con este correo eléctronico.

\n" +"\n" +"

Debería cambiar su contraseña siguiendo el siguiente enlace.

\n" +"\n" +"

Nota: Si no espera estaba notificación, puede ignorarla de forma " +"segura.

" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#, python-format +msgid "Please enter a name." +msgstr "Por favor, introduzca un nombre." + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_users +msgid "Users" +msgstr "Usuarios" + +#. module: auth_signup +#: field:res.partner,signup_url:0 +msgid "Signup URL" +msgstr "URL de ingreso" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#, python-format +msgid "Please enter a username." +msgstr "Por favor, introduzca un nombre de usuario." + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Active" +msgstr "Activo" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12 +#, python-format +msgid "Username" +msgstr "Nombre de usuario" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8 +#, python-format +msgid "Name" +msgstr "Nombre" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:160 +#, python-format +msgid "Please enter a username or email address." +msgstr "" +"Por favor introduzca un nombre de usuario o dirección de correo electrónico." + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Resetting Password" +msgstr "Restableciendo la contraseña" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13 +#, python-format +msgid "Username (Email)" +msgstr "Nombre de usuario (dirección de correo electrónico)" + +#. module: auth_signup +#: field:res.partner,signup_expiration:0 +msgid "Signup Expiration" +msgstr "Expiración del ingreso" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_reset_password:0 +msgid "This allows users to trigger a password reset from the Login page." +msgstr "" +"Esto permite a los usuarios lanzar un restablecimiento de la contraseña " +"desde la página de inicio de sesión." + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:21 +#, python-format +msgid "Log in" +msgstr "Iniciar sesión" + +#. module: auth_signup +#: field:res.partner,signup_valid:0 +msgid "Signup Token is Valid" +msgstr "La palabra de ingreso es válida" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#: code:addons/auth_signup/static/src/js/auth_signup.js:123 +#: code:addons/auth_signup/static/src/js/auth_signup.js:157 +#: code:addons/auth_signup/static/src/js/auth_signup.js:160 +#, python-format +msgid "Login" +msgstr "Inicio de sesión" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:94 +#, python-format +msgid "Invalid signup token" +msgstr "Palabra de ingreso no válida" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:123 +#, python-format +msgid "Passwords do not match; please retype them." +msgstr "Las contraseñas no coinciden. Por favor vuelva a teclearlas." + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#: code:addons/auth_signup/static/src/js/auth_signup.js:157 +#, python-format +msgid "No database selected !" +msgstr "¡No se ha seleccionado ninguna base de datos!" + +#. module: auth_signup +#: view:res.users:0 +msgid "Reset Password" +msgstr "Restablecer contraseña" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_reset_password:0 +msgid "Enable password reset from Login page" +msgstr "" +"Habilitar restablecimiento de la contraseña desde la página de inicio de " +"sesión" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24 +#, python-format +msgid "Back to Login" +msgstr "Volver al Inicio de sesión" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 +#, python-format +msgid "Sign up" +msgstr "Registrarse" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_partner +msgid "Partner" +msgstr "Empresa" + +#. module: auth_signup +#: field:res.partner,signup_token:0 +msgid "Signup Token" +msgstr "Palabra de ingreso" diff --git a/addons/auth_signup/i18n/it.po b/addons/auth_signup/i18n/it.po index 854bdd34185..30a935a8f02 100644 --- a/addons/auth_signup/i18n/it.po +++ b/addons/auth_signup/i18n/it.po @@ -8,42 +8,42 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-12-04 14:41+0000\n" -"PO-Revision-Date: 2012-12-04 20:16+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-11 11:51+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-05 05:20+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: auth_signup #: field:base.config.settings,auth_signup_uninvited:0 msgid "Allow external users to sign up" -msgstr "" +msgstr "Permetti a utenti esterni di autenticarsi" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:16 #, python-format msgid "Confirm Password" -msgstr "" +msgstr "Conferma Password" #. module: auth_signup #: help:base.config.settings,auth_signup_uninvited:0 msgid "If unchecked, only invited users may sign up." -msgstr "" +msgstr "Se spuntato, solo gli utenti invitati possono autenticarsi" #. module: auth_signup #: model:ir.model,name:auth_signup.model_base_config_settings msgid "base.config.settings" -msgstr "" +msgstr "base.config.settings" #. module: auth_signup #: code:addons/auth_signup/res_users.py:248 #, python-format msgid "Cannot send email: user has no email address." -msgstr "" +msgstr "Non è possibile inviare email: l'utente non ha l'indirizzo impostato" #. module: auth_signup #. openerp-web @@ -56,6 +56,8 @@ msgstr "Reimposta password" #: field:base.config.settings,auth_signup_template_user_id:0 msgid "Template user for new users created through signup" msgstr "" +"Modello utente per i nuovi utenti creati attraverso la procedura di " +"registrazione" #. module: auth_signup #: model:email.template,subject:auth_signup.reset_password_email @@ -67,29 +69,29 @@ msgstr "Ripristino password" #: code:addons/auth_signup/static/src/js/auth_signup.js:120 #, python-format msgid "Please enter a password and confirm it." -msgstr "" +msgstr "Prego inserire una password e confermarla" #. module: auth_signup #: view:res.users:0 msgid "Send an email to the user to (re)set their password." -msgstr "" +msgstr "Invia una mail all'utente per (re)impostare la propria password" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:23 #, python-format msgid "Sign Up" -msgstr "" +msgstr "Registrazione" #. module: auth_signup #: selection:res.users,state:0 msgid "New" -msgstr "" +msgstr "Nuovo" #. module: auth_signup #: field:res.users,state:0 msgid "Status" -msgstr "" +msgstr "Stato" #. module: auth_signup #: model:email.template,body_html:auth_signup.reset_password_email @@ -103,13 +105,22 @@ msgid "" "\n" "

Note: If you do not expect this, you can safely ignore this email.

" msgstr "" +"\n" +"

Un reset della password è stato richiesto per l'account di OpenERP " +"collegato a questa mail

\n" +"\n" +"

Potrete cambiare la vostra password seguendo questo lin.

\n" +"\n" +"

Nota: Se non lo ritenete necessario potete tranquillamente ignorare la " +"mail.

" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/js/auth_signup.js:114 #, python-format msgid "Please enter a name." -msgstr "" +msgstr "Prego inserire un nome" #. module: auth_signup #: model:ir.model,name:auth_signup.model_res_users @@ -119,74 +130,76 @@ msgstr "Utenti" #. module: auth_signup #: field:res.partner,signup_url:0 msgid "Signup URL" -msgstr "" +msgstr "URL registrazione" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/js/auth_signup.js:117 #, python-format msgid "Please enter a username." -msgstr "" +msgstr "Prego inserire un username" #. module: auth_signup #: selection:res.users,state:0 msgid "Active" -msgstr "" +msgstr "Attivo" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:12 #, python-format msgid "Username" -msgstr "" +msgstr "Nome utente" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:8 #, python-format msgid "Name" -msgstr "" +msgstr "Nome" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/js/auth_signup.js:160 #, python-format msgid "Please enter a username or email address." -msgstr "" +msgstr "Prego inserire un nome utente e un indirizzo mail." #. module: auth_signup #: selection:res.users,state:0 msgid "Resetting Password" -msgstr "" +msgstr "Reset password" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:13 #, python-format msgid "Username (Email)" -msgstr "" +msgstr "Nome utente (email)" #. module: auth_signup #: field:res.partner,signup_expiration:0 msgid "Signup Expiration" -msgstr "" +msgstr "Termine registrazione" #. module: auth_signup #: help:base.config.settings,auth_signup_reset_password:0 msgid "This allows users to trigger a password reset from the Login page." msgstr "" +"Questo permette agli utenti di lanciare un reset password dalla pagina di " +"login" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:21 #, python-format msgid "Log in" -msgstr "" +msgstr "Login" #. module: auth_signup #: field:res.partner,signup_valid:0 msgid "Signup Token is Valid" -msgstr "" +msgstr "Il token di registrazione è valido" #. module: auth_signup #. openerp-web @@ -199,21 +212,21 @@ msgstr "" #: code:addons/auth_signup/static/src/js/auth_signup.js:160 #, python-format msgid "Login" -msgstr "" +msgstr "Login" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/js/auth_signup.js:94 #, python-format msgid "Invalid signup token" -msgstr "" +msgstr "Il token di registrazione non è valido" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/js/auth_signup.js:123 #, python-format msgid "Passwords do not match; please retype them." -msgstr "" +msgstr "Le password non corrispondono; prego riscriverle." #. module: auth_signup #. openerp-web @@ -221,7 +234,7 @@ msgstr "" #: code:addons/auth_signup/static/src/js/auth_signup.js:157 #, python-format msgid "No database selected !" -msgstr "" +msgstr "Nessun database selezionato!" #. module: auth_signup #: view:res.users:0 @@ -231,28 +244,28 @@ msgstr "Reimposta Password" #. module: auth_signup #: field:base.config.settings,auth_signup_reset_password:0 msgid "Enable password reset from Login page" -msgstr "" +msgstr "Abilita il reset della password dalla pagina di login" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:24 #, python-format msgid "Back to Login" -msgstr "" +msgstr "Ritorno al Login" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 #, python-format msgid "Sign up" -msgstr "" +msgstr "Registrazione" #. module: auth_signup #: model:ir.model,name:auth_signup.model_res_partner msgid "Partner" -msgstr "" +msgstr "Partner" #. module: auth_signup #: field:res.partner,signup_token:0 msgid "Signup Token" -msgstr "" +msgstr "Token di registrazione" diff --git a/addons/auth_signup/i18n/ru.po b/addons/auth_signup/i18n/ru.po new file mode 100644 index 00000000000..1b6295b6e1c --- /dev/null +++ b/addons/auth_signup/i18n/ru.po @@ -0,0 +1,258 @@ +# Russian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-04 14:41+0000\n" +"PO-Revision-Date: 2012-12-11 06:59+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_uninvited:0 +msgid "Allow external users to sign up" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16 +#, python-format +msgid "Confirm Password" +msgstr "" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_uninvited:0 +msgid "If unchecked, only invited users may sign up." +msgstr "" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_base_config_settings +msgid "base.config.settings" +msgstr "" + +#. module: auth_signup +#: code:addons/auth_signup/res_users.py:248 +#, python-format +msgid "Cannot send email: user has no email address." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25 +#, python-format +msgid "Reset password" +msgstr "" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_template_user_id:0 +msgid "Template user for new users created through signup" +msgstr "" + +#. module: auth_signup +#: model:email.template,subject:auth_signup.reset_password_email +msgid "Password reset" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#, python-format +msgid "Please enter a password and confirm it." +msgstr "" + +#. module: auth_signup +#: view:res.users:0 +msgid "Send an email to the user to (re)set their password." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23 +#, python-format +msgid "Sign Up" +msgstr "" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "New" +msgstr "" + +#. module: auth_signup +#: field:res.users,state:0 +msgid "Status" +msgstr "" + +#. module: auth_signup +#: model:email.template,body_html:auth_signup.reset_password_email +msgid "" +"\n" +"

A password reset was requested for the OpenERP account linked to this " +"email.

\n" +"\n" +"

You may change your password by following this link.

\n" +"\n" +"

Note: If you do not expect this, you can safely ignore this email.

" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#, python-format +msgid "Please enter a name." +msgstr "" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_users +msgid "Users" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_url:0 +msgid "Signup URL" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#, python-format +msgid "Please enter a username." +msgstr "" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Active" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12 +#, python-format +msgid "Username" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8 +#, python-format +msgid "Name" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:160 +#, python-format +msgid "Please enter a username or email address." +msgstr "" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Resetting Password" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13 +#, python-format +msgid "Username (Email)" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_expiration:0 +msgid "Signup Expiration" +msgstr "" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_reset_password:0 +msgid "This allows users to trigger a password reset from the Login page." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:21 +#, python-format +msgid "Log in" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_valid:0 +msgid "Signup Token is Valid" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#: code:addons/auth_signup/static/src/js/auth_signup.js:123 +#: code:addons/auth_signup/static/src/js/auth_signup.js:157 +#: code:addons/auth_signup/static/src/js/auth_signup.js:160 +#, python-format +msgid "Login" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:94 +#, python-format +msgid "Invalid signup token" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:123 +#, python-format +msgid "Passwords do not match; please retype them." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#: code:addons/auth_signup/static/src/js/auth_signup.js:157 +#, python-format +msgid "No database selected !" +msgstr "" + +#. module: auth_signup +#: view:res.users:0 +msgid "Reset Password" +msgstr "" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_reset_password:0 +msgid "Enable password reset from Login page" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24 +#, python-format +msgid "Back to Login" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 +#, python-format +msgid "Sign up" +msgstr "" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_partner +msgid "Partner" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_token:0 +msgid "Signup Token" +msgstr "" diff --git a/addons/base_action_rule/i18n/es.po b/addons/base_action_rule/i18n/es.po index 2e09f52afc2..e9225670cb5 100644 --- a/addons/base_action_rule/i18n/es.po +++ b/addons/base_action_rule/i18n/es.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-09 12:09+0000\n" +"PO-Revision-Date: 2012-12-11 12:47+0000\n" "Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:51+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_action_rule #: field:base.action.rule,act_followers:0 msgid "Set Followers" -msgstr "" +msgstr "Establecer seguidores" #. module: base_action_rule #: view:base.action.rule:0 @@ -28,6 +28,9 @@ msgid "" "The rule uses the AND operator. The model must match all non-empty fields so " "that the rule executes the action described in the 'Actions' tab." msgstr "" +"Las reglas usan el operador lógico AND. El modelo debe coincidir todos los " +"campos no vacíos para que la regla ejecuta la acción configurada en la " +"pestaña 'Acciones'." #. module: base_action_rule #: model:ir.model,name:base_action_rule.model_base_action_rule @@ -42,7 +45,7 @@ msgstr "Responsable" #. module: base_action_rule #: model:ir.model,name:base_action_rule.model_ir_actions_server msgid "ir.actions.server" -msgstr "" +msgstr "Acciones del servidor" #. module: base_action_rule #: view:base.action.rule:0 @@ -60,6 +63,8 @@ msgid "" "Server Actions to be Triggered (eg. Email Reminder, Call Object Method, " "etc...)" msgstr "" +"Acciones del servidor a ser lanzadas (por ejemplo, enviar correos de " +"recordatorio, llamar método de objetos, etc...)" #. module: base_action_rule #: field:base.action.rule,trg_date_range:0 @@ -82,7 +87,7 @@ msgstr "Condiciones" #. module: base_action_rule #: field:base.action.rule,trg_state_from:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: base_action_rule #: view:base.action.rule:0 @@ -103,7 +108,7 @@ msgstr "Botón pulsado" #. module: base_action_rule #: view:base.action.rule:0 msgid "Conditions on Status" -msgstr "" +msgstr "Condiciones sobre el estado" #. module: base_action_rule #: selection:base.action.rule,trg_date_type:0 @@ -126,6 +131,8 @@ msgid "" "Define Server actions.\n" "eg:Email Reminders, Call Object Service, etc.." msgstr "" +"Definir acciones de servidor.\n" +"Por ejemplo: correos de recordatorio, llamar a servicios de objeto, etc..." #. module: base_action_rule #: help:base.action.rule,trg_date_range:0 @@ -177,7 +184,7 @@ msgstr "Acciones automatizadas" #. module: base_action_rule #: field:base.action.rule,model_id:0 msgid "Related Document Model" -msgstr "" +msgstr "Modelo de documento relacionado" #. module: base_action_rule #: help:base.action.rule,sequence:0 @@ -222,12 +229,12 @@ msgstr "Regex sobre nombre recurso" #. module: base_action_rule #: selection:base.action.rule,trg_date_type:0 msgid "Last Modified Date" -msgstr "" +msgstr "Fecha de última modificación" #. module: base_action_rule #: field:base.action.rule,model:0 msgid "Model" -msgstr "" +msgstr "Modelo" #. module: base_action_rule #: field:base.action.rule,last_run:0 @@ -293,6 +300,16 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para establecer una nueva regla de acción automática.\n" +"

\n" +"Use las acciones automáticas para lanzar automáticamente acciones para " +"varias pantallas. Por ejemplo: una iniciativa creada por un usuario " +"específico puede ser asignada automáticamente a un equipo de ventas, o una " +"oportunidad que tenga estado pendiente después de 14 días puede lanzar un " +"correo recordatorio.\n" +"

\n" +" " #. module: base_action_rule #: selection:base.action.rule,trg_date_type:0 @@ -322,7 +339,7 @@ msgstr "Fecha activación" #. module: base_action_rule #: view:base.action.rule:0 msgid "Server Actions" -msgstr "" +msgstr "Acciones de servidor" #~ msgid "" #~ "Check this if you want the rule to send an email to the responsible person." diff --git a/addons/base_action_rule/i18n/it.po b/addons/base_action_rule/i18n/it.po index cf1e0213ef0..c43eaf67bca 100644 --- a/addons/base_action_rule/i18n/it.po +++ b/addons/base_action_rule/i18n/it.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 17:37+0000\n" -"Last-Translator: simone.sandri \n" +"PO-Revision-Date: 2012-12-11 12:28+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:51+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_action_rule #: field:base.action.rule,act_followers:0 msgid "Set Followers" -msgstr "" +msgstr "Imposta followers" #. module: base_action_rule #: view:base.action.rule:0 @@ -42,7 +42,7 @@ msgstr "Responsabile" #. module: base_action_rule #: model:ir.model,name:base_action_rule.model_ir_actions_server msgid "ir.actions.server" -msgstr "" +msgstr "ir.actions.server" #. module: base_action_rule #: view:base.action.rule:0 @@ -83,7 +83,7 @@ msgstr "Condizioni" #. module: base_action_rule #: field:base.action.rule,trg_state_from:0 msgid "Status" -msgstr "" +msgstr "Stato" #. module: base_action_rule #: view:base.action.rule:0 @@ -178,7 +178,7 @@ msgstr "Azioni automatiche" #. module: base_action_rule #: field:base.action.rule,model_id:0 msgid "Related Document Model" -msgstr "" +msgstr "Modello documento relativo" #. module: base_action_rule #: help:base.action.rule,sequence:0 @@ -224,12 +224,12 @@ msgstr "" #. module: base_action_rule #: selection:base.action.rule,trg_date_type:0 msgid "Last Modified Date" -msgstr "" +msgstr "Data ultima modifica" #. module: base_action_rule #: field:base.action.rule,model:0 msgid "Model" -msgstr "" +msgstr "Modello" #. module: base_action_rule #: field:base.action.rule,last_run:0 @@ -324,7 +324,7 @@ msgstr "Data Programmata" #. module: base_action_rule #: view:base.action.rule:0 msgid "Server Actions" -msgstr "" +msgstr "Azioni Server" #~ msgid "" #~ "Check this if you want the rule to send an email to the responsible person." diff --git a/addons/base_action_rule/i18n/pt.po b/addons/base_action_rule/i18n/pt.po index a3e846f49c9..b85fc3e037b 100644 --- a/addons/base_action_rule/i18n/pt.po +++ b/addons/base_action_rule/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 18:17+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 15:50+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:51+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_action_rule #: field:base.action.rule,act_followers:0 @@ -42,7 +42,7 @@ msgstr "Responsável" #. module: base_action_rule #: model:ir.model,name:base_action_rule.model_ir_actions_server msgid "ir.actions.server" -msgstr "" +msgstr "ir.actions.server" #. module: base_action_rule #: view:base.action.rule:0 @@ -178,7 +178,7 @@ msgstr "Ações Automáticas" #. module: base_action_rule #: field:base.action.rule,model_id:0 msgid "Related Document Model" -msgstr "" +msgstr "Modelo de documento relacionado" #. module: base_action_rule #: help:base.action.rule,sequence:0 @@ -223,12 +223,12 @@ msgstr "Regex em Nome do Recurso" #. module: base_action_rule #: selection:base.action.rule,trg_date_type:0 msgid "Last Modified Date" -msgstr "" +msgstr "Data da modificação mais recente" #. module: base_action_rule #: field:base.action.rule,model:0 msgid "Model" -msgstr "" +msgstr "Modelo" #. module: base_action_rule #: field:base.action.rule,last_run:0 diff --git a/addons/base_calendar/i18n/es.po b/addons/base_calendar/i18n/es.po index a3b51a99a96..e5f7414525f 100644 --- a/addons/base_calendar/i18n/es.po +++ b/addons/base_calendar/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-10 22:05+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 14:15+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_calendar #: selection:calendar.alarm,trigger_related:0 @@ -364,6 +364,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: base_calendar #: code:addons/base_calendar/base_calendar.py:388 @@ -1175,7 +1177,7 @@ msgstr "Detalles del recordatorio" #. module: base_calendar #: model:crm.meeting.type,name:base_calendar.categ_meet3 msgid "Off-site Meeting" -msgstr "" +msgstr "Reunión fuera de las instalaciones" #. module: base_calendar #: view:crm.meeting:0 @@ -1218,6 +1220,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para planificar una nueva reunión.\n" +"

\n" +"El calendario se comparte entre empleados y está totalmente integrado con " +"otras aplicaciones como las vacaciones de los empleados o las oportunidades " +"de negocio.\n" +"

\n" +" " #. module: base_calendar #: help:calendar.alarm,description:0 @@ -1399,6 +1409,13 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para establecer un nuevo tipo de alarma.\n" +"

\n" +"Puede definir un tipo personalizado de alarma de calendario que puede ser " +"asignada a eventos de calendario o a reuniones.\n" +"

\n" +" " #. module: base_calendar #: selection:crm.meeting,state:0 @@ -1507,7 +1524,7 @@ msgstr "Por día" #: code:addons/base_calendar/base_calendar.py:417 #, python-format msgid "First you have to specify the date of the invitation." -msgstr "" +msgstr "Primero debe especificar la fecha de la invitación." #. module: base_calendar #: field:calendar.alarm,model_id:0 diff --git a/addons/base_crypt/i18n/pt.po b/addons/base_crypt/i18n/pt.po index 5c80e1323ec..faac741ea4b 100644 --- a/addons/base_crypt/i18n/pt.po +++ b/addons/base_crypt/i18n/pt.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-06-06 22:16+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 15:50+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_crypt #: model:ir.model,name:base_crypt.model_res_users msgid "Users" -msgstr "" +msgstr "Utilizadores" #, python-format #~ msgid "Error" diff --git a/addons/base_gengo/i18n/es.po b/addons/base_gengo/i18n/es.po new file mode 100644 index 00000000000..6599bfc99f0 --- /dev/null +++ b/addons/base_gengo/i18n/es.po @@ -0,0 +1,267 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-12 02:09+0000\n" +"Last-Translator: Roberto Lizana (trey.es) \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: base_gengo +#: view:res.company:0 +msgid "Comments for Translator" +msgstr "Comentarios para el traductor" + +#. module: base_gengo +#: field:ir.translation,job_id:0 +msgid "Gengo Job ID" +msgstr "Gengo Job ID" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "This language is not supported by the Gengo translation services." +msgstr "" +"Este idioma no está soportado por los servicios de traducción de Gengo" + +#. module: base_gengo +#: field:res.company,gengo_comment:0 +msgid "Comments" +msgstr "Comentarios" + +#. module: base_gengo +#: field:res.company,gengo_private_key:0 +msgid "Gengo Private Key" +msgstr "Clave privada Gengo" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_base_gengo_translations +msgid "base.gengo.translations" +msgstr "base.gengo.translations" + +#. module: base_gengo +#: help:res.company,gengo_auto_approve:0 +msgid "Jobs are Automatically Approved by Gengo." +msgstr "Las tareas son aprobadas automáticamente por Gengo." + +#. module: base_gengo +#: field:base.gengo.translations,lang_id:0 +msgid "Language" +msgstr "Idioma" + +#. module: base_gengo +#: field:ir.translation,gengo_comment:0 +msgid "Comments & Activity Linked to Gengo" +msgstr "Comentarios y actividad relacionadas con Gengo" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:124 +#, python-format +msgid "Gengo Sync Translation (Response)" +msgstr "Sincronización con el servicio de traducción Gengo (Respuesta)" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:72 +#, python-format +msgid "" +"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo " +"authentication parameters under `Settings > Companies > Gengo Parameters`." +msgstr "" +"Falta la clave pública o privada de Gengo. introduzca sus parámetros de " +"autentificación bajo `Configuracion > Compañías > Parámetros Gengo`." + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Translation By Machine" +msgstr "Traducción automática" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:155 +#, python-format +msgid "" +"%s\n" +"\n" +"--\n" +" Commented on %s by %s." +msgstr "" +"%s\n" +"\n" +"--\n" +"Comentado en %s por %s." + +#. module: base_gengo +#: field:ir.translation,gengo_translation:0 +msgid "Gengo Translation Service Level" +msgstr "Nivel de servicio de traducción Gengo" + +#. module: base_gengo +#: constraint:ir.translation:0 +msgid "" +"The Gengo translation service selected is not supported for this language." +msgstr "" +"El servicio de traducción Gengo seleccionado no está soportado para este " +"idioma." + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Standard" +msgstr "Estándar" + +#. module: base_gengo +#: help:ir.translation,gengo_translation:0 +msgid "" +"You can select here the service level you want for an automatic translation " +"using Gengo." +msgstr "" +"Puede seleccionar aquí el nivel de servicio que quiere para una traducción " +"automática usando Gengo." + +#. module: base_gengo +#: field:base.gengo.translations,restart_send_job:0 +msgid "Restart Sending Job" +msgstr "Reiniciar enviando tarea" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "To Approve In Gengo" +msgstr "Para aprobar en Gengo" + +#. module: base_gengo +#: view:res.company:0 +msgid "Private Key" +msgstr "Clave privada" + +#. module: base_gengo +#: view:res.company:0 +msgid "Public Key" +msgstr "Clave pública" + +#. module: base_gengo +#: field:res.company,gengo_public_key:0 +msgid "Gengo Public Key" +msgstr "Clave pública Gengo" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:123 +#, python-format +msgid "Gengo Sync Translation (Request)" +msgstr "Sincronización con el servicio de traducción Gengo (Petición)" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Translations" +msgstr "Traducciones" + +#. module: base_gengo +#: field:res.company,gengo_auto_approve:0 +msgid "Auto Approve Translation ?" +msgstr "¿Auto aprobar traducción?" + +#. module: base_gengo +#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations +#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations +msgid "Gengo: Manual Request of Translation" +msgstr "Gengo: Solicitud manual de traducción" + +#. module: base_gengo +#: code:addons/base_gengo/ir_translation.py:62 +#: code:addons/base_gengo/wizard/base_gengo_translations.py:109 +#, python-format +msgid "Gengo Authentication Error" +msgstr "Gengo Error de autenticación" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "" +"Note: If the translation state is 'In Progress', it means that the " +"translation has to be approved to be uploaded in this system. You are " +"supposed to do that directly by using your Gengo Account" +msgstr "" +"Nota: Si el estado de traducción es 'En progreso', significa que la " +"traducción tiene que ser aprobada para ser actualizada en este sistema. Se " +"supone que lo realizará directamente usando su cuenta Gengo." + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:82 +#, python-format +msgid "" +"Gengo connection failed with this message:\n" +"``%s``" +msgstr "" +"Error de conexión con Gengo con el mensaje:\n" +"``%s``" + +#. module: base_gengo +#: view:res.company:0 +msgid "Gengo Parameters" +msgstr "Parámetros Gengo" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Send" +msgstr "Enviar" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Ultra" +msgstr "Ultra" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_ir_translation +msgid "ir.translation" +msgstr "ir.translation" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Gengo Translation Service" +msgstr "Servicio de traducción Gengo" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Pro" +msgstr "Pro" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Gengo Request Form" +msgstr "Formulario de solicitud Gengo" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "Warning" +msgstr "Aviso" + +#. module: base_gengo +#: help:res.company,gengo_comment:0 +msgid "" +"This comment will be automatically be enclosed in each an every request sent " +"to Gengo" +msgstr "" +"Este comentario será automáticamente incluido en cada una de las solicitudes " +"enviadas a Gengo" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Cancel" +msgstr "Cancelar" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "or" +msgstr "o" diff --git a/addons/base_import/i18n/ru.po b/addons/base_import/i18n/ru.po new file mode 100644 index 00000000000..6245fa856da --- /dev/null +++ b/addons/base_import/i18n/ru.po @@ -0,0 +1,1164 @@ +# Russian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-11 07:30+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:420 +#, python-format +msgid "Get all possible values" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:71 +#, python-format +msgid "Need to import data from an other application?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:163 +#, python-format +msgid "" +"When you use External IDs, you can import CSV files \n" +" with the \"External ID\" column to define the " +"External \n" +" ID of each record you import. Then, you will be able " +"\n" +" to make a reference to that record with columns like " +"\n" +" \"Field/External ID\". The following two CSV files " +"give \n" +" you an example for Products and their Categories." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:271 +#, python-format +msgid "" +"How to export/import different tables from an SQL \n" +" application to OpenERP?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:310 +#, python-format +msgid "Relation Fields" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:142 +#, python-format +msgid "" +"Country/Database ID: the unique OpenERP ID for a \n" +" record, defined by the ID postgresql column" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:155 +#, python-format +msgid "" +"Use \n" +" Country/Database ID: You should rarely use this \n" +" notation. It's mostly used by developers as it's " +"main \n" +" advantage is to never have conflicts (you may have \n" +" several records with the same name, but they always " +"\n" +" have a unique Database ID)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:146 +#, python-format +msgid "" +"For the country \n" +" Belgium, you can use one of these 3 ways to import:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:303 +#, python-format +msgid "company_1,Bigees,True" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o +msgid "base_import.tests.models.m2o" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:297 +#, python-format +msgid "" +"copy \n" +" (select 'company_'||id as \"External " +"ID\",company_name \n" +" as \"Name\",'True' as \"Is a Company\" from " +"companies) TO \n" +" '/tmp/company.csv' with CSV HEADER;" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:206 +#, python-format +msgid "CSV file for Manufacturer, Retailer" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:160 +#, python-format +msgid "" +"Use \n" +" Country/External ID: Use External ID when you import " +"\n" +" data from a third party application." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:316 +#, python-format +msgid "person_1,Fabien,False,company_1" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "XXX/External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:351 +#, python-format +msgid "Don't Import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:24 +#, python-format +msgid "Select the" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:100 +#, python-format +msgid "" +"Note that if your CSV file \n" +" has a tabulation as separator, OpenERP will not \n" +" detect the separations. You will need to change the " +"\n" +" file format options in your spreadsheet application. " +"\n" +" See the following question." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:141 +#, python-format +msgid "Country: the name or code of the country" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_o2m_child +msgid "base_import.tests.models.o2m.child" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:239 +#, python-format +msgid "Can I import several times the same record?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:15 +#, python-format +msgid "Validate" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:55 +#, python-format +msgid "Map your data to OpenERP" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:153 +#, python-format +msgid "" +"Use Country: This is \n" +" the easiest way when your data come from CSV files \n" +" that have been created manually." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:127 +#, python-format +msgid "" +"What's the difference between Database ID and \n" +" External ID?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:138 +#, python-format +msgid "" +"For example, to \n" +" reference the country of a contact, OpenERP proposes " +"\n" +" you 3 different fields to import:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:175 +#, python-format +msgid "What can I do if I have multiple matches for a field?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:302 +#, python-format +msgid "External ID,Name,Is a Company" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,somevalue:0 +msgid "Some Value" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:231 +#, python-format +msgid "" +"The following CSV file shows how to import \n" +" suppliers and their respective contacts" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:109 +#, python-format +msgid "" +"How can I change the CSV file format options when \n" +" saving in my spreadsheet application?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:320 +#, python-format +msgid "" +"As you can see in this file, Fabien and Laurence \n" +" are working for the Bigees company (company_1) and \n" +" Eric is working for the Organi company. The relation " +"\n" +" between persons and companies is done using the \n" +" External ID of the companies. We had to prefix the \n" +" \"External ID\" by the name of the table to avoid a " +"\n" +" conflict of ID between persons and companies " +"(person_1 \n" +" and company_1 who shared the same ID 1 in the " +"orignial \n" +" database)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:308 +#, python-format +msgid "" +"copy (select \n" +" 'person_'||id as \"External ID\",person_name as \n" +" \"Name\",'False' as \"Is a " +"Company\",'company_'||company_id\n" +" as \"Related Company/External ID\" from persons) TO " +"\n" +" '/tmp/person.csv' with CSV" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:148 +#, python-format +msgid "Country: Belgium" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_stillreadonly +msgid "base_import.tests.models.char.stillreadonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:314 +#, python-format +msgid "" +"External ID,Name,Is a \n" +" Company,Related Company/External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:233 +#, python-format +msgid "Suppliers and their respective contacts" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:179 +#, python-format +msgid "" +"If for example you have two product categories \n" +" with the child name \"Sellable\" (ie. \"Misc. \n" +" Products/Sellable\" & \"Other Products/Sellable\"),\n" +" your validation is halted but you may still import \n" +" your data. However, we recommend you do not import " +"the \n" +" data because they will all be linked to the first \n" +" 'Sellable' category found in the Product Category " +"list \n" +" (\"Misc. Products/Sellable\"). We recommend you " +"modify \n" +" one of the duplicates' values or your product " +"category \n" +" hierarchy." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:306 +#, python-format +msgid "" +"To create the CSV file for persons, linked to \n" +" companies, we will use the following SQL command in " +"\n" +" PSQL:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:119 +#, python-format +msgid "" +"Microsoft Excel will allow \n" +" you to modify only the encoding when saving \n" +" (in 'Save As' dialog box > click 'Tools' dropdown \n" +" list > Encoding tab)." +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,othervalue:0 +msgid "Other Variable" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "" +"will also be used to update the original\n" +" import if you need to re-import modified data\n" +" later, it's thus good practice to specify it\n" +" whenever possible" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:26 +#, python-format +msgid "" +"file to import. If you need a sample importable file, you\n" +" can use the export tool to generate one." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:148 +#, python-format +msgid "" +"Country/Database \n" +" ID: 21" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char +msgid "base_import.tests.models.char" +msgstr "" + +#. module: base_import +#: help:base_import.import,file:0 +msgid "File to check and/or import, raw binary (not base64)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:230 +#, python-format +msgid "Purchase orders with their respective purchase order lines" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:60 +#, python-format +msgid "" +"If the file contains\n" +" the column names, OpenERP can try auto-detecting the\n" +" field corresponding to the column. This makes imports\n" +" simpler especially when the file has many columns." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:26 +#, python-format +msgid ".CSV" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:360 +#, python-format +msgid "" +". The issue is\n" +" usually an incorrect file encoding." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required +msgid "base_import.tests.models.m2o.required" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:212 +#, python-format +msgid "" +"How can I import a one2many relationship (e.g. several \n" +" Order Lines of a Sale Order)?" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_noreadonly +msgid "base_import.tests.models.char.noreadonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:113 +#, python-format +msgid "" +"If you edit and save CSV files in speadsheet \n" +" applications, your computer's regional settings will " +"\n" +" be applied for the separator and delimiter. \n" +" We suggest you use OpenOffice or LibreOffice Calc \n" +" as they will allow you to modify all three options \n" +" (in 'Save As' dialog box > Check the box 'Edit " +"filter \n" +" settings' > Save)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:30 +#, python-format +msgid "CSV File:" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_preview +msgid "base_import.tests.models.preview" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_required +msgid "base_import.tests.models.char.required" +msgstr "" + +#. module: base_import +#: code:addons/base_import/models.py:112 +#, python-format +msgid "Database ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:313 +#, python-format +msgid "It will produce the following CSV file:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:362 +#, python-format +msgid "Here is the start of the file we could not import:" +msgstr "" + +#. module: base_import +#: field:base_import.import,file_type:0 +msgid "File Type" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_import +msgid "base_import.import" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_o2m +msgid "base_import.tests.models.o2m" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:360 +#, python-format +msgid "Import preview failed due to:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:144 +#, python-format +msgid "" +"Country/External ID: the ID of this record \n" +" referenced in another application (or the .XML file " +"\n" +" that imported it)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:35 +#, python-format +msgid "Reload data to check changes." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_readonly +msgid "base_import.tests.models.char.readonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:131 +#, python-format +msgid "" +"Some fields define a relationship with another \n" +" object. For example, the country of a contact is a \n" +" link to a record of the 'Country' object. When you \n" +" want to import such fields, OpenERP will have to \n" +" recreate links between the different records. \n" +" To help you import such fields, OpenERP provides 3 \n" +" mechanisms. You must use one and only one mechanism " +"\n" +" per field you want to import." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:201 +#, python-format +msgid "" +"The tags should be separated by a comma without any \n" +" spacing. For example, if you want you customer to be " +"\n" +" lined to both tags 'Manufacturer' and 'Retailer' \n" +" then you will encode it as follow \"Manufacturer,\n" +" Retailer\" in the same column of your CSV file." +msgstr "" + +#. module: base_import +#: code:addons/base_import/models.py:264 +#, python-format +msgid "You must configure at least one field to import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:304 +#, python-format +msgid "company_2,Organi,True" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:58 +#, python-format +msgid "" +"The first row of the\n" +" file contains the label of the column" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_states +msgid "base_import.tests.models.char.states" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:7 +#, python-format +msgid "Import a CSV File" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:74 +#, python-format +msgid "Quoting:" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required_related +msgid "base_import.tests.models.m2o.required.related" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:293 +#, python-format +msgid ")." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:18 +#: code:addons/base_import/static/src/xml/import.xml:396 +#, python-format +msgid "Import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:407 +#, python-format +msgid "Here are the possible values:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "The" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:227 +#, python-format +msgid "" +"A single column was found in the file, this often means the file separator " +"is incorrect" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:293 +#, python-format +msgid "dump of such a PostgreSQL database" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:301 +#, python-format +msgid "This SQL command will create the following CSV file:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:228 +#, python-format +msgid "" +"The following CSV file shows how to import purchase \n" +" orders with their respective purchase order lines:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:91 +#, python-format +msgid "" +"What can I do when the Import preview table isn't \n" +" displayed correctly?" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.char,value:0 +#: field:base_import.tests.models.char.noreadonly,value:0 +#: field:base_import.tests.models.char.readonly,value:0 +#: field:base_import.tests.models.char.required,value:0 +#: field:base_import.tests.models.char.states,value:0 +#: field:base_import.tests.models.char.stillreadonly,value:0 +#: field:base_import.tests.models.m2o,value:0 +#: field:base_import.tests.models.m2o.related,value:0 +#: field:base_import.tests.models.m2o.required,value:0 +#: field:base_import.tests.models.m2o.required.related,value:0 +#: field:base_import.tests.models.o2m,value:0 +#: field:base_import.tests.models.o2m.child,parent_id:0 +#: field:base_import.tests.models.o2m.child,value:0 +msgid "unknown" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:317 +#, python-format +msgid "person_2,Laurence,False,company_1" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:149 +#, python-format +msgid "Country/External ID: base.be" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:288 +#, python-format +msgid "" +"As an example, suppose you have a SQL database \n" +" with two tables you want to import: companies and \n" +" persons. Each person belong to one company, so you \n" +" will have to recreate the link between a person and " +"\n" +" the company he work for. (If you want to test this \n" +" example, here is a" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:396 +#, python-format +msgid "(%d more)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:227 +#, python-format +msgid "File for some Quotations" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:72 +#, python-format +msgid "Encoding:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:280 +#, python-format +msgid "" +"To manage relations between tables, \n" +" you can use the \"External ID\" facilities of " +"OpenERP. \n" +" The \"External ID\" of a record is the unique " +"identifier \n" +" of this record in another application. This " +"\"External \n" +" ID\" must be unique accoss all the records of all \n" +" objects, so it's a good practice to prefix this \n" +" \"External ID\" with the name of the application or " +"\n" +" table. (like 'company_1', 'person_1' instead of '1')" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:295 +#, python-format +msgid "" +"We will first export all companies and their \n" +" \"External ID\". In PSQL, write the following " +"command:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:373 +#, python-format +msgid "Everything seems valid." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:188 +#, python-format +msgid "" +"However if you do not wish to change your \n" +" configuration of product categories, we recommend " +"you \n" +" use make use of the external ID for this field \n" +" 'Category'." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:390 +#, python-format +msgid "at row %d" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:197 +#, python-format +msgid "" +"How can I import a many2many relationship field \n" +" (e.g. a customer that has multiple tags)?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "XXX/ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:275 +#, python-format +msgid "" +"If you need to import data from different tables, \n" +" you will have to recreate relations between records " +"\n" +" belonging to different tables. (e.g. if you import \n" +" companies and persons, you will have to recreate the " +"\n" +" link between each person and the company they work \n" +" for)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:150 +#, python-format +msgid "" +"According to your need, you should use \n" +" one of these 3 ways to reference records in " +"relations. \n" +" Here is when you should use one or the other, \n" +" according to your need:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:319 +#, python-format +msgid "person_4,Ramsy,False,company_3" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:261 +#, python-format +msgid "" +"If you do not set all fields in your CSV file, \n" +" OpenERP will assign the default value for every non " +"\n" +" defined fields. But if you\n" +" set fields with empty values in your CSV file, " +"OpenERP \n" +" will set the EMPTY value in the field, instead of \n" +" assigning the default value." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:20 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:257 +#, python-format +msgid "" +"What happens if I do not provide a value for a \n" +" specific field?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:68 +#, python-format +msgid "Frequently Asked Questions" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:305 +#, python-format +msgid "company_3,Boum,True" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:249 +#, python-format +msgid "" +"This feature \n" +" allows you to use the Import/Export tool of OpenERP " +"to \n" +" modify a batch of records in your favorite " +"spreadsheet \n" +" application." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:77 +#, python-format +msgid "" +"column in OpenERP. When you\n" +" import an other record that links to the first\n" +" one, use" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:242 +#, python-format +msgid "" +"If you import a file that contains one of the \n" +" column \"External ID\" or \"Database ID\", records " +"that \n" +" have already been imported will be modified instead " +"of \n" +" being created. This is very usefull as it allows you " +"\n" +" to import several times the same CSV file while " +"having \n" +" made some changes in between two imports. OpenERP " +"will \n" +" take care of creating or modifying each record \n" +" depending if it's new or not." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:169 +#, python-format +msgid "CSV file for categories" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:309 +#, python-format +msgid "Normal Fields" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:74 +#, python-format +msgid "" +"In order to re-create relationships between\n" +" different records, you should use the unique\n" +" identifier from the original application and\n" +" map it to the" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:170 +#, python-format +msgid "CSV file for Products" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:216 +#, python-format +msgid "" +"If you want to import sales order having several \n" +" order lines; for each order line, you need to " +"reserve \n" +" a specific row in the CSV file. The first order line " +"\n" +" will be imported on the same row as the information " +"\n" +" relative to order. Any additional lines will need an " +"\n" +" addtional row that does not have any information in " +"\n" +" the fields relative to the order." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_related +msgid "base_import.tests.models.m2o.related" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,name:0 +msgid "Name" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "to the original unique identifier." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:318 +#, python-format +msgid "person_3,Eric,False,company_2" +msgstr "" + +#. module: base_import +#: field:base_import.import,res_model:0 +msgid "Model" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:77 +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:329 +#, python-format +msgid "" +"The two files produced are ready to be imported in \n" +" OpenERP without any modifications. After having \n" +" imported these two CSV files, you will have 4 " +"contacts \n" +" and 3 companies. (the firsts two contacts are linked " +"\n" +" to the first company). You must first import the \n" +" companies and then the persons." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:95 +#, python-format +msgid "" +"By default the Import preview is set on commas as \n" +" field separators and quotation marks as text \n" +" delimiters. If your csv file does not have these \n" +" settings, you can modify the File Format Options \n" +" (displayed under the Browse CSV file bar after you \n" +" select your file)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:73 +#, python-format +msgid "Separator:" +msgstr "" + +#. module: base_import +#: field:base_import.import,file_name:0 +msgid "File Name" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/models.py:80 +#: code:addons/base_import/models.py:111 +#: code:addons/base_import/static/src/xml/import.xml:77 +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:39 +#, python-format +msgid "File Format Options…" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:392 +#, python-format +msgid "between rows %d and %d" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:19 +#, python-format +msgid "or" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:223 +#, python-format +msgid "" +"As an example, here is \n" +" purchase.order_functional_error_line_cant_adpat.CSV " +"\n" +" file of some quotations you can import, based on " +"demo \n" +" data." +msgstr "" + +#. module: base_import +#: field:base_import.import,file:0 +msgid "File" +msgstr "" diff --git a/addons/base_report_designer/i18n/es.po b/addons/base_report_designer/i18n/es.po index 93e58747c9a..b757d8c986c 100644 --- a/addons/base_report_designer/i18n/es.po +++ b/addons/base_report_designer/i18n/es.po @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-05-10 18:02+0000\n" -"Last-Translator: Jordi Esteve (www.zikzakmedia.com) " -"\n" +"PO-Revision-Date: 2012-12-11 14:19+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-11-25 06:09+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_report_designer #: model:ir.model,name:base_report_designer.model_base_report_sxw @@ -181,7 +180,7 @@ msgstr "Cancelar" #. module: base_report_designer #: view:base.report.sxw:0 msgid "or" -msgstr "" +msgstr "o" #. module: base_report_designer #: model:ir.model,name:base_report_designer.model_ir_actions_report_xml diff --git a/addons/base_report_designer/i18n/pt.po b/addons/base_report_designer/i18n/pt.po index cb236d1230c..cb54635d6f3 100644 --- a/addons/base_report_designer/i18n/pt.po +++ b/addons/base_report_designer/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-05-10 17:24+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 15:31+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-11-25 06:09+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_report_designer #: model:ir.model,name:base_report_designer.model_base_report_sxw @@ -179,7 +179,7 @@ msgstr "Cancelar" #. module: base_report_designer #: view:base.report.sxw:0 msgid "or" -msgstr "" +msgstr "ou" #. module: base_report_designer #: model:ir.model,name:base_report_designer.model_ir_actions_report_xml diff --git a/addons/base_setup/i18n/es.po b/addons/base_setup/i18n/es.po index 4e0781f694f..27154337907 100644 --- a/addons/base_setup/i18n/es.po +++ b/addons/base_setup/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-12-10 22:14+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 19:51+0000\n" +"Last-Translator: lambdasoftware \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: 2012-12-11 04:46+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_setup #: view:sale.config.settings:0 @@ -34,7 +34,7 @@ msgstr "Contactos" #. module: base_setup #: model:ir.model,name:base_setup.model_base_config_settings msgid "base.config.settings" -msgstr "" +msgstr "Parámetros de configuración base" #. module: base_setup #: field:base.config.settings,module_auth_oauth:0 @@ -54,6 +54,10 @@ msgid "" "OpenERP using specific\n" " plugins for your preferred email application." msgstr "" +"OpenERP permite crear automáticamente ofertas (u otros documentos) desde " +"correos entrantes. Puede sincronizar correos con OpenERP usando cuentas " +"POP/IMAP, con scripts desde su servidor de correo, o manualmente usando los " +"plugins específicos para su gestor de correo preferido." #. module: base_setup #: selection:base.setup.terminology,partner:0 @@ -140,7 +144,7 @@ msgstr "res_config_contents" #. module: base_setup #: view:sale.config.settings:0 msgid "Customer Features" -msgstr "" +msgstr "Características del cliente" #. module: base_setup #: view:base.config.settings:0 @@ -150,7 +154,7 @@ msgstr "Importar/Exportar" #. module: base_setup #: view:sale.config.settings:0 msgid "Sale Features" -msgstr "" +msgstr "Características de venta" #. module: base_setup #: field:sale.config.settings,module_plugin_outlook:0 @@ -197,6 +201,9 @@ msgid "" "companies.\n" " This installs the module multi_company." msgstr "" +"Trabajar en entornos multiempresa, con los permisos adecuados entre " +"compañias.\n" +"Se instalará el módulo multi_company." #. module: base_setup #: view:base.config.settings:0 @@ -210,7 +217,7 @@ msgstr "" #. module: base_setup #: model:ir.model,name:base_setup.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "Configuración de las ventas" #. module: base_setup #: field:base.setup.terminology,partner:0 @@ -273,6 +280,10 @@ msgid "" " email into an OpenERP mail message with attachments.\n" " This installs the module plugin_outlook." msgstr "" +"El conector Outlook permite seleccionar un objeto y añadirlo a su correo " +"electrónico desde MS Outlook. Puede seleccionar una empresa, o una oferta y " +"archivar un correo como adjunto en OpenERP.\n" +"Se instalará el módulo plugin_outlook." #. module: base_setup #: view:base.config.settings:0 diff --git a/addons/base_setup/i18n/nb.po b/addons/base_setup/i18n/nb.po index ea559daa854..977b41f6e69 100644 --- a/addons/base_setup/i18n/nb.po +++ b/addons/base_setup/i18n/nb.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2011-11-07 12:48+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 14:32+0000\n" +"Last-Translator: Kaare Pettersen \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 05:52+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_setup #: view:sale.config.settings:0 msgid "Emails Integration" -msgstr "" +msgstr "Epost integrering." #. module: base_setup #: selection:base.setup.terminology,partner:0 @@ -30,18 +30,20 @@ msgstr "Gjest" #. module: base_setup #: view:sale.config.settings:0 msgid "Contacts" -msgstr "" +msgstr "Kontakter." #. module: base_setup #: model:ir.model,name:base_setup.model_base_config_settings msgid "base.config.settings" -msgstr "" +msgstr "Base.Konfigurasjon.Innstillinger." #. module: base_setup #: field:base.config.settings,module_auth_oauth:0 msgid "" "Use external authentication providers, sign in with google, facebook, ..." msgstr "" +"Bruke eksterne verifisering av leverandører, logg deg på med Google, " +"Facebook, ..." #. module: base_setup #: view:sale.config.settings:0 @@ -64,24 +66,24 @@ msgstr "Medlem" #. module: base_setup #: view:base.config.settings:0 msgid "Portal access" -msgstr "" +msgstr "Portal tilgang." #. module: base_setup #: view:base.config.settings:0 msgid "Authentication" -msgstr "" +msgstr "Autentisering." #. module: base_setup #: view:sale.config.settings:0 msgid "Quotations and Sales Orders" -msgstr "" +msgstr "Sitater og salgsordrer." #. module: base_setup #: view:base.config.settings:0 #: model:ir.actions.act_window,name:base_setup.action_general_configuration #: model:ir.ui.menu,name:base_setup.menu_general_configuration msgid "General Settings" -msgstr "" +msgstr "Generelle innstillinger." #. module: base_setup #: selection:base.setup.terminology,partner:0 @@ -91,12 +93,12 @@ msgstr "Bidragsyter" #. module: base_setup #: view:base.config.settings:0 msgid "Email" -msgstr "" +msgstr "E-post." #. module: base_setup #: field:sale.config.settings,module_crm:0 msgid "CRM" -msgstr "" +msgstr "CRM." #. module: base_setup #: selection:base.setup.terminology,partner:0 @@ -106,32 +108,32 @@ msgstr "pasient" #. module: base_setup #: field:base.config.settings,module_base_import:0 msgid "Allow users to import data from CSV files" -msgstr "" +msgstr "Tillater brukere å importere data fra CSV-filer." #. module: base_setup #: field:base.config.settings,module_multi_company:0 msgid "Manage multiple companies" -msgstr "" +msgstr "Administrere flere selskaper." #. module: base_setup #: help:base.config.settings,module_portal:0 msgid "Give access your customers and suppliers to their documents." -msgstr "" +msgstr "Gi tilgang til kunder og leverandører til sine dokumenter." #. module: base_setup #: view:sale.config.settings:0 msgid "On Mail Client" -msgstr "" +msgstr "På Mail klient." #. module: base_setup #: field:sale.config.settings,module_web_linkedin:0 msgid "Get contacts automatically from linkedIn" -msgstr "" +msgstr "Få kontakter automatisk fra LinkedIn." #. module: base_setup #: field:sale.config.settings,module_plugin_thunderbird:0 msgid "Enable Thunderbird plug-in" -msgstr "" +msgstr "Enable Thunderbird plug-in," #. module: base_setup #: view:base.setup.terminology:0 @@ -141,22 +143,22 @@ msgstr "res_konfig_innhold" #. module: base_setup #: view:sale.config.settings:0 msgid "Customer Features" -msgstr "" +msgstr "Kunde funksjoner." #. module: base_setup #: view:base.config.settings:0 msgid "Import / Export" -msgstr "" +msgstr "Import / Eksport." #. module: base_setup #: view:sale.config.settings:0 msgid "Sale Features" -msgstr "" +msgstr "Salgs funksjoner." #. module: base_setup #: field:sale.config.settings,module_plugin_outlook:0 msgid "Enable Outlook plug-in" -msgstr "" +msgstr "Aktivere Outlook plug-in." #. module: base_setup #: view:base.setup.terminology:0 @@ -175,7 +177,7 @@ msgstr "leietaker" #. module: base_setup #: help:base.config.settings,module_share:0 msgid "Share or embbed any screen of openerp." -msgstr "" +msgstr "Dele eller legge alle skjermen på openerp." #. module: base_setup #: selection:base.setup.terminology,partner:0 @@ -188,6 +190,8 @@ msgid "" "When you create a new contact (person or company), you will be able to load " "all the data from LinkedIn (photos, address, etc)." msgstr "" +"Når du oppretter en ny kontakt (person eller selskap), vil du være i stand " +"til å laste alle data fra LinkedIn (bilder, adresse, etc)." #. module: base_setup #: help:base.config.settings,module_multi_company:0 @@ -203,11 +207,13 @@ msgid "" "You will find more options in your company details: address for the header " "and footer, overdue payments texts, etc." msgstr "" +"Du finner flere alternativer i bedriftens detaljer: adresse for topp-og " +"bunntekst, forsinket betalings tekster, etc." #. module: base_setup #: model:ir.model,name:base_setup.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "Salg.konfigurasjon.innstilling." #. module: base_setup #: field:base.setup.terminology,partner:0 @@ -228,6 +234,7 @@ msgstr "Klient" #: help:base.config.settings,module_auth_anonymous:0 msgid "Enable the public part of openerp, openerp becomes a public website." msgstr "" +"Aktiver den offentlige delen av openerp, openerp blir et offentlig nettsted." #. module: base_setup #: help:sale.config.settings,module_plugin_thunderbird:0 @@ -255,7 +262,7 @@ msgstr "Bruk et annet for \"kunde\"" #: model:ir.actions.act_window,name:base_setup.action_sale_config #: view:sale.config.settings:0 msgid "Configure Sales" -msgstr "" +msgstr "Konfigurasjons salgs" #. module: base_setup #: help:sale.config.settings,module_plugin_outlook:0 @@ -272,44 +279,44 @@ msgstr "" #. module: base_setup #: view:base.config.settings:0 msgid "Options" -msgstr "" +msgstr "Alternativer." #. module: base_setup #: field:base.config.settings,module_portal:0 msgid "Activate the customer/supplier portal" -msgstr "" +msgstr "Aktiver kunde / leverandør portal." #. module: base_setup #: field:base.config.settings,module_share:0 msgid "Allow documents sharing" -msgstr "" +msgstr "Tillate å dele dokumenter." #. module: base_setup #: field:base.config.settings,module_auth_anonymous:0 msgid "Activate the public portal" -msgstr "" +msgstr "Aktiver den offentlige portalen." #. module: base_setup #: view:base.config.settings:0 msgid "Configure outgoing email servers" -msgstr "" +msgstr "Konfigurer utgående e-post servere." #. module: base_setup #: view:sale.config.settings:0 msgid "Social Network Integration" -msgstr "" +msgstr "Sosialt nettverk Integrering." #. module: base_setup #: view:base.config.settings:0 #: view:sale.config.settings:0 msgid "Cancel" -msgstr "" +msgstr "Avbryt." #. module: base_setup #: view:base.config.settings:0 #: view:sale.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Påfør." #. module: base_setup #: view:base.setup.terminology:0 @@ -320,12 +327,12 @@ msgstr "Spesifiser ditt Terminologi" #: view:base.config.settings:0 #: view:sale.config.settings:0 msgid "or" -msgstr "" +msgstr "Eller." #. module: base_setup #: view:base.config.settings:0 msgid "Configure your company data" -msgstr "" +msgstr "Konfigurer din firma data." #~ msgid "Report Footer 1" #~ msgstr "Rapport Bunntekst 1" diff --git a/addons/base_vat/i18n/pt.po b/addons/base_vat/i18n/pt.po index 8968c467bf7..5baecfe590a 100644 --- a/addons/base_vat/i18n/pt.po +++ b/addons/base_vat/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2010-12-09 11:28+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:51+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:19+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base_vat #: view:res.partner:0 @@ -45,7 +45,7 @@ msgstr "Empresas" #: code:addons/base_vat/base_vat.py:111 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: base_vat #: help:res.partner,vat_subjected:0 diff --git a/addons/board/i18n/es.po b/addons/board/i18n/es.po index dd0db5a5241..ed5d5a7f03d 100644 --- a/addons/board/i18n/es.po +++ b/addons/board/i18n/es.po @@ -7,59 +7,58 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2010-12-27 09:22+0000\n" -"Last-Translator: Jordi Esteve (www.zikzakmedia.com) " -"\n" +"PO-Revision-Date: 2012-12-11 21:34+0000\n" +"Last-Translator: lambdasoftware \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: 2012-11-25 06:12+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: board #: model:ir.actions.act_window,name:board.action_board_create #: model:ir.ui.menu,name:board.menu_board_create msgid "Create Board" -msgstr "" +msgstr "Crear tablero" #. module: board #: view:board.create:0 msgid "Create" -msgstr "" +msgstr "Crear" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:4 #, python-format msgid "Reset Layout.." -msgstr "" +msgstr "Reestablecer Diseño" #. module: board #: view:board.create:0 msgid "Create New Dashboard" -msgstr "" +msgstr "Crear nuevo tablero" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:40 #, python-format msgid "Choose dashboard layout" -msgstr "" +msgstr "Elija Diseño Tablero" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:70 #, python-format msgid "Add" -msgstr "" +msgstr "Añadir" #. module: board #. openerp-web #: code:addons/board/static/src/js/dashboard.js:139 #, python-format msgid "Are you sure you want to remove this item ?" -msgstr "" +msgstr "¿Esta seguro que quiere eliminar este item?" #. module: board #: model:ir.model,name:board.model_board_board @@ -71,31 +70,31 @@ msgstr "Tablero" #: model:ir.actions.act_window,name:board.open_board_my_dash_action #: model:ir.ui.menu,name:board.menu_board_my_dash msgid "My Dashboard" -msgstr "" +msgstr "Mi Tablero" #. module: board #: field:board.create,name:0 msgid "Board Name" -msgstr "" +msgstr "Nombre tablero" #. module: board #: model:ir.model,name:board.model_board_create msgid "Board Creation" -msgstr "" +msgstr "Creación de tablero" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:67 #, python-format msgid "Add to Dashboard" -msgstr "" +msgstr "Añadir al tablero" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:28 #, python-format msgid " " -msgstr "" +msgstr " " #. module: board #: model:ir.actions.act_window,help:board.open_board_my_dash_action @@ -115,13 +114,28 @@ msgid "" " \n" " " msgstr "" +"
\n" +"

\n" +" Tu tablero personal está vacio.\n" +"

\n" +"

\n" +" Para añadir su primer informe al tablero, vaya a cualquier menú, " +"cambie a vista lista o gráfico y pulse 'Añadir al tablero' en las " +"opciones de busqueda extendidas.\n" +"

\n" +"

\n" +" Puede filtrar y agrupar datos usando las opciones de busqueda " +"antes de insertarlo en el tablero.\n" +"

\n" +"
\n" +" " #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:6 #, python-format msgid "Reset" -msgstr "" +msgstr "Restablecer" #. module: board #: field:board.create,menu_parent_id:0 @@ -133,21 +147,21 @@ msgstr "Menú padre" #: code:addons/board/static/src/xml/board.xml:8 #, python-format msgid "Change Layout.." -msgstr "" +msgstr "Cambiar Diseño" #. module: board #. openerp-web #: code:addons/board/static/src/js/dashboard.js:93 #, python-format msgid "Edit Layout" -msgstr "" +msgstr "Editar Diseño" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:10 #, python-format msgid "Change Layout" -msgstr "" +msgstr "Cambiar diseño" #. module: board #: view:board.create:0 @@ -157,14 +171,14 @@ msgstr "Cancelar" #. module: board #: view:board.create:0 msgid "or" -msgstr "" +msgstr "o" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:69 #, python-format msgid "Title of new dashboard item" -msgstr "" +msgstr "Título del nuevo elemento del tablero" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/board/i18n/pl.po b/addons/board/i18n/pl.po index a3c6ed22ad8..c34e811d421 100644 --- a/addons/board/i18n/pl.po +++ b/addons/board/i18n/pl.po @@ -7,87 +7,87 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2011-01-14 13:29+0000\n" +"PO-Revision-Date: 2012-12-11 23:18+0000\n" "Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \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: 2012-11-25 06:12+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: board #: model:ir.actions.act_window,name:board.action_board_create #: model:ir.ui.menu,name:board.menu_board_create msgid "Create Board" -msgstr "" +msgstr "Utwórz panel" #. module: board #: view:board.create:0 msgid "Create" -msgstr "" +msgstr "Utwórz" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:4 #, python-format msgid "Reset Layout.." -msgstr "" +msgstr "Przywracanie układu..." #. module: board #: view:board.create:0 msgid "Create New Dashboard" -msgstr "" +msgstr "Utwórz nową konsolę" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:40 #, python-format msgid "Choose dashboard layout" -msgstr "" +msgstr "Wybierz układ konsoli" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:70 #, python-format msgid "Add" -msgstr "" +msgstr "Dodaj" #. module: board #. openerp-web #: code:addons/board/static/src/js/dashboard.js:139 #, python-format msgid "Are you sure you want to remove this item ?" -msgstr "" +msgstr "Jesteś pewien, że chcesz usunąć ten element?" #. module: board #: model:ir.model,name:board.model_board_board msgid "Board" -msgstr "Konsola" +msgstr "Panel" #. module: board #: view:board.board:0 #: model:ir.actions.act_window,name:board.open_board_my_dash_action #: model:ir.ui.menu,name:board.menu_board_my_dash msgid "My Dashboard" -msgstr "" +msgstr "Moja konsola" #. module: board #: field:board.create,name:0 msgid "Board Name" -msgstr "" +msgstr "Nazwa panelu" #. module: board #: model:ir.model,name:board.model_board_create msgid "Board Creation" -msgstr "" +msgstr "Tworzenie panelu" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:67 #, python-format msgid "Add to Dashboard" -msgstr "" +msgstr "Dodaj do konsoli" #. module: board #. openerp-web @@ -120,7 +120,7 @@ msgstr "" #: code:addons/board/static/src/xml/board.xml:6 #, python-format msgid "Reset" -msgstr "" +msgstr "Wyczyść" #. module: board #: field:board.create,menu_parent_id:0 @@ -132,21 +132,21 @@ msgstr "Menu nadrzędne" #: code:addons/board/static/src/xml/board.xml:8 #, python-format msgid "Change Layout.." -msgstr "" +msgstr "Zmiana układu..." #. module: board #. openerp-web #: code:addons/board/static/src/js/dashboard.js:93 #, python-format msgid "Edit Layout" -msgstr "" +msgstr "Edytuj układ" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:10 #, python-format msgid "Change Layout" -msgstr "" +msgstr "Zmień układ" #. module: board #: view:board.create:0 @@ -163,7 +163,7 @@ msgstr "" #: code:addons/board/static/src/xml/board.xml:69 #, python-format msgid "Title of new dashboard item" -msgstr "" +msgstr "Tytuł nowego elementu konsoli" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/contacts/i18n/es.po b/addons/contacts/i18n/es.po index f4b3a345289..825d45cbbb8 100644 --- a/addons/contacts/i18n/es.po +++ b/addons/contacts/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-11-27 01:35+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 14:20+0000\n" +"Last-Translator: Armando Regnault \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n" -"X-Generator: Launchpad (build 16309)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: contacts #: model:ir.actions.act_window,help:contacts.action_contacts @@ -29,9 +29,17 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para añadir un contacto en su libreta de direcciones.\n" +"

\n" +"OpenERP le ayuda a seguir el rastro a todas las actividades relativas a un " +"cliente: discusiones, histórico de oportunidades de negocio, documentos, " +"etc.\n" +"

\n" +" " #. module: contacts #: model:ir.actions.act_window,name:contacts.action_contacts #: model:ir.ui.menu,name:contacts.menu_contacts msgid "Contacts" -msgstr "" +msgstr "Contactos" diff --git a/addons/contacts/i18n/pt.po b/addons/contacts/i18n/pt.po new file mode 100644 index 00000000000..67200b67f9e --- /dev/null +++ b/addons/contacts/i18n/pt.po @@ -0,0 +1,37 @@ +# Portuguese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-11 17:18+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: contacts +#: model:ir.actions.act_window,help:contacts.action_contacts +msgid "" +"

\n" +" Click to add a contact in your address book.\n" +"

\n" +" OpenERP helps you easily track all activities related to\n" +" a customer; discussions, history of business opportunities,\n" +" documents, etc.\n" +"

\n" +" " +msgstr "" + +#. module: contacts +#: model:ir.actions.act_window,name:contacts.action_contacts +#: model:ir.ui.menu,name:contacts.menu_contacts +msgid "Contacts" +msgstr "Contactos" diff --git a/addons/crm/i18n/es.po b/addons/crm/i18n/es.po index e26b603d73b..c8b3e05c313 100644 --- a/addons/crm/i18n/es.po +++ b/addons/crm/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-10 22:54+0000\n" +"PO-Revision-Date: 2012-12-11 21:31+0000\n" "Last-Translator: Ana Juaristi Olalde \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: 2012-12-11 04:46+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: crm #: view:crm.lead.report:0 @@ -59,6 +59,8 @@ msgid "" "Phonecall linked to the opportunity %s has been created and " "scheduled on %s." msgstr "" +"La llamada asociada a la oportunidad %s ha sido creada y " +"planificada en %s." #. module: crm #: model:res.groups,name:crm.group_fund_raising @@ -99,7 +101,7 @@ msgstr "Análisis Iniciativas CRM" #. module: crm #: model:ir.actions.server,subject:crm.action_email_reminder_customer_lead msgid "Reminder on Lead: [[object.id ]]" -msgstr "" +msgstr "Recordatorio en iniciativa: [[object.id ]]" #. module: crm #: view:crm.lead.report:0 @@ -174,6 +176,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: crm #: code:addons/crm/crm_lead.py:552 @@ -218,7 +222,7 @@ msgstr "No acepta recibir emails" #. module: crm #: field:crm.case.stage,fold:0 msgid "Hide in Views when Empty" -msgstr "" +msgstr "Ocultar en vistas si está vacío" #. module: crm #: model:ir.actions.server,name:crm.action_email_reminder_lead @@ -252,6 +256,8 @@ msgstr "Análisis de iniciativas" #, python-format msgid "%s a call for the %s." msgstr "" +"Copy text \t\r\n" +"%s una llamada para el %s." #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_resource_type_act @@ -549,6 +555,10 @@ msgid "" " If the call needs to be done then the status is set " "to 'Not Held'." msgstr "" +"El estado se establece a 'Para hacer', cuando un caso es creado. Si el caso " +"está en progreso el estado se establece a 'Abierto'. Cuando la llamada " +"finaliza, el estado se establece a 'Realizada'. si la llamada requiere ser " +"realizada entonces el estado se establece a 'No realizada'" #. module: crm #: field:crm.case.section,message_summary:0 @@ -583,6 +593,8 @@ msgid "" "Reminder on Lead: [[object.id ]] [[object.partner_id and 'of ' " "+object.partner_id.name or '']]" msgstr "" +"Recordatorio en iniciativa: [[object.id ]] [[object.partner_id and 'of ' " +"+object.partner_id.name or '']]" #. module: crm #: view:crm.segmentation:0 @@ -741,7 +753,7 @@ msgstr "Convertir a oportunidad" #. module: crm #: model:ir.model,name:crm.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: crm #: view:crm.segmentation:0 @@ -1346,6 +1358,10 @@ msgid "" "set to 'Done'. If the case needs to be reviewed then the Status is set to " "'Pending'." msgstr "" +"El estado se establece a 'Borrador', cuando un caso es creado. Si el caso " +"está en progreso el estado se establece 'Abierto'. Cuando el caso finaliza, " +"el estado se establece a 'Realizado'. Si el caso necesita ser revisado " +"entonces el estado se establece a 'Pendiente'." #. module: crm #: model:crm.case.section,name:crm.crm_case_section_1 @@ -2983,6 +2999,8 @@ msgstr "Llamada telefónica" #: view:crm.phonecall.report:0 msgid "Phone calls that are assigned to one of the sale teams I manage" msgstr "" +"Las llamadas de teléfono están asignadas a uno de los equipos que yo " +"gestiono." #. module: crm #: view:crm.lead:0 @@ -3135,6 +3153,8 @@ msgstr "Perdido" #, python-format msgid "Closed/Cancelled leads cannot be converted into opportunities." msgstr "" +"Las iniciativas Cerradas/canceladas no pueden ser convertidas en " +"oportunidades." #. module: crm #: field:crm.lead,country_id:0 @@ -3185,6 +3205,8 @@ msgid "" "Meeting linked to the opportunity %s has been created and " "scheduled on %s." msgstr "" +"La reunión relacionada con la oportunidad %s ha sido creada " +"y planificada en %s." #. module: crm #: view:crm.lead:0 diff --git a/addons/crm_claim/i18n/es.po b/addons/crm_claim/i18n/es.po index 099045a3428..c37727d7cbb 100644 --- a/addons/crm_claim/i18n/es.po +++ b/addons/crm_claim/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-03-12 08:00+0000\n" -"Last-Translator: Carlos Ch. \n" +"PO-Revision-Date: 2012-12-11 21:23+0000\n" +"Last-Translator: Ana Juaristi Olalde \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:49+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: crm_claim #: help:crm.claim.stage,fold:0 @@ -23,6 +23,8 @@ msgid "" "This stage is not visible, for example in status bar or kanban view, when " "there are no records in that stage to display." msgstr "" +"Esta etapa no es visible, por ejemplo en la barra de estado o vista kanban, " +"cuando no hay registros en este estado para visualizar" #. module: crm_claim #: field:crm.claim.report,nbr:0 @@ -33,7 +35,7 @@ msgstr "Nº de casos" #: view:crm.claim:0 #: view:crm.claim.report:0 msgid "Group By..." -msgstr "Agrupar por..." +msgstr "Agrupado por ..." #. module: crm_claim #: view:crm.claim:0 @@ -46,11 +48,13 @@ msgid "" "Allows you to configure your incoming mail server, and create claims from " "incoming emails." msgstr "" +"Le permite configurar su servidor de correo entrante y crear reclamaciones " +"desde emails entrantes" #. module: crm_claim #: model:ir.model,name:crm_claim.model_crm_claim_stage msgid "Claim stages" -msgstr "" +msgstr "Etapas de reclamación" #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -65,7 +69,7 @@ msgstr "Demora cierre" #. module: crm_claim #: field:crm.claim,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensajes sin leer" #. module: crm_claim #: field:crm.claim,resolution:0 @@ -100,7 +104,7 @@ msgstr "Nº reclamación" #. module: crm_claim #: field:crm.claim.stage,name:0 msgid "Stage Name" -msgstr "" +msgstr "Nombre de etapa" #. module: crm_claim #: model:ir.actions.act_window,help:crm_claim.action_report_crm_claim @@ -114,7 +118,7 @@ msgstr "" #. module: crm_claim #: view:crm.claim.report:0 msgid "Salesperson" -msgstr "" +msgstr "Comercial" #. module: crm_claim #: selection:crm.claim,priority:0 @@ -158,7 +162,7 @@ msgstr "Preventivo" #. module: crm_claim #: help:crm.claim,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si está marcado, hay nuevos mensajes que requieren su atención" #. module: crm_claim #: field:crm.claim.report,date_closed:0 @@ -168,7 +172,7 @@ msgstr "Fecha que fue resuelto" #. module: crm_claim #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Falso" #. module: crm_claim #: field:crm.claim,ref:0 @@ -191,6 +195,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: crm_claim #: view:crm.claim:0 @@ -249,12 +255,12 @@ msgstr "Prioridad" #. module: crm_claim #: field:crm.claim.stage,fold:0 msgid "Hide in Views when Empty" -msgstr "" +msgstr "Ocultar en vistas si está vacío" #. module: crm_claim #: field:crm.claim,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: crm_claim #: view:crm.claim:0 @@ -268,7 +274,7 @@ msgstr "Nueva" #. module: crm_claim #: field:crm.claim.stage,section_ids:0 msgid "Sections" -msgstr "" +msgstr "Secciones" #. module: crm_claim #: field:crm.claim,email_from:0 @@ -304,7 +310,7 @@ msgstr "Objeto de la reclamación" #. module: crm_claim #: model:crm.claim.stage,name:crm_claim.stage_claim3 msgid "Rejected" -msgstr "" +msgstr "Rechazado" #. module: crm_claim #: field:crm.claim,date_action_next:0 @@ -315,7 +321,7 @@ msgstr "Fecha de la próxima acción" #: code:addons/crm_claim/crm_claim.py:243 #, python-format msgid "Claim has been created." -msgstr "" +msgstr "La reclamación ha sido creada." #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -349,13 +355,13 @@ msgstr "Fechas" #. module: crm_claim #: help:crm.claim,email_from:0 msgid "Destination email for email gateway." -msgstr "" +msgstr "Email del destinatario para la pasarela de correo" #. module: crm_claim #: code:addons/crm_claim/crm_claim.py:199 #, python-format msgid "No Subject" -msgstr "" +msgstr "Sin Asunto" #. module: crm_claim #: help:crm.claim.stage,state:0 @@ -365,6 +371,10 @@ msgid "" "is related to the status 'Close', when your document reaches this stage, it " "will be automatically have the 'closed' status." msgstr "" +"Estado relacionado para la etapa. El estado de su documento cambiará " +"automáticamente en función de la etapa seleccionada. Por ejemplo, si una " +"etapa está asociada al estado 'Cerrado', cuando su documento alcance este " +"estado, automáticamente tendrá el estado 'Cerrado'" #. module: crm_claim #: view:crm.claim:0 @@ -395,7 +405,7 @@ msgstr "Informe de reclamaciones CRM" #. module: crm_claim #: view:sale.config.settings:0 msgid "Configure" -msgstr "" +msgstr "Configurar" #. module: crm_claim #: model:crm.case.resource.type,name:crm_claim.type_claim1 @@ -441,6 +451,8 @@ msgid "" "If you check this field, this stage will be proposed by default on each " "sales team. It will not assign this stage to existing teams." msgstr "" +"SI selecciona este campo, esta etapa será propuesta por defecto a cada " +"equipo de ventas. No asignará esta etapa a equipos existentes." #. module: crm_claim #: field:crm.claim,categ_id:0 @@ -497,7 +509,7 @@ msgstr "Cerrada" #. module: crm_claim #: view:crm.claim:0 msgid "Reject" -msgstr "" +msgstr "Rechazado" #. module: crm_claim #: view:res.partner:0 @@ -507,7 +519,7 @@ msgstr "Reclamaciones de empresas" #. module: crm_claim #: view:crm.claim.stage:0 msgid "Claim Stage" -msgstr "" +msgstr "Etapa de reclamación" #. module: crm_claim #: view:crm.claim:0 @@ -525,7 +537,7 @@ msgstr "Pendiente" #: field:crm.claim.report,state:0 #: field:crm.claim.stage,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -541,7 +553,7 @@ msgstr "Normal" #. module: crm_claim #: help:crm.claim.stage,sequence:0 msgid "Used to order stages. Lower is better." -msgstr "" +msgstr "Utilizado para ordenar etapas. Bajo es más prioritario." #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -561,7 +573,7 @@ msgstr "Teléfono" #. module: crm_claim #: field:crm.claim,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Es un seguidor." #. module: crm_claim #: field:crm.claim.report,user_id:0 @@ -593,6 +605,10 @@ msgid "" "the case needs to be reviewed then the status is set " "to 'Pending'." msgstr "" +"El estado se establece a 'borrador', cuando un caso se crea. Si el caso está " +"en progreso el estado se establece a 'Abierto'. Cuando el caso finaliza, el " +"estado se establece a 'Cerrado'. Si el caso necesita ser revisado entonces " +"el estado se establece a 'Pendiente'" #. module: crm_claim #: field:crm.claim,active:0 @@ -613,7 +629,7 @@ msgstr "Filtros extendidos..." #: field:crm.claim,message_comment_ids:0 #: help:crm.claim,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentarios y correos" #. module: crm_claim #: view:crm.claim:0 @@ -626,6 +642,8 @@ msgid "" "Responsible sales team. Define Responsible user and Email account for mail " "gateway." msgstr "" +"Responsable del equipo de ventas. Definir usuario responsable y cuenta de " +"correo para la pasarela de correo." #. module: crm_claim #: selection:crm.claim.report,month:0 @@ -646,7 +664,7 @@ msgstr "Fecha de reclamación" #. module: crm_claim #: field:crm.claim,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumen" #. module: crm_claim #: model:ir.actions.act_window,name:crm_claim.crm_claim_categ_action @@ -656,7 +674,7 @@ msgstr "Categorías de reclamaciones" #. module: crm_claim #: field:crm.claim.stage,case_default:0 msgid "Common to All Teams" -msgstr "" +msgstr "Común a todos los equipos" #. module: crm_claim #: view:crm.claim:0 @@ -695,7 +713,7 @@ msgstr "Reclamación" #. module: crm_claim #: view:crm.claim.report:0 msgid "My Company" -msgstr "" +msgstr "Mi compañía" #. module: crm_claim #: view:crm.claim.report:0 @@ -751,7 +769,7 @@ msgstr "Reclamaciones no asignadas" #: code:addons/crm_claim/crm_claim.py:247 #, python-format msgid "Claim has been refused." -msgstr "" +msgstr "La reclamación ha sido rechazada." #. module: crm_claim #: field:crm.claim,cause:0 @@ -792,7 +810,7 @@ msgstr "Acciones para resolución" #. module: crm_claim #: field:crm.claim.stage,case_refused:0 msgid "Refused stage" -msgstr "" +msgstr "Etapa rechazada" #. module: crm_claim #: model:ir.actions.act_window,help:crm_claim.crm_case_categ_claim0 @@ -818,7 +836,7 @@ msgstr "Nº de emails" #: code:addons/crm_claim/crm_claim.py:253 #, python-format msgid "Stage changed to %s." -msgstr "" +msgstr "Etapa cambiada a %s." #. module: crm_claim #: view:crm.claim.report:0 @@ -833,7 +851,7 @@ msgstr "Febrero" #. module: crm_claim #: model:ir.model,name:crm_claim.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: crm_claim #: view:crm.claim.report:0 @@ -864,17 +882,17 @@ msgstr "" #. module: crm_claim #: help:crm.claim,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Mensajes e historial de comunicación" #. module: crm_claim #: field:sale.config.settings,fetchmail_claim:0 msgid "Create claims from incoming mails" -msgstr "" +msgstr "Crear reclamaciones desde correos entrantes" #. module: crm_claim #: field:crm.claim.stage,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Secuencia" #. module: crm_claim #: view:crm.claim:0 @@ -909,11 +927,13 @@ msgid "" "Link between stages and sales teams. When set, this limitate the current " "stage to the selected sales teams." msgstr "" +"Enlace entre etapas y equipos de ventas. Cuando se asigna, las etapas están " +"limitadas al equipo de venta seleccionado." #. module: crm_claim #: help:crm.claim.stage,case_refused:0 msgid "Refused stages are specific stages for done." -msgstr "" +msgstr "Las etapas rechazadas son etapas específicas para realizar." #~ msgid "Add Internal Note" #~ msgstr "Añadir nota interna" diff --git a/addons/crm_helpdesk/i18n/es.po b/addons/crm_helpdesk/i18n/es.po index c357080194f..25443effe08 100644 --- a/addons/crm_helpdesk/i18n/es.po +++ b/addons/crm_helpdesk/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2011-01-18 07:44+0000\n" -"Last-Translator: Jorge L Tupac-Yupanqui \n" +"PO-Revision-Date: 2012-12-11 21:42+0000\n" +"Last-Translator: Ana Juaristi Olalde \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: crm_helpdesk #: field:crm.helpdesk.report,delay_close:0 @@ -31,7 +31,7 @@ msgstr "nº de casos" #: code:addons/crm_helpdesk/crm_helpdesk.py:152 #, python-format msgid "Case has been created." -msgstr "" +msgstr "El caso ha sido creado." #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -42,7 +42,7 @@ msgstr "Agrupar por..." #. module: crm_helpdesk #: help:crm.helpdesk,email_from:0 msgid "Destination email for email gateway" -msgstr "" +msgstr "Email destino para la pasarela de correo" #. module: crm_helpdesk #: selection:crm.helpdesk.report,month:0 @@ -52,7 +52,7 @@ msgstr "Marzo" #. module: crm_helpdesk #: field:crm.helpdesk,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensajes sin leer" #. module: crm_helpdesk #: field:crm.helpdesk,company_id:0 @@ -69,7 +69,7 @@ msgstr "Email del observador" #. module: crm_helpdesk #: view:crm.helpdesk.report:0 msgid "Salesperson" -msgstr "" +msgstr "Comercial" #. module: crm_helpdesk #: selection:crm.helpdesk,priority:0 @@ -112,7 +112,7 @@ msgstr "Cancelado" #. module: crm_helpdesk #: help:crm.helpdesk,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si está marcado, hay nuevos mensajes que requieren su atención" #. module: crm_helpdesk #: model:ir.actions.act_window,name:crm_helpdesk.action_report_crm_helpdesk @@ -142,6 +142,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -182,7 +184,7 @@ msgstr "Prioridad" #. module: crm_helpdesk #: field:crm.helpdesk,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -284,6 +286,8 @@ msgid "" "Helpdesk requests that are assigned to me or to one of the sale teams I " "manage" msgstr "" +"Solicitudes de soporte que están asignada a mi o a uno de los equipos que yo " +"gestiono" #. module: crm_helpdesk #: view:crm.helpdesk.report:0 @@ -406,7 +410,7 @@ msgstr "Pendiente" #: view:crm.helpdesk.report:0 #: field:crm.helpdesk.report,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: crm_helpdesk #: selection:crm.helpdesk.report,month:0 @@ -460,7 +464,7 @@ msgstr "Ingresos previstos" #. module: crm_helpdesk #: field:crm.helpdesk,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Es un seguidor." #. module: crm_helpdesk #: field:crm.helpdesk.report,user_id:0 @@ -491,7 +495,7 @@ msgstr "Solicitudes Helpdesk" #: field:crm.helpdesk,message_comment_ids:0 #: help:crm.helpdesk,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentarios y correos" #. module: crm_helpdesk #: help:crm.helpdesk,section_id:0 @@ -499,6 +503,8 @@ msgid "" "Responsible sales team. Define Responsible user and Email account for mail " "gateway." msgstr "" +"Responsable del equipo de ventas. Definir usuario responsable y cuenta de " +"correo para la pasarela de correo." #. module: crm_helpdesk #: selection:crm.helpdesk.report,month:0 @@ -513,7 +519,7 @@ msgstr "Enero" #. module: crm_helpdesk #: field:crm.helpdesk,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumen" #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -529,7 +535,7 @@ msgstr "Misc." #. module: crm_helpdesk #: view:crm.helpdesk.report:0 msgid "My Company" -msgstr "" +msgstr "Mi compañía" #. module: crm_helpdesk #: view:crm.helpdesk:0 @@ -678,7 +684,7 @@ msgstr "" #. module: crm_helpdesk #: help:crm.helpdesk,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Mensajes e historial de comunicación" #. module: crm_helpdesk #: model:ir.actions.act_window,help:crm_helpdesk.crm_helpdesk_categ_action @@ -720,7 +726,7 @@ msgstr "Última Acción" #. module: crm_helpdesk #: view:crm.helpdesk:0 msgid "Assigned to Me or My Sales Team(s)" -msgstr "" +msgstr "Asignado a mi o a mi(s) equipo(s) de venta(s)" #. module: crm_helpdesk #: field:crm.helpdesk,duration:0 diff --git a/addons/crm_partner_assign/i18n/es.po b/addons/crm_partner_assign/i18n/es.po index a39166a2f59..45da6688255 100644 --- a/addons/crm_partner_assign/i18n/es.po +++ b/addons/crm_partner_assign/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-10 23:02+0000\n" +"PO-Revision-Date: 2012-12-11 21:59+0000\n" "Last-Translator: Ana Juaristi Olalde \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: crm_partner_assign #: field:crm.lead.report.assign,delay_close:0 @@ -38,6 +38,8 @@ msgid "" "Message type: email for email message, notification for system message, " "comment for other messages such as user replies" msgstr "" +"Tipo de mensaje: email para mensajes de correo, notification para mensajes " +"de sistema, comment para otros tipos de mensaje como respuestas de usuarios." #. module: crm_partner_assign #: field:crm.lead.report.assign,nbr:0 @@ -76,6 +78,8 @@ msgid "" "Email address of the sender. This field is set when no matching partner is " "found for incoming emails." msgstr "" +"Dirección de correo del remitente. Este campo se establece cuando no existe " +"mail de empresa coincidente para correos entrantes." #. module: crm_partner_assign #: view:crm.partner.report.assign:0 @@ -263,6 +267,8 @@ msgid "" "Author of the message. If not set, email_from may hold an email address that " "did not match any partner." msgstr "" +"Autor del mensaje. Si no se establece, email_from puede contener una " +"dirección de correo que no coincida con la de ningún cliente." #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,favorite_user_ids:0 @@ -323,7 +329,7 @@ msgstr "Fecha creación" #. module: crm_partner_assign #: model:ir.model,name:crm_partner_assign.model_res_partner_activation msgid "res.partner.activation" -msgstr "" +msgstr "Copy text \t res.partner.activation" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,parent_id:0 @@ -431,6 +437,8 @@ msgstr "Número de días para cerrar el caso" msgid "" "Partners that have a notification pushing this message in their mailboxes" msgstr "" +"Empresas que tienen una notificación poniendo este mensaje en sus bandejas " +"de entrada" #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,type:0 @@ -568,7 +576,7 @@ msgstr "Agosto" #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,record_name:0 msgid "Name get of the related document." -msgstr "" +msgstr "Nombre cogido del documento relacionado" #. module: crm_partner_assign #: selection:crm.lead.report.assign,priority:0 @@ -691,7 +699,7 @@ msgstr "Adjuntos" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,record_name:0 msgid "Message Record Name" -msgstr "" +msgstr "Nombre de registro del mensaje" #. module: crm_partner_assign #: field:res.partner.activation,sequence:0 @@ -706,6 +714,8 @@ msgid "" "Cannot contact geolocation servers. Please make sure that your internet " "connection is up and running (%s)." msgstr "" +"No es posible contactar servidores de geolocalización. Por favor, asegúrese " +"que su conexión de internet esté arriba y funcionando (%s)." #. module: crm_partner_assign #: selection:crm.lead.report.assign,month:0 @@ -820,7 +830,7 @@ msgstr "Nombre" #: model:ir.actions.act_window,name:crm_partner_assign.res_partner_activation_act #: model:ir.ui.menu,name:crm_partner_assign.res_partner_activation_config_mi msgid "Partner Activations" -msgstr "" +msgstr "Activaciones de empresas" #. module: crm_partner_assign #: view:crm.lead.report.assign:0 @@ -863,6 +873,8 @@ msgid "" "Technical field holding the message notifications. Use notified_partner_ids " "to access notified partners." msgstr "" +"Campo técnico que contiene notificaciones de mensaje. Use " +"notified_partner_ids para acceder a las empresas notificadas." #. module: crm_partner_assign #: view:crm.partner.report.assign:0 diff --git a/addons/crm_profiling/i18n/es.po b/addons/crm_profiling/i18n/es.po index 7cf5d3d3c16..f7fc3a9a841 100644 --- a/addons/crm_profiling/i18n/es.po +++ b/addons/crm_profiling/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 17:56+0000\n" -"Last-Translator: Borja López Soilán (NeoPolus) \n" +"PO-Revision-Date: 2012-12-11 21:35+0000\n" +"Last-Translator: lambdasoftware \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: 2012-12-04 05:40+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: crm_profiling #: view:crm_profiling.questionnaire:0 @@ -150,7 +150,7 @@ msgstr "Usa las reglas de perfil" #. module: crm_profiling #: constraint:crm.segmentation:0 msgid "Error ! You cannot create recursive profiles." -msgstr "" +msgstr "¡Error! No puede crear perfiles recursivos." #. module: crm_profiling #: field:crm.segmentation,answer_yes:0 @@ -199,7 +199,7 @@ msgstr "Guardar datos" #. module: crm_profiling #: view:open.questionnaire:0 msgid "or" -msgstr "" +msgstr "o" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/crm_profiling/i18n/pt.po b/addons/crm_profiling/i18n/pt.po index bae9c54b643..723b780be00 100644 --- a/addons/crm_profiling/i18n/pt.po +++ b/addons/crm_profiling/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 17:18+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 15:33+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:40+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: crm_profiling #: view:crm_profiling.questionnaire:0 @@ -200,7 +200,7 @@ msgstr "Gravar Dado" #. module: crm_profiling #: view:open.questionnaire:0 msgid "or" -msgstr "" +msgstr "ou" #~ msgid "Avalaible answers" #~ msgstr "Respostas disponíveis" diff --git a/addons/crm_todo/i18n/es.po b/addons/crm_todo/i18n/es.po index 8a06af1e579..9470fd11171 100644 --- a/addons/crm_todo/i18n/es.po +++ b/addons/crm_todo/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-06 15:26+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 21:39+0000\n" +"Last-Translator: lambdasoftware \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: crm_todo #: model:ir.model,name:crm_todo.model_project_task @@ -30,7 +30,7 @@ msgstr "Periodo de tiempo" #. module: crm_todo #: view:crm.lead:0 msgid "Lead" -msgstr "" +msgstr "Iniciativa" #. module: crm_todo #: view:crm.lead:0 @@ -67,7 +67,7 @@ msgstr "Cancelar" #. module: crm_todo #: model:ir.model,name:crm_todo.model_crm_lead msgid "Lead/Opportunity" -msgstr "" +msgstr "Iniciativa/Oportunidad" #. module: crm_todo #: field:project.task,lead_id:0 diff --git a/addons/delivery/i18n/es.po b/addons/delivery/i18n/es.po index 938b52ee80c..0b3eedba9a5 100644 --- a/addons/delivery/i18n/es.po +++ b/addons/delivery/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-10 23:06+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 22:00+0000\n" +"Last-Translator: lambdasoftware \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: 2012-12-11 04:46+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: delivery #: report:sale.shipping:0 @@ -29,7 +29,7 @@ msgstr "Envío por correo postal" #. module: delivery #: view:delivery.grid.line:0 msgid " in Function of " -msgstr "" +msgstr " en función de " #. module: delivery #: view:delivery.carrier:0 @@ -100,6 +100,19 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Pulse para crear un nuevo metodo de envío.\n" +"

\n" +"

\n" +" Cada transportista (p.e. UPS) puede tener varios metodos de envio (p.e. " +"UPS Express, UPS Standard) con reglas de precios asociadas.\n" +"

\n" +"

\n" +" Estos métodos permiten automáticamente valorar el precio de entrega de " +"acuerdo con su configuración; En la orden de venta (basada en un " +"presupuesto) o en la factura (basada en los albaranes de entrega.)\n" +"

\n" +" " #. module: delivery #: code:addons/delivery/delivery.py:221 @@ -149,6 +162,18 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Pulse para crear una lista de precios de entrega para una región " +"específica\n" +"

\n" +"

\n" +" La lista de precios de entrega le permitirá calcular el coste y el " +"precio de venta de la entrega de acuerdo al peso y otras características del " +"producto. Puede definir distintas listas de precio para cada método de " +"entrega: por país o por una zona específica del país según un rango de " +"códigos postales.\n" +"

\n" +" " #. module: delivery #: report:sale.shipping:0 @@ -249,6 +274,8 @@ msgid "" "If you don't 'Add in Quote', the exact price will be computed when invoicing " "based on delivery order(s)." msgstr "" +"Si no se 'Añade en presupuesto', el precio exacto se calculará cuando " +"facture a partir de albaran(es)." #. module: delivery #: field:delivery.carrier,partner_id:0 diff --git a/addons/document/i18n/es.po b/addons/document/i18n/es.po index 640d75cf05b..bd7c3477da2 100644 --- a/addons/document/i18n/es.po +++ b/addons/document/i18n/es.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:48+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: document #: field:document.directory,parent_id:0 diff --git a/addons/document_ftp/i18n/es.po b/addons/document_ftp/i18n/es.po index 2843ac62328..60f6e719c5e 100644 --- a/addons/document_ftp/i18n/es.po +++ b/addons/document_ftp/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-12-10 23:10+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 22:05+0000\n" +"Last-Translator: lambdasoftware \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: document_ftp #: view:document.ftp.configuration:0 @@ -45,7 +45,7 @@ msgstr "" #. module: document_ftp #: model:ir.model,name:document_ftp.model_knowledge_config_settings msgid "knowledge.config.settings" -msgstr "" +msgstr "Parámetros de configuración de la base de conocimiento" #. module: document_ftp #: model:ir.actions.act_url,name:document_ftp.action_document_browse @@ -55,7 +55,7 @@ msgstr "Navegar por los archivos" #. module: document_ftp #: help:knowledge.config.settings,document_ftp_url:0 msgid "Click the url to browse the documents" -msgstr "" +msgstr "Pulse sobre el enlace para acceder a los documentos" #. module: document_ftp #: field:document.ftp.browse,url:0 @@ -70,7 +70,7 @@ msgstr "Configuración del servidor FTP" #. module: document_ftp #: field:knowledge.config.settings,document_ftp_url:0 msgid "Browse Documents" -msgstr "" +msgstr "Navegue por los documentos" #. module: document_ftp #: view:document.ftp.browse:0 diff --git a/addons/document_ftp/i18n/pt.po b/addons/document_ftp/i18n/pt.po index ede1d3328f3..0688676d0c1 100644 --- a/addons/document_ftp/i18n/pt.po +++ b/addons/document_ftp/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2010-12-20 11:51+0000\n" +"PO-Revision-Date: 2012-12-11 17:33+0000\n" "Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:29+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: document_ftp #: view:document.ftp.configuration:0 @@ -45,7 +45,7 @@ msgstr "" #. module: document_ftp #: model:ir.model,name:document_ftp.model_knowledge_config_settings msgid "knowledge.config.settings" -msgstr "" +msgstr "knowledge.config.settings" #. module: document_ftp #: model:ir.actions.act_url,name:document_ftp.action_document_browse @@ -98,7 +98,7 @@ msgstr "Endereço" #. module: document_ftp #: view:document.ftp.browse:0 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: document_ftp #: model:ir.model,name:document_ftp.model_document_ftp_browse @@ -118,7 +118,7 @@ msgstr "Pesquisar Documento" #. module: document_ftp #: view:document.ftp.browse:0 msgid "or" -msgstr "" +msgstr "ou" #. module: document_ftp #: view:document.ftp.browse:0 diff --git a/addons/document_page/i18n/es.po b/addons/document_page/i18n/es.po index 105e8c2731b..a138bc30919 100644 --- a/addons/document_page/i18n/es.po +++ b/addons/document_page/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-08-13 12:13+0000\n" -"Last-Translator: Omar (Pexego) \n" +"PO-Revision-Date: 2012-12-11 21:47+0000\n" +"Last-Translator: Ana Juaristi Olalde \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: 2012-11-25 06:32+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: document_page #: view:document.page:0 @@ -22,7 +22,7 @@ msgstr "" #: selection:document.page,type:0 #: model:ir.actions.act_window,name:document_page.action_category msgid "Category" -msgstr "" +msgstr "Categoría" #. module: document_page #: view:document.page:0 @@ -45,7 +45,7 @@ msgstr "Menú" #: view:document.page:0 #: model:ir.model,name:document_page.model_document_page msgid "Document Page" -msgstr "" +msgstr "Página de documento" #. module: document_page #: model:ir.actions.act_window,name:document_page.action_related_page_history @@ -68,13 +68,15 @@ msgstr "Agrupar por..." #. module: document_page #: view:document.page:0 msgid "Template" -msgstr "" +msgstr "Plantilla" #. module: document_page #: view:document.page:0 msgid "" "that will be used as a content template for all new page of this category." msgstr "" +"esto será usado como una plantilla de contenido para todas las páginas de " +"esta categoría." #. module: document_page #: field:document.page,name:0 @@ -89,27 +91,27 @@ msgstr "Asistente crear menú" #. module: document_page #: field:document.page,type:0 msgid "Type" -msgstr "" +msgstr "Tipo" #. module: document_page #: model:ir.model,name:document_page.model_wizard_document_page_history_show_diff msgid "wizard.document.page.history.show_diff" -msgstr "" +msgstr "wizard.document.page.history.show_diff" #. module: document_page #: field:document.page.history,create_uid:0 msgid "Modified By" -msgstr "" +msgstr "Modificado por" #. module: document_page #: view:document.page.create.menu:0 msgid "or" -msgstr "" +msgstr "o" #. module: document_page #: help:document.page,type:0 msgid "Page type" -msgstr "" +msgstr "Tipo de página" #. module: document_page #: view:document.page.create.menu:0 @@ -120,18 +122,18 @@ msgstr "Información del menú" #: view:document.page.history:0 #: model:ir.model,name:document_page.model_document_page_history msgid "Document Page History" -msgstr "" +msgstr "Historia de página de documento" #. module: document_page #: model:ir.ui.menu,name:document_page.menu_page_history msgid "Pages history" -msgstr "" +msgstr "Historial de páginas" #. module: document_page #: code:addons/document_page/document_page.py:129 #, python-format msgid "There are no changes in revisions." -msgstr "" +msgstr "No hay cambios en las revisiones." #. module: document_page #: field:document.page.history,create_date:0 @@ -155,7 +157,7 @@ msgstr "Páginas" #. module: document_page #: model:ir.ui.menu,name:document_page.menu_category msgid "Categories" -msgstr "" +msgstr "Categorías" #. module: document_page #: field:document.page.create.menu,menu_parent_id:0 @@ -172,11 +174,12 @@ msgstr "Creado en" #, python-format msgid "You need to select minimum one or maximum two history revisions!" msgstr "" +"¡Necesita seleccionar mínimo una y máximo dos revisiones de historial!" #. module: document_page #: model:ir.actions.act_window,name:document_page.action_history msgid "Page history" -msgstr "" +msgstr "Historial de página" #. module: document_page #: field:document.page.history,summary:0 @@ -186,12 +189,12 @@ msgstr "Resumen" #. module: document_page #: model:ir.actions.act_window,help:document_page.action_page msgid "Create web pages" -msgstr "" +msgstr "Crear páginas Web" #. module: document_page #: view:document.page.history:0 msgid "Document History" -msgstr "" +msgstr "Historial del Documento" #. module: document_page #: field:document.page.create.menu,menu_name:0 @@ -201,12 +204,12 @@ msgstr "Nombre menú" #. module: document_page #: field:document.page.history,page_id:0 msgid "Page" -msgstr "" +msgstr "Página" #. module: document_page #: field:document.page,history_ids:0 msgid "History" -msgstr "" +msgstr "Historial" #. module: document_page #: field:document.page,write_date:0 @@ -223,14 +226,14 @@ msgstr "Crear menú" #. module: document_page #: field:document.page,display_content:0 msgid "Displayed Content" -msgstr "" +msgstr "Contenido mostrado" #. module: document_page #: code:addons/document_page/document_page.py:129 #: code:addons/document_page/wizard/document_page_show_diff.py:50 #, python-format msgid "Warning!" -msgstr "" +msgstr "¡Advertencia!" #. module: document_page #: view:document.page.create.menu:0 @@ -246,9 +249,9 @@ msgstr "Dif." #. module: document_page #: view:document.page:0 msgid "Document Type" -msgstr "" +msgstr "Tipo de documento" #. module: document_page #: field:document.page,child_ids:0 msgid "Children" -msgstr "" +msgstr "Hijos" diff --git a/addons/edi/i18n/es.po b/addons/edi/i18n/es.po index 9fad6f6df8b..23b1aabfe60 100644 --- a/addons/edi/i18n/es.po +++ b/addons/edi/i18n/es.po @@ -8,35 +8,35 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-02-15 12:04+0000\n" -"Last-Translator: mikel \n" +"PO-Revision-Date: 2012-12-11 21:42+0000\n" +"Last-Translator: lambdasoftware \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: edi #. openerp-web #: code:addons/edi/static/src/js/edi.js:67 #, python-format msgid "Reason:" -msgstr "" +msgstr "Motivo:" #. module: edi #. openerp-web #: code:addons/edi/static/src/js/edi.js:60 #, python-format msgid "The document has been successfully imported!" -msgstr "" +msgstr "¡El documento se ha importado correctamente!" #. module: edi #. openerp-web #: code:addons/edi/static/src/js/edi.js:65 #, python-format msgid "Sorry, the document could not be imported." -msgstr "" +msgstr "Lo siento, el documento no puede ser importado." #. module: edi #: model:ir.model,name:edi.model_res_company @@ -87,7 +87,7 @@ msgstr "Empresa" #. module: edi #: model:ir.model,name:edi.model_edi_edi msgid "EDI Subsystem" -msgstr "" +msgstr "Subsitema EDI" #~ msgid "Description" #~ msgstr "Descripción" diff --git a/addons/edi/i18n/pt.po b/addons/edi/i18n/pt.po index ad88ee302a2..e5dbf0496f3 100644 --- a/addons/edi/i18n/pt.po +++ b/addons/edi/i18n/pt.po @@ -8,35 +8,35 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-04-19 11:47+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 15:53+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: edi #. openerp-web #: code:addons/edi/static/src/js/edi.js:67 #, python-format msgid "Reason:" -msgstr "" +msgstr "Motivo:" #. module: edi #. openerp-web #: code:addons/edi/static/src/js/edi.js:60 #, python-format msgid "The document has been successfully imported!" -msgstr "" +msgstr "O documento foi importado com êxito." #. module: edi #. openerp-web #: code:addons/edi/static/src/js/edi.js:65 #, python-format msgid "Sorry, the document could not be imported." -msgstr "" +msgstr "Infelizmente, o documento não pode ser importado." #. module: edi #: model:ir.model,name:edi.model_res_company @@ -59,7 +59,7 @@ msgstr "" #: code:addons/edi/models/edi.py:130 #, python-format msgid "Missing application." -msgstr "" +msgstr "Aplicação em falta." #. module: edi #: code:addons/edi/models/edi.py:131 diff --git a/addons/email_template/i18n/es.po b/addons/email_template/i18n/es.po index 218d98879e2..2bdcafeddd7 100644 --- a/addons/email_template/i18n/es.po +++ b/addons/email_template/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-10 23:15+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" +"PO-Revision-Date: 2012-12-11 19:59+0000\n" +"Last-Translator: lambdasoftware \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: email_template #: field:email.template,email_from:0 @@ -43,7 +43,7 @@ msgstr "No acepta mensajes" #: field:email.template,email_to:0 #: field:email_template.preview,email_to:0 msgid "To (Emails)" -msgstr "" +msgstr "Para (correos electrónicos)" #. module: email_template #: field:email.template,mail_server_id:0 @@ -303,7 +303,7 @@ msgstr "" #: field:email.template,copyvalue:0 #: field:email_template.preview,copyvalue:0 msgid "Placeholder Expression" -msgstr "" +msgstr "Expresión de marcador" #. module: email_template #: field:email.template,sub_object:0 @@ -329,7 +329,7 @@ msgstr "" #: field:email.template,ref_ir_value:0 #: field:email_template.preview,ref_ir_value:0 msgid "Sidebar Button" -msgstr "" +msgstr "Botón en la barra lateral" #. module: email_template #: field:email.template,report_template:0 @@ -402,7 +402,7 @@ msgstr "Direccionamiento" #: help:email_template.preview,email_recipients:0 msgid "" "Comma-separated ids of recipient partners (placeholders may be used here)" -msgstr "" +msgstr "Ids de destinatarios separados por comas (pude usar \"marcadores\")" #. module: email_template #: field:email.template,attachment_ids:0 diff --git a/addons/email_template/i18n/it.po b/addons/email_template/i18n/it.po index 71cb68420cd..eea08fb29ec 100644 --- a/addons/email_template/i18n/it.po +++ b/addons/email_template/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-01-13 13:04+0000\n" +"PO-Revision-Date: 2012-12-11 08:45+0000\n" "Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:47+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: email_template #: field:email.template,email_from:0 @@ -37,19 +37,19 @@ msgstr "" #. module: email_template #: field:res.partner,opt_out:0 msgid "Opt-Out" -msgstr "" +msgstr "Opt-Out" #. module: email_template #: field:email.template,email_to:0 #: field:email_template.preview,email_to:0 msgid "To (Emails)" -msgstr "" +msgstr "To (email)" #. module: email_template #: field:email.template,mail_server_id:0 #: field:email_template.preview,mail_server_id:0 msgid "Outgoing Mail Server" -msgstr "" +msgstr "Server Mail in Uscita" #. module: email_template #: help:email.template,ref_ir_act_window:0 @@ -69,7 +69,7 @@ msgstr "Campo" #: help:email.template,email_from:0 #: help:email_template.preview,email_from:0 msgid "Sender address (placeholders may be used here)" -msgstr "" +msgstr "Indirizzo mittente (possono essere usati i segnaposti qui)" #. module: email_template #: view:email.template:0 @@ -93,7 +93,7 @@ msgstr "Nome file report" #. module: email_template #: view:email.template:0 msgid "Preview" -msgstr "" +msgstr "Anteprima" #. module: email_template #: field:email.template,reply_to:0 @@ -129,12 +129,12 @@ msgstr "" #. module: email_template #: view:email.template:0 msgid "SMTP Server" -msgstr "" +msgstr "SMTP Server" #. module: email_template #: view:mail.compose.message:0 msgid "Save as new template" -msgstr "" +msgstr "Salva come nuovo modello" #. module: email_template #: help:email.template,sub_object:0 @@ -176,7 +176,7 @@ msgstr "" #. module: email_template #: field:email_template.preview,res_id:0 msgid "Sample Document" -msgstr "" +msgstr "Documento di esempio" #. module: email_template #: help:email.template,model_object_field:0 diff --git a/addons/email_template/i18n/pt.po b/addons/email_template/i18n/pt.po index 3a2fdac005c..5ea535be755 100644 --- a/addons/email_template/i18n/pt.po +++ b/addons/email_template/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 10:03+0000\n" +"PO-Revision-Date: 2012-12-11 15:55+0000\n" "Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:47+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: email_template #: field:email.template,email_from:0 @@ -97,7 +97,7 @@ msgstr "Relatório nome do ficheiro" #. module: email_template #: view:email.template:0 msgid "Preview" -msgstr "" +msgstr "Antevisão" #. module: email_template #: field:email.template,reply_to:0 @@ -108,7 +108,7 @@ msgstr "Responder a" #. module: email_template #: view:mail.compose.message:0 msgid "Use template" -msgstr "" +msgstr "Usar modelo" #. module: email_template #: field:email.template,body_html:0 @@ -120,7 +120,7 @@ msgstr "Corpo" #: code:addons/email_template/email_template.py:218 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (cópia)" #. module: email_template #: help:email.template,user_signature:0 @@ -140,7 +140,7 @@ msgstr "Servidor SMTP" #. module: email_template #: view:mail.compose.message:0 msgid "Save as new template" -msgstr "" +msgstr "Gravar como novo modelo" #. module: email_template #: help:email.template,sub_object:0 @@ -250,7 +250,7 @@ msgstr "Avançado" #. module: email_template #: view:email_template.preview:0 msgid "Preview of" -msgstr "" +msgstr "Antevisão de" #. module: email_template #: view:email_template.preview:0 @@ -382,7 +382,7 @@ msgstr "" #: field:email.template,model:0 #: field:email_template.preview,model:0 msgid "Related Document Model" -msgstr "" +msgstr "Modelo de documento relacionado" #. module: email_template #: view:email.template:0 @@ -418,7 +418,7 @@ msgstr "Cc" #: field:email.template,model_id:0 #: field:email_template.preview,model_id:0 msgid "Applies to" -msgstr "" +msgstr "Aplica-se a" #. module: email_template #: field:email.template,sub_model_object_field:0 @@ -490,7 +490,7 @@ msgstr "Parceiro" #: field:email.template,null_value:0 #: field:email_template.preview,null_value:0 msgid "Default Value" -msgstr "" +msgstr "Valor por omissão" #. module: email_template #: help:email.template,attachment_ids:0 @@ -513,7 +513,7 @@ msgstr "" #. module: email_template #: view:email.template:0 msgid "Contents" -msgstr "" +msgstr "Conteúdos" #. module: email_template #: field:email.template,subject:0 diff --git a/addons/event/i18n/es.po b/addons/event/i18n/es.po index 271cee7876c..858c4c7607c 100644 --- a/addons/event/i18n/es.po +++ b/addons/event/i18n/es.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:46+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: event #: view:event.event:0 diff --git a/addons/event_sale/i18n/es.po b/addons/event_sale/i18n/es.po new file mode 100644 index 00000000000..e1dc0f0f1fb --- /dev/null +++ b/addons/event_sale/i18n/es.po @@ -0,0 +1,93 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-11 21:53+0000\n" +"Last-Translator: Ana Juaristi Olalde \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: event_sale +#: model:ir.model,name:event_sale.model_product_product +msgid "Product" +msgstr "Producto" + +#. module: event_sale +#: help:product.product,event_ok:0 +msgid "" +"Determine if a product needs to create automatically an event registration " +"at the confirmation of a sale order line." +msgstr "" +"Determine si un producto necesita crear automáticamente un registro de " +"evento y la confirmación de una línea de pedido de venta." + +#. module: event_sale +#: help:sale.order.line,event_id:0 +msgid "" +"Choose an event and it will automatically create a registration for this " +"event." +msgstr "" +"Escoja un evento y cree automáticamente un registro para este evento." + +#. module: event_sale +#: field:product.product,event_type_id:0 +msgid "Type of Event" +msgstr "Tipo de Evento" + +#. module: event_sale +#: model:event.event,name:event_sale.event_technical_training +msgid "Technical training in Grand-Rosiere" +msgstr "Formación técnica en Grand-Rosiere" + +#. module: event_sale +#: help:product.product,event_type_id:0 +msgid "" +"Filter the list of event on this category only, in the sale order lines" +msgstr "" +"Filtre la lista de eventos solo de esta categoría en las líneas de pedido" + +#. module: event_sale +#: field:sale.order.line,event_ok:0 +msgid "event_ok" +msgstr "event_ok" + +#. module: event_sale +#: code:addons/event_sale/event_sale.py:88 +#, python-format +msgid "The registration %s has been created from the Sale Order %s." +msgstr "El registro %s ha sido creado desde el pedido de venta %s." + +#. module: event_sale +#: field:product.product,event_ok:0 +msgid "Event Subscription" +msgstr "Suscripción a eventos" + +#. module: event_sale +#: field:sale.order.line,event_type_id:0 +msgid "Event Type" +msgstr "Tipo de evento" + +#. module: event_sale +#: model:product.template,name:event_sale.event_product_product_template +msgid "Technical Training" +msgstr "Formación técnica" + +#. module: event_sale +#: field:sale.order.line,event_id:0 +msgid "Event" +msgstr "Evento" + +#. module: event_sale +#: model:ir.model,name:event_sale.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea pedido de venta" diff --git a/addons/event_sale/i18n/it.po b/addons/event_sale/i18n/it.po new file mode 100644 index 00000000000..3612bb71cc9 --- /dev/null +++ b/addons/event_sale/i18n/it.po @@ -0,0 +1,89 @@ +# Italian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-11 09:07+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: event_sale +#: model:ir.model,name:event_sale.model_product_product +msgid "Product" +msgstr "Prodotto" + +#. module: event_sale +#: help:product.product,event_ok:0 +msgid "" +"Determine if a product needs to create automatically an event registration " +"at the confirmation of a sale order line." +msgstr "" + +#. module: event_sale +#: help:sale.order.line,event_id:0 +msgid "" +"Choose an event and it will automatically create a registration for this " +"event." +msgstr "" + +#. module: event_sale +#: field:product.product,event_type_id:0 +msgid "Type of Event" +msgstr "Tipo Evento" + +#. module: event_sale +#: model:event.event,name:event_sale.event_technical_training +msgid "Technical training in Grand-Rosiere" +msgstr "" + +#. module: event_sale +#: help:product.product,event_type_id:0 +msgid "" +"Filter the list of event on this category only, in the sale order lines" +msgstr "" + +#. module: event_sale +#: field:sale.order.line,event_ok:0 +msgid "event_ok" +msgstr "" + +#. module: event_sale +#: code:addons/event_sale/event_sale.py:88 +#, python-format +msgid "The registration %s has been created from the Sale Order %s." +msgstr "" + +#. module: event_sale +#: field:product.product,event_ok:0 +msgid "Event Subscription" +msgstr "Iscrizione evento" + +#. module: event_sale +#: field:sale.order.line,event_type_id:0 +msgid "Event Type" +msgstr "Tipo di evento" + +#. module: event_sale +#: model:product.template,name:event_sale.event_product_product_template +msgid "Technical Training" +msgstr "" + +#. module: event_sale +#: field:sale.order.line,event_id:0 +msgid "Event" +msgstr "Evento" + +#. module: event_sale +#: model:ir.model,name:event_sale.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linea ordine di vendita" diff --git a/addons/fetchmail/i18n/es.po b/addons/fetchmail/i18n/es.po index 469d494ab97..297365e68dd 100644 --- a/addons/fetchmail/i18n/es.po +++ b/addons/fetchmail/i18n/es.po @@ -8,15 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2010-12-22 08:38+0000\n" -"Last-Translator: Raimon Esteve (www.zikzakmedia.com) " -"\n" +"PO-Revision-Date: 2012-12-11 22:11+0000\n" +"Last-Translator: Ana Juaristi Olalde \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:23+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: fetchmail #: selection:fetchmail.server,state:0 @@ -104,7 +103,7 @@ msgstr "Servidor local" #. module: fetchmail #: field:fetchmail.server,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: fetchmail #: model:ir.model,name:fetchmail.model_fetchmail_server @@ -153,7 +152,7 @@ msgstr "Mantener original" #. module: fetchmail #: view:fetchmail.server:0 msgid "Advanced Options" -msgstr "" +msgstr "Opciones avanzadas" #. module: fetchmail #: view:fetchmail.server:0 diff --git a/addons/fetchmail/i18n/it.po b/addons/fetchmail/i18n/it.po index b1e20f42703..a107f12d959 100644 --- a/addons/fetchmail/i18n/it.po +++ b/addons/fetchmail/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2011-01-12 16:29+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 08:16+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-11-25 06:23+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: fetchmail #: selection:fetchmail.server,state:0 @@ -25,17 +25,18 @@ msgstr "Confermato" #. module: fetchmail #: field:fetchmail.server,server:0 msgid "Server Name" -msgstr "" +msgstr "Nome Server" #. module: fetchmail #: field:fetchmail.server,script:0 msgid "Script" -msgstr "" +msgstr "Script" #. module: fetchmail #: help:fetchmail.server,priority:0 msgid "Defines the order of processing, lower values mean higher priority" msgstr "" +"Definisce l'ordine di esecuzione, valori bassi significano priorità alta" #. module: fetchmail #: help:fetchmail.server,is_ssl:0 @@ -43,16 +44,18 @@ msgid "" "Connections are encrypted with SSL/TLS through a dedicated port (default: " "IMAPS=993, POP3S=995)" msgstr "" +"Le connessioni sono criptata con SSL/TLS attraverso una porta dedicata " +"(default: IMAPS = 993, POP3S = 995)" #. module: fetchmail #: field:fetchmail.server,attach:0 msgid "Keep Attachments" -msgstr "" +msgstr "Conserva allegati" #. module: fetchmail #: field:fetchmail.server,is_ssl:0 msgid "SSL/TLS" -msgstr "" +msgstr "SSL/TLS" #. module: fetchmail #: help:fetchmail.server,original:0 @@ -70,18 +73,18 @@ msgstr "POP" #. module: fetchmail #: view:fetchmail.server:0 msgid "Fetch Now" -msgstr "" +msgstr "Preleva ora" #. module: fetchmail #: model:ir.actions.act_window,name:fetchmail.action_email_server_tree #: model:ir.ui.menu,name:fetchmail.menu_action_fetchmail_server_tree msgid "Incoming Mail Servers" -msgstr "" +msgstr "Mail server in ingresso" #. module: fetchmail #: view:fetchmail.server:0 msgid "Server type IMAP." -msgstr "" +msgstr "Tipo di server IMAP." #. module: fetchmail #: view:fetchmail.server:0 @@ -91,12 +94,12 @@ msgstr "POP / IMAP Server" #. module: fetchmail #: selection:fetchmail.server,type:0 msgid "Local Server" -msgstr "" +msgstr "Server locale" #. module: fetchmail #: field:fetchmail.server,state:0 msgid "Status" -msgstr "" +msgstr "Stato" #. module: fetchmail #: model:ir.model,name:fetchmail.model_fetchmail_server @@ -106,7 +109,7 @@ msgstr "Server POP/IMAP" #. module: fetchmail #: view:fetchmail.server:0 msgid "Reset Confirmation" -msgstr "" +msgstr "Reset conferma" #. module: fetchmail #: view:fetchmail.server:0 @@ -116,12 +119,12 @@ msgstr "SSL" #. module: fetchmail #: model:ir.model,name:fetchmail.model_fetchmail_config_settings msgid "fetchmail.config.settings" -msgstr "" +msgstr "fetchmail.config.settings" #. module: fetchmail #: field:fetchmail.server,date:0 msgid "Last Fetch Date" -msgstr "" +msgstr "Ultima data prelievo mail" #. module: fetchmail #: help:fetchmail.server,action_id:0 @@ -129,6 +132,8 @@ msgid "" "Optional custom server action to trigger for each incoming mail, on the " "record that was created or updated by this mail" msgstr "" +"Azione opzionale personalizzata eseguita dal server ad ogni arrivo mail, sul " +"record che viene creato o aggiornato dalla mail" #. module: fetchmail #: view:fetchmail.server:0 @@ -138,39 +143,39 @@ msgstr "# di email" #. module: fetchmail #: field:fetchmail.server,original:0 msgid "Keep Original" -msgstr "" +msgstr "Mantieni Originale" #. module: fetchmail #: view:fetchmail.server:0 msgid "Advanced Options" -msgstr "" +msgstr "Impostazioni avanzate" #. module: fetchmail #: view:fetchmail.server:0 #: field:fetchmail.server,configuration:0 msgid "Configuration" -msgstr "" +msgstr "Configurazione" #. module: fetchmail #: view:fetchmail.server:0 msgid "Incoming Mail Server" -msgstr "" +msgstr "Mail server in ingresso" #. module: fetchmail #: code:addons/fetchmail/fetchmail.py:155 #, python-format msgid "Connection test failed!" -msgstr "" +msgstr "Test di connessione fallito!" #. module: fetchmail #: field:fetchmail.server,user:0 msgid "Username" -msgstr "" +msgstr "Nome utente" #. module: fetchmail #: help:fetchmail.server,server:0 msgid "Hostname or IP of the mail server" -msgstr "" +msgstr "Hostname o IP del mail server" #. module: fetchmail #: field:fetchmail.server,name:0 @@ -184,21 +189,23 @@ msgid "" "Here is what we got instead:\n" " %s." msgstr "" +"Questo è quello che abbiamo al posto:\n" +" %s." #. module: fetchmail #: view:fetchmail.server:0 msgid "Test & Confirm" -msgstr "" +msgstr "Test % Conferma" #. module: fetchmail #: field:fetchmail.server,action_id:0 msgid "Server Action" -msgstr "" +msgstr "Azione Server" #. module: fetchmail #: field:mail.mail,fetchmail_server_id:0 msgid "Inbound Mail Server" -msgstr "" +msgstr "Server mail in ingresso" #. module: fetchmail #: field:fetchmail.server,message_ids:0 @@ -209,7 +216,7 @@ msgstr "Messaggi" #. module: fetchmail #: view:fetchmail.server:0 msgid "Search Incoming Mail Servers" -msgstr "" +msgstr "Cerca mail server in ingresso" #. module: fetchmail #: field:fetchmail.server,active:0 @@ -222,11 +229,13 @@ msgid "" "Whether attachments should be downloaded. If not enabled, incoming emails " "will be stripped of any attachments before being processed" msgstr "" +"Se gli allegati devono essere scaricati. Se non abilitato, le mail in " +"entrata verranno prelevate senza alcun allegato prima di essere processate" #. module: fetchmail #: model:ir.model,name:fetchmail.model_mail_mail msgid "Outgoing Mails" -msgstr "" +msgstr "Email in Uscita" #. module: fetchmail #: field:fetchmail.server,priority:0 @@ -246,7 +255,7 @@ msgstr "IMAP" #. module: fetchmail #: view:fetchmail.server:0 msgid "Server type POP." -msgstr "" +msgstr "Tipo server POP." #. module: fetchmail #: field:fetchmail.server,password:0 @@ -256,7 +265,7 @@ msgstr "Password" #. module: fetchmail #: view:fetchmail.server:0 msgid "Actions to Perform on Incoming Mails" -msgstr "" +msgstr "Azione da effettuare sulle mail in entrata" #. module: fetchmail #: field:fetchmail.server,type:0 @@ -276,12 +285,12 @@ msgstr "Informazioni sul server" #. module: fetchmail #: view:fetchmail.server:0 msgid "If SSL required." -msgstr "" +msgstr "Se SSL è richiesta." #. module: fetchmail #: view:fetchmail.server:0 msgid "Advanced" -msgstr "" +msgstr "Avanzate" #. module: fetchmail #: view:fetchmail.server:0 @@ -299,7 +308,7 @@ msgstr "" #. module: fetchmail #: field:fetchmail.server,object_id:0 msgid "Create a New Record" -msgstr "" +msgstr "Crea un nuovo record" #. module: fetchmail #: selection:fetchmail.server,state:0 diff --git a/addons/fleet/i18n/es.po b/addons/fleet/i18n/es.po index 5129bae078b..a0a207f00f0 100644 --- a/addons/fleet/i18n/es.po +++ b/addons/fleet/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: fleet #: selection:fleet.vehicle,fuel_type:0 diff --git a/addons/fleet/i18n/it.po b/addons/fleet/i18n/it.po index b6ddd4975b7..d095e69b7b5 100644 --- a/addons/fleet/i18n/it.po +++ b/addons/fleet/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:52+0000\n" -"PO-Revision-Date: 2012-12-10 22:19+0000\n" -"Last-Translator: Sergio Corato \n" +"PO-Revision-Date: 2012-12-11 12:30+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: fleet #: selection:fleet.vehicle,fuel_type:0 @@ -35,14 +35,14 @@ msgstr "" #. module: fleet #: help:fleet.vehicle,vin_sn:0 msgid "Unique number written on the vehicle motor (VIN/SN number)" -msgstr "" +msgstr "Nome univoco scritto sul motore veicolo (numero VIN/SN)" #. module: fleet #: selection:fleet.service.type,category:0 #: view:fleet.vehicle.log.contract:0 #: view:fleet.vehicle.log.services:0 msgid "Service" -msgstr "" +msgstr "Servizio" #. module: fleet #: selection:fleet.vehicle.log.contract,cost_frequency:0 @@ -126,12 +126,12 @@ msgstr "" #. module: fleet #: view:fleet.vehicle.log.contract:0 msgid "Odometer details" -msgstr "" +msgstr "Dettagli odometro" #. module: fleet #: view:fleet.vehicle:0 msgid "Has Alert(s)" -msgstr "" +msgstr "Ha avviso(i)" #. module: fleet #: field:fleet.vehicle.log.fuel,liter:0 @@ -204,63 +204,63 @@ msgstr "" #: view:fleet.vehicle:0 #: selection:fleet.vehicle.cost,cost_type:0 msgid "Services" -msgstr "" +msgstr "Servizi" #. module: fleet #: help:fleet.vehicle,odometer:0 #: help:fleet.vehicle.cost,odometer:0 #: help:fleet.vehicle.cost,odometer_id:0 msgid "Odometer measure of the vehicle at the moment of this log" -msgstr "" +msgstr "Misura odometro del veicolo al momento del log" #. module: fleet #: view:fleet.vehicle.log.contract:0 #: field:fleet.vehicle.log.contract,notes:0 msgid "Terms and Conditions" -msgstr "" +msgstr "Termini e Condizioni" #. module: fleet #: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_kanban msgid "Vehicles with alerts" -msgstr "" +msgstr "Veicoli con notifiche" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_costs_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_costs_menu msgid "Vehicle Costs" -msgstr "" +msgstr "Costi veicolo" #. module: fleet #: view:fleet.vehicle.cost:0 msgid "Total Cost" -msgstr "" +msgstr "Costo totale" #. module: fleet #: selection:fleet.service.type,category:0 msgid "Both" -msgstr "" +msgstr "Entrambe" #. module: fleet #: field:fleet.vehicle.log.contract,cost_id:0 #: field:fleet.vehicle.log.fuel,cost_id:0 #: field:fleet.vehicle.log.services,cost_id:0 msgid "Automatically created field to link to parent fleet.vehicle.cost" -msgstr "" +msgstr "Campo creato automaticamente per collegare al costo veicolo padre" #. module: fleet #: view:fleet.vehicle.log.contract:0 msgid "Terminate Contract" -msgstr "" +msgstr "Termina contratto" #. module: fleet #: help:fleet.vehicle.cost,parent_id:0 msgid "Parent cost to this current cost" -msgstr "" +msgstr "Costo padre del costo attuale" #. module: fleet #: help:fleet.vehicle.log.contract,cost_frequency:0 msgid "Frequency of the recuring cost" -msgstr "" +msgstr "Frequenza del costo ricorsivo" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_1 @@ -280,91 +280,91 @@ msgstr "" #: view:fleet.vehicle.log.services:0 #: field:fleet.vehicle.log.services,notes:0 msgid "Notes" -msgstr "" +msgstr "Note" #. module: fleet #: code:addons/fleet/fleet.py:47 #, python-format msgid "Operation not allowed!" -msgstr "" +msgstr "Operazione non permessa!" #. module: fleet #: field:fleet.vehicle,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Messaggi" #. module: fleet #: help:fleet.vehicle.cost,vehicle_id:0 msgid "Vehicle concerned by this log" -msgstr "" +msgstr "Veicolo contemplato in questo log" #. module: fleet #: field:fleet.vehicle.log.contract,cost_amount:0 #: field:fleet.vehicle.log.fuel,cost_amount:0 #: field:fleet.vehicle.log.services,cost_amount:0 msgid "Amount" -msgstr "" +msgstr "Importo" #. module: fleet #: field:fleet.vehicle,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Messaggi non letti" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_6 msgid "Air Filter Replacement" -msgstr "" +msgstr "Filtro dell'aria rimpiazzato" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_tag msgid "fleet.vehicle.tag" -msgstr "" +msgstr "fleet.vehicle.tag" #. module: fleet #: view:fleet.vehicle:0 msgid "show the services logs for this vehicle" -msgstr "" +msgstr "mostra log dei servizi per questo veicolo" #. module: fleet #: field:fleet.vehicle,contract_renewal_name:0 msgid "Name of contract to renew soon" -msgstr "" +msgstr "Nomi di contratto da rinnovare a breve" #. module: fleet #: model:fleet.vehicle.tag,name:fleet.vehicle_tag_senior msgid "Senior" -msgstr "" +msgstr "Senjor" #. module: fleet #: help:fleet.vehicle.log.contract,state:0 msgid "Choose wheter the contract is still valid or not" -msgstr "" +msgstr "Scegliere se il contratto è ancora valido oppure no" #. module: fleet #: selection:fleet.vehicle,transmission:0 msgid "Automatic" -msgstr "" +msgstr "Automatico" #. module: fleet #: help:fleet.vehicle,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Se selezionato i nuovi messaggi richiederanno la vostra attenzione" #. module: fleet #: code:addons/fleet/fleet.py:414 #, python-format msgid "Driver: from '%s' to '%s'" -msgstr "" +msgstr "Guidatore: da '%s' a '%s'" #. module: fleet #: view:fleet.vehicle:0 msgid "and" -msgstr "" +msgstr "e" #. module: fleet #: field:fleet.vehicle.model.brand,image_medium:0 msgid "Medium-sized photo" -msgstr "" +msgstr "Foto grandezza media" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_34 @@ -374,12 +374,12 @@ msgstr "" #. module: fleet #: view:fleet.vehicle.log.services:0 msgid "Service Type" -msgstr "" +msgstr "Tipo di servizio" #. module: fleet #: help:fleet.vehicle,transmission:0 msgid "Transmission Used by the vehicle" -msgstr "" +msgstr "Trasmissione utilizzata dal veicolo" #. module: fleet #: code:addons/fleet/fleet.py:726 @@ -387,32 +387,32 @@ msgstr "" #: model:ir.actions.act_window,name:fleet.act_renew_contract #, python-format msgid "Renew Contract" -msgstr "" +msgstr "Rinnovo contratto" #. module: fleet #: view:fleet.vehicle:0 msgid "show the odometer logs for this vehicle" -msgstr "" +msgstr "Mostra log odometro per questo veicolo" #. module: fleet #: help:fleet.vehicle,odometer_unit:0 msgid "Unit of the odometer " -msgstr "" +msgstr "UM dell'odometro " #. module: fleet #: view:fleet.vehicle.log.services:0 msgid "Services Costs Per Month" -msgstr "" +msgstr "Costi servizi per mese" #. module: fleet #: view:fleet.vehicle.cost:0 msgid "Effective Costs" -msgstr "" +msgstr "Costi effettivi" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_8 msgid "Repair and maintenance" -msgstr "" +msgstr "Riparazione e manutenzione" #. module: fleet #: help:fleet.vehicle.log.contract,purchaser_id:0 @@ -439,30 +439,30 @@ msgstr "" #. module: fleet #: model:ir.model,name:fleet.model_fleet_service_type msgid "Type of services available on a vehicle" -msgstr "" +msgstr "Tipi di servizi disponibili sul veicolo" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_service_types_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_service_types_menu msgid "Service Types" -msgstr "" +msgstr "Tipi servizio" #. module: fleet #: view:board.board:0 msgid "Contracts Costs" -msgstr "" +msgstr "Costi contratti" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_log_services_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_log_services_menu msgid "Vehicles Services Logs" -msgstr "" +msgstr "Log servizi veicoli" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_log_fuel_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_log_fuel_menu msgid "Vehicles Fuel Logs" -msgstr "" +msgstr "Log pieni veicoli" #. module: fleet #: view:fleet.vehicle.model.brand:0 @@ -470,11 +470,13 @@ msgid "" "$('.oe_picture').load(function() { if($(this).width() > $(this).height()) { " "$(this).addClass('oe_employee_picture_wide') } });" msgstr "" +"$('.oe_picture').load(function() { if($(this).width() > $(this).height()) { " +"$(this).addClass('oe_employee_picture_wide') } });" #. module: fleet #: view:board.board:0 msgid "Vehicles With Alerts" -msgstr "" +msgstr "Veicoli con notifiche" #. module: fleet #: model:ir.actions.act_window,help:fleet.fleet_vehicle_costs_act @@ -492,48 +494,48 @@ msgstr "" #. module: fleet #: view:fleet.vehicle:0 msgid "show the fuel logs for this vehicle" -msgstr "" +msgstr "mostra il log dei pieni per questo veicolo" #. module: fleet #: field:fleet.vehicle.log.contract,purchaser_id:0 msgid "Contractor" -msgstr "" +msgstr "Contraente" #. module: fleet #: field:fleet.vehicle,license_plate:0 msgid "License Plate" -msgstr "" +msgstr "Targa" #. module: fleet #: field:fleet.vehicle.log.contract,cost_frequency:0 msgid "Recurring Cost Frequency" -msgstr "" +msgstr "Frequenza costi ricorsivi" #. module: fleet #: field:fleet.vehicle.log.fuel,inv_ref:0 #: field:fleet.vehicle.log.services,inv_ref:0 msgid "Invoice Reference" -msgstr "" +msgstr "Riferimento fattura" #. module: fleet #: field:fleet.vehicle,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Followers" #. module: fleet #: field:fleet.vehicle,location:0 msgid "Location" -msgstr "" +msgstr "Ubicazione" #. module: fleet #: view:fleet.vehicle.cost:0 msgid "Costs Per Month" -msgstr "" +msgstr "Costi per mese" #. module: fleet #: field:fleet.contract.state,name:0 msgid "Contract Status" -msgstr "" +msgstr "Stato contratto" #. module: fleet #: field:fleet.vehicle,contract_renewal_total:0 @@ -543,17 +545,17 @@ msgstr "" #. module: fleet #: field:fleet.vehicle.cost,cost_subtype:0 msgid "Type" -msgstr "" +msgstr "Tipo" #. module: fleet #: field:fleet.vehicle,contract_renewal_overdue:0 msgid "Has Contracts Overdued" -msgstr "" +msgstr "Ha contratti scaduti" #. module: fleet #: field:fleet.vehicle.cost,amount:0 msgid "Total Price" -msgstr "" +msgstr "Prezzo totale" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_27 @@ -563,22 +565,22 @@ msgstr "" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_14 msgid "Car Wash" -msgstr "" +msgstr "Lavaggio macchina" #. module: fleet #: help:fleet.vehicle,driver:0 msgid "Driver of the vehicle" -msgstr "" +msgstr "Conducente del veicolo" #. module: fleet #: view:fleet.vehicle:0 msgid "other(s)" -msgstr "" +msgstr "altro(i)" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_refueling msgid "Refueling" -msgstr "" +msgstr "Rifornimento" #. module: fleet #: help:fleet.vehicle,message_summary:0 @@ -595,7 +597,7 @@ msgstr "" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_log_fuel msgid "Fuel log for vehicles" -msgstr "" +msgstr "Log rifornimenti per veicolo" #. module: fleet #: view:fleet.vehicle:0 @@ -605,7 +607,7 @@ msgstr "" #. module: fleet #: view:fleet.vehicle.log.fuel:0 msgid "Fuel Costs Per Month" -msgstr "" +msgstr "Costi rifornimento per mese" #. module: fleet #: model:fleet.vehicle.tag,name:fleet.vehicle_tag_sedan @@ -615,33 +617,33 @@ msgstr "" #. module: fleet #: field:fleet.vehicle,seats:0 msgid "Seats Number" -msgstr "" +msgstr "Numero di posti" #. module: fleet #: model:fleet.vehicle.tag,name:fleet.vehicle_tag_convertible msgid "Convertible" -msgstr "" +msgstr "Convertibile" #. module: fleet #: model:ir.ui.menu,name:fleet.fleet_configuration msgid "Configuration" -msgstr "" +msgstr "Configurazione" #. module: fleet #: view:fleet.vehicle.log.contract:0 #: field:fleet.vehicle.log.contract,sum_cost:0 msgid "Indicative Costs Total" -msgstr "" +msgstr "Costo totale indicativo" #. module: fleet #: model:fleet.vehicle.tag,name:fleet.vehicle_tag_junior msgid "Junior" -msgstr "" +msgstr "Junior" #. module: fleet #: help:fleet.vehicle,model_id:0 msgid "Model of the vehicle" -msgstr "" +msgstr "Modello del veicolo" #. module: fleet #: model:ir.actions.act_window,help:fleet.fleet_vehicle_state_act @@ -661,7 +663,7 @@ msgstr "" #: field:fleet.vehicle,log_fuel:0 #: view:fleet.vehicle.log.fuel:0 msgid "Fuel Logs" -msgstr "" +msgstr "Log rifornimenti" #. module: fleet #: code:addons/fleet/fleet.py:409 @@ -670,28 +672,28 @@ msgstr "" #: code:addons/fleet/fleet.py:420 #, python-format msgid "None" -msgstr "" +msgstr "Nessuno" #. module: fleet #: model:ir.actions.act_window,name:fleet.action_fleet_reporting_costs_non_effective #: model:ir.ui.menu,name:fleet.menu_fleet_reporting_indicative_costs msgid "Indicative Costs Analysis" -msgstr "" +msgstr "Analisi costi indicativi" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_12 msgid "Brake Inspection" -msgstr "" +msgstr "Ispezione freni" #. module: fleet #: help:fleet.vehicle,state:0 msgid "Current state of the vehicle" -msgstr "" +msgstr "Stato attuale del veicolo" #. module: fleet #: selection:fleet.vehicle,transmission:0 msgid "Manual" -msgstr "" +msgstr "Manuale" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_52 @@ -706,7 +708,7 @@ msgstr "" #. module: fleet #: selection:fleet.vehicle,fuel_type:0 msgid "Gasoline" -msgstr "" +msgstr "Benzina" #. module: fleet #: model:ir.actions.act_window,help:fleet.fleet_vehicle_model_brand_act @@ -720,12 +722,12 @@ msgstr "" #. module: fleet #: field:fleet.vehicle.log.contract,start_date:0 msgid "Contract Start Date" -msgstr "" +msgstr "Data inizio contratto" #. module: fleet #: field:fleet.vehicle,odometer_unit:0 msgid "Odometer Unit" -msgstr "" +msgstr "Unità odometro" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_30 @@ -735,12 +737,12 @@ msgstr "" #. module: fleet #: selection:fleet.vehicle.log.contract,cost_frequency:0 msgid "Daily" -msgstr "" +msgstr "Giornaliero" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_6 msgid "Snow tires" -msgstr "" +msgstr "Gomme da neve" #. module: fleet #: help:fleet.vehicle.cost,date:0 @@ -750,22 +752,22 @@ msgstr "" #. module: fleet #: field:fleet.vehicle.state,sequence:0 msgid "Order" -msgstr "" +msgstr "Ordine" #. module: fleet #: view:fleet.vehicle.cost:0 msgid "Vehicles costs" -msgstr "" +msgstr "Costi veicoli" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_log_services msgid "Services for vehicles" -msgstr "" +msgstr "Servizi per veicoli" #. module: fleet #: view:fleet.vehicle.log.contract:0 msgid "Indicative Cost" -msgstr "" +msgstr "Costo indicativo" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_26 @@ -782,44 +784,44 @@ msgstr "" #. module: fleet #: selection:fleet.vehicle.log.contract,state:0 msgid "Terminated" -msgstr "" +msgstr "Terminato" #. module: fleet #: model:ir.model,name:fleet.model_fleet_vehicle_cost msgid "Cost related to a vehicle" -msgstr "" +msgstr "Costo relatovo ad un veicolo" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_33 msgid "Other Maintenance" -msgstr "" +msgstr "Altre manutenzioni" #. module: fleet #: field:fleet.vehicle.model,brand:0 #: view:fleet.vehicle.model.brand:0 msgid "Model Brand" -msgstr "" +msgstr "Marchio modello" #. module: fleet #: field:fleet.vehicle.model.brand,image_small:0 msgid "Smal-sized photo" -msgstr "" +msgstr "Fototessera" #. module: fleet #: field:fleet.vehicle,state:0 #: view:fleet.vehicle.state:0 msgid "State" -msgstr "" +msgstr "Stato" #. module: fleet #: field:fleet.vehicle.log.contract,cost_generated:0 msgid "Recurring Cost Amount" -msgstr "" +msgstr "Importo costo ricorsivo" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_49 msgid "Transmission Replacement" -msgstr "" +msgstr "Sostituzione trasmissione" #. module: fleet #: model:ir.actions.act_window,help:fleet.fleet_vehicle_log_fuel_act @@ -843,33 +845,33 @@ msgstr "" #. module: fleet #: field:fleet.vehicle,odometer:0 msgid "Last Odometer" -msgstr "" +msgstr "Ultima rilevazione odometrica" #. module: fleet #: model:ir.actions.act_window,name:fleet.fleet_vehicle_model_act #: model:ir.ui.menu,name:fleet.fleet_vehicle_model_menu msgid "Vehicle Model" -msgstr "" +msgstr "Modello veicolo" #. module: fleet #: field:fleet.vehicle,doors:0 msgid "Doors Number" -msgstr "" +msgstr "Numero porte" #. module: fleet #: help:fleet.vehicle,acquisition_date:0 msgid "Date when the vehicle has been bought" -msgstr "" +msgstr "Data di acquisto veicolo" #. module: fleet #: view:fleet.vehicle.model:0 msgid "Models" -msgstr "" +msgstr "Modelli" #. module: fleet #: view:fleet.vehicle.log.contract:0 msgid "amount" -msgstr "" +msgstr "importo" #. module: fleet #: help:fleet.vehicle,fuel_type:0 @@ -879,7 +881,7 @@ msgstr "" #. module: fleet #: view:fleet.vehicle.log.contract:0 msgid "Set Contract In Progress" -msgstr "" +msgstr "Imposta il contratto \"in corso\"" #. module: fleet #: field:fleet.vehicle.cost,odometer_unit:0 @@ -890,12 +892,12 @@ msgstr "" #. module: fleet #: field:fleet.vehicle,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "E' un Follower" #. module: fleet #: field:fleet.vehicle,horsepower:0 msgid "Horsepower" -msgstr "" +msgstr "Potenza HP" #. module: fleet #: field:fleet.vehicle,image:0 @@ -906,18 +908,18 @@ msgstr "" #: field:fleet.vehicle.model,image_small:0 #: field:fleet.vehicle.model.brand,image:0 msgid "Logo" -msgstr "" +msgstr "Logo" #. module: fleet #: field:fleet.vehicle,horsepower_tax:0 msgid "Horsepower Taxation" -msgstr "" +msgstr "Cavalli fiscali" #. module: fleet #: field:fleet.vehicle,log_services:0 #: view:fleet.vehicle.log.services:0 msgid "Services Logs" -msgstr "" +msgstr "Log servizi" #. module: fleet #: code:addons/fleet/fleet.py:47 @@ -928,17 +930,17 @@ msgstr "" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_43 msgid "Thermostat Replacement" -msgstr "" +msgstr "Sostituzione termostato" #. module: fleet #: field:fleet.service.type,category:0 msgid "Category" -msgstr "" +msgstr "Categoria" #. module: fleet #: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_log_fuel_graph msgid "Fuel Costs by Month" -msgstr "" +msgstr "Costi rifornimenti mensili" #. module: fleet #: help:fleet.vehicle.model.brand,image:0 @@ -946,6 +948,8 @@ msgid "" "This field holds the image used as logo for the brand, limited to " "1024x1024px." msgstr "" +"Questo campo può contenere una immagine da utilizzare come logo per il " +"machio (limite 1024x1024 px)." #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_11 @@ -955,28 +959,28 @@ msgstr "" #. module: fleet #: view:fleet.vehicle:0 msgid "All vehicles" -msgstr "" +msgstr "Tutti i veicoli" #. module: fleet #: view:fleet.vehicle.log.fuel:0 #: view:fleet.vehicle.log.services:0 msgid "Additional Details" -msgstr "" +msgstr "Dettagli aggiuntivi" #. module: fleet #: model:ir.actions.act_window,name:fleet.action_fleet_vehicle_log_services_graph msgid "Services Costs by Month" -msgstr "" +msgstr "Costo servizi per mese" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_service_9 msgid "Assistance" -msgstr "" +msgstr "Soccorso" #. module: fleet #: field:fleet.vehicle.log.fuel,price_per_liter:0 msgid "Price Per Liter" -msgstr "" +msgstr "Prezzo al litro" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_17 @@ -986,7 +990,7 @@ msgstr "" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_46 msgid "Tire Service" -msgstr "" +msgstr "Servizio gomme" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_8 @@ -996,7 +1000,7 @@ msgstr "" #. module: fleet #: field:fleet.vehicle,fuel_type:0 msgid "Fuel Type" -msgstr "" +msgstr "Tipo di carburante" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_22 @@ -1021,7 +1025,7 @@ msgstr "" #. module: fleet #: field:fleet.vehicle.log.contract,state:0 msgid "Status" -msgstr "" +msgstr "Stato" #. module: fleet #: model:fleet.service.type,name:fleet.type_service_40 diff --git a/addons/google_base_account/i18n/es.po b/addons/google_base_account/i18n/es.po index fb1f3f23c7a..47f3a3289d6 100644 --- a/addons/google_base_account/i18n/es.po +++ b/addons/google_base_account/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-07 12:33+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 22:01+0000\n" +"Last-Translator: Ana Juaristi Olalde \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: google_base_account #: field:res.users,gmail_user:0 @@ -36,12 +36,12 @@ msgstr "¡Error en la importacion de los contactos de Google!" #. module: google_base_account #: model:ir.model,name:google_base_account.model_res_users msgid "Users" -msgstr "" +msgstr "Usuarios" #. module: google_base_account #: view:google.login:0 msgid "or" -msgstr "" +msgstr "o" #. module: google_base_account #: view:google.login:0 @@ -57,7 +57,7 @@ msgstr "Contraseña de Google" #: code:addons/google_base_account/wizard/google_login.py:77 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: google_base_account #: view:res.users:0 @@ -67,13 +67,13 @@ msgstr "Cuenta de Google" #. module: google_base_account #: view:res.users:0 msgid "Synchronization" -msgstr "" +msgstr "Sincronización" #. module: google_base_account #: code:addons/google_base_account/wizard/google_login.py:77 #, python-format msgid "Authentication failed. Check the user and password." -msgstr "" +msgstr "Autentificación fallida. Verifique usuario y password" #. module: google_base_account #: code:addons/google_base_account/wizard/google_login.py:29 @@ -94,7 +94,7 @@ msgstr "Contacto Google" #. module: google_base_account #: view:google.login:0 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: google_base_account #: field:google.login,user:0 diff --git a/addons/google_base_account/i18n/pt.po b/addons/google_base_account/i18n/pt.po index 1bcbb430956..6f65c6f7fcd 100644 --- a/addons/google_base_account/i18n/pt.po +++ b/addons/google_base_account/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-15 09:02+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 15:52+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: google_base_account #: field:res.users,gmail_user:0 @@ -36,12 +36,12 @@ msgstr "Erro na importação dos contatos Google!" #. module: google_base_account #: model:ir.model,name:google_base_account.model_res_users msgid "Users" -msgstr "" +msgstr "Utilizadores" #. module: google_base_account #: view:google.login:0 msgid "or" -msgstr "" +msgstr "ou" #. module: google_base_account #: view:google.login:0 @@ -57,7 +57,7 @@ msgstr "Password Google" #: code:addons/google_base_account/wizard/google_login.py:77 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: google_base_account #: view:res.users:0 @@ -67,13 +67,13 @@ msgstr "Conta Google" #. module: google_base_account #: view:res.users:0 msgid "Synchronization" -msgstr "" +msgstr "Sincronização" #. module: google_base_account #: code:addons/google_base_account/wizard/google_login.py:77 #, python-format msgid "Authentication failed. Check the user and password." -msgstr "" +msgstr "A autenticação falhou. Verifique o nome de utilizador e a senha." #. module: google_base_account #: code:addons/google_base_account/wizard/google_login.py:29 @@ -93,7 +93,7 @@ msgstr "Contato Google" #. module: google_base_account #: view:google.login:0 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: google_base_account #: field:google.login,user:0 diff --git a/addons/google_docs/i18n/es.po b/addons/google_docs/i18n/es.po new file mode 100644 index 00000000000..7e0e09514e9 --- /dev/null +++ b/addons/google_docs/i18n/es.po @@ -0,0 +1,192 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-11 22:10+0000\n" +"Last-Translator: Ana Juaristi Olalde \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:136 +#, python-format +msgid "Key Error!" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,gdocs_resource_id:0 +msgid "Google Resource ID to Use as Template" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`" +msgstr "" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/xml/gdocs.xml:6 +#, python-format +msgid "Add Google Doc..." +msgstr "Añadir documento google..." + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL:" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_google_docs_config +msgid "Google Docs templates config" +msgstr "Configurar plantillas Google Docs" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:25 +#, python-format +msgid "" +"The user google credentials are not set yet. Contact your administrator for " +"help." +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`" +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:98 +#, python-format +msgid "" +"Your resource id is not correct. You can find the id in the google docs URL." +msgstr "" +"Su id de recurso no es correcto. Puede encontrar el id en la URL de google " +"docs." + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:122 +#, python-format +msgid "Creating google docs may only be done by one at a time." +msgstr "" +"Crear un documento google solo puede ser hecho por uno al mismo tiempo." + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:53 +#: code:addons/google_docs/google_docs.py:98 +#: code:addons/google_docs/google_docs.py:122 +#, python-format +msgid "Google Docs Error!" +msgstr "¡Error Google Dos!" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:53 +#, python-format +msgid "Check your google configuration in Users/Users/Synchronization tab." +msgstr "" +"Verifique su configuración google en Usuarios/usuarios/pestaña sincronización" + +#. module: google_docs +#: model:ir.ui.menu,name:google_docs.menu_gdocs_config +msgid "Google Docs configuration" +msgstr "Configuración Google Docs" + +#. module: google_docs +#: model:ir.actions.act_window,name:google_docs.action_google_docs_users_config +#: model:ir.ui.menu,name:google_docs.menu_gdocs_model_config +msgid "Models configuration" +msgstr "Configuración de modelos" + +#. module: google_docs +#: field:google.docs.config,model_id:0 +msgid "Model" +msgstr "Modelo" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:28 +#, python-format +msgid "User Google credentials are not yet set." +msgstr "Las credenciales de usuario Google aún no se han establecido." + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:136 +#, python-format +msgid "Your Google Doc Name Pattern's key does not found in object." +msgstr "" + +#. module: google_docs +#: help:google.docs.config,name_template:0 +msgid "" +"Choose how the new google docs will be named, on google side. Eg. " +"gdoc_%(field_name)s" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "Google Docs Configuration" +msgstr "" + +#. module: google_docs +#: help:google.docs.config,gdocs_resource_id:0 +msgid "" +"\n" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL: \n" +"*for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`\n" +"*for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`\n" +"*for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`\n" +"*for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`\n" +"...\n" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,name_template:0 +msgid "Google Doc Name Pattern" +msgstr "" diff --git a/addons/google_docs/i18n/it.po b/addons/google_docs/i18n/it.po new file mode 100644 index 00000000000..934e3590385 --- /dev/null +++ b/addons/google_docs/i18n/it.po @@ -0,0 +1,189 @@ +# Italian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:52+0000\n" +"PO-Revision-Date: 2012-12-11 08:34+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:136 +#, python-format +msgid "Key Error!" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,gdocs_resource_id:0 +msgid "Google Resource ID to Use as Template" +msgstr "ID risorsa google da usare come modello" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`" +msgstr "" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/xml/gdocs.xml:6 +#, python-format +msgid "Add Google Doc..." +msgstr "Aggiungi google doc" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL:" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_google_docs_config +msgid "Google Docs templates config" +msgstr "Config. modello google docs" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:25 +#, python-format +msgid "" +"The user google credentials are not set yet. Contact your administrator for " +"help." +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`" +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:98 +#, python-format +msgid "" +"Your resource id is not correct. You can find the id in the google docs URL." +msgstr "" +"Il vostro ID risorsa non è corretto. Potete trovarlo nell'URL di google docs" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:122 +#, python-format +msgid "Creating google docs may only be done by one at a time." +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:53 +#: code:addons/google_docs/google_docs.py:98 +#: code:addons/google_docs/google_docs.py:122 +#, python-format +msgid "Google Docs Error!" +msgstr "Errore Google Docs!" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:53 +#, python-format +msgid "Check your google configuration in Users/Users/Synchronization tab." +msgstr "" + +#. module: google_docs +#: model:ir.ui.menu,name:google_docs.menu_gdocs_config +msgid "Google Docs configuration" +msgstr "" + +#. module: google_docs +#: model:ir.actions.act_window,name:google_docs.action_google_docs_users_config +#: model:ir.ui.menu,name:google_docs.menu_gdocs_model_config +msgid "Models configuration" +msgstr "Configurazione modelli" + +#. module: google_docs +#: field:google.docs.config,model_id:0 +msgid "Model" +msgstr "Modello" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:28 +#, python-format +msgid "User Google credentials are not yet set." +msgstr "Credenziali utente google non ancora impostate." + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:136 +#, python-format +msgid "Your Google Doc Name Pattern's key does not found in object." +msgstr "" + +#. module: google_docs +#: help:google.docs.config,name_template:0 +msgid "" +"Choose how the new google docs will be named, on google side. Eg. " +"gdoc_%(field_name)s" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "Google Docs Configuration" +msgstr "" + +#. module: google_docs +#: help:google.docs.config,gdocs_resource_id:0 +msgid "" +"\n" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL: \n" +"*for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`\n" +"*for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`\n" +"*for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`\n" +"*for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`\n" +"...\n" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,name_template:0 +msgid "Google Doc Name Pattern" +msgstr "" diff --git a/addons/hr/i18n/es.po b/addons/hr/i18n/es.po index b539f8157fa..caf2544d142 100644 --- a/addons/hr/i18n/es.po +++ b/addons/hr/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-10 17:49+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 22:04+0000\n" +"Last-Translator: Ana Juaristi Olalde \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: 2012-12-04 05:39+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr #: model:process.node,name:hr.process_node_openerpuser0 @@ -24,7 +24,7 @@ msgstr "Usuario OpenERP" #. module: hr #: field:hr.config.settings,module_hr_timesheet_sheet:0 msgid "Allow timesheets validation by managers" -msgstr "" +msgstr "Permite validar partes de trabajo por los gerentes." #. module: hr #: field:hr.job,requirements:0 @@ -58,11 +58,14 @@ msgid "" "128x128px image, with aspect ratio preserved. Use this field in form views " "or some kanban views." msgstr "" +"Foto de medio tamaño del empleado. Se redimensionará automáticamente a " +"128x128px, manteniendo el ratio de aspecto. Utilice este campo en vistas de " +"formulario o vistas kanban." #. module: hr #: view:hr.config.settings:0 msgid "Time Tracking" -msgstr "" +msgstr "Seguimiento de tiempo" #. module: hr #: view:hr.employee:0 @@ -78,12 +81,12 @@ msgstr "Cree sus departamentos" #. module: hr #: help:hr.job,no_of_employee:0 msgid "Number of employees currently occupying this job position." -msgstr "" +msgstr "Número de empleados que actualmente ocupan este puesto." #. module: hr #: field:hr.config.settings,module_hr_evaluation:0 msgid "Organize employees periodic evaluation" -msgstr "" +msgstr "Organice las evaluaciones periodicas de los empleados." #. module: hr #: view:hr.department:0 @@ -105,11 +108,13 @@ msgid "" "This field holds the image used as photo for the employee, limited to " "1024x1024px." msgstr "" +"Este campo contendrá la imagen usada como foto del empleado, acotada a " +"1024x1024px." #. module: hr #: help:hr.config.settings,module_hr_holidays:0 msgid "This installs the module hr_holidays." -msgstr "" +msgstr "Se instalará el módulo hr_holidays." #. module: hr #: view:hr.job:0 @@ -124,7 +129,7 @@ msgstr "En selección" #. module: hr #: field:hr.job,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensajes sin leer" #. module: hr #: field:hr.department,company_id:0 @@ -142,33 +147,33 @@ msgstr "Previsión en selección" #. module: hr #: field:res.users,employee_ids:0 msgid "Related employees" -msgstr "" +msgstr "Empleados relacionados" #. module: hr #: constraint:hr.employee.category:0 msgid "Error! You cannot create recursive Categories." -msgstr "" +msgstr "¡Error! No puede crear categorias recursivas." #. module: hr #: help:hr.config.settings,module_hr_recruitment:0 msgid "This installs the module hr_recruitment." -msgstr "" +msgstr "Se instalará el módulo hr_recruitment" #. module: hr #: view:hr.employee:0 msgid "Birth" -msgstr "" +msgstr "Fecha de nacimiento" #. module: hr #: model:ir.actions.act_window,name:hr.open_view_categ_form #: model:ir.ui.menu,name:hr.menu_view_employee_category_form msgid "Employee Tags" -msgstr "" +msgstr "Etiquetas del empleado" #. module: hr #: view:hr.job:0 msgid "Launch Recruitement" -msgstr "" +msgstr "Lanzar proceso de selección" #. module: hr #: model:process.transition,name:hr.process_transition_employeeuser0 @@ -193,22 +198,22 @@ msgstr "Casado (a)" #. module: hr #: field:hr.job,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensajes" #. module: hr #: view:hr.config.settings:0 msgid "Talent Management" -msgstr "" +msgstr "Gestión de talento" #. module: hr #: help:hr.config.settings,module_hr_timesheet_sheet:0 msgid "This installs the module hr_timesheet_sheet." -msgstr "" +msgstr "Se instalará el módulo hr_timesheet_sheet." #. module: hr #: view:hr.employee:0 msgid "Mobile:" -msgstr "" +msgstr "Móvil:" #. module: hr #: view:hr.employee:0 @@ -218,7 +223,7 @@ msgstr "Cargo" #. module: hr #: help:hr.job,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si se marca, los nuevos mensajes requieren su atención" #. module: hr #: field:hr.employee,color:0 @@ -237,7 +242,7 @@ msgstr "" #. module: hr #: field:hr.employee,image_medium:0 msgid "Medium-sized photo" -msgstr "" +msgstr "Foto de tamaño medio" #. module: hr #: field:hr.employee,identification_id:0 @@ -278,7 +283,7 @@ msgstr "Dirección oficina" #. module: hr #: field:hr.job,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: hr #: view:hr.employee:0 @@ -299,6 +304,9 @@ msgid "" "image, with aspect ratio preserved. Use this field anywhere a small image is " "required." msgstr "" +"Foto de tamaño medio del empleado. Automáticamente se redimensionará a " +"64x64px manteniendo el ratio de aspecto. Use este campo cuando necesite una " +"imagen pequeña." #. module: hr #: field:hr.employee,birthday:0 @@ -308,12 +316,12 @@ msgstr "Fecha de nacimiento" #. module: hr #: help:hr.job,no_of_recruitment:0 msgid "Number of new employees you expect to recruit." -msgstr "" +msgstr "Número de empleados que espera contratar." #. module: hr #: model:ir.actions.client,name:hr.action_client_hr_menu msgid "Open HR Menu" -msgstr "" +msgstr "Abrir menú RRHH" #. module: hr #: help:hr.job,message_summary:0 @@ -321,6 +329,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: hr #: help:hr.config.settings,module_account_analytic_analysis:0 @@ -328,6 +338,8 @@ msgid "" "This installs the module account_analytic_analysis, which will install sales " "management too." msgstr "" +"Se instalará el módulo account_analytic_analysis, el cual instalará 'gestión " +"de ventas'." #. module: hr #: view:board.board:0 @@ -344,7 +356,7 @@ msgstr "Trabajo" #. module: hr #: field:hr.job,no_of_employee:0 msgid "Current Number of Employees" -msgstr "" +msgstr "Número actual de empleados" #. module: hr #: field:hr.department,member_ids:0 @@ -364,18 +376,19 @@ msgstr "Formulario y estructura del empleado" #. module: hr #: field:hr.config.settings,module_hr_expense:0 msgid "Manage employees expenses" -msgstr "" +msgstr "Gestión de gastos de los empleados" #. module: hr #: help:hr.job,expected_employees:0 msgid "" "Expected number of employees for this job position after new recruitment." msgstr "" +"Número previsto de empleados para este puesto tras las nuevas contrataciones." #. module: hr #: view:hr.employee:0 msgid "Tel:" -msgstr "" +msgstr "Tfono:" #. module: hr #: selection:hr.employee,marital:0 @@ -437,22 +450,22 @@ msgstr "" #. module: hr #: help:hr.config.settings,module_hr_evaluation:0 msgid "This installs the module hr_evaluation." -msgstr "" +msgstr "Se instalará el módulo hr_evaluation." #. module: hr #: constraint:hr.employee:0 msgid "Error! You cannot create recursive hierarchy of Employee(s)." -msgstr "" +msgstr "¡Error! No puede crear una jerarquia recursiva de empleado(s)." #. module: hr #: help:hr.config.settings,module_hr_attendance:0 msgid "This installs the module hr_attendance." -msgstr "" +msgstr "Se instalará el módulo hr_attendance." #. module: hr #: field:hr.employee,image_small:0 msgid "Smal-sized photo" -msgstr "" +msgstr "Foto pequeña." #. module: hr #: view:hr.employee.category:0 @@ -463,12 +476,12 @@ msgstr "Categoría de empleado" #. module: hr #: field:hr.employee,category_ids:0 msgid "Tags" -msgstr "" +msgstr "Etiquetas" #. module: hr #: help:hr.config.settings,module_hr_contract:0 msgid "This installs the module hr_contract." -msgstr "" +msgstr "Esto instala el módulo hr_contract." #. module: hr #: view:hr.employee:0 @@ -478,7 +491,7 @@ msgstr "Usuario OpenERP" #. module: hr #: view:hr.config.settings:0 msgid "or" -msgstr "" +msgstr "o" #. module: hr #: field:hr.employee.category,name:0 @@ -488,12 +501,12 @@ msgstr "Categoría" #. module: hr #: view:hr.job:0 msgid "Stop Recruitment" -msgstr "" +msgstr "Parar selección de personal" #. module: hr #: field:hr.config.settings,module_hr_attendance:0 msgid "Install attendances feature" -msgstr "" +msgstr "Instalar control de presencias" #. module: hr #: help:hr.employee,bank_account_id:0 @@ -518,7 +531,7 @@ msgstr "Información de contacto" #. module: hr #: field:hr.config.settings,module_hr_holidays:0 msgid "Manage holidays, leaves and allocation requests" -msgstr "" +msgstr "Gestión de solicitudes de vacaciones, ausencias y colocaciones" #. module: hr #: field:hr.department,child_ids:0 @@ -545,12 +558,12 @@ msgstr "Contrato de empleado" #. module: hr #: view:hr.config.settings:0 msgid "Contracts" -msgstr "" +msgstr "Contratos" #. module: hr #: help:hr.job,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Mensajes e historial de comunicación" #. module: hr #: field:hr.employee,ssnid:0 @@ -560,12 +573,12 @@ msgstr "Nº Seguridad Social" #. module: hr #: field:hr.job,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Es un seguidor." #. module: hr #: field:hr.config.settings,module_hr_recruitment:0 msgid "Manage the recruitment process" -msgstr "" +msgstr "Gestión del proceso de contratación." #. module: hr #: view:hr.employee:0 @@ -575,12 +588,12 @@ msgstr "Activo" #. module: hr #: view:hr.config.settings:0 msgid "Human Resources Management" -msgstr "" +msgstr "Gestión de recursos humanos" #. module: hr #: view:hr.config.settings:0 msgid "Install your country's payroll" -msgstr "" +msgstr "Instale las nóminas de su país" #. module: hr #: field:hr.employee,bank_account_id:0 @@ -595,7 +608,7 @@ msgstr "Compañías" #. module: hr #: field:hr.job,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumen" #. module: hr #: model:process.transition,note:hr.process_transition_contactofemployee0 @@ -624,17 +637,17 @@ msgstr "" #. module: hr #: view:hr.employee:0 msgid "HR Settings" -msgstr "" +msgstr "Configuración RRHH" #. module: hr #: view:hr.employee:0 msgid "Citizenship & Other Info" -msgstr "" +msgstr "Ciudadanía e información adicional" #. module: hr #: constraint:hr.department:0 msgid "Error! You cannot create recursive departments." -msgstr "" +msgstr "¡Error! No puede crear departamentos recursivos." #. module: hr #: field:hr.employee,address_id:0 @@ -644,7 +657,7 @@ msgstr "Dirección de trabajo" #. module: hr #: view:hr.employee:0 msgid "Public Information" -msgstr "" +msgstr "Información pública" #. module: hr #: field:hr.employee,marital:0 @@ -659,7 +672,7 @@ msgstr "ir.acciones.acc_ventana" #. module: hr #: field:hr.employee,last_login:0 msgid "Latest Connection" -msgstr "" +msgstr "Última conexión" #. module: hr #: field:hr.employee,image:0 @@ -669,7 +682,7 @@ msgstr "Foto" #. module: hr #: view:hr.config.settings:0 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: hr #: model:ir.actions.act_window,help:hr.open_module_tree_department @@ -688,13 +701,13 @@ msgstr "" #. module: hr #: help:hr.config.settings,module_hr_timesheet:0 msgid "This installs the module hr_timesheet." -msgstr "" +msgstr "Se instalará el módulo hr_timesheet." #. module: hr #: field:hr.job,message_comment_ids:0 #: help:hr.job,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentarios y correos" #. module: hr #: model:ir.actions.act_window,help:hr.view_department_form_installer @@ -733,13 +746,15 @@ msgstr "Móvil del trabajo" #. module: hr #: selection:hr.job,state:0 msgid "Recruitement in Progress" -msgstr "" +msgstr "Proceso de selección en progreso" #. module: hr #: field:hr.config.settings,module_account_analytic_analysis:0 msgid "" "Allow invoicing based on timesheets (the sale application will be installed)" msgstr "" +"Permite facturación basada en partes de trabajo (la aplicación ventas se " +"instalará)" #. module: hr #: view:hr.employee.category:0 @@ -759,7 +774,7 @@ msgstr "Dirección particular" #. module: hr #: field:hr.config.settings,module_hr_timesheet:0 msgid "Manage timesheets" -msgstr "" +msgstr "Gestión de partes de trabajo" #. module: hr #: model:ir.actions.act_window,name:hr.open_payroll_modules @@ -784,12 +799,12 @@ msgstr "Ocupado" #. module: hr #: help:hr.config.settings,module_hr_payroll:0 msgid "This installs the module hr_payroll." -msgstr "" +msgstr "Se instalará el módulo hr_payroll." #. module: hr #: field:hr.config.settings,module_hr_contract:0 msgid "Record contracts per employee" -msgstr "" +msgstr "Registrar contratos por empleado" #. module: hr #: view:hr.department:0 @@ -804,7 +819,7 @@ msgstr "Nacionalidad" #. module: hr #: view:hr.config.settings:0 msgid "Additional Features" -msgstr "" +msgstr "Características adicionales" #. module: hr #: field:hr.employee,notes:0 @@ -857,18 +872,18 @@ msgstr "Nombre de departamento" #. module: hr #: model:ir.ui.menu,name:hr.menu_hr_reporting_timesheet msgid "Reports" -msgstr "" +msgstr "Informes" #. module: hr #: field:hr.config.settings,module_hr_payroll:0 msgid "Manage payroll" -msgstr "" +msgstr "Gestión de nóminas" #. module: hr #: view:hr.config.settings:0 #: model:ir.actions.act_window,name:hr.action_human_resources_configuration msgid "Configure Human Resources" -msgstr "" +msgstr "Configurar recursos humanos" #. module: hr #: selection:hr.job,state:0 @@ -893,7 +908,7 @@ msgstr "Usuario" #. module: hr #: field:hr.job,expected_employees:0 msgid "Total Forecasted Employees" -msgstr "" +msgstr "Previson de empleados totales" #. module: hr #: help:hr.job,state:0 @@ -905,7 +920,7 @@ msgstr "" #. module: hr #: model:ir.model,name:hr.model_res_users msgid "Users" -msgstr "" +msgstr "Usuarios" #. module: hr #: model:ir.actions.act_window,name:hr.action_hr_job @@ -946,7 +961,7 @@ msgstr "¡El nombre del puesto de trabajo debe ser único por compañía!" #. module: hr #: help:hr.config.settings,module_hr_expense:0 msgid "This installs the module hr_expense." -msgstr "" +msgstr "Se instalará el módulo hr_expense" #. module: hr #: model:ir.model,name:hr.model_hr_config_settings @@ -973,7 +988,7 @@ msgstr "Subordinados" #. module: hr #: view:hr.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Aplicar" #~ msgid "Working Time Categories" #~ msgstr "Categorías horarios de trabajo" diff --git a/addons/hr/i18n/pt.po b/addons/hr/i18n/pt.po index 040434e4f9e..4069994298e 100644 --- a/addons/hr/i18n/pt.po +++ b/addons/hr/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-10 17:59+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 17:47+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:39+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr #: model:process.node,name:hr.process_node_openerpuser0 @@ -24,7 +24,7 @@ msgstr "Utilizador OpenERP" #. module: hr #: field:hr.config.settings,module_hr_timesheet_sheet:0 msgid "Allow timesheets validation by managers" -msgstr "" +msgstr "Permite a validação de registos de horas por gestores" #. module: hr #: field:hr.job,requirements:0 @@ -62,7 +62,7 @@ msgstr "" #. module: hr #: view:hr.config.settings:0 msgid "Time Tracking" -msgstr "" +msgstr "Registo de Tempo" #. module: hr #: view:hr.employee:0 @@ -78,12 +78,12 @@ msgstr "Crie os Seus Departamentos" #. module: hr #: help:hr.job,no_of_employee:0 msgid "Number of employees currently occupying this job position." -msgstr "" +msgstr "Número de empregados ocupando este cargo." #. module: hr #: field:hr.config.settings,module_hr_evaluation:0 msgid "Organize employees periodic evaluation" -msgstr "" +msgstr "Organizar avaliação periódica de empregados" #. module: hr #: view:hr.department:0 @@ -124,7 +124,7 @@ msgstr "Em recrutamento" #. module: hr #: field:hr.job,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensagens por ler" #. module: hr #: field:hr.department,company_id:0 @@ -142,12 +142,12 @@ msgstr "Esperado em Recrutamento" #. module: hr #: field:res.users,employee_ids:0 msgid "Related employees" -msgstr "" +msgstr "Empregados relacionados" #. module: hr #: constraint:hr.employee.category:0 msgid "Error! You cannot create recursive Categories." -msgstr "" +msgstr "Erro! Não pode criar categorias de forma recursiva." #. module: hr #: help:hr.config.settings,module_hr_recruitment:0 @@ -157,7 +157,7 @@ msgstr "" #. module: hr #: view:hr.employee:0 msgid "Birth" -msgstr "" +msgstr "Data de nascimento" #. module: hr #: model:ir.actions.act_window,name:hr.open_view_categ_form @@ -168,7 +168,7 @@ msgstr "" #. module: hr #: view:hr.job:0 msgid "Launch Recruitement" -msgstr "" +msgstr "Iniciar recrutamento" #. module: hr #: model:process.transition,name:hr.process_transition_employeeuser0 @@ -193,12 +193,12 @@ msgstr "Casado" #. module: hr #: field:hr.job,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensagens" #. module: hr #: view:hr.config.settings:0 msgid "Talent Management" -msgstr "" +msgstr "Gestão de talento" #. module: hr #: help:hr.config.settings,module_hr_timesheet_sheet:0 @@ -208,7 +208,7 @@ msgstr "" #. module: hr #: view:hr.employee:0 msgid "Mobile:" -msgstr "" +msgstr "Telemóvel:" #. module: hr #: view:hr.employee:0 @@ -237,7 +237,7 @@ msgstr "" #. module: hr #: field:hr.employee,image_medium:0 msgid "Medium-sized photo" -msgstr "" +msgstr "Foto de tamanho médio" #. module: hr #: field:hr.employee,identification_id:0 @@ -278,7 +278,7 @@ msgstr "Localização do Escritório" #. module: hr #: field:hr.job,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: hr #: view:hr.employee:0 @@ -344,7 +344,7 @@ msgstr "Cargo" #. module: hr #: field:hr.job,no_of_employee:0 msgid "Current Number of Employees" -msgstr "" +msgstr "Número atual de empregados" #. module: hr #: field:hr.department,member_ids:0 @@ -364,18 +364,18 @@ msgstr "Formulário e estrutura do funcionário" #. module: hr #: field:hr.config.settings,module_hr_expense:0 msgid "Manage employees expenses" -msgstr "" +msgstr "Gerir despesas de empregados" #. module: hr #: help:hr.job,expected_employees:0 msgid "" "Expected number of employees for this job position after new recruitment." -msgstr "" +msgstr "Número de empregados neste cargo após novo recrutamento." #. module: hr #: view:hr.employee:0 msgid "Tel:" -msgstr "" +msgstr "Tel:" #. module: hr #: selection:hr.employee,marital:0 @@ -442,7 +442,7 @@ msgstr "" #. module: hr #: constraint:hr.employee:0 msgid "Error! You cannot create recursive hierarchy of Employee(s)." -msgstr "" +msgstr "Erro! Não pode criar hierarquias de funcionários de forma recursiva." #. module: hr #: help:hr.config.settings,module_hr_attendance:0 @@ -452,7 +452,7 @@ msgstr "" #. module: hr #: field:hr.employee,image_small:0 msgid "Smal-sized photo" -msgstr "" +msgstr "Foto de tamanho pequeno" #. module: hr #: view:hr.employee.category:0 @@ -478,7 +478,7 @@ msgstr "Utilizador Relacionado" #. module: hr #: view:hr.config.settings:0 msgid "or" -msgstr "" +msgstr "ou" #. module: hr #: field:hr.employee.category,name:0 @@ -488,7 +488,7 @@ msgstr "Categoria" #. module: hr #: view:hr.job:0 msgid "Stop Recruitment" -msgstr "" +msgstr "Terminar o recrutamento" #. module: hr #: field:hr.config.settings,module_hr_attendance:0 @@ -545,12 +545,12 @@ msgstr "Contrato do funcionário" #. module: hr #: view:hr.config.settings:0 msgid "Contracts" -msgstr "" +msgstr "Contratos" #. module: hr #: help:hr.job,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Histórico de mensagens e comunicação" #. module: hr #: field:hr.employee,ssnid:0 @@ -560,12 +560,12 @@ msgstr "Nº Segurança Social" #. module: hr #: field:hr.job,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "É um seguidor" #. module: hr #: field:hr.config.settings,module_hr_recruitment:0 msgid "Manage the recruitment process" -msgstr "" +msgstr "Gerir processo de recrutamento" #. module: hr #: view:hr.employee:0 @@ -575,7 +575,7 @@ msgstr "Ativo" #. module: hr #: view:hr.config.settings:0 msgid "Human Resources Management" -msgstr "" +msgstr "Gestão de recursos humanos" #. module: hr #: view:hr.config.settings:0 @@ -595,7 +595,7 @@ msgstr "Empresas" #. module: hr #: field:hr.job,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumo" #. module: hr #: model:process.transition,note:hr.process_transition_contactofemployee0 @@ -634,7 +634,7 @@ msgstr "" #. module: hr #: constraint:hr.department:0 msgid "Error! You cannot create recursive departments." -msgstr "" +msgstr "Erro! Não pode criar departamentos de forma recursiva." #. module: hr #: field:hr.employee,address_id:0 @@ -644,7 +644,7 @@ msgstr "Endereço de Trabalho" #. module: hr #: view:hr.employee:0 msgid "Public Information" -msgstr "" +msgstr "Informação pública" #. module: hr #: field:hr.employee,marital:0 @@ -659,7 +659,7 @@ msgstr "ir.actions.act_window" #. module: hr #: field:hr.employee,last_login:0 msgid "Latest Connection" -msgstr "" +msgstr "Ligação mais recente" #. module: hr #: field:hr.employee,image:0 @@ -669,7 +669,7 @@ msgstr "Fotografia" #. module: hr #: view:hr.config.settings:0 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: hr #: model:ir.actions.act_window,help:hr.open_module_tree_department @@ -694,7 +694,7 @@ msgstr "" #: field:hr.job,message_comment_ids:0 #: help:hr.job,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentários e emails" #. module: hr #: model:ir.actions.act_window,help:hr.view_department_form_installer @@ -733,13 +733,15 @@ msgstr "Telémovel do Emprego" #. module: hr #: selection:hr.job,state:0 msgid "Recruitement in Progress" -msgstr "" +msgstr "Recrutamento em progresso" #. module: hr #: field:hr.config.settings,module_account_analytic_analysis:0 msgid "" "Allow invoicing based on timesheets (the sale application will be installed)" msgstr "" +"Permite faturação baseada em registo de horas (a aplicação de vendas será " +"instalada)" #. module: hr #: view:hr.employee.category:0 @@ -759,7 +761,7 @@ msgstr "Endereço de Residência" #. module: hr #: field:hr.config.settings,module_hr_timesheet:0 msgid "Manage timesheets" -msgstr "" +msgstr "Gerir registo de horas" #. module: hr #: model:ir.actions.act_window,name:hr.open_payroll_modules @@ -804,7 +806,7 @@ msgstr "Nacionalidade" #. module: hr #: view:hr.config.settings:0 msgid "Additional Features" -msgstr "" +msgstr "Funcionalidades adicionais" #. module: hr #: field:hr.employee,notes:0 @@ -857,7 +859,7 @@ msgstr "Nome do departamento" #. module: hr #: model:ir.ui.menu,name:hr.menu_hr_reporting_timesheet msgid "Reports" -msgstr "" +msgstr "Relatórios" #. module: hr #: field:hr.config.settings,module_hr_payroll:0 @@ -868,7 +870,7 @@ msgstr "" #: view:hr.config.settings:0 #: model:ir.actions.act_window,name:hr.action_human_resources_configuration msgid "Configure Human Resources" -msgstr "" +msgstr "Configurar recursos humanos" #. module: hr #: selection:hr.job,state:0 @@ -893,7 +895,7 @@ msgstr "LogIn" #. module: hr #: field:hr.job,expected_employees:0 msgid "Total Forecasted Employees" -msgstr "" +msgstr "Total de empregados previsto" #. module: hr #: help:hr.job,state:0 @@ -905,7 +907,7 @@ msgstr "" #. module: hr #: model:ir.model,name:hr.model_res_users msgid "Users" -msgstr "" +msgstr "Utilizadores" #. module: hr #: model:ir.actions.act_window,name:hr.action_hr_job @@ -951,7 +953,7 @@ msgstr "" #. module: hr #: model:ir.model,name:hr.model_hr_config_settings msgid "hr.config.settings" -msgstr "" +msgstr "hr.config.settings" #. module: hr #: field:hr.department,manager_id:0 @@ -973,7 +975,7 @@ msgstr "Subordinados" #. module: hr #: view:hr.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Aplicar" #~ msgid "Sunday" #~ msgstr "Domingo" diff --git a/addons/hr_contract/i18n/pt.po b/addons/hr_contract/i18n/pt.po index 0e8ef3abd9e..ba5d8240626 100644 --- a/addons/hr_contract/i18n/pt.po +++ b/addons/hr_contract/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2010-12-16 06:43+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:32+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:37+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_contract #: field:hr.contract,wage:0 @@ -102,7 +102,7 @@ msgstr "Tipos de contrato" #. module: hr_contract #: view:hr.employee:0 msgid "Medical Exam" -msgstr "" +msgstr "Exame médico" #. module: hr_contract #: field:hr.contract,date_end:0 @@ -162,7 +162,7 @@ msgstr "Horário de trabalho" #. module: hr_contract #: view:hr.contract:0 msgid "Salary and Advantages" -msgstr "" +msgstr "Salário e Benefícios" #. module: hr_contract #: field:hr.contract,job_id:0 @@ -172,7 +172,7 @@ msgstr "Título do Cargo" #. module: hr_contract #: constraint:hr.contract:0 msgid "Error! Contract start-date must be less than contract end-date." -msgstr "" +msgstr "Erro! A data de início de contrato deve ser anterior à do seu fim." #. module: hr_contract #: field:hr.employee,manager:0 @@ -202,7 +202,7 @@ msgstr "Local de Nascimento" #. module: hr_contract #: view:hr.contract:0 msgid "Trial Period Duration" -msgstr "" +msgstr "Duração do período à experiência" #. module: hr_contract #: view:hr.contract:0 diff --git a/addons/hr_holidays/i18n/zh_CN.po b/addons/hr_holidays/i18n/zh_CN.po index 0cfbe531066..38011ae0066 100644 --- a/addons/hr_holidays/i18n/zh_CN.po +++ b/addons/hr_holidays/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-06 02:14+0000\n" +"PO-Revision-Date: 2012-12-12 03:07+0000\n" "Last-Translator: jerryzhang \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: 2012-12-07 04:36+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -62,7 +62,7 @@ msgstr "分配模式" #. module: hr_holidays #: field:hr.employee,leave_date_from:0 msgid "From Date" -msgstr "" +msgstr "起始日期" #. module: hr_holidays #: view:hr.holidays:0 @@ -74,7 +74,7 @@ msgstr "部门" #: model:ir.actions.act_window,name:hr_holidays.request_approve_allocation #: model:ir.ui.menu,name:hr_holidays.menu_request_approve_allocation msgid "Allocation Requests to Approve" -msgstr "" +msgstr "准假审核" #. module: hr_holidays #: help:hr.holidays,category_id:0 @@ -126,7 +126,7 @@ msgstr "浅青色" #. module: hr_holidays #: constraint:hr.holidays:0 msgid "You can not have 2 leaves that overlaps on same day!" -msgstr "" +msgstr "在同一天内不允许存在两次时间重叠的请假申请" #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -165,13 +165,13 @@ msgstr "拒绝" #: code:addons/hr_holidays/hr_holidays.py:434 #, python-format msgid "Request submitted, waiting for validation by the manager." -msgstr "" +msgstr "申请已提交,等待经理确认。" #. module: hr_holidays #: code:addons/hr_holidays/hr_holidays.py:439 #, python-format msgid "Request approved, waiting second validation." -msgstr "" +msgstr "申请已通过审核,等待二次确认。" #. module: hr_holidays #: view:hr.employee:0 @@ -298,7 +298,7 @@ msgstr "" #. module: hr_holidays #: model:hr.holidays.status,name:hr_holidays.holiday_status_cl msgid "Legal Leaves 2012" -msgstr "" +msgstr "年假(2012)" #. module: hr_holidays #: selection:hr.holidays.summary.dept,holiday_type:0 @@ -381,7 +381,7 @@ msgstr "准假类型" #. module: hr_holidays #: model:ir.actions.server,name:hr_holidays.actions_server_holidays_unread msgid "Holidays: Mark unread" -msgstr "" +msgstr "假期:设置为未读" #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -405,6 +405,10 @@ msgid "" " \n" "The status is 'Approved', when holiday request is approved by manager." msgstr "" +"请假申请建立后,状态被设置为“待提交”。 \n" +"用户提交请假申请后,状态变为“待审核”。 \n" +"如果请假申请被经理拒绝,则状态变为“被拒绝”。 \n" +"如果请假申通过经理审核,则状态变为“已审核”。" #. module: hr_holidays #: view:hr.holidays:0 @@ -436,7 +440,7 @@ msgstr "查找准假类型" #. module: hr_holidays #: model:ir.actions.server,name:hr_holidays.actions_server_holidays_read msgid "Holidays: Mark read" -msgstr "" +msgstr "假期:设置为已读" #. module: hr_holidays #: selection:hr.employee,current_leave_state:0 @@ -475,6 +479,11 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" 你可以分配剩余的法定假日给每一个员工,Openerp\n" +" 会自动建立并审核分配申请。\n" +"

\n" +" " #. module: hr_holidays #: help:hr.holidays.status,categ_id:0 @@ -527,7 +536,7 @@ msgstr "开始日期" msgid "" "There are not enough %s allocated for employee %s; please create an " "allocation request for this leave type." -msgstr "" +msgstr "没有足够的%s分配给员工%s;请为这种假期类型创建一个新的分配申请。" #. module: hr_holidays #: view:hr.holidays.summary.dept:0 @@ -582,7 +591,7 @@ msgstr "" #. module: hr_holidays #: sql_constraint:hr.holidays:0 msgid "The number of days must be greater than 0." -msgstr "" +msgstr "天数必须大于0." #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -607,7 +616,7 @@ msgstr "为职员分配假期" #. module: hr_holidays #: model:ir.ui.menu,name:hr_holidays.menu_open_view_holiday_status msgid "Leaves Types" -msgstr "" +msgstr "请假类型" #. module: hr_holidays #: field:hr.holidays,meeting_id:0 diff --git a/addons/hr_timesheet/i18n/es.po b/addons/hr_timesheet/i18n/es.po index 604e48b93b7..c8e0b1a1e75 100644 --- a/addons/hr_timesheet/i18n/es.po +++ b/addons/hr_timesheet/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-10 18:16+0000\n" -"Last-Translator: Borja López Soilán (NeoPolus) \n" +"PO-Revision-Date: 2012-12-11 22:27+0000\n" +"Last-Translator: lambdasoftware \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: 2012-12-04 05:33+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.act_analytic_cost_revenue @@ -41,6 +41,25 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Aún no hay actividad en este contrato.\n" +"

\n" +"

\n" +" En OpenERP, los contratos y proyectos son implementados usando cuentas " +"analíticas. Puede hacer un seguimiento de sus costes e ingresos para " +"analizar los márgenes fácilmente.\n" +"

\n" +"

\n" +" Los costes se crearán automáticamente cuando registre facturas de " +"proveedores, gastos o partes de trabajo.\n" +"

\n" +"

\n" +" Los ingresos se crearán automáticamente cuando cree una factura de " +"cliente. Las facturas de cliente puede ser basadas en órdenes de venta " +"(facturas con precio fijo), en partes de trabajo (basadas en trabajo hecho) " +"o en gastos (p.e. costes de viaje )\n" +"

\n" +" " #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -75,7 +94,7 @@ msgstr "" #. module: hr_timesheet #: field:hr.employee,uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unidad de medida" #. module: hr_timesheet #: field:hr.employee,journal_id:0 @@ -103,7 +122,7 @@ msgstr "Parte de horas" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Please define employee for this user!" -msgstr "" +msgstr "¡Defina por favor un empleado para este usuario!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -129,7 +148,7 @@ msgstr "Vie" #: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form #: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours msgid "Timesheet Activities" -msgstr "" +msgstr "Actividades del parte de horas" #. module: hr_timesheet #: field:hr.sign.out.project,analytic_amount:0 @@ -166,12 +185,12 @@ msgstr "Imprimir parte de horas de los empleados" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "Please define employee for your user." -msgstr "" +msgstr "Por favor defina un empleado para su usuario." #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.act_analytic_cost_revenue msgid "Costs & Revenues" -msgstr "" +msgstr "Costes e ingresos" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -188,7 +207,7 @@ msgstr "Cuenta analítica" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Costs and Revenues" -msgstr "" +msgstr "Costes e ingresos" #. module: hr_timesheet #: code:addons/hr_timesheet/hr_timesheet.py:141 @@ -198,7 +217,7 @@ msgstr "" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Warning!" -msgstr "" +msgstr "¡Advertencia!" #. module: hr_timesheet #: field:hr.analytic.timesheet,partner_id:0 @@ -244,6 +263,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Pulse para registrar actividad.\n" +"

\n" +" Puede registrar y hacer un seguimiento de sus horas de trabajo por " +"proyecto a diario. Todo tiempo invertido en un proyecto generará un coste " +"asociado en el contrato/cuenta analítica y puede ser facturado si es " +"preciso.\n" +"

\n" +" " #. module: hr_timesheet #: view:hr.analytical.timesheet.employee:0 @@ -254,7 +282,7 @@ msgstr "Imprimir" #. module: hr_timesheet #: help:account.analytic.account,use_timesheets:0 msgid "Check this field if this project manages timesheets" -msgstr "" +msgstr "Marque esta casilla si el proyecto se administra con partes de horas" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 @@ -280,7 +308,7 @@ msgstr "Fecha de inicio" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 #, python-format msgid "Please define cost unit for this employee." -msgstr "" +msgstr "Por favor, defina la unidad de coste para este empleado." #. module: hr_timesheet #: help:hr.employee,product_id:0 @@ -295,6 +323,8 @@ msgid "" "No analytic account is defined on the project.\n" "Please set one or we cannot automatically fill the timesheet." msgstr "" +"No se ha definido una cuenta analítica para este proyecto.\n" +"Por favor establezca una o no se podrá rellenar automática el parte de horas." #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -308,6 +338,9 @@ msgid "" "No 'Analytic Journal' is defined for employee %s \n" "Define an employee for the selected user and assign an 'Analytic Journal'!" msgstr "" +"No se ha definido un diario analítico para el empleado %s.\n" +"¡Defina un empleado para el usuario seleccionado y asígnele un diario " +"analítico!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:41 @@ -349,7 +382,7 @@ msgstr "Descripción del trabajo" #: view:hr.sign.in.project:0 #: view:hr.sign.out.project:0 msgid "or" -msgstr "" +msgstr "o" #. module: hr_timesheet #: xsl:hr.analytical.timesheet:0 @@ -420,6 +453,8 @@ msgid "" "No analytic journal defined for '%s'.\n" "You should assign an analytic journal on the employee form." msgstr "" +"No se ha definido un diario analítico para '%s'.\n" +"Debería asignar un diario analítico en el formulario de empleado." #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:41 @@ -434,7 +469,7 @@ msgstr "Junio" #: field:hr.sign.in.project,state:0 #: field:hr.sign.out.project,state:0 msgid "Current Status" -msgstr "" +msgstr "Estado actual" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -500,7 +535,7 @@ msgstr "ID empleado" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 msgid "Period" -msgstr "" +msgstr "Periodo" #. module: hr_timesheet #: view:hr.sign.out.project:0 @@ -614,6 +649,8 @@ msgid "" "Please create an employee for this user, using the menu: Human Resources > " "Employees." msgstr "" +"Por favor, cree un empleado para este usuario, usando el menú: Recursos " +"humanos > Empleados." #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 @@ -643,7 +680,7 @@ msgstr "Abril" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "User Error!" -msgstr "" +msgstr "¡Error de usuario!" #. module: hr_timesheet #: view:hr.sign.in.project:0 @@ -659,7 +696,7 @@ msgstr "Año" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Duration" -msgstr "" +msgstr "Duración" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 diff --git a/addons/hr_timesheet/i18n/it.po b/addons/hr_timesheet/i18n/it.po index 6393abc6f7f..6b8d1dcb64d 100644 --- a/addons/hr_timesheet/i18n/it.po +++ b/addons/hr_timesheet/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-10 17:21+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 08:27+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:33+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.act_analytic_cost_revenue @@ -75,7 +75,7 @@ msgstr "" #. module: hr_timesheet #: field:hr.employee,uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unità di misura" #. module: hr_timesheet #: field:hr.employee,journal_id:0 @@ -103,7 +103,7 @@ msgstr "Timesheet" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Please define employee for this user!" -msgstr "" +msgstr "Prego definire l'impiegato per questo utente!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -129,7 +129,7 @@ msgstr "Ven" #: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form #: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours msgid "Timesheet Activities" -msgstr "" +msgstr "Attività timesheet" #. module: hr_timesheet #: field:hr.sign.out.project,analytic_amount:0 @@ -166,12 +166,12 @@ msgstr "Stampa i timesheet degli impiegati" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "Please define employee for your user." -msgstr "" +msgstr "Prego definire l'impiegato per questo utente." #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.act_analytic_cost_revenue msgid "Costs & Revenues" -msgstr "" +msgstr "Costi e ricavi" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -188,7 +188,7 @@ msgstr "Contabilità Analitica" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Costs and Revenues" -msgstr "" +msgstr "Costi e ricavi" #. module: hr_timesheet #: code:addons/hr_timesheet/hr_timesheet.py:141 @@ -198,7 +198,7 @@ msgstr "" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Warning!" -msgstr "" +msgstr "Attenzione!" #. module: hr_timesheet #: field:hr.analytic.timesheet,partner_id:0 @@ -254,7 +254,7 @@ msgstr "Stampa" #. module: hr_timesheet #: help:account.analytic.account,use_timesheets:0 msgid "Check this field if this project manages timesheets" -msgstr "" +msgstr "Spuntare questo campo se questo progetto gestisce timesheet" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 @@ -280,7 +280,7 @@ msgstr "Data di inizio" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 #, python-format msgid "Please define cost unit for this employee." -msgstr "" +msgstr "Prego definire il costo unitario per questo impiegato." #. module: hr_timesheet #: help:hr.employee,product_id:0 @@ -295,6 +295,9 @@ msgid "" "No analytic account is defined on the project.\n" "Please set one or we cannot automatically fill the timesheet." msgstr "" +"Nessun conto analitico definito sul progetto.\n" +"Prego impostatelo altrimenti non è possibile la compilazione automatica del " +"timesheet." #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -308,6 +311,9 @@ msgid "" "No 'Analytic Journal' is defined for employee %s \n" "Define an employee for the selected user and assign an 'Analytic Journal'!" msgstr "" +"Nessun 'Giornale analitico' definito per l'impiegato: %s \n" +"Impostare un impiegato per l'utente selezionato e assegnare un 'Giornale " +"analitico'!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:41 @@ -349,12 +355,12 @@ msgstr "Descrizione Lavoro" #: view:hr.sign.in.project:0 #: view:hr.sign.out.project:0 msgid "or" -msgstr "" +msgstr "o" #. module: hr_timesheet #: xsl:hr.analytical.timesheet:0 msgid "Timesheet by Employee" -msgstr "" +msgstr "Timesheet per impiegato" #. module: hr_timesheet #: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet @@ -420,6 +426,8 @@ msgid "" "No analytic journal defined for '%s'.\n" "You should assign an analytic journal on the employee form." msgstr "" +"Nessun 'Giornale analitico' definito per: %s \n" +"Dovreste assegnare un giornale analitico nel form impiegato" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:41 @@ -434,7 +442,7 @@ msgstr "Giugno" #: field:hr.sign.in.project,state:0 #: field:hr.sign.out.project,state:0 msgid "Current Status" -msgstr "" +msgstr "Stato Attuale" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -500,7 +508,7 @@ msgstr "ID impiegato" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 msgid "Period" -msgstr "" +msgstr "Periodo" #. module: hr_timesheet #: view:hr.sign.out.project:0 @@ -614,6 +622,8 @@ msgid "" "Please create an employee for this user, using the menu: Human Resources > " "Employees." msgstr "" +"Prego creare un impiegato per questo utente, usando il menù: Risorse umane > " +"Impiegati." #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 @@ -643,7 +653,7 @@ msgstr "Aprile" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "User Error!" -msgstr "" +msgstr "Errore Utente!" #. module: hr_timesheet #: view:hr.sign.in.project:0 @@ -659,7 +669,7 @@ msgstr "Anno" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Duration" -msgstr "" +msgstr "Durata" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 diff --git a/addons/hr_timesheet/i18n/pt.po b/addons/hr_timesheet/i18n/pt.po index df72c727d8c..c72773802bc 100644 --- a/addons/hr_timesheet/i18n/pt.po +++ b/addons/hr_timesheet/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2010-12-15 14:57+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 17:29+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:33+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.act_analytic_cost_revenue @@ -75,7 +75,7 @@ msgstr "" #. module: hr_timesheet #: field:hr.employee,uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unidade de medida" #. module: hr_timesheet #: field:hr.employee,journal_id:0 @@ -103,7 +103,7 @@ msgstr "Folha de Horas" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Please define employee for this user!" -msgstr "" +msgstr "Por favor, defina um empregado para este utilizador!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -166,7 +166,7 @@ msgstr "Imprimir Folha de Horas dos Funcionários" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "Please define employee for your user." -msgstr "" +msgstr "Por favor, defina um empregado para o seu utilizador." #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.act_analytic_cost_revenue @@ -198,7 +198,7 @@ msgstr "" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Warning!" -msgstr "" +msgstr "Aviso!" #. module: hr_timesheet #: field:hr.analytic.timesheet,partner_id:0 @@ -349,7 +349,7 @@ msgstr "Descrição do Trabalho" #: view:hr.sign.in.project:0 #: view:hr.sign.out.project:0 msgid "or" -msgstr "" +msgstr "ou" #. module: hr_timesheet #: xsl:hr.analytical.timesheet:0 @@ -501,7 +501,7 @@ msgstr "ID do Funcionário" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 msgid "Period" -msgstr "" +msgstr "Período" #. module: hr_timesheet #: view:hr.sign.out.project:0 @@ -660,7 +660,7 @@ msgstr "Ano" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Duration" -msgstr "" +msgstr "Duração" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 diff --git a/addons/hr_timesheet_invoice/i18n/es.po b/addons/hr_timesheet_invoice/i18n/es.po index 0092cc9140e..f80e63e3ba7 100644 --- a/addons/hr_timesheet_invoice/i18n/es.po +++ b/addons/hr_timesheet_invoice/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-01-18 09:11+0000\n" -"Last-Translator: Borja López Soilán (NeoPolus) \n" +"PO-Revision-Date: 2012-12-11 15:28+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-12-04 05:36+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -25,7 +25,7 @@ msgstr "Hoja de servicios por usuario" #. module: hr_timesheet_invoice #: field:hr_timesheet_invoice.factor,name:0 msgid "Internal Name" -msgstr "" +msgstr "Nombre interno" #. module: hr_timesheet_invoice #: view:hr_timesheet_invoice.factor:0 @@ -38,18 +38,20 @@ msgid "" "The product to invoice is defined on the employee form, the price will be " "deducted by this pricelist on the product." msgstr "" +"El producto a facturar se define en el formulario de empleado, el precio " +"será deducido de la tarifa del producto." #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 #, python-format msgid "No record(s) found for this report." -msgstr "" +msgstr "No se han encontrado registros para este informe." #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 #, python-format msgid "Insufficient Data!" -msgstr "" +msgstr "¡Datos insuficientes!" #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -69,7 +71,7 @@ msgstr "Ingreso" #. module: hr_timesheet_invoice #: field:hr.timesheet.invoice.create.final,name:0 msgid "Log of Activity" -msgstr "" +msgstr "Registro de actividad" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 @@ -79,7 +81,7 @@ msgstr "Reabrir proyecto" #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,product_uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unidad de medida" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_user @@ -103,6 +105,10 @@ msgid "" "20% advance invoice (fixed price, based on a sale order), you should invoice " "the rest on timesheet with a 80% ratio." msgstr "" +"Normalmente se factura el 100% de los partes de horas. Pero si mezcla precio " +"fijo y facturación por tiempos, podría utilizar otro ratio. Por ejemplo, si " +"realizar un 20% de avance de factura (precio fijo, basado en el pedido de " +"venta), debería facturar el resto basado en tiempos con un 80% de ratio." #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 @@ -142,6 +148,8 @@ msgid "" "Fill this field only if you want to force to use a specific product. Keep " "empty to use the real product that comes from the cost." msgstr "" +"Rellene este campo sólo si quiere forzar a usar un producto específico. " +"Déjelo vacío para usar el producto real que proviene de los costes." #. module: hr_timesheet_invoice #: model:ir.actions.act_window,help:hr_timesheet_invoice.action_hr_timesheet_invoice_factor_form @@ -159,6 +167,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Pulse para añadir un nuevo tipo de facturación.\n" +"

\n" +"OpenERP le permite crear tipo de facturación por defecto. Usted debe asignar " +"regularmente descuentos debido a contratos o acuerdos específicos con un " +"cliente. Desde este menú, podrá crear tipos de facturación específicos para " +"acelerar su facturación.\n" +"

\n" +" " #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -179,7 +196,7 @@ msgstr "Importe facturado" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:209 #, python-format msgid "Analytic Account incomplete !" -msgstr "" +msgstr "¡Cuenta analítica incompleta!" #. module: hr_timesheet_invoice #: field:report_timesheet.invoice,account_id:0 @@ -191,7 +208,7 @@ msgstr "Proyecto" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:254 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,amount:0 @@ -207,12 +224,12 @@ msgstr "El detalle de cada trabajo realizado se mostrará en la factura" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:116 #, python-format msgid "Contract has been set as pending." -msgstr "" +msgstr "Los contratos se han establecido como pendientes." #. module: hr_timesheet_invoice #: field:account.analytic.account,pricelist_id:0 msgid "Pricelist" -msgstr "" +msgstr "Tarifa" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create @@ -257,7 +274,7 @@ msgstr "Fecha límite" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:267 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "¡Error de configuración!" #. module: hr_timesheet_invoice #: field:report.analytic.account.close,partner_id:0 @@ -272,7 +289,7 @@ msgstr "El tiempo de cada trabajo realizado se mostrará en la factura" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Cancel Contract" -msgstr "" +msgstr "Cancelar contrato" #. module: hr_timesheet_invoice #: field:hr.timesheet.analytic.profit,date_from:0 @@ -294,7 +311,7 @@ msgstr "Costos a facturar" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:267 #, python-format msgid "Please define income account for product '%s'." -msgstr "" +msgstr "Por favor defina una cuenta de ingresos para el producto '%s'." #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,account_id:0 @@ -342,7 +359,7 @@ msgstr "A facturar" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:98 #, python-format msgid "Contract has been closed." -msgstr "" +msgstr "El contrato ha sido cerrado." #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 @@ -355,12 +372,12 @@ msgstr "Beneficio hoja servicios" #. module: hr_timesheet_invoice #: field:hr.timesheet.invoice.create,product:0 msgid "Force Product" -msgstr "" +msgstr "Forzar producto" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Contract Finished" -msgstr "" +msgstr "Contrato finalizado" #. module: hr_timesheet_invoice #: selection:report.account.analytic.line.to.invoice,month:0 @@ -374,13 +391,13 @@ msgstr "Julio" #. module: hr_timesheet_invoice #: field:account.analytic.line,to_invoice:0 msgid "Invoiceable" -msgstr "" +msgstr "Facturable" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:56 #, python-format msgid "Warning!" -msgstr "" +msgstr "¡Advertencia!" #. module: hr_timesheet_invoice #: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_invoice_factor_form @@ -396,7 +413,7 @@ msgstr "Teórico" #. module: hr_timesheet_invoice #: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor3 msgid "Free of charge" -msgstr "" +msgstr "Gratis" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_account_analytic_line_to_invoice @@ -427,7 +444,7 @@ msgstr "Sí (100%)" #. module: hr_timesheet_invoice #: view:report_timesheet.user:0 msgid "Timesheet by users" -msgstr "" +msgstr "Partes de horas por usuarios" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py:58 @@ -625,7 +642,7 @@ msgstr "Fecha" #. module: hr_timesheet_invoice #: model:mail.message.subtype,name:hr_timesheet_invoice.mt_account_closed msgid "finished" -msgstr "" +msgstr "finalizado" #. module: hr_timesheet_invoice #: field:report.timesheet.line,quantity:0 @@ -634,7 +651,7 @@ msgstr "" #: field:report_timesheet.invoice,quantity:0 #: field:report_timesheet.user,quantity:0 msgid "Time" -msgstr "" +msgstr "Tiempo" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create_final @@ -660,7 +677,7 @@ msgstr "Cuenta general" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Invoice on Timesheets Options" -msgstr "" +msgstr "Opciones de factura sobre tiempos" #. module: hr_timesheet_invoice #: report:account.analytic.profit:0 @@ -670,7 +687,7 @@ msgstr "Totales:" #. module: hr_timesheet_invoice #: model:mail.message.subtype,name:hr_timesheet_invoice.mt_account_canceled msgid "canceled" -msgstr "" +msgstr "cancelado" #. module: hr_timesheet_invoice #: help:account.analytic.line,to_invoice:0 @@ -678,6 +695,8 @@ msgid "" "It allows to set the discount while making invoice, keep empty if the " "activities should not be invoiced." msgstr "" +"Permite establecer el descuento al realizar una factura. Déjelo en blanco si " +"las actividades no debe ser facturadas." #. module: hr_timesheet_invoice #: field:account.analytic.account,amount_max:0 @@ -687,7 +706,7 @@ msgstr "Precio máx. factura" #. module: hr_timesheet_invoice #: field:account.analytic.account,to_invoice:0 msgid "Timesheet Invoicing Ratio" -msgstr "" +msgstr "Ratio de facturación por tiempos" #. module: hr_timesheet_invoice #: selection:report.account.analytic.line.to.invoice,month:0 @@ -738,7 +757,7 @@ msgstr "Hasta" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create:0 msgid "Do you want to show details of work in invoice?" -msgstr "" +msgstr "¿Desea mostrar los detalles de los trabajos en la factura?" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create:0 @@ -772,7 +791,7 @@ msgstr "Hojas de servicios a facturar" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:104 #, python-format msgid "Contract has been canceled." -msgstr "" +msgstr "El contrato ha sido cancelado" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:210 @@ -780,6 +799,7 @@ msgstr "" msgid "" "Contract incomplete. Please fill in the Customer and Pricelist fields." msgstr "" +"Contrato incompleto. Por favor complete los campos de cliente y tarifa." #. module: hr_timesheet_invoice #: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_account_date_stat_all @@ -827,12 +847,12 @@ msgstr "El producto que se utilizará para facturar el importe restante." #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:110 #, python-format msgid "Contract has been opened." -msgstr "" +msgstr "El contrato ha sido abierto" #. module: hr_timesheet_invoice #: field:hr.timesheet.invoice.create.final,time:0 msgid "Time Spent" -msgstr "" +msgstr "Tiempo empleado" #. module: hr_timesheet_invoice #: help:account.analytic.account,amount_max:0 @@ -843,7 +863,7 @@ msgstr "" #. module: hr_timesheet_invoice #: view:hr.timesheet.invoice.create.final:0 msgid "Do you want to show details of each activity to your customer?" -msgstr "" +msgstr "¿Quiere mostrar los detalles de cada actividad a su cliente?" #. module: hr_timesheet_invoice #: view:report_timesheet.invoice:0 @@ -872,7 +892,7 @@ msgstr "Nombre" #. module: hr_timesheet_invoice #: view:report.account.analytic.line.to.invoice:0 msgid "Analytic Lines" -msgstr "" +msgstr "Líneas analíticas" #. module: hr_timesheet_invoice #: view:report_timesheet.account.date:0 @@ -910,6 +930,8 @@ msgid "" "There is no product defined. Please select one or force the product through " "the wizard." msgstr "" +"No hay producto definido. Seleccione por favor uno o fuerce el producto a " +"través del asistente." #. module: hr_timesheet_invoice #: help:hr_timesheet_invoice.factor,factor:0 @@ -942,14 +964,14 @@ msgstr "Líneas analíticas para facturar" #. module: hr_timesheet_invoice #: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor4 msgid "80%" -msgstr "" +msgstr "80%" #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 #: view:hr.timesheet.invoice.create:0 #: view:hr.timesheet.invoice.create.final:0 msgid "or" -msgstr "" +msgstr "o" #. module: hr_timesheet_invoice #: field:report_timesheet.invoice,manager_id:0 @@ -979,7 +1001,7 @@ msgstr "Año" #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 msgid "Duration" -msgstr "" +msgstr "Duración" #~ msgid "%" #~ msgstr "%" diff --git a/addons/hr_timesheet_sheet/i18n/es.po b/addons/hr_timesheet_sheet/i18n/es.po index cc4687d7030..b3055ad615a 100644 --- a/addons/hr_timesheet_sheet/i18n/es.po +++ b/addons/hr_timesheet_sheet/i18n/es.po @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-01-18 11:11+0000\n" -"Last-Translator: Jordi Esteve (www.zikzakmedia.com) " -"\n" +"PO-Revision-Date: 2012-12-11 15:13+0000\n" +"Last-Translator: Pedro Manuel Baeza \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: 2012-12-04 05:36+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_timesheet_sheet #: field:hr.analytic.timesheet,sheet_id:0 @@ -34,7 +33,7 @@ msgstr "Servicio" #: field:hr.timesheet.report,quantity:0 #: field:timesheet.report,quantity:0 msgid "Time" -msgstr "" +msgstr "Tiempo" #. module: hr_timesheet_sheet #: help:hr.config.settings,timesheet_max_difference:0 @@ -43,6 +42,9 @@ msgid "" " computation for one sheet. Set this to 0 if you do not want " "any control." msgstr "" +"Diferencia permitida en horas entre los registros de entrada y de salida y " +"el cálculo del parte de horas para un parte. Establézcalo a 0 si no quiere " +"ningún control." #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -77,6 +79,8 @@ msgid "" "In order to create a timesheet for this employee, you must assign an " "analytic journal to the employee, like 'Timesheet Journal'." msgstr "" +"Para crear un parte de horas para este empleado, debe asignar un diario " +"analítico al empleado, como por ejemplo 'Diario de partes de horas'." #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -93,7 +97,7 @@ msgstr "#Coste" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensajes sin leer" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -123,7 +127,7 @@ msgstr "Cambiar a borrador" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Timesheet Period" -msgstr "" +msgstr "Periodo del parte de horas" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,date_to:0 @@ -134,7 +138,7 @@ msgstr "Fecha hasta" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "to" -msgstr "" +msgstr "a" #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_invoiceonwork0 @@ -146,7 +150,7 @@ msgstr "Basado en la hoja de asistencia" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:384 #, python-format msgid "You cannot modify an entry in a confirmed timesheet." -msgstr "" +msgstr "No puede modificar una entrada en un parte de horas confirmado." #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -189,13 +193,13 @@ msgstr "Rechazar" #: view:hr_timesheet_sheet.sheet:0 #: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet msgid "Timesheet Activities" -msgstr "" +msgstr "Actividades del parte de horas" #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:38 #, python-format msgid "Please create an employee and associate it with this user." -msgstr "" +msgstr "Por favor, cree un empleado y asócielo con este usuario." #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:388 @@ -204,12 +208,14 @@ msgstr "" msgid "" "You cannot enter an attendance date outside the current timesheet dates." msgstr "" +"No puede introducir una fecha de asistencia fuera de las fechas del parte de " +"horas actual." #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:205 #, python-format msgid "Week " -msgstr "" +msgstr "Semana " #. module: hr_timesheet_sheet #: model:ir.actions.act_window,help:hr_timesheet_sheet.action_hr_timesheet_current_open @@ -232,7 +238,7 @@ msgstr "" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensajes" #. module: hr_timesheet_sheet #: help:hr_timesheet_sheet.sheet,state:0 @@ -244,6 +250,12 @@ msgid "" "* The 'Done' status is used when users timesheet is accepted by his/her " "senior." msgstr "" +" Se usa el estado 'Borrador' cuando un usuario está introduciendo un parte " +"de horas nuevo aún sin confirmar.\n" +"El estado 'Confirmado' se establece cuando el usuario confirma el parte de " +"horas.\n" +"El estado 'Realizado' se establece cuando el responsable acepta el parte de " +"horas." #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:64 @@ -258,13 +270,15 @@ msgstr "" #: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:38 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: hr_timesheet_sheet #: field:hr.config.settings,timesheet_max_difference:0 msgid "" "Allow a difference of time between timesheets and attendances of (in hours)" msgstr "" +"Permitir una diferencia de tiempo entre el parte de horas y las asistencia " +"de (en horas)" #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:99 @@ -272,6 +286,7 @@ msgstr "" msgid "" "Please verify that the total difference of the sheet is lower than %.2f." msgstr "" +"Por favor, verifique que la diferencia total del parte es menor que %.2f." #. module: hr_timesheet_sheet #: model:ir.actions.act_window,name:hr_timesheet_sheet.action_timesheet_report_stat_all @@ -292,7 +307,7 @@ msgstr "Validación" #. module: hr_timesheet_sheet #: help:hr_timesheet_sheet.sheet,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si está marcado, hay nuevos mensajes que requieren su atención" #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:69 @@ -302,6 +317,7 @@ msgid "" "In order to create a timesheet for this employee, you must assign it to a " "user." msgstr "" +"Para crear un parte de horas para este empleado, debe asignarlo a un usuario." #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_attendance0 @@ -313,7 +329,7 @@ msgstr "Entrada de hojas de asistencia del empleado" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:215 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "¡Acción no válida!" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -329,6 +345,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene " +"directamente en formato HTML para poder ser insertado en las vistas kanban." #. module: hr_timesheet_sheet #: field:timesheet.report,nbr:0 @@ -376,7 +394,7 @@ msgstr "Líneas hoja de servicios" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Seguidores" #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_confirmedtimesheet0 @@ -408,7 +426,7 @@ msgstr "Tiempo total" #: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_form #: model:ir.ui.menu,name:hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form msgid "Timesheets to Validate" -msgstr "" +msgstr "Partes de horas a validar" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -436,14 +454,14 @@ msgstr "Julio" #. module: hr_timesheet_sheet #: field:hr.config.settings,timesheet_range:0 msgid "Validate timesheets every" -msgstr "" +msgstr "Validar partes de hora cada" #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:73 #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:86 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "¡Error de configuración!" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,state:0 @@ -507,6 +525,8 @@ msgid "" "In order to create a timesheet for this employee, you must link the employee " "to a product, like 'Consultant'." msgstr "" +"Para crear un parte de horas para este empleado, debe enlazar el empleado a " +"un producto, como 'Hora consultor'." #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -558,6 +578,8 @@ msgid "" "In order to create a timesheet for this employee, you must link the employee " "to a product." msgstr "" +"Para crear un parte de horas para este empleado, debe enlazar el empleado a " +"un producto." #. module: hr_timesheet_sheet #. openerp-web @@ -566,12 +588,12 @@ msgstr "" msgid "" "You will be able to register your working hours and\n" " activities." -msgstr "" +msgstr "Podrá registrar las horas trabajadas y las actividades." #. module: hr_timesheet_sheet #: view:hr.timesheet.current.open:0 msgid "or" -msgstr "" +msgstr "o" #. module: hr_timesheet_sheet #: model:process.transition,name:hr_timesheet_sheet.process_transition_invoiceontimesheet0 @@ -597,7 +619,7 @@ msgstr "Nota" #: code:addons/hr_timesheet_sheet/static/src/xml/timesheet.xml:33 #, python-format msgid "Add" -msgstr "" +msgstr "Añadir" #. module: hr_timesheet_sheet #: view:timesheet.report:0 @@ -636,11 +658,22 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Nuevo parte de horas a aprobar.\n" +"

\n" +"Debe registrar los partes de horas cada día y confirmarlos al final de la " +"semana. Una vez el parte de horas esté confirmado, debe ser validado por un " +"responsable.\n" +"

\n" +"Los partes de horas también pueden ser facturados a los clientes, " +"dependiendo de la configuración del contrato relativo a cada proyecto.\n" +"

\n" +" " #. module: hr_timesheet_sheet #: model:ir.model,name:hr_timesheet_sheet.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Línea analítica" #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -651,7 +684,7 @@ msgstr "Agosto" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Differences" -msgstr "" +msgstr "Diferencias" #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -679,7 +712,7 @@ msgstr "Hojas de asistencia por periodo" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Es un seguidor." #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -723,7 +756,7 @@ msgstr "Rango hoja de asistencia" #: field:hr_timesheet_sheet.sheet,message_comment_ids:0 #: help:hr_timesheet_sheet.sheet,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentarios y correos" #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -738,6 +771,8 @@ msgid "" "The timesheet cannot be validated as it does not contain an equal number of " "sign ins and sign outs." msgstr "" +"No se puede validar el parte de horas, ya que no contiene el mismo número de " +"registros de entrada y de salida." #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -766,6 +801,7 @@ msgstr "Resumen" #, python-format msgid "You cannot delete a timesheet which have attendance entries." msgstr "" +"No se puede borrar un parte de horas que tenga entradas de asistencia." #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 @@ -779,11 +815,13 @@ msgid "" "You cannot have 2 timesheets that overlap!\n" "You should use the menu 'My Timesheet' to avoid this problem." msgstr "" +"¡No puede tener 2 partes de horas que se solapen!\n" +"Debería usar el menú 'Mi parte de horas' para evitar este problema." #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Submit to Manager" -msgstr "" +msgstr "Enviar al responsable" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -808,7 +846,7 @@ msgstr "Buscar Cuenta" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:415 #, python-format msgid "You cannot modify an entry in a confirmed timesheet" -msgstr "" +msgstr "No puede modificar una entrada en un parte de horas confirmado." #. module: hr_timesheet_sheet #: help:res.company,timesheet_max_difference:0 @@ -842,6 +880,8 @@ msgid "" "You cannot have 2 timesheets that overlap!\n" "Please use the menu 'My Current Timesheet' to avoid this problem." msgstr "" +"¡No puede tener 2 partes de horas que se solapen!\n" +"Debería usar el menú 'Mi parte de horas actual' para evitar este problema." #. module: hr_timesheet_sheet #: view:hr.timesheet.current.open:0 @@ -898,7 +938,7 @@ msgstr "Agrupar por año de la fecha" #: code:addons/hr_timesheet_sheet/static/src/xml/timesheet.xml:56 #, python-format msgid "Click to add projects, contracts or analytic accounts." -msgstr "" +msgstr "Pulse para añadir proyectos, contratos o cuentas analíticas." #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_validatedtimesheet0 @@ -908,7 +948,7 @@ msgstr "El estado es 'validado'" #. module: hr_timesheet_sheet #: model:ir.model,name:hr_timesheet_sheet.model_hr_config_settings msgid "hr.config.settings" -msgstr "" +msgstr "Parámetros de configuración de RRHH" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -930,7 +970,7 @@ msgstr "Partes de horas confirmados" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Details" -msgstr "" +msgstr "Detalles" #. module: hr_timesheet_sheet #: model:ir.model,name:hr_timesheet_sheet.model_hr_analytic_timesheet @@ -941,7 +981,7 @@ msgstr "Línea hoja de servicios" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:213 #, python-format msgid "You cannot delete a timesheet which is already confirmed." -msgstr "" +msgstr "No puede eliminar un parte de horas que ya está confirmado." #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -1000,7 +1040,7 @@ msgstr "Asistencias totales" #: code:addons/hr_timesheet_sheet/static/src/xml/timesheet.xml:39 #, python-format msgid "Add a Line" -msgstr "" +msgstr "Añadir una línea" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,total_difference:0 @@ -1012,7 +1052,7 @@ msgstr "Diferencia" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:64 #, python-format msgid "You cannot duplicate a timesheet." -msgstr "" +msgstr "No puede duplicar un parte de horas" #. module: hr_timesheet_sheet #: selection:hr_timesheet_sheet.sheet,state_attendance:0 @@ -1037,6 +1077,13 @@ msgid "" "

\n" " " msgstr "" +"

\n" +"Este informe realiza un análisis sobre los partes de horas creados en el " +"sistema por sus empleados. Permite tener una vista general de las entradas " +"realizadas por sus empleados. Puede agruparlas por un criterio específico de " +"selección gracias a la herramienta de búsqueda.\n" +"

\n" +" " #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 @@ -1047,6 +1094,7 @@ msgstr "Empleados" #: constraint:hr.analytic.timesheet:0 msgid "You cannot modify an entry in a Confirmed/Done timesheet !" msgstr "" +"¡No puede modificar una entrada en un parte de horas confirmado/realizado!" #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_timesheet0 @@ -1068,7 +1116,7 @@ msgstr "Confirmación" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:99 #, python-format msgid "Warning!" -msgstr "" +msgstr "¡Advertencia!" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet.account,invoice_rate:0 @@ -1080,7 +1128,7 @@ msgstr "Tasa factura" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:408 #, python-format msgid "User Error!" -msgstr "" +msgstr "¡Error de usuario!" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet.day:0 @@ -1095,7 +1143,7 @@ msgstr "Aprobar" #. module: hr_timesheet_sheet #: help:hr_timesheet_sheet.sheet,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Mensajes e historial de comunicación" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,account_ids:0 diff --git a/addons/hr_timesheet_sheet/i18n/hr.po b/addons/hr_timesheet_sheet/i18n/hr.po index ebed806d043..c8ce46445c4 100644 --- a/addons/hr_timesheet_sheet/i18n/hr.po +++ b/addons/hr_timesheet_sheet/i18n/hr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-12-19 17:23+0000\n" +"PO-Revision-Date: 2012-12-11 15:33+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: 2012-12-04 05:36+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: hr_timesheet_sheet #: field:hr.analytic.timesheet,sheet_id:0 @@ -33,7 +33,7 @@ msgstr "Usluga" #: field:hr.timesheet.report,quantity:0 #: field:timesheet.report,quantity:0 msgid "Time" -msgstr "" +msgstr "Vrijeme" #. module: hr_timesheet_sheet #: help:hr.config.settings,timesheet_max_difference:0 @@ -53,7 +53,7 @@ msgstr "Grupiraj po..." #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,total_attendance:0 msgid "Total Attendance" -msgstr "" +msgstr "Ukupna prisutnost" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 @@ -87,12 +87,12 @@ msgstr "Ožujak" #: view:timesheet.report:0 #: field:timesheet.report,cost:0 msgid "#Cost" -msgstr "" +msgstr "#Trošak" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Nepročitane poruke" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -128,12 +128,12 @@ msgstr "" #: field:hr_timesheet_sheet.sheet,date_to:0 #: field:timesheet.report,date_to:0 msgid "Date to" -msgstr "" +msgstr "Datum do" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "to" -msgstr "" +msgstr "do" #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_invoiceonwork0 @@ -151,7 +151,7 @@ msgstr "" #: view:hr.timesheet.report:0 #: view:timesheet.report:0 msgid "Group by day of date" -msgstr "" +msgstr "Grupiraj po danu u tjednu" #. module: hr_timesheet_sheet #: model:ir.ui.menu,name:hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form_my_current @@ -166,7 +166,7 @@ msgstr "Potvrdi" #. module: hr_timesheet_sheet #: selection:hr_timesheet_sheet.sheet,state:0 msgid "Approved" -msgstr "" +msgstr "Odobreno" #. module: hr_timesheet_sheet #: selection:hr_timesheet_sheet.sheet,state_attendance:0 @@ -208,7 +208,7 @@ msgstr "" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:205 #, python-format msgid "Week " -msgstr "" +msgstr "Tjedan " #. module: hr_timesheet_sheet #: model:ir.actions.act_window,help:hr_timesheet_sheet.action_hr_timesheet_current_open @@ -224,7 +224,7 @@ msgstr "" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Poruke" #. module: hr_timesheet_sheet #: help:hr_timesheet_sheet.sheet,state:0 @@ -250,7 +250,7 @@ msgstr "" #: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:38 #, python-format msgid "Error!" -msgstr "" +msgstr "Greška!" #. module: hr_timesheet_sheet #: field:hr.config.settings,timesheet_max_difference:0 @@ -274,7 +274,7 @@ msgstr "" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet.account,name:0 msgid "Project / Analytic Account" -msgstr "" +msgstr "Projekt / Analitički konto" #. module: hr_timesheet_sheet #: model:process.transition,name:hr_timesheet_sheet.process_transition_validatetimesheet0 @@ -325,13 +325,13 @@ msgstr "" #. module: hr_timesheet_sheet #: field:timesheet.report,nbr:0 msgid "#Nbr" -msgstr "" +msgstr "#Br" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,date_from:0 #: field:timesheet.report,date_from:0 msgid "Date from" -msgstr "" +msgstr "Datum od" #. module: hr_timesheet_sheet #: view:hr.employee:0 @@ -353,7 +353,7 @@ msgstr "" #: model:ir.model,name:hr_timesheet_sheet.model_hr_attendance #: model:process.node,name:hr_timesheet_sheet.process_node_attendance0 msgid "Attendance" -msgstr "" +msgstr "Prisutnost" #. module: hr_timesheet_sheet #: model:process.transition.action,name:hr_timesheet_sheet.process_transition_action_draftconfirmtimesheet0 @@ -389,7 +389,7 @@ msgstr "" #. module: hr_timesheet_sheet #: model:ir.actions.act_window,name:hr_timesheet_sheet.action_week_attendance_graph msgid "My Total Attendances By Week" -msgstr "" +msgstr "Moja prisutnost po tjednima" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet.account,total:0 diff --git a/addons/knowledge/i18n/es.po b/addons/knowledge/i18n/es.po index 3388454c68a..f744b32be17 100644 --- a/addons/knowledge/i18n/es.po +++ b/addons/knowledge/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:53+0000\n" -"PO-Revision-Date: 2012-12-10 21:52+0000\n" -"Last-Translator: lambdasoftware \n" +"PO-Revision-Date: 2012-12-11 14:37+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: knowledge #: view:knowledge.config.settings:0 @@ -25,7 +25,7 @@ msgstr "Documentos" #. module: knowledge #: model:ir.model,name:knowledge.model_knowledge_config_settings msgid "knowledge.config.settings" -msgstr "" +msgstr "Parámetros de configuración de la base de conocimiento" #. module: knowledge #: help:knowledge.config.settings,module_document_webdav:0 @@ -33,13 +33,13 @@ msgid "" "Access your documents in OpenERP through WebDAV.\n" " This installs the module document_webdav." msgstr "" -"Accede a tus documentos de OpenERP a través de WebDAV\n" -" Esto instalará el módulo document_webdav." +"Acceda a sus documentos de OpenERP a través de WebDAV\n" +"Esto instalará el módulo 'document_webdav'." #. module: knowledge #: help:knowledge.config.settings,module_document_page:0 msgid "This installs the module document_page." -msgstr "" +msgstr "Esto instala el módulo 'document_page'." #. module: knowledge #: model:ir.ui.menu,name:knowledge.menu_document2 @@ -50,12 +50,12 @@ msgstr "Contenido colaborativo" #: model:ir.actions.act_window,name:knowledge.action_knowledge_configuration #: view:knowledge.config.settings:0 msgid "Configure Knowledge" -msgstr "" +msgstr "Configurar base de conocimiento" #. module: knowledge #: view:knowledge.config.settings:0 msgid "Knowledge and Documents Management" -msgstr "" +msgstr "Gestión de documentos y de la base de conocimiento" #. module: knowledge #: help:knowledge.config.settings,module_document:0 @@ -65,16 +65,20 @@ msgid "" "and a document dashboard.\n" " This installs the module document." msgstr "" +"Completo sistema de administración de documentos, con: autenticación de " +"usuario, búsqueda completa en documentos (aunque los tipos de documento pptx " +"y docx no están soportados), y un tablero de documentos.\n" +"Esto instala el módulo 'document'." #. module: knowledge #: field:knowledge.config.settings,module_document_page:0 msgid "Create static web pages" -msgstr "" +msgstr "Crear páginas web estáticas" #. module: knowledge #: field:knowledge.config.settings,module_document_ftp:0 msgid "Share repositories (FTP)" -msgstr "" +msgstr "Repositorios compartidos (FTP)" #. module: knowledge #: field:knowledge.config.settings,module_document:0 @@ -102,6 +106,8 @@ msgid "" "Access your documents in OpenERP through an FTP interface.\n" " This installs the module document_ftp." msgstr "" +"Acceda a sus documentos de OpenERP a través de un interfaz FTP.\n" +"Esto instala el módulo 'document_ftp'." #. module: knowledge #: view:knowledge.config.settings:0 diff --git a/addons/knowledge/i18n/it.po b/addons/knowledge/i18n/it.po index 8c2f618c58e..a7b731b4af6 100644 --- a/addons/knowledge/i18n/it.po +++ b/addons/knowledge/i18n/it.po @@ -8,24 +8,24 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:53+0000\n" -"PO-Revision-Date: 2011-04-23 12:03+0000\n" -"Last-Translator: simone.sandri \n" +"PO-Revision-Date: 2012-12-11 08:30+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-11-25 06:24+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: knowledge #: view:knowledge.config.settings:0 msgid "Documents" -msgstr "" +msgstr "Documenti" #. module: knowledge #: model:ir.model,name:knowledge.model_knowledge_config_settings msgid "knowledge.config.settings" -msgstr "" +msgstr "knowledge.config.settings" #. module: knowledge #: help:knowledge.config.settings,module_document_webdav:0 @@ -48,12 +48,12 @@ msgstr "" #: model:ir.actions.act_window,name:knowledge.action_knowledge_configuration #: view:knowledge.config.settings:0 msgid "Configure Knowledge" -msgstr "" +msgstr "Configura Knowledge" #. module: knowledge #: view:knowledge.config.settings:0 msgid "Knowledge and Documents Management" -msgstr "" +msgstr "Knowledge e Gestione documentale" #. module: knowledge #: help:knowledge.config.settings,module_document:0 @@ -67,12 +67,12 @@ msgstr "" #. module: knowledge #: field:knowledge.config.settings,module_document_page:0 msgid "Create static web pages" -msgstr "" +msgstr "Crea pagine web statiche" #. module: knowledge #: field:knowledge.config.settings,module_document_ftp:0 msgid "Share repositories (FTP)" -msgstr "" +msgstr "Condividi repository (FTP)" #. module: knowledge #: field:knowledge.config.settings,module_document:0 diff --git a/addons/l10n_multilang/i18n/pt.po b/addons/l10n_multilang/i18n/pt.po index d7dc3921df4..2c931c9c90c 100644 --- a/addons/l10n_multilang/i18n/pt.po +++ b/addons/l10n_multilang/i18n/pt.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 01:06+0000\n" -"PO-Revision-Date: 2012-04-23 15:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 15:34+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-30 05:36+0000\n" -"X-Generator: Launchpad (build 16206)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: l10n_multilang #: model:ir.model,name:l10n_multilang.model_account_fiscal_position_template msgid "Template for Fiscal Position" -msgstr "" +msgstr "Modelo de posição fiscal" #. module: l10n_multilang #: sql_constraint:account.account:0 @@ -56,7 +56,7 @@ msgstr "Diário" #. module: l10n_multilang #: model:ir.model,name:l10n_multilang.model_account_chart_template msgid "Templates for Account Chart" -msgstr "" +msgstr "Modelo para lista de contas" #. module: l10n_multilang #: sql_constraint:account.tax:0 @@ -166,9 +166,9 @@ msgstr "Erro! Não pode criar contas analíticas recursivas." #. module: l10n_multilang #: model:ir.model,name:l10n_multilang.model_account_tax_code_template msgid "Tax Code Template" -msgstr "" +msgstr "Modelo de código de imposto" #. module: l10n_multilang #: field:account.chart.template,spoken_languages:0 msgid "Spoken Languages" -msgstr "" +msgstr "Línguas faladas" diff --git a/addons/mail/i18n/es.po b/addons/mail/i18n/es.po index 49bdd72e287..b8ad9788a9d 100644 --- a/addons/mail/i18n/es.po +++ b/addons/mail/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-05-10 18:21+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 21:23+0000\n" +"Last-Translator: lambdasoftware \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:52+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: mail #: field:res.partner,notification_email_send:0 @@ -36,7 +36,7 @@ msgstr "" #: field:mail.compose.message,author_id:0 #: field:mail.message,author_id:0 msgid "Author" -msgstr "" +msgstr "Autor" #. module: mail #: view:mail.mail:0 @@ -51,7 +51,7 @@ msgstr "Destinatarios del mensaje" #. module: mail #: view:mail.message:0 msgid "Comments" -msgstr "" +msgstr "Comentarios" #. module: mail #: view:mail.alias:0 @@ -84,16 +84,18 @@ msgid "" "Invalid expression, it must be a literal python dictionary definition e.g. " "\"{'field': 'value'}\"" msgstr "" +"Expresión invalida, debe ser un diccionario python, por ejemplo \"{'field': " +"'value'}\"" #. module: mail #: view:mail.group:0 msgid "Group Name" -msgstr "" +msgstr "Nombre del grupo" #. module: mail #: selection:mail.group,public:0 msgid "Public" -msgstr "" +msgstr "Público" #. module: mail #: view:mail.mail:0 @@ -116,21 +118,21 @@ msgstr "" #. module: mail #: model:ir.model,name:mail.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "Asistente de redacción de correo electrónico." #. module: mail #: field:mail.group,message_unread:0 #: field:mail.thread,message_unread:0 #: field:res.partner,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensajes sin leer" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:247 #, python-format msgid "show" -msgstr "" +msgstr "mostrar" #. module: mail #: help:mail.message.subtype,default:0 @@ -143,37 +145,40 @@ msgid "" "Members of those groups will automatically added as followers. Note that " "they will be able to manage their subscription manually if necessary." msgstr "" +"Los miembros de estos grupos se añadirán automáticamente como seguidores. " +"Tenga en cuenta que podrán gestionar su suscripción manualmente si es " +"necesario." #. module: mail #. openerp-web #: code:addons/mail/static/src/js/mail.js:778 #, python-format msgid "Do you really want to delete this message?" -msgstr "" +msgstr "¿Realmente desea eliminar este mensaje?" #. module: mail #: view:mail.message:0 #: field:mail.notification,read:0 msgid "Read" -msgstr "" +msgstr "Leer" #. module: mail #: view:mail.group:0 msgid "Search Groups" -msgstr "" +msgstr "Grupos de busqueda" #. module: mail #. openerp-web #: code:addons/mail/static/src/js/mail_followers.js:134 #, python-format msgid "followers" -msgstr "" +msgstr "seguidores" #. module: mail #: code:addons/mail/mail_message.py:646 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Acceso denegado" #. module: mail #: help:mail.group,image_medium:0 @@ -182,6 +187,9 @@ msgid "" "image, with aspect ratio preserved. Use this field in form views or some " "kanban views." msgstr "" +"Foto de tamaño medio del grupo. Automáticamente se redimensionará a " +"128x128px manteniedo el ratio de aspecto. Use este campo en las vista de " +"formulario y kanban." #. module: mail #: view:mail.mail:0 @@ -192,7 +200,7 @@ msgstr "Recibido" #. module: mail #: field:mail.mail,body_html:0 msgid "Rich-text Contents" -msgstr "" +msgstr "Contenido con texto enriquecido" #. module: mail #: view:mail.mail:0 @@ -204,7 +212,7 @@ msgstr "Hilo" #: code:addons/mail/static/src/xml/mail.xml:37 #, python-format msgid "Open the full mail composer" -msgstr "" +msgstr "Abrir" #. module: mail #. openerp-web @@ -216,12 +224,12 @@ msgstr "" #. module: mail #: field:base.config.settings,alias_domain:0 msgid "Alias Domain" -msgstr "" +msgstr "Alias de dominio" #. module: mail #: field:mail.group,group_ids:0 msgid "Auto Subscription" -msgstr "" +msgstr "Auto subscripción" #. module: mail #: field:mail.mail,references:0 @@ -233,12 +241,12 @@ msgstr "Referencias" #: code:addons/mail/static/src/xml/mail.xml:179 #, python-format msgid "No messages." -msgstr "" +msgstr "Sin mensajes." #. module: mail #: model:ir.model,name:mail.model_mail_group msgid "Discussion group" -msgstr "" +msgstr "Grupo de discusión" #. module: mail #. openerp-web @@ -246,14 +254,14 @@ msgstr "" #: code:addons/mail/static/src/xml/mail.xml:95 #, python-format msgid "uploading" -msgstr "" +msgstr "subiendo" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:211 #, python-format msgid "Set back to Inbox" -msgstr "" +msgstr "Volver a la bandeja de entrada" #. module: mail #: help:mail.compose.message,type:0 @@ -262,11 +270,13 @@ msgid "" "Message type: email for email message, notification for system message, " "comment for other messages such as user replies" msgstr "" +"Tipo de mensaje: email para mensajes de correo, notification para mensajes " +"de sistema, comment para otros tipos de mensaje como respuestas de usuarios." #. module: mail #: model:ir.model,name:mail.model_mail_wizard_invite msgid "Invite wizard" -msgstr "" +msgstr "Asistente de invitación" #. module: mail #: selection:mail.mail,state:0 @@ -282,25 +292,25 @@ msgstr "Responder a" #: code:addons/mail/wizard/invite.py:36 #, python-format msgid "
You have been invited to follow %s.
" -msgstr "" +msgstr "
Has sido invitado a seguir a %s.
" #. module: mail #: help:mail.group,message_unread:0 #: help:mail.thread,message_unread:0 #: help:res.partner,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si se marca, los nuevos mensajes requieren su atención" #. module: mail #: field:mail.group,image_medium:0 msgid "Medium-sized photo" -msgstr "" +msgstr "Foto de tamaño medio" #. module: mail #: model:ir.actions.client,name:mail.action_mail_to_me_feeds #: model:ir.ui.menu,name:mail.mail_tomefeeds msgid "To: me" -msgstr "" +msgstr "Para: yo" #. module: mail #: field:mail.message.subtype,name:0 @@ -318,28 +328,28 @@ msgstr "Auto eliminar" #: view:mail.group:0 #, python-format msgid "Unfollow" -msgstr "" +msgstr "Dejar de seguir" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:246 #, python-format msgid "show one more message" -msgstr "" +msgstr "Mostrar un mensaje mas" #. module: mail #: code:addons/mail/mail_mail.py:71 #: code:addons/mail/res_users.py:76 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "¡Acción no válida!" #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/mail.xml:25 #, python-format msgid "User img" -msgstr "" +msgstr "Imagen de usuario" #. module: mail #: model:ir.actions.act_window,name:mail.action_view_mail_mail @@ -352,7 +362,7 @@ msgstr "Emails" #. module: mail #: field:mail.followers,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Empresa relacionada" #. module: mail #: help:mail.group,message_summary:0 @@ -370,12 +380,15 @@ msgid "" "incoming email that does not reply to an existing record will cause the " "creation of a new record of this model (e.g. a Project Task)" msgstr "" +"Modelo (tipo de documento OpenERP) al cual corresponde este alias. Cualquier " +"correo entrante que no sea una respuesta de uno existente creará un nuevo " +"registro de este modelo (p.e. una tarea de proyecto)" #. module: mail #: selection:mail.compose.message,type:0 #: selection:mail.message,type:0 msgid "System notification" -msgstr "" +msgstr "Notificación del sistema" #. module: mail #: model:ir.model,name:mail.model_res_partner @@ -397,7 +410,7 @@ msgstr "Asunto" #. module: mail #: field:mail.wizard.invite,partner_ids:0 msgid "Partners" -msgstr "" +msgstr "Empresas" #. module: mail #: view:mail.mail:0 diff --git a/addons/mail/i18n/hr.po b/addons/mail/i18n/hr.po index fdb266e335d..dc5b3bacbf0 100644 --- a/addons/mail/i18n/hr.po +++ b/addons/mail/i18n/hr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-09 20:37+0000\n" +"PO-Revision-Date: 2012-12-11 16:27+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: mail #: field:res.partner,notification_email_send:0 @@ -30,7 +30,7 @@ msgstr "" #. module: mail #: model:ir.model,name:mail.model_publisher_warranty_contract msgid "publisher_warranty.contract" -msgstr "" +msgstr "publisher_warranty.contract" #. module: mail #: field:mail.compose.message,author_id:0 diff --git a/addons/marketing/i18n/es.po b/addons/marketing/i18n/es.po index 5c5fdd39307..6ed0d21d9b4 100644 --- a/addons/marketing/i18n/es.po +++ b/addons/marketing/i18n/es.po @@ -8,15 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:53+0000\n" -"PO-Revision-Date: 2011-01-13 23:07+0000\n" -"Last-Translator: Jordi Esteve (www.zikzakmedia.com) " -"\n" +"PO-Revision-Date: 2012-12-11 22:13+0000\n" +"Last-Translator: Ana Juaristi Olalde \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:25+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: marketing #: model:ir.model,name:marketing.model_marketing_config_settings @@ -35,7 +34,7 @@ msgstr "" #: model:ir.actions.act_window,name:marketing.action_marketing_configuration #: view:marketing.config.settings:0 msgid "Configure Marketing" -msgstr "" +msgstr "Configurar Marketing" #. module: marketing #: model:ir.ui.menu,name:marketing.menu_marketing_configuration @@ -45,12 +44,12 @@ msgstr "Marketing" #. module: marketing #: field:marketing.config.settings,module_marketing_campaign:0 msgid "Marketing campaigns" -msgstr "" +msgstr "Campañas de marketing" #. module: marketing #: view:marketing.config.settings:0 msgid "or" -msgstr "" +msgstr "o" #. module: marketing #: view:marketing.config.settings:0 @@ -70,7 +69,7 @@ msgstr "Usuario" #. module: marketing #: view:marketing.config.settings:0 msgid "Campaigns Settings" -msgstr "" +msgstr "configuración de campañas" #. module: marketing #: field:marketing.config.settings,module_crm_profiling:0 @@ -85,7 +84,7 @@ msgstr "Cancelar" #. module: marketing #: view:marketing.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Aplicar" #. module: marketing #: help:marketing.config.settings,module_marketing_campaign:0 @@ -106,7 +105,7 @@ msgstr "" #. module: marketing #: field:marketing.config.settings,module_marketing_campaign_crm_demo:0 msgid "Demo data for marketing campaigns" -msgstr "" +msgstr "Datos demo para campañas de marketing" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/membership/i18n/pt.po b/addons/membership/i18n/pt.po index a075156728d..9dce02bd0d7 100644 --- a/addons/membership/i18n/pt.po +++ b/addons/membership/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-11-23 12:23+0000\n" -"Last-Translator: Stephane Wirtel (OpenERP) \n" +"PO-Revision-Date: 2012-12-11 17:19+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:14+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: membership #: model:process.transition,name:membership.process_transition_invoicetoassociate0 @@ -109,7 +109,7 @@ msgstr "" #: field:report.membership,user_id:0 #: view:res.partner:0 msgid "Salesperson" -msgstr "" +msgstr "Vendedor" #. module: membership #: model:process.transition,name:membership.process_transition_waitingtoinvoice0 @@ -136,7 +136,7 @@ msgstr "Não é membro" #. module: membership #: view:product.product:0 msgid "Taxes" -msgstr "" +msgstr "Impostos" #. module: membership #: view:res.partner:0 @@ -148,7 +148,7 @@ msgstr "Todos os membros" #: code:addons/membership/membership.py:413 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: membership #: model:process.transition,name:membership.process_transition_producttomember0 @@ -430,7 +430,7 @@ msgstr "Categori­a" #. module: membership #: view:res.partner:0 msgid "Contacts" -msgstr "" +msgstr "Contactos" #. module: membership #: view:report.membership:0 @@ -475,7 +475,7 @@ msgstr "Clientes" #. module: membership #: view:membership.invoice:0 msgid "or" -msgstr "" +msgstr "ou" #. module: membership #: selection:report.membership,month:0 diff --git a/addons/mrp/i18n/hu.po b/addons/mrp/i18n/hu.po index 3470685cafe..42e88bbba09 100644 --- a/addons/mrp/i18n/hu.po +++ b/addons/mrp/i18n/hu.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-12-06 11:04+0000\n" -"Last-Translator: Krisztian Eyssen \n" +"PO-Revision-Date: 2012-12-11 22:32+0000\n" +"Last-Translator: krnkris \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: 2012-12-04 05:09+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: mrp #: help:mrp.config.settings,module_mrp_repair:0 @@ -79,7 +79,7 @@ msgstr "Selejt termék" #. module: mrp #: view:mrp.workcenter:0 msgid "Mrp Workcenter" -msgstr "" +msgstr "Mrp munkaközpont" #. module: mrp #: model:ir.actions.act_window,name:mrp.mrp_routing_action @@ -116,7 +116,7 @@ msgstr "" #. module: mrp #: view:product.product:0 msgid "False" -msgstr "" +msgstr "Hamis" #. module: mrp #: view:mrp.bom:0 @@ -133,7 +133,7 @@ msgstr "Késztermékek" #. module: mrp #: view:mrp.production:0 msgid "Manufacturing Orders which are currently in production." -msgstr "" +msgstr "Gyártási megrendelések melyek termelési folyamatban vannak." #. module: mrp #: help:mrp.bom,message_summary:0 @@ -196,7 +196,7 @@ msgstr "Termékmennyiség" #. module: mrp #: view:mrp.production:0 msgid "Unit of Measure" -msgstr "" +msgstr "Mértékegység" #. module: mrp #: model:process.node,note:mrp.process_node_purchaseprocure0 @@ -206,13 +206,13 @@ msgstr "Vásárolt termékhez" #. module: mrp #: field:mrp.config.settings,module_mrp_operations:0 msgid "Allow detailed planning of work order" -msgstr "" +msgstr "Részletes munka megrendelés tervezést engedélyez." #. module: mrp #: code:addons/mrp/mrp.py:648 #, python-format msgid "Cannot cancel manufacturing order!" -msgstr "" +msgstr "Nem lehet érvényteleníteni a gyártási megrendelést." #. module: mrp #: field:mrp.workcenter,costs_cycle_account_id:0 @@ -259,7 +259,7 @@ msgstr "" #: view:mrp.production:0 #: field:mrp.production,move_created_ids2:0 msgid "Produced Products" -msgstr "" +msgstr "Előállított termékek" #. module: mrp #: report:mrp.production.order:0 @@ -274,7 +274,7 @@ msgstr "Törzsadatok" #. module: mrp #: field:mrp.config.settings,module_mrp_byproduct:0 msgid "Produce several products from one manufacturing order" -msgstr "" +msgstr "Egyes termékek előállítása gy munka megrendelésből" #. module: mrp #: report:mrp.production.order:0 @@ -300,7 +300,7 @@ msgstr "Csomagok" #: view:mrp.production:0 #: field:mrp.production,state:0 msgid "Status" -msgstr "" +msgstr "Állapot" #. module: mrp #: help:mrp.bom,position:0 @@ -320,12 +320,12 @@ msgstr "Termék gyártása" #. module: mrp #: constraint:mrp.bom:0 msgid "Error ! You cannot create recursive BoM." -msgstr "" +msgstr "HIBA ! Nem állíthat elő visszatérő anyaglistát BoM." #. module: mrp #: model:ir.model,name:mrp.model_mrp_routing_workcenter msgid "Work Center Usage" -msgstr "" +msgstr "Megmunkáló központ használata" #. module: mrp #: model:process.transition,name:mrp.process_transition_procurestockableproduct0 @@ -353,7 +353,7 @@ msgstr "" #. module: mrp #: sql_constraint:mrp.production:0 msgid "Reference must be unique per Company!" -msgstr "" +msgstr "Minden vállalkozáshoz egyedi hivatkozás kell!" #. module: mrp #: code:addons/mrp/report/price.py:139 @@ -372,6 +372,8 @@ msgid "" "Fill this product to easily track your production costs in the analytic " "accounting." msgstr "" +"Töltse ki ezt a terméket az analitikai könyvelés anyag költség könnyű nyomon " +"követéséhez." #. module: mrp #: field:mrp.workcenter,product_id:0 @@ -406,7 +408,7 @@ msgstr "" #: field:mrp.production,product_qty:0 #: field:mrp.production.product.line,product_qty:0 msgid "Product Quantity" -msgstr "" +msgstr "Termékmennyiség" #. module: mrp #: help:mrp.production,picking_id:0 @@ -451,7 +453,7 @@ msgstr "Tervezett dátum" #: code:addons/mrp/procurement.py:113 #, python-format msgid "Manufacturing Order %s created." -msgstr "" +msgstr "Gyártási rendelés %s létrehozva." #. module: mrp #: view:mrp.bom:0 @@ -466,6 +468,8 @@ msgid "" "Manufacturing order has been confirmed and is scheduled for " "the %s." msgstr "" +"Gyártási rendelés ekkor visszaigazolt és ekkorra scheduled " +"ehhet %s." #. module: mrp #: help:mrp.routing,location_id:0 @@ -492,7 +496,7 @@ msgstr "Anyagjegyzék-struktúra" #: code:addons/mrp/mrp.py:1043 #, python-format msgid "Manufacturing order has been canceled." -msgstr "" +msgstr "Gyártási megrendelés törölve lett canceled." #. module: mrp #: model:process.node,note:mrp.process_node_serviceproduct0 @@ -502,7 +506,7 @@ msgstr "A termék típusa szolgáltatás" #. module: mrp #: help:mrp.workcenter,costs_cycle:0 msgid "Specify Cost of Work Center per cycle." -msgstr "" +msgstr "Adjon meg megmunkáló központ ciklus költséget." #. module: mrp #: model:process.transition,name:mrp.process_transition_bom0 @@ -527,7 +531,7 @@ msgstr "Ajánlatkérés" #: view:mrp.product_price:0 #: view:mrp.workcenter.load:0 msgid "or" -msgstr "" +msgstr "vagy" #. module: mrp #: model:process.transition,note:mrp.process_transition_billofmaterialrouting0 @@ -542,12 +546,12 @@ msgstr "" #: view:mrp.production:0 #: field:mrp.production,move_created_ids:0 msgid "Products to Produce" -msgstr "" +msgstr "Termék az előállításhoz" #. module: mrp #: view:mrp.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Alkalmaz" #. module: mrp #: view:mrp.routing:0 @@ -634,6 +638,7 @@ msgstr "" #, python-format msgid "Bill of Material has been created for %s product." msgstr "" +"Darabjegyzék lett létrehozva created ehhez %s a termékhez." #. module: mrp #: model:process.transition,name:mrp.process_transition_billofmaterialrouting0 @@ -718,6 +723,7 @@ msgstr "" #: constraint:mrp.bom:0 msgid "BoM line product should not be same as BoM product." msgstr "" +"Darabjegyzék BoM sor termék nem lehet ugyanaz mint az anyagjegyzék végterméke" #. module: mrp #: view:mrp.production:0 @@ -859,7 +865,7 @@ msgstr "" #. module: mrp #: view:mrp.production:0 msgid "Mark as Started" -msgstr "" +msgstr "Jelölje meg mint elkezdett" #. module: mrp #: view:mrp.production:0 @@ -890,7 +896,7 @@ msgstr "Sürgős" #. module: mrp #: view:mrp.production:0 msgid "Manufacturing Orders which are waiting for raw materials." -msgstr "" +msgstr "Gyártáasi rendelések, melyek nyersanyagra várnak." #. module: mrp #: code:addons/mrp/mrp.py:284 @@ -937,7 +943,7 @@ msgstr "Gyártásra kész" #: field:mrp.production,message_is_follower:0 #: field:mrp.production.workcenter.line,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Ez egy követő" #. module: mrp #: view:mrp.bom:0 @@ -1011,7 +1017,7 @@ msgstr "Minimum készlet" #: code:addons/mrp/report/price.py:211 #, python-format msgid "Total Cost of %s %s" -msgstr "" +msgstr "Teljes költség %s %s" #. module: mrp #: model:process.node,name:mrp.process_node_stockproduct0 @@ -1044,7 +1050,7 @@ msgstr "Tulajdonságcsoport" #. module: mrp #: field:mrp.config.settings,group_mrp_routings:0 msgid "Manage routings and work orders " -msgstr "" +msgstr "Útvonal és munka rendelés kezelése " #. module: mrp #: model:process.node,note:mrp.process_node_production0 @@ -1103,7 +1109,7 @@ msgstr "Gyártási rendelések" #. module: mrp #: selection:mrp.production,state:0 msgid "Awaiting Raw Materials" -msgstr "" +msgstr "Alapanyagokra várakozás" #. module: mrp #: field:mrp.bom,position:0 @@ -1140,7 +1146,7 @@ msgstr "Mód" #: help:mrp.production,message_ids:0 #: help:mrp.production.workcenter.line,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Üzenetek és kommunikáció történet" #. module: mrp #: field:mrp.workcenter.load,measure_unit:0 @@ -1160,7 +1166,7 @@ msgstr "" #. module: mrp #: help:mrp.workcenter,costs_hour:0 msgid "Specify Cost of Work Center per hour." -msgstr "" +msgstr "Határozzon meg óránkénti megmunkáló központ költséget" #. module: mrp #: help:mrp.workcenter,capacity_per_cycle:0 @@ -1177,7 +1183,7 @@ msgstr "Gyártási rendelések folyamatban" #. module: mrp #: model:ir.actions.client,name:mrp.action_client_mrp_menu msgid "Open MRP Menu" -msgstr "" +msgstr "Open MRP Gyártási erőforrás/ Menü" #. module: mrp #: model:ir.actions.act_window,name:mrp.mrp_production_action4 @@ -1204,7 +1210,7 @@ msgstr "Ciklus költség" #: code:addons/mrp/wizard/change_production_qty.py:88 #, python-format msgid "Cannot find bill of material for this product." -msgstr "" +msgstr "Nem található darabjegyzék ehhez a termékhez." #. module: mrp #: selection:mrp.workcenter.load,measure_unit:0 @@ -1249,7 +1255,7 @@ msgstr "Hetente" #: field:mrp.production,message_unread:0 #: field:mrp.production.workcenter.line,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Olvasatlan üzenetek" #. module: mrp #: model:process.transition,note:mrp.process_transition_stockmts0 @@ -1274,7 +1280,7 @@ msgstr "Megjegyzések" #. module: mrp #: view:mrp.production:0 msgid "Manufacturing Orders which are ready to start production." -msgstr "" +msgstr "Gyártási rendelések, melyek a gyártás elindítására várnak." #. module: mrp #: model:ir.model,name:mrp.model_mrp_bom @@ -1295,7 +1301,7 @@ msgstr "Időegység kiválasztása" #: model:ir.ui.menu,name:mrp.menu_mrp_product_form #: view:mrp.config.settings:0 msgid "Products" -msgstr "" +msgstr "Termékek" #. module: mrp #: view:report.workcenter.load:0 @@ -1319,7 +1325,7 @@ msgstr "" #: code:addons/mrp/mrp.py:521 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Érvénytelen lépés!" #. module: mrp #: model:process.transition,note:mrp.process_transition_producttostockrules0 @@ -1336,7 +1342,7 @@ msgstr "" #: code:addons/mrp/report/price.py:187 #, python-format msgid "Components Cost of %s %s" -msgstr "" +msgstr "Összetevő költsége %s %s" #. module: mrp #: selection:mrp.workcenter.load,time_unit:0 @@ -1360,12 +1366,14 @@ msgid "" "Bill of Materials allow you to define the list of required raw materials to " "make a finished product." msgstr "" +"Darabjegyzék lehetővé teszi az előellítani kívánt termékhez való alapanyagok " +"meghatározását." #. module: mrp #: code:addons/mrp/mrp.py:374 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (másolat)" #. module: mrp #: model:ir.model,name:mrp.model_mrp_production_product_line @@ -1376,7 +1384,7 @@ msgstr "Gyártásra ütemezett termék" #: code:addons/mrp/report/price.py:204 #, python-format msgid "Work Cost of %s %s" -msgstr "" +msgstr "Munka költség %s %s" #. module: mrp #: help:res.company,manufacturing_lead:0 @@ -1393,7 +1401,7 @@ msgstr "Beszerzés készletből" #. module: mrp #: constraint:mrp.production:0 msgid "Order quantity cannot be negative or zero!" -msgstr "" +msgstr "Megrendelt mennyiség nem lehet negatív vagy nullla!" #. module: mrp #: model:process.transition,note:mrp.process_transition_stockrfq0 @@ -1433,7 +1441,7 @@ msgstr "Beszerzés" #. module: mrp #: field:mrp.config.settings,module_product_manufacturer:0 msgid "Define manufacturers on products " -msgstr "" +msgstr "Határozzon meg a termékhez gyártókat " #. module: mrp #: model:ir.actions.act_window,name:mrp.action_view_mrp_product_price_wizard @@ -1477,7 +1485,7 @@ msgstr "Óra számla" #: field:mrp.production,product_uom:0 #: field:mrp.production.product.line,product_uom:0 msgid "Product Unit of Measure" -msgstr "" +msgstr "Termék mértékegység" #. module: mrp #: view:mrp.production:0 @@ -1498,7 +1506,7 @@ msgstr "Függőben lévő" #: code:addons/mrp/mrp.py:1053 #, python-format msgid "Manufacturing order is in production." -msgstr "" +msgstr "Gyártás megrendelés gyártás alatt in production." #. module: mrp #: field:mrp.bom,active:0 @@ -1542,7 +1550,7 @@ msgstr "" #: code:addons/mrp/mrp.py:1058 #, python-format msgid "Manufacturing order has been done." -msgstr "" +msgstr "Gyártási megrendelés elvégezve done." #. module: mrp #: model:process.transition,name:mrp.process_transition_minimumstockprocure0 @@ -1568,7 +1576,7 @@ msgstr "Kezeli az alapanyagok beszerzési rendeléseit." #: code:addons/mrp/mrp.py:1048 #, python-format msgid "Manufacturing order is ready to produce." -msgstr "" +msgstr "Gyártás megrendelés készenáll a gyártásra ready to produce." #. module: mrp #: field:mrp.production.product.line,product_uos_qty:0 @@ -1589,7 +1597,7 @@ msgstr "Értékesítési megbízás száma" #: code:addons/mrp/mrp.py:521 #, python-format msgid "Cannot delete a manufacturing order in state '%s'." -msgstr "" +msgstr "Nem lehet a gyártási megrendelést törölni ezen az állapoton '%s'." #. module: mrp #: selection:mrp.production,state:0 @@ -1599,7 +1607,7 @@ msgstr "Kész" #. module: mrp #: view:product.product:0 msgid "When you sell this product, OpenERP will trigger" -msgstr "" +msgstr "Ha eladja ezt a terméket, akkor az OpenERP el fogja indítani" #. module: mrp #: field:mrp.production,origin:0 @@ -1615,7 +1623,7 @@ msgstr "Nem sürgős" #. module: mrp #: field:mrp.production,user_id:0 msgid "Responsible" -msgstr "" +msgstr "Felelős" #. module: mrp #: model:ir.actions.act_window,name:mrp.mrp_production_action2 @@ -1696,6 +1704,8 @@ msgid "" "Description of the Work Center. Explain here what's a cycle according to " "this Work Center." msgstr "" +"Megmunkáló központ leírása. Fejtse ki mit ért ennek a megmunkáló központnak " +"a ciklus idején." #. module: mrp #: field:mrp.production,date_finished:0 @@ -1746,7 +1756,7 @@ msgstr "Jóváhagyás" #. module: mrp #: view:mrp.config.settings:0 msgid "Order" -msgstr "" +msgstr "Megrendelés" #. module: mrp #: view:mrp.property.group:0 @@ -1772,7 +1782,7 @@ msgstr "Tervezett termékek" #. module: mrp #: model:res.groups,name:mrp.group_mrp_manager msgid "Manager" -msgstr "" +msgstr "Igazgató" #. module: mrp #: view:mrp.bom:0 @@ -1781,12 +1791,15 @@ msgid "" " will contain the raw materials, instead of " "the finished product." msgstr "" +"He vevői megrendelés jön erre a termékre, a szállítási megbízás\n" +" az nyersanyagot fogja tartalmazni, a kész " +"termék helyett." #. module: mrp #: code:addons/mrp/mrp.py:1039 #, python-format msgid "Manufacturing order has been created." -msgstr "" +msgstr "Gyártási megrendelés elkészítve created." #. module: mrp #: help:mrp.product.produce,mode:0 @@ -1806,7 +1819,7 @@ msgstr "" #. module: mrp #: model:ir.ui.menu,name:mrp.menu_mrp_production_order_action msgid "Orders Planning" -msgstr "" +msgstr "Megrendelések tervezése" #. module: mrp #: field:mrp.workcenter,costs_cycle:0 @@ -1827,7 +1840,7 @@ msgstr "Törölt" #. module: mrp #: view:mrp.production:0 msgid "(Update)" -msgstr "" +msgstr "(frissítés)" #. module: mrp #: help:mrp.config.settings,module_mrp_operations:0 @@ -1844,6 +1857,8 @@ msgid "" "You are going to consume total %s quantities of \"%s\".\n" "But you can only consume up to total %s quantities." msgstr "" +"Ezt a teljes mennyiséget %s ebből a mennyiségből \"%s\" felhasználja.\n" +"De csak ennyi teljes %s mennyiséget tud." #. module: mrp #: model:process.transition,note:mrp.process_transition_bom0 @@ -1868,7 +1883,7 @@ msgstr "Vállalat" #. module: mrp #: view:mrp.bom:0 msgid "Default Unit of Measure" -msgstr "" +msgstr "Alapértelmezett mértékegység" #. module: mrp #: field:mrp.workcenter,time_cycle:0 @@ -1894,7 +1909,7 @@ msgstr "Automatikus beszerzési szabály" #: field:mrp.production,message_ids:0 #: field:mrp.production.workcenter.line,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Üzenetek" #. module: mrp #: view:mrp.production:0 @@ -1907,7 +1922,7 @@ msgstr "Adatok kiszámítása" #: code:addons/mrp/wizard/change_production_qty.py:88 #, python-format msgid "Error!" -msgstr "" +msgstr "Hiba!" #. module: mrp #: code:addons/mrp/report/price.py:139 @@ -1951,7 +1966,7 @@ msgstr "Gyártási átfutási idő" #: code:addons/mrp/mrp.py:284 #, python-format msgid "Warning" -msgstr "" +msgstr "Figyelem" #. module: mrp #: field:mrp.bom,product_uos_qty:0 @@ -1961,7 +1976,7 @@ msgstr "Termék eladási egység mennyisége" #. module: mrp #: field:mrp.production,move_prod_id:0 msgid "Product Move" -msgstr "" +msgstr "Termék mozgás" #. module: mrp #: model:ir.actions.act_window,help:mrp.action_report_in_out_picking_tree @@ -1989,7 +2004,7 @@ msgstr "Gyártási hatékonyság" #: field:mrp.production,message_follower_ids:0 #: field:mrp.production.workcenter.line,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Követők" #. module: mrp #: help:mrp.bom,active:0 @@ -2008,7 +2023,7 @@ msgstr "Termék kerekítése" #. module: mrp #: selection:mrp.production,state:0 msgid "New" -msgstr "" +msgstr "Új" #. module: mrp #: selection:mrp.product.produce,mode:0 @@ -2033,7 +2048,7 @@ msgstr "Beállítás" #. module: mrp #: view:mrp.bom:0 msgid "Starting Date" -msgstr "" +msgstr "Kezdő dátum" #. module: mrp #: field:mrp.workcenter,time_stop:0 @@ -2257,7 +2272,7 @@ msgstr "" #. module: mrp #: field:mrp.config.settings,module_stock_no_autopicking:0 msgid "Manage manual picking to fulfill manufacturing orders " -msgstr "" +msgstr "Kézi kiválasztás kezelése a gyártások kiszolgállásához " #. module: mrp #: view:mrp.routing.workcenter:0 @@ -2363,7 +2378,7 @@ msgstr "" #: model:ir.actions.act_window,name:mrp.action_mrp_configuration #: view:mrp.config.settings:0 msgid "Configure Manufacturing" -msgstr "" +msgstr "Gyártás beállítása" #. module: mrp #: view:product.product:0 @@ -2371,6 +2386,8 @@ msgid "" "a manufacturing\n" " order" msgstr "" +"egy gyártási \n" +" megrendelés" #. module: mrp #: field:mrp.config.settings,group_mrp_properties:0 diff --git a/addons/mrp_byproduct/i18n/pt.po b/addons/mrp_byproduct/i18n/pt.po index e4caf5d5df3..5e2e8d7c341 100644 --- a/addons/mrp_byproduct/i18n/pt.po +++ b/addons/mrp_byproduct/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-11-09 17:33+0000\n" -"Last-Translator: Daniel Reis (SECURITAS SA) \n" +"PO-Revision-Date: 2012-12-11 15:56+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:43+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: mrp_byproduct #: help:mrp.subproduct,subproduct_type:0 @@ -73,7 +73,7 @@ msgstr "Quantidade do Artigo" #: code:addons/mrp_byproduct/mrp_byproduct.py:62 #, python-format msgid "Warning" -msgstr "" +msgstr "Aviso" #. module: mrp_byproduct #: field:mrp.subproduct,bom_id:0 diff --git a/addons/multi_company/i18n/it.po b/addons/multi_company/i18n/it.po index df2be6cd559..971bff71ec4 100644 --- a/addons/multi_company/i18n/it.po +++ b/addons/multi_company/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 10:25+0000\n" -"PO-Revision-Date: 2011-01-13 16:55+0000\n" +"PO-Revision-Date: 2012-12-11 12:11+0000\n" "Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:44+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: multi_company #: model:ir.ui.menu,name:multi_company.menu_custom_multicompany @@ -45,6 +45,19 @@ msgid "" "Thank you in advance for your cooperation.\n" "Best Regards," msgstr "" +"Gentile signore/signora, \n" +"\n" +"Dlle nostre registrazioni contabili ci risulta che alcuni pagamenti del " +"vostro conto sono ancora aperti. Prego verificate i dettagli\n" +"allegati.\n" +"Se il pagamento dovesse già essere stato corrisposto, prego non considerate " +"la presente. In caso contrario, prego corrispondete l'importo indicato di " +"seguito.\n" +"Se dovessero esserci dubbi o richieste a riguardo, prego non esitate a " +"contattarci.\n" +"\n" +"Ringraziamo in anticipo per la Vostra collaborazione.\n" +"Distinti saluti," #. module: multi_company #: view:multi_company.default:0 diff --git a/addons/note/i18n/es.po b/addons/note/i18n/es.po new file mode 100644 index 00000000000..69680bc1baa --- /dev/null +++ b/addons/note/i18n/es.po @@ -0,0 +1,288 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:02+0000\n" +"PO-Revision-Date: 2012-12-11 23:18+0000\n" +"Last-Translator: lambdasoftware \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: note +#: field:note.note,memo:0 +msgid "Note Content" +msgstr "Contenido de la nota" + +#. module: note +#: view:note.stage:0 +msgid "Stages of Notes" +msgstr "Fases de las notas" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_04 +#: model:note.stage,name:note.note_stage_02 +msgid "This Week" +msgstr "Esta semana" + +#. module: note +#: model:ir.model,name:note.model_base_config_settings +msgid "base.config.settings" +msgstr "base.config.settings" + +#. module: note +#: model:ir.model,name:note.model_note_tag +msgid "Note Tag" +msgstr "Etiqueta de la nota" + +#. module: note +#: model:res.groups,name:note.group_note_fancy +msgid "Notes / Fancy mode" +msgstr "" + +#. module: note +#: model:ir.model,name:note.model_note_note +#: view:note.note:0 +msgid "Note" +msgstr "Nota" + +#. module: note +#: view:note.note:0 +msgid "Group By..." +msgstr "Agrupar por..." + +#. module: note +#: field:note.note,message_follower_ids:0 +msgid "Followers" +msgstr "Seguidores" + +#. module: note +#: model:ir.actions.act_window,help:note.action_note_note +msgid "" +"

\n" +" Click to add a personal note.\n" +"

\n" +" Use notes to organize personal tasks or notes. All\n" +" notes are private; no one else will be able to see them. " +"However\n" +" you can share some notes with other people by inviting " +"followers\n" +" on the note. (Useful for meeting minutes, especially if\n" +" you activate the pad feature for collaborative writings).\n" +"

\n" +" You can customize how you process your notes/tasks by adding,\n" +" removing or modifying columns.\n" +"

\n" +" " +msgstr "" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_01 +#: model:note.stage,name:note.note_stage_01 +msgid "Today" +msgstr "Hoy" + +#. module: note +#: model:ir.model,name:note.model_res_users +msgid "Users" +msgstr "Usuarios" + +#. module: note +#: view:note.note:0 +msgid "í" +msgstr "í" + +#. module: note +#: view:note.stage:0 +msgid "Stage of Notes" +msgstr "Estado de las notas" + +#. module: note +#: field:note.note,message_unread:0 +msgid "Unread Messages" +msgstr "Mensajes sin leer" + +#. module: note +#: field:note.note,current_partner_id:0 +msgid "unknown" +msgstr "desconocido" + +#. module: note +#: view:note.note:0 +msgid "By sticky note Category" +msgstr "" + +#. module: note +#: help:note.note,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: note +#: field:note.stage,name:0 +msgid "Stage Name" +msgstr "Nombre de fase" + +#. module: note +#: field:note.note,message_is_follower:0 +msgid "Is a Follower" +msgstr "Es un seguidor." + +#. module: note +#: model:note.stage,name:note.demo_note_stage_02 +msgid "Tomorrow" +msgstr "Mañana" + +#. module: note +#: view:note.note:0 +#: field:note.note,open:0 +msgid "Active" +msgstr "Activar" + +#. module: note +#: help:note.stage,user_id:0 +msgid "Owner of the note stage." +msgstr "Propietario de la fase de la nota." + +#. module: note +#: model:ir.ui.menu,name:note.menu_notes_stage +msgid "Categories" +msgstr "Categorías" + +#. module: note +#: field:note.note,message_comment_ids:0 +#: help:note.note,message_comment_ids:0 +msgid "Comments and emails" +msgstr "Comentarios y correos" + +#. module: note +#: field:note.tag,name:0 +msgid "Tag Name" +msgstr "Nombre de etiqueta" + +#. module: note +#: field:note.note,message_ids:0 +msgid "Messages" +msgstr "Mensajes" + +#. module: note +#: view:base.config.settings:0 +#: model:ir.actions.act_window,name:note.action_note_note +#: model:ir.ui.menu,name:note.menu_note_notes +#: view:note.note:0 +#: model:note.stage,name:note.note_stage_04 +msgid "Notes" +msgstr "Notas" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_03 +#: model:note.stage,name:note.note_stage_03 +msgid "Later" +msgstr "Más tarde" + +#. module: note +#: model:ir.model,name:note.model_note_stage +msgid "Note Stage" +msgstr "Fase de nota" + +#. module: note +#: field:note.note,message_summary:0 +msgid "Summary" +msgstr "Resumen" + +#. module: note +#: help:note.stage,sequence:0 +msgid "Used to order the note stages" +msgstr "Úselo para ordenar las fases de nota" + +#. module: note +#: field:note.note,stage_ids:0 +msgid "Stages of Users" +msgstr "Fases de usuarios" + +#. module: note +#: field:note.note,name:0 +msgid "Note Summary" +msgstr "Resumen de nota" + +#. module: note +#: model:ir.actions.act_window,name:note.action_note_stage +#: view:note.note:0 +msgid "Stages" +msgstr "Fases" + +#. module: note +#: help:note.note,message_ids:0 +msgid "Messages and communication history" +msgstr "Mensajes e historial de comunicación" + +#. module: note +#: view:note.note:0 +msgid "Delete" +msgstr "Eliminar" + +#. module: note +#: field:note.note,color:0 +msgid "Color Index" +msgstr "Índice de colores" + +#. module: note +#: field:note.note,sequence:0 +#: field:note.stage,sequence:0 +msgid "Sequence" +msgstr "Secuencia" + +#. module: note +#: field:note.note,tag_ids:0 +msgid "Tags" +msgstr "Etiquetas" + +#. module: note +#: view:note.note:0 +msgid "Archive" +msgstr "" + +#. module: note +#: field:base.config.settings,module_note_pad:0 +msgid "Use collaborative pads (etherpad)" +msgstr "" + +#. module: note +#: help:note.note,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: note +#: field:base.config.settings,group_note_fancy:0 +msgid "Use fancy layouts for notes" +msgstr "" + +#. module: note +#: field:note.stage,user_id:0 +msgid "Owner" +msgstr "Propietario" + +#. module: note +#: view:note.note:0 +#: field:note.note,stage_id:0 +msgid "Stage" +msgstr "" + +#. module: note +#: field:note.note,date_done:0 +msgid "Date done" +msgstr "Fecha de realización" + +#. module: note +#: field:note.stage,fold:0 +msgid "Folded by Default" +msgstr "" diff --git a/addons/note/i18n/pt.po b/addons/note/i18n/pt.po index d285eb91b00..ea2ed3bb930 100644 --- a/addons/note/i18n/pt.po +++ b/addons/note/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-05 10:05+0000\n" -"Last-Translator: Andrei Talpa (multibase.pt) \n" +"PO-Revision-Date: 2012-12-11 17:25+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-06 04:41+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: note #: field:note.note,memo:0 @@ -36,7 +36,7 @@ msgstr "Esta semana" #. module: note #: model:ir.model,name:note.model_base_config_settings msgid "base.config.settings" -msgstr "" +msgstr "base.config.settings" #. module: note #: model:ir.model,name:note.model_note_tag @@ -108,7 +108,7 @@ msgstr "" #. module: note #: field:note.note,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Mensagens por ler" #. module: note #: field:note.note,current_partner_id:0 @@ -133,7 +133,7 @@ msgstr "" #. module: note #: field:note.note,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "É um seguidor" #. module: note #: model:note.stage,name:note.demo_note_stage_02 @@ -185,7 +185,7 @@ msgstr "Notas" #: model:note.stage,name:note.demo_note_stage_03 #: model:note.stage,name:note.note_stage_03 msgid "Later" -msgstr "" +msgstr "Mais tarde" #. module: note #: model:ir.model,name:note.model_note_stage @@ -195,7 +195,7 @@ msgstr "" #. module: note #: field:note.note,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Resumo" #. module: note #: help:note.stage,sequence:0 @@ -221,12 +221,12 @@ msgstr "" #. module: note #: help:note.note,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Histórico de mensagens e comunicação" #. module: note #: view:note.note:0 msgid "Delete" -msgstr "" +msgstr "Apagar" #. module: note #: field:note.note,color:0 @@ -237,7 +237,7 @@ msgstr "" #: field:note.note,sequence:0 #: field:note.stage,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Sequência" #. module: note #: field:note.note,tag_ids:0 @@ -247,7 +247,7 @@ msgstr "" #. module: note #: view:note.note:0 msgid "Archive" -msgstr "" +msgstr "Arquivo" #. module: note #: field:base.config.settings,module_note_pad:0 diff --git a/addons/note_pad/i18n/it.po b/addons/note_pad/i18n/it.po new file mode 100644 index 00000000000..f630f646ee4 --- /dev/null +++ b/addons/note_pad/i18n/it.po @@ -0,0 +1,28 @@ +# Italian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2012-12-11 08:46+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: note_pad +#: model:ir.model,name:note_pad.model_note_note +msgid "Note" +msgstr "Nota" + +#. module: note_pad +#: field:note.note,note_pad_url:0 +msgid "Pad Url" +msgstr "URL Pad" diff --git a/addons/pad/i18n/it.po b/addons/pad/i18n/it.po index 3dadccda299..44df7be4974 100644 --- a/addons/pad/i18n/it.po +++ b/addons/pad/i18n/it.po @@ -8,31 +8,31 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-01-13 22:59+0000\n" +"PO-Revision-Date: 2012-12-11 08:50+0000\n" "Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: pad #. openerp-web #: code:addons/pad/static/src/xml/pad.xml:27 #, python-format msgid "Ñ" -msgstr "" +msgstr "Ñ" #. module: pad #: model:ir.model,name:pad.model_pad_common msgid "pad.common" -msgstr "" +msgstr "pad.common" #. module: pad #: help:res.company,pad_key:0 msgid "Etherpad lite api key." -msgstr "" +msgstr "Chiave API Etherpad lite" #. module: pad #: model:ir.model,name:pad.model_res_company @@ -47,26 +47,28 @@ msgid "" "You must configure the etherpad through the menu Setting > Companies > " "Companies, in the configuration tab of your company." msgstr "" +"E' necessario configurare l'etherpad attraverso il menù: Impostazioni > " +"Società > Società, nella scheda configurazione della vostra società." #. module: pad #: view:res.company:0 msgid "Pads" -msgstr "" +msgstr "Pad" #. module: pad #: field:res.company,pad_server:0 msgid "Pad Server" -msgstr "" +msgstr "Server Pad" #. module: pad #: field:res.company,pad_key:0 msgid "Pad Api Key" -msgstr "" +msgstr "API Key Pad" #. module: pad #: help:res.company,pad_server:0 msgid "Etherpad lite server. Example: beta.primarypad.com" -msgstr "" +msgstr "Server Etherpad lite. Esempio: beta.primarypad.com" #, python-format #~ msgid "Ok" diff --git a/addons/pad_project/i18n/it.po b/addons/pad_project/i18n/it.po new file mode 100644 index 00000000000..107691b2013 --- /dev/null +++ b/addons/pad_project/i18n/it.po @@ -0,0 +1,40 @@ +# Italian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2012-12-11 08:47+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: pad_project +#: constraint:project.task:0 +msgid "Error ! Task end-date must be greater then task start-date" +msgstr "" +"Errore ! La data di termine dell'attività deve essere posteriore a quella di " +"inizio" + +#. module: pad_project +#: field:project.task,description_pad:0 +msgid "Description PAD" +msgstr "Descrizione PAD" + +#. module: pad_project +#: model:ir.model,name:pad_project.model_project_task +msgid "Task" +msgstr "Attività" + +#. module: pad_project +#: constraint:project.task:0 +msgid "Error ! You cannot create recursive tasks." +msgstr "Errore ! Non è possibile creare attività ricorsive." diff --git a/addons/portal/i18n/pl.po b/addons/portal/i18n/pl.po index 04670ed5e38..1bfb2398d7f 100644 --- a/addons/portal/i18n/pl.po +++ b/addons/portal/i18n/pl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-07-11 09:51+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 11:00+0000\n" +"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: portal #: view:portal.payment.acquirer:0 @@ -26,7 +26,7 @@ msgstr "" #: code:addons/portal/wizard/share_wizard.py:50 #, python-format msgid "Please select at least one user to share with" -msgstr "" +msgstr "Proszę wybrac co najmniej jednego użytkownika do współdzielenia" #. module: portal #: view:portal.wizard:0 @@ -42,65 +42,65 @@ msgstr "" #: code:addons/portal/wizard/share_wizard.py:54 #, python-format msgid "Please select at least one group to share with" -msgstr "" +msgstr "Prosze wybrac co najmniej jedną grupę do współdzielenia" #. module: portal #: model:ir.ui.menu,name:portal.company_news_feed_ir_ui_menu msgid "Company's news" -msgstr "" +msgstr "Nowości firmy" #. module: portal #: view:portal.wizard.user:0 msgid "Contacts" -msgstr "" +msgstr "Kontakty" #. module: portal #: view:share.wizard:0 #: field:share.wizard,group_ids:0 msgid "Existing groups" -msgstr "" +msgstr "Istniejące grupy" #. module: portal #: view:res.groups:0 msgid "Portal Groups" -msgstr "" +msgstr "Grupy portalu" #. module: portal #: field:portal.wizard,welcome_message:0 msgid "Invitation Message" -msgstr "" +msgstr "Zaproszenie" #. module: portal #: view:res.groups:0 msgid "Non-Portal Groups" -msgstr "" +msgstr "Grupy pozaportalowe" #. module: portal #: view:share.wizard:0 msgid "Details" -msgstr "" +msgstr "Szczegóły" #. module: portal #: model:ir.ui.menu,name:portal.portal_orders msgid "Quotations and Sales Orders" -msgstr "" +msgstr "Oferty i Zamówienia sprzedaży" #. module: portal #: view:portal.payment.acquirer:0 msgid "reference: the reference number of the document to pay" -msgstr "" +msgstr "odnośnik: numer odnośnika dokumenty do zapłacenia" #. module: portal #: help:portal.payment.acquirer,visible:0 msgid "" "Make this payment acquirer available in portal forms (Customer invoices, " "etc.)" -msgstr "" +msgstr "Udostępnij płatność w portalu (Faktura sprzedaży, itp)" #. module: portal #: model:ir.model,name:portal.model_share_wizard msgid "Share Wizard" -msgstr "" +msgstr "Wspóldziel kreatora" #. module: portal #: field:portal.wizard.user,email:0 @@ -115,6 +115,10 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Nie ma nieprzeczytanych firmowych wiadomości.\n" +"

\n" +" " #. module: portal #: view:portal.wizard:0 @@ -125,18 +129,18 @@ msgstr "" #: model:ir.actions.client,name:portal.action_jobs #: model:ir.ui.menu,name:portal.portal_jobs msgid "Jobs" -msgstr "" +msgstr "Stanowiska" #. module: portal #: field:portal.wizard,user_ids:0 msgid "Users" -msgstr "" +msgstr "Użytkownicy" #. module: portal #: code:addons/portal/acquirer.py:74 #, python-format msgid "Pay safely online" -msgstr "" +msgstr "Bezpieczna zapłata online" #. module: portal #: view:portal.payment.acquirer:0 @@ -144,17 +148,19 @@ msgid "" "kind: the kind of document on which the payment form is rendered (translated " "to user language, e.g. \"Invoice\")" msgstr "" +"kind: rodzaj dokumentu, dla którego formularz płatności jest generowany " +"(tłumaczony na język użytkownika, tj. \"Faktura\")" #. module: portal #: help:portal.wizard,portal_id:0 msgid "The portal that users can be added in or removed from." -msgstr "" +msgstr "Portal, do którego użytkownicy moga być dodani lub usunięci." #. module: portal #: code:addons/portal/wizard/share_wizard.py:38 #, python-format msgid "Users you already shared with" -msgstr "" +msgstr "Użytkownicy, z którymi już współdzielisz" #. module: portal #: model:ir.actions.client,help:portal.action_jobs @@ -164,11 +170,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Nie masz nieprzeczytanych ofert pracy.\n" +"

\n" +" " #. module: portal #: model:ir.ui.menu,name:portal.company_jobs_ir_ui_menu msgid "Company's jobs" -msgstr "" +msgstr "Stanowiska w firmie" #. module: portal #: model:ir.ui.menu,name:portal.portal_menu @@ -182,7 +192,7 @@ msgstr "" #: code:addons/portal/wizard/portal_wizard.py:34 #, python-format msgid "Your OpenERP account at %(company)s" -msgstr "" +msgstr "Twoje konto OpenERP w %(company)s" #. module: portal #: view:portal.payment.acquirer:0 @@ -192,18 +202,18 @@ msgstr "" #. module: portal #: field:portal.wizard.user,in_portal:0 msgid "In Portal" -msgstr "" +msgstr "W portalu" #. module: portal #: model:ir.actions.client,name:portal.action_news #: model:ir.ui.menu,name:portal.portal_company_news msgid "News" -msgstr "" +msgstr "Aktualności" #. module: portal #: model:ir.ui.menu,name:portal.portal_after_sales msgid "After Sale Services" -msgstr "" +msgstr "Serwis posprzedażny" #. module: portal #: model:res.groups,comment:portal.group_portal @@ -212,34 +222,37 @@ msgid "" "restricted menus).\n" " They usually do not belong to the usual OpenERP groups." msgstr "" +"Użytkownicy portalu maja specyficzne prawa (jak reguły rekordów i " +"zastrzeżone menu).\n" +" Zwykle nie należą do zwykłych grup OpenERP." #. module: portal #: model:ir.actions.act_window,name:portal.action_acquirer_list #: view:portal.payment.acquirer:0 msgid "Payment Acquirers" -msgstr "" +msgstr "Beneficijent płatności" #. module: portal #: model:ir.ui.menu,name:portal.portal_projects msgid "Projects" -msgstr "" +msgstr "Projekty" #. module: portal #: model:ir.actions.client,name:portal.action_mail_inbox_feeds_portal #: model:ir.ui.menu,name:portal.portal_inbox msgid "Inbox" -msgstr "" +msgstr "Przychodzące" #. module: portal #: view:share.wizard:0 #: field:share.wizard,user_ids:0 msgid "Existing users" -msgstr "" +msgstr "Istniejący użytkownicy" #. module: portal #: field:portal.wizard.user,wizard_id:0 msgid "Wizard" -msgstr "" +msgstr "Kreator" #. module: portal #: view:portal.payment.acquirer:0 @@ -251,12 +264,12 @@ msgstr "" #. module: portal #: field:portal.payment.acquirer,name:0 msgid "Name" -msgstr "" +msgstr "Nazwa" #. module: portal #: model:ir.model,name:portal.model_res_groups msgid "Access Groups" -msgstr "" +msgstr "Grupy dostępu" #. module: portal #: view:portal.payment.acquirer:0 @@ -273,50 +286,50 @@ msgstr "" #. module: portal #: view:portal.payment.acquirer:0 msgid "amount: the total amount to pay, as a float" -msgstr "" +msgstr "kwota: kwota do zapłaty jako liczba z przecinkiem (float)" #. module: portal #: help:res.groups,is_portal:0 msgid "If checked, this group is usable as a portal." -msgstr "" +msgstr "Jeśli zaznaczone, to grupa stosuje portal" #. module: portal #: field:portal.payment.acquirer,form_template:0 msgid "Payment form template (HTML)" -msgstr "" +msgstr "Szablon formularza zapłaty (HTML)" #. module: portal #: field:portal.wizard.user,partner_id:0 msgid "Contact" -msgstr "" +msgstr "Kontakt" #. module: portal #: model:ir.model,name:portal.model_mail_mail msgid "Outgoing Mails" -msgstr "" +msgstr "Wychodzace" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:194 #, python-format msgid "Email required" -msgstr "" +msgstr "Wymagany email" #. module: portal #: model:ir.ui.menu,name:portal.portal_messages msgid "Messaging" -msgstr "" +msgstr "Wiadomości" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:195 #, python-format msgid "" "You must have an email address in your User Preferences to send emails." -msgstr "" +msgstr "Musisz mieć adres email w swoich preferencjach do wysyłania maili." #. module: portal #: model:ir.model,name:portal.model_portal_payment_acquirer msgid "Online Payment Acquirer" -msgstr "" +msgstr "Beneficjent płatności online" #. module: portal #: view:portal.payment.acquirer:0 @@ -324,6 +337,8 @@ msgid "" "object: the document on which the payment form is rendered (usually an " "invoice or sale order record)" msgstr "" +"object: dokument, na podstawie którego generowany jest formularz zapłaty " +"(zwykle faktura lub zamówienie sprzedaży)" #. module: portal #: model:ir.actions.client,help:portal.action_mail_inbox_feeds_portal @@ -339,16 +354,26 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Dobra robota! Nie masz maili przychodzących.\n" +"

\n" +" Przychodzące zawiera wiadomości prywatne lub przysłane\n" +" do ciebie, jak również informacje związane z " +"dokumentami\n" +" lub ludźmi powiązanymi z tobą.\n" +"

\n" +" " #. module: portal #: help:portal.wizard,welcome_message:0 msgid "This text is included in the email sent to new users of the portal." msgstr "" +"Ten tekst będzie częścią maila wysłanego do nowych użytkowników portalu." #. module: portal #: model:ir.ui.menu,name:portal.portal_company msgid "About Us" -msgstr "" +msgstr "O nas" #. module: portal #: view:portal.payment.acquirer:0 @@ -356,11 +381,13 @@ msgid "" "currency: the currency record in which the document is issued (e.g. " "currency.name could be EUR)" msgstr "" +"currency: waluta, w której wystawiony jest dokument (tzn. currency.name może " +"być EUR)" #. module: portal #: view:portal.payment.acquirer:0 msgid "Payment Acquirer" -msgstr "" +msgstr "Beneficjent płatności" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:35 @@ -383,6 +410,22 @@ msgid "" "OpenERP - Open Source Business Applications\n" "http://www.openerp.com\n" msgstr "" +"Drogi %(name)s,\n" +"\n" +"Uzyskałeś dostęp do %(portal)s.\n" +"\n" +"Twoje dane logowania:\n" +"Database: %(db)s\n" +"Username: %(login)s\n" +"\n" +"Aby zakończyć proces rejestracji naciśnij link url:\n" +"%(url)s\n" +"\n" +"%(welcome_message)s\n" +"\n" +"--\n" +"OpenERP - Open Source Business Applications\n" +"http://www.openerp.com\n" #. module: portal #: model:portal.payment.acquirer,form_template:portal.paypal_acquirer @@ -409,7 +452,7 @@ msgstr "" #. module: portal #: model:ir.model,name:portal.model_portal_wizard_user msgid "Portal User Config" -msgstr "" +msgstr "Konfiguracja użytkownika portalu" #. module: portal #: view:portal.payment.acquirer:0 @@ -417,27 +460,29 @@ msgid "" "If the template renders to an empty result in a certain context it will be " "ignored, as if it was inactive." msgstr "" +"Jeśli szablon wygeneruje się jako pusty, to zostanie zignorowany. Jakby był " +"nieaktywny." #. module: portal #: field:portal.payment.acquirer,visible:0 msgid "Visible" -msgstr "" +msgstr "Widoczne" #. module: portal #: code:addons/portal/wizard/share_wizard.py:39 #, python-format msgid "Existing Groups (e.g Portal Groups)" -msgstr "" +msgstr "Istniejące grupy portalowe" #. module: portal #: view:portal.wizard:0 msgid "Cancel" -msgstr "" +msgstr "Anuluj" #. module: portal #: view:portal.wizard:0 msgid "Apply" -msgstr "" +msgstr "Zastosuj" #. module: portal #: view:portal.payment.acquirer:0 @@ -450,6 +495,9 @@ msgid "" "This is an HTML form template to submit a payment through this acquirer.\n" " The template will be rendered with" msgstr "" +"To jest szablon formularza HTML do dostarczenia płatności przez tego " +"beneficjenta.\n" +" Szablon zostanie wygenerowany z" #. module: portal #: code:addons/portal/mail_mail.py:40 @@ -457,15 +505,17 @@ msgstr "" msgid "" "Access your personal documents through our Customer Portal" msgstr "" +"Pobieraj swoje dokumenty osobiste przez nasz Portal " +"klientów" #. module: portal #: view:portal.payment.acquirer:0 msgid "Form Template" -msgstr "" +msgstr "Szablon formularza" #. module: portal #: model:ir.actions.act_window,name:portal.partner_wizard_action #: model:ir.model,name:portal.model_portal_wizard #: view:portal.wizard:0 msgid "Portal Access Management" -msgstr "" +msgstr "Zarządzanie dostępem do portalu" diff --git a/addons/portal_crm/i18n/pl.po b/addons/portal_crm/i18n/pl.po new file mode 100644 index 00000000000..de75aeed0f8 --- /dev/null +++ b/addons/portal_crm/i18n/pl.po @@ -0,0 +1,561 @@ +# Polish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-11 11:41+0000\n" +"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Lead" +msgstr "Sygnał" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,title:0 +msgid "Title" +msgstr "Tytuł" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,probability:0 +msgid "Success Rate (%)" +msgstr "Współczynnik sukcesu (%)" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact us" +msgstr "Skontaktuj się z nami" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action:0 +msgid "Next Action Date" +msgstr "Data następnej akcji" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,fax:0 +msgid "Fax" +msgstr "Faks" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,zip:0 +msgid "Zip" +msgstr "Kod poczt." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_unread:0 +msgid "Unread Messages" +msgstr "Nieprzeczytane wiadomości" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_id:0 +msgid "Company" +msgstr "Firma" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_open:0 +msgid "Days to Open" +msgstr "Dni do otwarcia" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you for your interest, we'll respond to your request shortly." +msgstr "Dziękujemy za zainteresowanie, odpowiemy na zapytanie wkrótce." + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Highest" +msgstr "Najwyższa" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,mobile:0 +msgid "Mobile" +msgstr "Komórka" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,description:0 +msgid "Notes" +msgstr "Uwagi" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages" +msgstr "Wiadomości" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,color:0 +msgid "Color Index" +msgstr "Indeks kolorów" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_latitude:0 +msgid "Geo Latitude" +msgstr "Szerokość geograficzna" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_name:0 +msgid "Customer Name" +msgstr "Nazwa Klienta" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Cancelled" +msgstr "Anulowano" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "Jeśli zaznaczone, to wiadomość wymaga twojej uwagi" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,channel_id:0 +msgid "Communication channel (mail, direct, phone, ...)" +msgstr "kanał komunikacyjny (mail, bezpośredni, telefon...)" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type_id:0 +msgid "Campaign" +msgstr "Kampania" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref:0 +msgid "Reference" +msgstr "Odnośnik" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_next:0 +#: field:portal_crm.crm_contact_us,title_action:0 +msgid "Next Action" +msgstr "Następna akcja" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: portal_crm +#: model:ir.actions.act_window,name:portal_crm.action_contact_us +msgid "Contact Us" +msgstr "Skontaktuj się z nami" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,name:0 +msgid "Subject" +msgstr "Temat" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,opt_out:0 +msgid "Opt-Out" +msgstr "Odmowa" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,priority:0 +msgid "Priority" +msgstr "Priorytet" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state_id:0 +msgid "State" +msgstr "Stan" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_id:0 +msgid "Linked partner (optional). Usually created when converting the lead." +msgstr "" +"Powiązany partner (opcjonalnie). Zwykle tworzone przy konwertowaniu do " +"szansy." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,payment_mode:0 +msgid "Payment Mode" +msgstr "Sposób zapłaty" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "New" +msgstr "Nowe" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type:0 +msgid "Type" +msgstr "Typ" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_from:0 +msgid "Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,channel_id:0 +msgid "Channel" +msgstr "Kanał" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Name" +msgstr "Nazwa" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Lowest" +msgstr "Najniższy" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,create_date:0 +msgid "Creation Date" +msgstr "Data utworzenia" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Close" +msgstr "Zamknij" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Pending" +msgstr "Oczekiwanie" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type:0 +msgid "Type is used to separate Leads and Opportunities" +msgstr "Typ jest stosowany do rozróżnienia sygnałów od szans" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,categ_ids:0 +msgid "Categories" +msgstr "Kategorie" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,stage_id:0 +msgid "Stage" +msgstr "Etap" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_login:0 +msgid "User Login" +msgstr "Nazwa użytkownika" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,opt_out:0 +msgid "" +"If opt-out is checked, this contact has refused to receive emails or " +"unsubscribed to a campaign." +msgstr "" +"Jeśli zaznaczono Odmowa to znaczy, że kontakt odmówił przyjmowania maili lub " +"wypisał się z kampanii." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,contact_name:0 +msgid "Contact Name" +msgstr "Nazwa kontaktu" + +#. module: portal_crm +#: model:ir.ui.menu,name:portal_crm.portal_company_contact +msgid "Contact" +msgstr "Kontakt" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_email:0 +msgid "Partner Contact Email" +msgstr "email partnera kontaktu" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_revenue:0 +msgid "Expected Revenue" +msgstr "Spodziewany dochód" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,task_ids:0 +msgid "Tasks" +msgstr "Zadania" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact form" +msgstr "Formularz kontaktowy" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_currency:0 +msgid "Currency" +msgstr "Waluta" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,write_date:0 +msgid "Update Date" +msgstr "Data aktualizacji" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_deadline:0 +msgid "Expected Closing" +msgstr "Spodziewane zamknięcie" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref2:0 +msgid "Reference 2" +msgstr "Odnośnik 2" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_email:0 +msgid "User Email" +msgstr "Adres email użytkownika" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_open:0 +msgid "Opened" +msgstr "Otwarte" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "In Progress" +msgstr "W toku" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_name:0 +msgid "" +"The name of the future partner company that will be created while converting " +"the lead into opportunity" +msgstr "" +"Przyszła nazwa firmy partnera, która będzie utworzona podczas konwertowania " +"sygnału do szansy." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_cost:0 +msgid "Planned Costs" +msgstr "Planowane koszty" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_deadline:0 +msgid "Estimate of the date on which the opportunity will be won." +msgstr "Oszacowanie daty wygrania szansy" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" +"Te adresy zostaną dodane do pola DW przy wysyłaniu i otrzymywaniu wiadomości " +"dla tego rekordu. Przy wielu adresach oddzielaj je przecinkami." + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Low" +msgstr "Niski" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_closed:0 +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Closed" +msgstr "Zamknięte" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_assign:0 +msgid "Assignation Date" +msgstr "Data przypisania" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state:0 +msgid "Status" +msgstr "Stan" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Normal" +msgstr "Normalny" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_cc:0 +msgid "Global CC" +msgstr "Globalne DW" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street2:0 +msgid "Street2" +msgstr "Ulica2" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,id:0 +msgid "ID" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,phone:0 +msgid "Phone" +msgstr "Telefon" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,active:0 +msgid "Active" +msgstr "Aktywne" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_id:0 +msgid "Salesperson" +msgstr "Sprzedawca" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_close:0 +msgid "Days to Close" +msgstr "Dni do zamknięcia" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_comment_ids:0 +#: help:portal_crm.crm_contact_us,message_comment_ids:0 +msgid "Comments and emails" +msgstr "Komentarze i emaile" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_ids:0 +msgid "Companies" +msgstr "Firmy" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_summary:0 +msgid "Summary" +msgstr "Podsumowanie" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,section_id:0 +msgid "" +"When sending mails, the default email address is taken from the sales team." +msgstr "" +"Przy wysyłaniu wiadomości domyślny adres jest pobierany z zespołu sprzedaży." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_name:0 +msgid "Partner Contact Name" +msgstr "Nazwa kontaktu partnera" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_longitude:0 +msgid "Geo Longitude" +msgstr "Długość geograficzna" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_assign:0 +msgid "Last date this case was forwarded/assigned to a partner" +msgstr "Ostatnia data przekazania/przypisania sprawy do partnera" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_from:0 +msgid "Email address of the contact" +msgstr "Adres email kontaktu" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,city:0 +msgid "City" +msgstr "Miasto" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Submit" +msgstr "Wyślij" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,function:0 +msgid "Function" +msgstr "Funkcja" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,referred:0 +msgid "Referred By" +msgstr "Polecone przez" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Assigned Partner" +msgstr "Przypisany partner" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Opportunity" +msgstr "Szansa" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Partner this case has been forwarded/assigned to." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,country_id:0 +msgid "Country" +msgstr "Kraj" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you" +msgstr "Dziękujemy" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,state:0 +msgid "" +"The Status is set to 'Draft', when a case is created. If the case is in " +"progress the Status is set to 'Open'. When the case is over, the Status is " +"set to 'Done'. If the case needs to be reviewed then the Status is set to " +"'Pending'." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages and communication history" +msgstr "Wiadomości i historia komunikacji" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type_id:0 +msgid "" +"From which campaign (seminar, marketing campaign, mass mailing, ...) did " +"this contact come from?" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "High" +msgstr "Wysoki" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,section_id:0 +msgid "Sales Team" +msgstr "Zespół sprzedaży" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street:0 +msgid "Street" +msgstr "Ulica" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_last:0 +msgid "Last Action" +msgstr "Ostatnia akcja" + +#. module: portal_crm +#: model:ir.model,name:portal_crm.model_portal_crm_crm_contact_us +msgid "Contact form for the portal" +msgstr "Formularz kontaktowy dla portalu" diff --git a/addons/portal_sale/i18n/pl.po b/addons/portal_sale/i18n/pl.po index 252323ff057..e140ecfda72 100644 --- a/addons/portal_sale/i18n/pl.po +++ b/addons/portal_sale/i18n/pl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-26 22:12+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 11:21+0000\n" +"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:55+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: portal_sale #: model:ir.model,name:portal_sale.model_account_config_settings @@ -25,22 +25,22 @@ msgstr "" #. module: portal_sale #: model:ir.actions.act_window,help:portal_sale.portal_action_invoices msgid "We haven't sent you any invoice." -msgstr "" +msgstr "Nie wysłaliśmy ci żadnych faktur." #. module: portal_sale #: model:ir.actions.act_window,help:portal_sale.action_orders_portal msgid "We haven't sent you any sale order." -msgstr "" +msgstr "Nie wysłaliśmy ci żadnych zamówień sprzedaży." #. module: portal_sale #: model:res.groups,name:portal_sale.group_payment_options msgid "View Online Payment Options" -msgstr "" +msgstr "Obejrzyj opcje płatności online" #. module: portal_sale #: field:account.config.settings,group_payment_options:0 msgid "Show payment buttons to employees too" -msgstr "" +msgstr "Pokaż przycisk płatności również pracownikom" #. module: portal_sale #: model:email.template,subject:portal_sale.email_template_edi_sale @@ -48,16 +48,18 @@ msgid "" "${object.company_id.name} ${object.state in ('draft', 'sent') and " "'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })" msgstr "" +"${object.company_id.name} ${object.state in ('draft', 'sent') and 'Oferta' " +"or 'Zamówienie'} (Ref ${object.name or 'n/a' })" #. module: portal_sale #: model:ir.actions.act_window,help:portal_sale.action_quotations_portal msgid "We haven't sent you any quotation." -msgstr "" +msgstr "Nie wysłaliśmy ci żadnych ofert" #. module: portal_sale #: model:ir.ui.menu,name:portal_sale.portal_sales_orders msgid "Sales Orders" -msgstr "" +msgstr "Zamówienia Sprzedaży" #. module: portal_sale #: model:email.template,body_html:portal_sale.email_template_edi_invoice @@ -192,6 +194,10 @@ msgid "" "who are accessing\n" "their documents through the portal." msgstr "" +"Członkowie tych grup widzą opcje płatności\n" +"w Zamówieniach sprzedaży i Fakturach sprzedaży. Opcje są przeznaczone dla " +"klientów\n" +"korzystających z dokumentów udostępnionych przez portal." #. module: portal_sale #: model:email.template,report_name:portal_sale.email_template_edi_invoice @@ -203,29 +209,29 @@ msgstr "" #. module: portal_sale #: model:email.template,subject:portal_sale.email_template_edi_invoice msgid "${object.company_id.name} Invoice (Ref ${object.number or 'n/a' })" -msgstr "" +msgstr "${object.company_id.name} Faktura (Ref ${object.number or 'n/a' })" #. module: portal_sale #: model:ir.model,name:portal_sale.model_mail_mail msgid "Outgoing Mails" -msgstr "" +msgstr "Wychodzace" #. module: portal_sale #: model:ir.actions.act_window,name:portal_sale.action_quotations_portal #: model:ir.ui.menu,name:portal_sale.portal_quotations msgid "Quotations" -msgstr "" +msgstr "Oferty" #. module: portal_sale #: model:ir.model,name:portal_sale.model_sale_order msgid "Sales Order" -msgstr "" +msgstr "Zamówienie sprzedaży" #. module: portal_sale #: field:account.invoice,portal_payment_options:0 #: field:sale.order,portal_payment_options:0 msgid "Portal Payment Options" -msgstr "" +msgstr "Opcje płatności portalowych" #. module: portal_sale #: help:account.config.settings,group_payment_options:0 @@ -233,12 +239,14 @@ msgid "" "Show online payment options on Sale Orders and Customer Invoices to " "employees. If not checked, these options are only visible to portal users." msgstr "" +"Pokazuje pracownikom opcje płatności za Zamówienia lub Faktury. Jeśli nie " +"zaznaczone, to opcje są widoczne tylko dla użytkowników portalu." #. module: portal_sale #: model:ir.actions.act_window,name:portal_sale.portal_action_invoices #: model:ir.ui.menu,name:portal_sale.portal_invoices msgid "Invoices" -msgstr "" +msgstr "Faktury" #. module: portal_sale #: view:account.config.settings:0 @@ -378,12 +386,12 @@ msgstr "" #. module: portal_sale #: model:ir.model,name:portal_sale.model_account_invoice msgid "Invoice" -msgstr "" +msgstr "Faktura" #. module: portal_sale #: model:ir.actions.act_window,name:portal_sale.action_orders_portal msgid "Sale Orders" -msgstr "" +msgstr "Zamówienia sprzedaży" #. module: portal_sale #: model:email.template,report_name:portal_sale.email_template_edi_sale diff --git a/addons/portal_sale/i18n/pt.po b/addons/portal_sale/i18n/pt.po new file mode 100644 index 00000000000..1ccefff480d --- /dev/null +++ b/addons/portal_sale/i18n/pt.po @@ -0,0 +1,393 @@ +# Portuguese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:03+0000\n" +"PO-Revision-Date: 2012-12-11 15:45+0000\n" +"Last-Translator: Andrei Talpa (multibase.pt) \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_account_config_settings +msgid "account.config.settings" +msgstr "account.config.settings" + +#. module: portal_sale +#: model:ir.actions.act_window,help:portal_sale.portal_action_invoices +msgid "We haven't sent you any invoice." +msgstr "" + +#. module: portal_sale +#: model:ir.actions.act_window,help:portal_sale.action_orders_portal +msgid "We haven't sent you any sale order." +msgstr "" + +#. module: portal_sale +#: model:res.groups,name:portal_sale.group_payment_options +msgid "View Online Payment Options" +msgstr "" + +#. module: portal_sale +#: field:account.config.settings,group_payment_options:0 +msgid "Show payment buttons to employees too" +msgstr "" + +#. module: portal_sale +#: model:email.template,subject:portal_sale.email_template_edi_sale +msgid "" +"${object.company_id.name} ${object.state in ('draft', 'sent') and " +"'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })" +msgstr "" + +#. module: portal_sale +#: model:ir.actions.act_window,help:portal_sale.action_quotations_portal +msgid "We haven't sent you any quotation." +msgstr "" + +#. module: portal_sale +#: model:ir.ui.menu,name:portal_sale.portal_sales_orders +msgid "Sales Orders" +msgstr "" + +#. module: portal_sale +#: model:email.template,body_html:portal_sale.email_template_edi_invoice +msgid "" +"\n" +"
\n" +"\n" +"

Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name " +"or ''},

\n" +"\n" +"

A new invoice is available for you:

\n" +" \n" +"

\n" +"   REFERENCES
\n" +"   Invoice number: ${object.number}
\n" +"   Invoice total: ${object.amount_total} " +"${object.currency_id.name}
\n" +"   Invoice date: ${object.date_invoice}
\n" +" % if object.origin:\n" +"   Order reference: ${object.origin}
\n" +" % endif\n" +" % if object.user_id:\n" +"   Your contact: ${object.user_id.name}\n" +" % endif\n" +"

\n" +"\n" +" <%\n" +" action = 'portal_sale.portal_action_invoices'\n" +" object.partner_id.signup_prepare()\n" +" signup_url = " +"object.partner_id._get_signup_url_for_action(action=action,view_type='form',r" +"es_id=object.id)[object.partner_id.id]\n" +" %>\n" +" % if signup_url:\n" +"

\n" +" You can access the invoice document and pay online via our Customer " +"Portal:\n" +"

\n" +" View Invoice\n" +" % endif\n" +" \n" +" % if object.company_id.paypal_account and object.type in ('out_invoice', " +"'in_refund'):\n" +" <% \n" +" comp_name = quote(object.company_id.name)\n" +" inv_number = quote(object.number)\n" +" paypal_account = quote(object.company_id.paypal_account)\n" +" inv_amount = quote(str(object.residual))\n" +" cur_name = quote(object.currency_id.name)\n" +" paypal_url = \"https://www.paypal.com/cgi-" +"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Invoice%%20%s&" +"\" \\\n" +" " +"\"invoice=%s&amount=%s&currency_code=%s&button_subtype=services&a" +"mp;no_note=1&bn=OpenERP_Invoice_PayNow_%s\" % \\\n" +" " +"(paypal_account,comp_name,inv_number,inv_number,inv_amount,cur_name,cur_name)" +"\n" +" %>\n" +"
\n" +"

It is also possible to directly pay with Paypal:

\n" +" \n" +" \n" +" \n" +" % endif\n" +" \n" +"
\n" +"

If you have any question, do not hesitate to contact us.

\n" +"

Thank you for choosing ${object.company_id.name or 'us'}!

\n" +"
\n" +"
\n" +"
\n" +"

\n" +" ${object.company_id.name}

\n" +"
\n" +"
\n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
\n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
\n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
\n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
\n" +" % endif\n" +"
\n" +" % if object.company_id.phone:\n" +"
\n" +" Phone:  ${object.company_id.phone}\n" +"
\n" +" % endif\n" +" % if object.company_id.website:\n" +"
\n" +" Web : ${object.company_id.website}\n" +"
\n" +" %endif\n" +"

\n" +"
\n" +"
\n" +" " +msgstr "" + +#. module: portal_sale +#: model:res.groups,comment:portal_sale.group_payment_options +msgid "" +"Members of this group see the online payment options\n" +"on Sale Orders and Customer Invoices. These options are meant for customers " +"who are accessing\n" +"their documents through the portal." +msgstr "" + +#. module: portal_sale +#: model:email.template,report_name:portal_sale.email_template_edi_invoice +msgid "" +"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' " +"and 'draft' or ''}" +msgstr "" + +#. module: portal_sale +#: model:email.template,subject:portal_sale.email_template_edi_invoice +msgid "${object.company_id.name} Invoice (Ref ${object.number or 'n/a' })" +msgstr "" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: portal_sale +#: model:ir.actions.act_window,name:portal_sale.action_quotations_portal +#: model:ir.ui.menu,name:portal_sale.portal_quotations +msgid "Quotations" +msgstr "" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: portal_sale +#: field:account.invoice,portal_payment_options:0 +#: field:sale.order,portal_payment_options:0 +msgid "Portal Payment Options" +msgstr "" + +#. module: portal_sale +#: help:account.config.settings,group_payment_options:0 +msgid "" +"Show online payment options on Sale Orders and Customer Invoices to " +"employees. If not checked, these options are only visible to portal users." +msgstr "" + +#. module: portal_sale +#: model:ir.actions.act_window,name:portal_sale.portal_action_invoices +#: model:ir.ui.menu,name:portal_sale.portal_invoices +msgid "Invoices" +msgstr "" + +#. module: portal_sale +#: view:account.config.settings:0 +msgid "Configure payment acquiring methods" +msgstr "" + +#. module: portal_sale +#: model:email.template,body_html:portal_sale.email_template_edi_sale +msgid "" +"\n" +"
\n" +"\n" +"

Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name " +"or ''},

\n" +" \n" +"

Here is your ${object.state in ('draft', 'sent') and 'quotation' or " +"'order confirmation'} from ${object.company_id.name}:

\n" +"\n" +"

\n" +"   REFERENCES
\n" +"   Order number: ${object.name}
\n" +"   Order total: ${object.amount_total} " +"${object.pricelist_id.currency_id.name}
\n" +"   Order date: ${object.date_order}
\n" +" % if object.origin:\n" +"   Order reference: ${object.origin}
\n" +" % endif\n" +" % if object.client_order_ref:\n" +"   Your reference: ${object.client_order_ref}
\n" +" % endif\n" +" % if object.user_id:\n" +"   Your contact: ${object.user_id.name}\n" +" % endif\n" +"

\n" +"\n" +" <%\n" +" action = 'portal_sale.action_quotations_portal' if object.state in " +"('draft', 'sent') else 'portal_sale.action_orders_portal'\n" +" object.partner_id.signup_prepare()\n" +" signup_url = " +"object.partner_id._get_signup_url_for_action(action=action,view_type='form',r" +"es_id=object.id)[object.partner_id.id]\n" +" %>\n" +" % if signup_url:\n" +"

\n" +" You can access this document and pay online via our Customer Portal:\n" +"

\n" +" View ${object.state in ('draft', 'sent') " +"and 'Quotation' or 'Order'}\n" +" % endif\n" +"\n" +" % if object.order_policy in ('prepaid','manual') and " +"object.company_id.paypal_account and object.state != 'draft':\n" +" <%\n" +" comp_name = quote(object.company_id.name)\n" +" order_name = quote(object.name)\n" +" paypal_account = quote(object.company_id.paypal_account)\n" +" order_amount = quote(str(object.residual))\n" +" cur_name = quote(object.pricelist_id.currency_id.name)\n" +" paypal_url = \"https://www.paypal.com/cgi-" +"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Order%%20%s\" \\\n" +" " +"\"&invoice=%s&amount=%s&currency_code=%s&button_subtype=servi" +"ces&no_note=1\" \\\n" +" \"&bn=OpenERP_Order_PayNow_%s\" % \\\n" +" " +"(paypal_account,comp_name,order_name,order_name,order_amount,cur_name,cur_nam" +"e)\n" +" %>\n" +"
\n" +"

It is also possible to directly pay with Paypal:

\n" +" \n" +" \n" +" \n" +" % endif\n" +"\n" +"
\n" +"

If you have any question, do not hesitate to contact us.

\n" +"

Thank you for choosing ${object.company_id.name or 'us'}!

\n" +"
\n" +"
\n" +"
\n" +"

\n" +" ${object.company_id.name}

\n" +"
\n" +"
\n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
\n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
\n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
\n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
\n" +" % endif\n" +"
\n" +" % if object.company_id.phone:\n" +"
\n" +" Phone:  ${object.company_id.phone}\n" +"
\n" +" % endif\n" +" % if object.company_id.website:\n" +"
\n" +" Web : ${object.company_id.website}\n" +"
\n" +" %endif\n" +"

\n" +"
\n" +"
\n" +" " +msgstr "" + +#. module: portal_sale +#: model:ir.model,name:portal_sale.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: portal_sale +#: model:ir.actions.act_window,name:portal_sale.action_orders_portal +msgid "Sale Orders" +msgstr "" + +#. module: portal_sale +#: model:email.template,report_name:portal_sale.email_template_edi_sale +msgid "" +"${(object.name or '').replace('/','_')}_${object.state == 'draft' and " +"'draft' or ''}" +msgstr "" diff --git a/addons/process/i18n/de.po b/addons/process/i18n/de.po index 90551bebf05..0cf77a59389 100644 --- a/addons/process/i18n/de.po +++ b/addons/process/i18n/de.po @@ -7,15 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:54+0000\n" -"PO-Revision-Date: 2010-12-29 10:26+0000\n" +"PO-Revision-Date: 2012-12-11 17:09+0000\n" "Last-Translator: Thorsten Vocks (OpenBig.org) \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: 2012-11-25 05:51+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: process #: model:ir.model,name:process.model_process_node @@ -39,7 +39,7 @@ msgstr "Bezug zu Menü" #. module: process #: selection:process.node,kind:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: process #: field:process.transition,action_ids:0 @@ -137,7 +137,7 @@ msgstr "Vorgangsverkettungen" #: code:addons/process/static/src/xml/process.xml:39 #, python-format msgid "Last modified by:" -msgstr "" +msgstr "Zuletzt bearbeitet von:" #. module: process #: field:process.transition.action,action:0 @@ -149,7 +149,7 @@ msgstr "Verkettungsaktion ID" #: code:addons/process/static/src/xml/process.xml:7 #, python-format msgid "Process View" -msgstr "" +msgstr "Prozess Ansicht" #. module: process #: model:ir.model,name:process.model_process_transition @@ -197,7 +197,7 @@ msgstr "Anfang Kette" #: code:addons/process/static/src/xml/process.xml:54 #, python-format msgid "Related:" -msgstr "" +msgstr "Zugehörig:" #. module: process #: view:process.node:0 @@ -213,7 +213,7 @@ msgstr "Bemerkungen" #: code:addons/process/static/src/xml/process.xml:88 #, python-format msgid "Edit Process" -msgstr "" +msgstr "Prozess bearbeiten" #. module: process #. openerp-web @@ -252,7 +252,7 @@ msgstr "Aktion" #: code:addons/process/static/src/xml/process.xml:67 #, python-format msgid "Select Process" -msgstr "" +msgstr "Prozess auswählen" #. module: process #: field:process.condition,model_states:0 @@ -339,7 +339,7 @@ msgstr "Typ Knoten" #: code:addons/process/static/src/xml/process.xml:42 #, python-format msgid "Subflows:" -msgstr "" +msgstr "Unterprozesse:" #. module: process #: view:process.node:0 @@ -376,7 +376,7 @@ msgstr "Objekt Methode" #: code:addons/process/static/src/xml/process.xml:77 #, python-format msgid "Select" -msgstr "" +msgstr "Auswählen" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/process/i18n/pt_BR.po b/addons/process/i18n/pt_BR.po index 352978dd4e3..83d692b6bdf 100644 --- a/addons/process/i18n/pt_BR.po +++ b/addons/process/i18n/pt_BR.po @@ -7,15 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:54+0000\n" -"PO-Revision-Date: 2012-07-28 19:10+0000\n" +"PO-Revision-Date: 2012-12-11 12:14+0000\n" "Last-Translator: Fábio Martinelli - http://zupy.com.br " "\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: 2012-11-25 05:51+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: process #: model:ir.model,name:process.model_process_node @@ -41,7 +41,7 @@ msgstr "Menu relacionado" #. module: process #: selection:process.node,kind:0 msgid "Status" -msgstr "" +msgstr "Situação" #. module: process #: field:process.transition,action_ids:0 @@ -139,7 +139,7 @@ msgstr "Transições de Workflow" #: code:addons/process/static/src/xml/process.xml:39 #, python-format msgid "Last modified by:" -msgstr "" +msgstr "Última atualização por:" #. module: process #: field:process.transition.action,action:0 @@ -151,7 +151,7 @@ msgstr "Ação ID" #: code:addons/process/static/src/xml/process.xml:7 #, python-format msgid "Process View" -msgstr "" +msgstr "Visão de Processo" #. module: process #: model:ir.model,name:process.model_process_transition @@ -199,7 +199,7 @@ msgstr "Iniciando transações" #: code:addons/process/static/src/xml/process.xml:54 #, python-format msgid "Related:" -msgstr "" +msgstr "Relacionado:" #. module: process #: view:process.node:0 @@ -215,7 +215,7 @@ msgstr "Observações" #: code:addons/process/static/src/xml/process.xml:88 #, python-format msgid "Edit Process" -msgstr "" +msgstr "Editar Processo" #. module: process #. openerp-web @@ -254,7 +254,7 @@ msgstr "Ação" #: code:addons/process/static/src/xml/process.xml:67 #, python-format msgid "Select Process" -msgstr "" +msgstr "Selecionar processo" #. module: process #: field:process.condition,model_states:0 @@ -341,7 +341,7 @@ msgstr "Tipo de nó" #: code:addons/process/static/src/xml/process.xml:42 #, python-format msgid "Subflows:" -msgstr "" +msgstr "Sub fluxos:" #. module: process #: view:process.node:0 @@ -354,7 +354,7 @@ msgstr "Transições de saida" #: code:addons/process/static/src/xml/process.xml:36 #, python-format msgid "Notes:" -msgstr "" +msgstr "Notas:" #. module: process #: selection:process.node,kind:0 @@ -378,7 +378,7 @@ msgstr "Método objeto" #: code:addons/process/static/src/xml/process.xml:77 #, python-format msgid "Select" -msgstr "" +msgstr "Selecionar" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/procurement/i18n/pt.po b/addons/procurement/i18n/pt.po index ef2f3362991..9ddd28ed627 100644 --- a/addons/procurement/i18n/pt.po +++ b/addons/procurement/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-12-10 13:18+0000\n" -"Last-Translator: Paulino Ascenção \n" +"PO-Revision-Date: 2012-12-11 15:50+0000\n" +"Last-Translator: Andrei Talpa (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:48+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: procurement #: model:ir.ui.menu,name:procurement.menu_stock_sched @@ -95,7 +95,7 @@ msgstr "Calcular apenas regras de stock mínimo." #. module: procurement #: view:stock.warehouse.orderpoint:0 msgid "Rules" -msgstr "" +msgstr "Regras" #. module: procurement #: field:procurement.order,company_id:0 @@ -127,7 +127,7 @@ msgstr "Último erro" #. module: procurement #: field:stock.warehouse.orderpoint,product_min_qty:0 msgid "Minimum Quantity" -msgstr "" +msgstr "Quantidade mínima" #. module: procurement #: help:mrp.property,composition:0 @@ -164,7 +164,7 @@ msgstr "" #. module: procurement #: field:procurement.order,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensagens" #. module: procurement #: help:procurement.order,message:0 @@ -205,7 +205,7 @@ msgstr "Executar todos os planeadores" #: code:addons/procurement/procurement.py:137 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Ação inválida!" #. module: procurement #: help:procurement.order,message_summary:0 diff --git a/addons/product/i18n/de.po b/addons/product/i18n/de.po index 26d56904db2..69ea58140c9 100644 --- a/addons/product/i18n/de.po +++ b/addons/product/i18n/de.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 18:16+0000\n" -"Last-Translator: Ferdinand-camptocamp \n" +"PO-Revision-Date: 2012-12-11 22:12+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \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: 2012-12-04 05:32+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: product #: field:product.packaging,rows:0 @@ -24,7 +25,7 @@ msgstr "Anzahl Ebenen" #. module: product #: help:product.pricelist.item,base:0 msgid "Base price for computation." -msgstr "" +msgstr "Basis Preis zur Berechnung" #. module: product #: help:product.product,seller_qty:0 @@ -40,7 +41,7 @@ msgstr "Tag" #. module: product #: model:product.template,name:product.product_product_34_product_template msgid "Webcam" -msgstr "" +msgstr "Webcam" #. module: product #: field:product.product,incoming_qty:0 @@ -50,12 +51,12 @@ msgstr "Eingang" #. module: product #: view:product.product:0 msgid "Product Name" -msgstr "" +msgstr "Produktbezeichnung" #. module: product #: view:product.template:0 msgid "Second Unit of Measure" -msgstr "" +msgstr "Alternative Mengeneinheit" #. module: product #: help:res.partner,property_product_pricelist:0 @@ -96,6 +97,8 @@ msgstr "Regel Bezeichnung" msgid "" "Base price to compute the customer price. Sometimes called the catalog price." msgstr "" +"Basis Preis für die Berechnung des Verkaufspreis. Manchmal wird dieser Preis " +"auch Listenpreis genannt." #. module: product #: model:product.template,name:product.product_product_3_product_template @@ -108,18 +111,21 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Hier finden Sie die Nachrichtenübersicht (Anzahl Nachrichten etc., ...) im " +"html Format, um über dieses Format dann später in einer Kanban Ansicht " +"weiterzuarbeiten." #. module: product #: code:addons/product/pricelist.py:177 #: code:addons/product/product.py:206 #, python-format msgid "Warning!" -msgstr "" +msgstr "Warnung!" #. module: product #: field:product.product,image_small:0 msgid "Small-sized image" -msgstr "" +msgstr "Kleines Bild" #. module: product #: code:addons/product/product.py:174 @@ -149,7 +155,7 @@ msgstr "Berechnungsregel für diese Position der Preisliste" #. module: product #: field:product.template,uos_coeff:0 msgid "Unit of Measure -> UOS Coeff" -msgstr "" +msgstr "ME -> VE Umrechnung" #. module: product #: field:product.price_list,price_list:0 @@ -207,6 +213,9 @@ msgid "" "Error! You cannot define the decimal precision of 'Account' as greater than " "the rounding factor of the company's main currency" msgstr "" +"Fehler ! Die Dezimalstellen Konfiguration der Finanzbuchhaltung " +"Einstellungen darf nicht größer sein als der Rundungsfaktor für die " +"Hauptwährung des Unternehmens." #. module: product #: field:product.category,parent_id:0 @@ -234,6 +243,9 @@ msgid "" "Error! You cannot define a rounding factor for the company's main currency " "that is smaller than the decimal precision of 'Account'." msgstr "" +"Fehler ! Sie können keinen Rundungsfaktor für die Hauptwährung des " +"Unternehmens einstellen, der kleiner ist als die Dezimalstellen " +"Konfiguration der Finanzbuchhaltung Einstellungen." #. module: product #: help:product.product,outgoing_qty:0 @@ -248,13 +260,19 @@ msgid "" "Otherwise, this includes goods leaving any Stock Location with 'internal' " "type." msgstr "" +"geplante Produktabgänge. In Zusammenhang von\n" +"* EINEM Lagerort: Mengen diese Lagers und aller untergeordneten Läger \n" +"* EINEM Lager: Mengen dieses Lagerorts und aller untergeordneten Läger \n" +"* EINEM Shop: Mengen des Lagers dieses Geschäftes und aller untergeordneten " +"Läger\n" +"In allen anderen Fällen: Die Menge auf internen Lägern" #. module: product #: model:product.template,description_sale:product.product_product_42_product_template msgid "" "Office Editing Software with word processing, spreadsheets, presentations, " "graphics, and databases..." -msgstr "" +msgstr "Büro Software zur Textverarbeitung, Tabellenkalkulation etc." #. module: product #: field:product.product,seller_id:0 @@ -276,6 +294,8 @@ msgstr "Verpackung" msgid "" "If unchecked, it will allow you to hide the product without removing it." msgstr "" +"Durch De-Aktivierung, können Sie das Produkt verbergen, ohne dass es gleich " +"gelöscht werden muss." #. module: product #: view:product.product:0 @@ -287,7 +307,7 @@ msgstr "Kategorie" #. module: product #: model:product.uom,name:product.product_uom_litre msgid "Litre" -msgstr "" +msgstr "Liter" #. module: product #: model:product.template,name:product.product_product_25_product_template @@ -356,6 +376,16 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Erstellung eines neuen Verpackung Typ.\n" +"

\n" +" Der Verpackung Typ beinhaltet sowohl Dimensionen als auch " +"die Mengen\n" +"der jeweiligen Produkte pro Paket. Dadurch kann der Verkäufer sicherstellen, " +"dass\n" +"die korrekte Anzahl in Bezug auf die gewählte Verpackung ausgewählt wurde.\n" +"

\n" +" " #. module: product #: field:product.template,product_manager:0 @@ -391,7 +421,7 @@ msgstr "Verpackungslänge" #. module: product #: field:product.product,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Zusammenfassung" #. module: product #: help:product.template,weight_net:0 @@ -417,6 +447,8 @@ msgid "" "Specify a product if this rule only applies to one product. Keep empty " "otherwise." msgstr "" +"Wählen Sie hier ein Produkt aus, wenn diese Regel nur für dieses eine " +"Produkt gelten soll. Ansonsten nehmen Sie hier keinen Eintrag vor." #. module: product #: model:product.uom.categ,name:product.product_uom_categ_kgm @@ -436,6 +468,12 @@ msgid "" "Otherwise, this includes goods stored in any Stock Location with 'internal' " "type." msgstr "" +"Geplante Bestandsmenge des Produktes. In Zusammenhang von\n" +"* EINEM Lagerort: Mengen diese Lagers und aller untergeordneten Läger \n" +"* EINEM Lager: Mengen diese Lagerorts und aller untergeordneten Läger \n" +"* EINEM Shop: Mengen diese Lagers dieses Geschäftes und aller " +"untergeordneten Läger\n" +"In allen anderen Fällen: Die Menge auf internen Lägern" #. module: product #: field:product.packaging,height:0 @@ -445,12 +483,12 @@ msgstr "Höhe" #. module: product #: view:product.product:0 msgid "Procurements" -msgstr "" +msgstr "Beschaffung" #. module: product #: model:res.groups,name:product.group_mrp_properties msgid "Manage Properties of Product" -msgstr "" +msgstr "Verwalte Produkt Eigenschaften" #. module: product #: help:product.uom,factor:0 @@ -459,6 +497,9 @@ msgid "" "Measure for this category:\n" "1 * (reference unit) = ratio * (this unit)" msgstr "" +"Wie viel größer oder kleiner ist diese Einheit im Vergleich zur Referenz " +"Einheit in dieser Kategorie:\n" +"1 * (Referenz Einheit) = Faktor * (Diese Einheit)" #. module: product #: model:ir.model,name:product.model_pricelist_partnerinfo @@ -528,6 +569,12 @@ msgid "" "Otherwise, this includes goods arriving to any Stock Location with " "'internal' type." msgstr "" +"geplante Produktzugänge. In Zusammenhang von\n" +"* EINEM Lagerort: Mengen diese Lagers und aller untergeordneten Läger \n" +"* EINEM Lager: Mengen diese Lagerorts und aller untergeordneten Läger \n" +"* EINEM Shop: Mengen des Lagers dieses Geschäftes und aller untergeordneten " +"Läger\n" +"In allen anderen Fällen: Die Menge auf internen Lägern" #. module: product #: constraint:product.template:0 @@ -535,6 +582,8 @@ msgid "" "Error: The default Unit of Measure and the purchase Unit of Measure must be " "in the same category." msgstr "" +"Fehler: Die Standard Mengeneinheit und die Einkauf Mengeneinheit müssen in " +"der selben Kategorie sein." #. module: product #: model:ir.model,name:product.model_product_uom_categ @@ -549,7 +598,7 @@ msgstr "Box 20x20x40" #. module: product #: field:product.template,warranty:0 msgid "Warranty" -msgstr "" +msgstr "Garantie" #. module: product #: view:product.pricelist.item:0 @@ -562,11 +611,13 @@ msgid "" "You provided an invalid \"EAN13 Barcode\" reference. You may use the " "\"Internal Reference\" field instead." msgstr "" +"Sie haben eine ungültige \"EAN13 Barcode\" Referenz angegeben. Sie können " +"anstatt dessen auch das Feld \"Referenz\" benutzen." #. module: product #: model:res.groups,name:product.group_purchase_pricelist msgid "Purchase Pricelists" -msgstr "" +msgstr "Einkaufspreisliste" #. module: product #: model:product.template,name:product.product_product_5_product_template @@ -591,7 +642,7 @@ msgstr "Die Breite der Verpackung" #: code:addons/product/product.py:359 #, python-format msgid "Unit of Measure categories Mismatch!" -msgstr "" +msgstr "Zuordnungsfehler Mengeneinheit Kategorien!" #. module: product #: model:product.template,name:product.product_product_36_product_template @@ -616,7 +667,7 @@ msgstr "Linker Stamm" #. module: product #: help:product.pricelist.item,price_max_margin:0 msgid "Specify the maximum amount of margin over the base price." -msgstr "" +msgstr "Definieren Sie die max. Marge im Vergleich zum Basispreis" #. module: product #: constraint:product.pricelist.item:0 @@ -628,7 +679,7 @@ msgstr "" #. module: product #: view:product.price_list:0 msgid "or" -msgstr "" +msgstr "oder" #. module: product #: constraint:product.packaging:0 @@ -703,6 +754,10 @@ msgid "" "period (usually every year). \n" "Average Price: The cost price is recomputed at each incoming shipment." msgstr "" +"Standard Preis: Der Anschaffungspreis / Herstellungspreis wird manuell zum " +"Ende einer spezifizierten Periode angepasst (in der Regel jedes Jahr)\n" +"Durchschnittspreis: Der Anschaffungspreis / Herstellungspreis wird laufend " +"bei jedem neuen Warenzugang durch OpenERP neu berechnet." #. module: product #: field:product.product,qty_available:0 @@ -717,7 +772,7 @@ msgstr "Preisbezeichnung" #. module: product #: help:product.product,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Wenn aktiviert, erfordern neue Nachrichten Ihr Handeln" #. module: product #: model:product.category,name:product.product_category_1 @@ -736,12 +791,12 @@ msgstr "Preisliste" #. module: product #: field:product.product,virtual_available:0 msgid "Forecasted Quantity" -msgstr "" +msgstr "Geplante Bestandsmenge" #. module: product #: view:product.product:0 msgid "Purchase" -msgstr "" +msgstr "Beschaffung" #. module: product #: model:product.template,name:product.product_product_33_product_template @@ -756,7 +811,7 @@ msgstr "Lieferanten" #. module: product #: model:res.groups,name:product.group_sale_pricelist msgid "Sales Pricelists" -msgstr "" +msgstr "Verkaufspreisliste" #. module: product #: view:product.pricelist.item:0 @@ -784,6 +839,8 @@ msgid "" "Cost price of the product used for standard stock valuation in accounting " "and used as a base price on purchase orders." msgstr "" +"Der Anschaffungspreis eines Produkts wird genutzt zur Lagerbestand " +"Bewertung, und nicht als Basispreis für die Berechnung von Einkaufspreisen." #. module: product #: field:product.category,child_id:0 @@ -867,7 +924,7 @@ msgstr "" #. module: product #: view:product.template:0 msgid "days" -msgstr "" +msgstr "Tage" #. module: product #: model:process.node,name:product.process_node_supplier0 @@ -893,7 +950,7 @@ msgstr "" msgid "" "Coefficient to convert default Unit of Measure to Unit of Sale\n" " uos = uom * coeff" -msgstr "" +msgstr "Faktor zur Berechnung Standard UoM -> UoS" #. module: product #: model:ir.actions.act_window,name:product.product_category_action_form @@ -935,7 +992,7 @@ msgstr "Preislistentyp" #. module: product #: field:product.product,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Ist bereits Follower" #. module: product #: field:product.product,price_extra:0 @@ -954,6 +1011,9 @@ msgid "" "Measure in this category:\n" "1 * (this unit) = ratio * (reference unit)" msgstr "" +"Wie viel größer oder kleiner ist diese Einheit im Vergleich zur Referenz " +"Einheit in dieser Kategorie:\n" +"1 * (Referenz Einheit) = Faktor * (Diese Einheit)" #. module: product #: view:product.template:0 @@ -972,11 +1032,13 @@ msgid "" "Specify the minimum quantity that needs to be bought/sold for the rule to " "apply." msgstr "" +"Definieren Sie die minimale Menge, die erreicht werden muss, damit das neue " +"Regelwerk Anwendung findet." #. module: product #: help:product.pricelist.version,date_start:0 msgid "First valid date for the version." -msgstr "" +msgstr "Erster Datumseintrag für diese Version" #. module: product #: help:product.supplierinfo,delay:0 @@ -1045,6 +1107,25 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Anlage eines neuen Produkts\n" +"

\n" +" Sie müssen ein Produkt für alle Ihre Verkäufe definieren, \n" +" sei es ein physikalisches Produkt, eine Dienstleistung oder " +"\n" +" eine Verbrauchsware mit jeweils einer eindeutigen \n" +" Produktezuweisung.\n" +"

\n" +" Das Produkt Formular beinhaltet einige Informationen zur \n" +" Optimierung des gesamten Auftragsprozess. Das Produkte " +"Formular \n" +" beinhaltet sämtliche Informationen zur Simplifizierung des " +"\n" +" Verkaufsprozess: Preise, Mitteilungen zum Angebot , " +"Finanzbuchhaltung \n" +" Daten, Beschaffungsmethode, etc.\n" +"

\n" +" " #. module: product #: view:product.price_list:0 @@ -1063,6 +1144,8 @@ msgid "" "Product Unit of Measure if not empty, in the default unit of measure of the " "product otherwise." msgstr "" +"Die minimale Bestellmenge beim Lieferanten, ausgedrückt in der Lieferanten " +"Mengeneinheit ist noch nicht definiert." #. module: product #: view:product.product:0 @@ -1104,7 +1187,7 @@ msgstr "Aufschlag" #: field:product.product,code:0 #: field:product.product,default_code:0 msgid "Internal Reference" -msgstr "" +msgstr "Interne Referenz" #. module: product #: model:product.template,name:product.product_product_8_product_template @@ -1141,7 +1224,7 @@ msgstr "" #. module: product #: help:product.product,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Nachrichten und Kommunikation" #. module: product #: model:product.uom,name:product.product_uom_kgm @@ -1161,7 +1244,7 @@ msgstr "km" #. module: product #: field:product.template,standard_price:0 msgid "Cost" -msgstr "" +msgstr "Kosten" #. module: product #: help:product.category,sequence:0 @@ -1206,13 +1289,13 @@ msgstr "Verkaufseinheit" #. module: product #: field:product.product,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ungelesene Mitteilungen" #. 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 "Unit of Measure Categories" -msgstr "" +msgstr "Einheiten Kategorien" #. module: product #: help:product.product,seller_id:0 @@ -1228,7 +1311,7 @@ msgstr "Dienstleistungen" #. module: product #: help:product.product,ean13:0 msgid "International Article Number used for product identification." -msgstr "" +msgstr "Internationale Artikelnummer zur Produktidentifikation" #. module: product #: model:ir.actions.act_window,help:product.product_category_action @@ -1242,6 +1325,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Hier finden Sie die vollständige Produktliste, die nach " +"Kategorien klassifiziert wurde.\n" +"Sie können Sie dann mit einem Klick auf eine der Kategorien die " +"untergeordneten Produkte sowie\n" +"auch die Produkte der Unterkategorien sehen. \n" +"

\n" +" " #. module: product #: code:addons/product/product.py:359 @@ -1252,6 +1343,11 @@ msgid "" "you may deactivate this product from the 'Procurements' tab and create a new " "one." msgstr "" +"Neue Mengeneinheit '%s' muss derselben Kategorie '%s' angehören wie die " +"alte 'Mengeneinheit '%s'. Wenn Sie die zugeordnete Einheit im laufenden " +"Betrieb zwingend ändern müssen , sollten Sie möglicherweise dieses Produkt " +"über den Aktenreiter Beschaffung deaktivieren und dann ein neues Produkt " +"anlegen." #. module: product #: model:ir.actions.act_window,name:product.product_normal_action @@ -1279,6 +1375,8 @@ msgstr "Anzahl Ebenen auf einer Palette oder Box." #: help:product.pricelist.item,price_min_margin:0 msgid "Specify the minimum amount of margin over the base price." msgstr "" +"Legen Sie die Min. Spanne fest, die mindestens über dem Basispreis erzielt " +"werden soll." #. module: product #: field:product.template,weight_net:0 @@ -1297,6 +1395,8 @@ msgid "" "This field holds the image used as image for the product, limited to " "1024x1024px." msgstr "" +"In diesem Feld finden Sie das Bild für das Produkt in Form einer Datei, " +"limitiert auf die Größe 1024x1024px" #. module: product #: field:product.template,seller_ids:0 @@ -1309,11 +1409,13 @@ msgid "" "Specify a product category if this rule only applies to products belonging " "to this category or its children categories. Keep empty otherwise." msgstr "" +"Hinterlegen Sie eine Produktkategorie, um die Preisregel nur für die " +"zugeordneten Produkte sowie den Produkte sämtlicher Untergruppen anzuwenden." #. module: product #: view:product.product:0 msgid "Inventory" -msgstr "" +msgstr "Bestand" #. module: product #: code:addons/product/product.py:736 @@ -1416,7 +1518,7 @@ msgstr "Gewichte" #. module: product #: view:product.product:0 msgid "Description for Quotations" -msgstr "" +msgstr "Beschreibung für Angebote" #. module: product #: help:pricelist.partnerinfo,price:0 @@ -1424,6 +1526,8 @@ msgid "" "This price will be considered as a price for the supplier Unit of Measure if " "any or the default Unit of Measure of the product otherwise" msgstr "" +"Dieser Preis wird als Preis für die Einkauf Mengeneinheit betrachtet, \r\n" +"solange es keine Standard-Mengeneinheit für das Produkt gibt." #. module: product #: field:product.template,uom_po_id:0 @@ -1438,7 +1542,7 @@ msgstr "Gruppierung ..." #. module: product #: field:product.product,image_medium:0 msgid "Medium-sized image" -msgstr "" +msgstr "Mittelgroßes Bild" #. module: product #: selection:product.ul,type:0 @@ -1451,7 +1555,7 @@ msgstr "Einheit" #: code:addons/product/product.py:588 #, python-format msgid "Product has been created." -msgstr "" +msgstr "Neues Produkt wurde soeben erstellt" #. module: product #: field:product.pricelist.version,date_start:0 @@ -1487,6 +1591,18 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Erstellung einer neuen Preisliste.\n" +"

\n" +" Es kann mehr als nur eine Version einer eindeutigen " +"Preisliste geben, die jeweils\n" +"                auch nur während einer bestimmten Zeitperiode gültig sein " +"soll. Einige Beispiele für\n" +"                solche Versionsvarianten: Basis Preise, 2010, 2011, Summer " +"Sales,\n" +"                 usw.\n" +"

\n" +" " #. module: product #: help:product.template,uom_po_id:0 @@ -1500,7 +1616,7 @@ msgstr "" #. module: product #: view:product.pricelist:0 msgid "Products Price" -msgstr "" +msgstr "Produkt Preis" #. module: product #: model:product.template,description:product.product_product_26_product_template @@ -1519,7 +1635,7 @@ msgstr "Rundungsgenauigkeit" #. module: product #: view:product.product:0 msgid "Consumable products" -msgstr "" +msgstr "Verbrauchswaren" #. module: product #: model:product.template,name:product.product_product_21_product_template @@ -1531,11 +1647,12 @@ msgstr "" #: model:product.template,description_sale:product.product_product_1_product_template msgid "This type of service include basic monitoring of products." msgstr "" +"Dieser Service beinhaltet auch die Grundlagen zum Remote Servermonitoring" #. module: product #: help:product.pricelist.version,date_end:0 msgid "Last valid date for the version." -msgstr "" +msgstr "Letzte gültige Version" #. module: product #: model:product.template,name:product.product_product_19_product_template @@ -1564,7 +1681,7 @@ msgstr "Preisliste Bezeichnung" #. module: product #: field:product.product,ean13:0 msgid "EAN13 Barcode" -msgstr "" +msgstr "EAN13 Barcode" #. module: product #: sql_constraint:product.uom:0 @@ -1574,7 +1691,7 @@ msgstr "Der Umrechnungefaktor eine Mengeneinheit kann nicht 0 sein!" #. module: product #: model:product.template,name:product.product_product_24_product_template msgid "Graphics Card" -msgstr "" +msgstr "Vorlagen Grafiken" #. module: product #: help:product.packaging,ean:0 @@ -1594,7 +1711,7 @@ msgstr "Gewicht der Verpackung" #. module: product #: model:product.template,name:product.product_product_41_product_template msgid "Windows Home Server 2011" -msgstr "" +msgstr "Windows Home Server 2011" #. module: product #: field:product.price.type,field:0 @@ -1604,7 +1721,7 @@ msgstr "Produkte Datenfelder" #. module: product #: model:product.template,description:product.product_product_5_product_template msgid "Custom computer assembled on order based on customer's requirement." -msgstr "" +msgstr "Kundenindividueller PC, montiert auf Ihre Anforderung" #. module: product #: model:ir.actions.act_window,name:product.product_price_type_action @@ -1620,7 +1737,7 @@ msgstr "Standard Mengeneinheit (ME) für alle Bestandsbuchungen." #. module: product #: view:product.product:0 msgid "Sales" -msgstr "" +msgstr "Verkauf" #. module: product #: model:ir.actions.act_window,help:product.product_uom_categ_form_action @@ -1636,6 +1753,24 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie um eine neue Mengeneinheiten Kategorie zu " +"ergänzen.\n" +"

\n" +" Mengeneinheiten, die zur gleichen Kategorie zugewiesen " +"wurden, können \n" +" einfach über die Einheiten Kategorie in andere " +"Mengeneinheiten konvertiert \n" +" werden.\n" +" \n" +" Einige Beispiele zu den Versionskategorien : Aktuelle " +"Preise, 2010, 2011, \n" +" Sommerschlußverkauf etc. In der Kategorie 'Zeit' " +"haben sie z.B. \n" +" die folgenden vorinstallierten Einheiten:\n" +"\n" +" Tage, Wochen, Stunden, Minuten.

\n" +" " #. module: product #: help:pricelist.partnerinfo,min_quantity:0 @@ -1643,11 +1778,13 @@ msgid "" "The minimal quantity to trigger this rule, expressed in the supplier Unit of " "Measure if any or in the default Unit of Measure of the product otherrwise." msgstr "" +"Die minimale Bestandsmenge, die in der Einkauf Einheit angezeigt wird, und " +"die mindestens erforderlich ist, damit die Regel ausgelöst wird." #. module: product #: selection:product.uom,uom_type:0 msgid "Smaller than the reference Unit of Measure" -msgstr "" +msgstr "Kleiner als die Referenz Einheit" #. module: product #: model:product.pricelist,name:product.list0 @@ -1664,6 +1801,7 @@ msgstr "Kurzbezeichnung bei Partner" msgid "" "If unchecked, it will allow you to hide the pricelist without removing it." msgstr "" +"Bei De-Aktivierung, können Sie Preislisten verbergen, ohne diese zu löschen." #. module: product #: selection:product.ul,type:0 @@ -1690,7 +1828,7 @@ msgstr "Produkt" #. module: product #: view:product.product:0 msgid "Price:" -msgstr "" +msgstr "Preis:" #. module: product #: field:product.template,weight:0 @@ -1733,11 +1871,12 @@ msgstr "Zuweisen der Priorität zur Liste der Produktlieferanten" #: constraint:product.pricelist.item:0 msgid "Error! The minimum margin should be lower than the maximum margin." msgstr "" +"Fehler ! Die minimale Spanne sollte kleiner sein als die maximale Spanne." #. module: product #: model:res.groups,name:product.group_uos msgid "Manage Secondary Unit of Measure" -msgstr "" +msgstr "Verwalte Alternative Währung" #. module: product #: help:product.uom,rounding:0 @@ -1745,6 +1884,8 @@ msgid "" "The computed quantity will be a multiple of this value. Use 1.0 for a Unit " "of Measure that cannot be further split, such as a piece." msgstr "" +"Der berechnete Bestand wird ein Vielfaches dieses Wert sein. Benutze '1'für " +"eine Mengeneinheit, die nicht weiter gesplittet werden kann." #. module: product #: view:product.pricelist.item:0 @@ -1769,7 +1910,7 @@ msgstr "" #. module: product #: selection:product.uom,uom_type:0 msgid "Bigger than the reference Unit of Measure" -msgstr "" +msgstr "Größer als die Referenz Mengeneinheit" #. module: product #: model:product.template,name:product.product_product_consultant_product_template @@ -1780,7 +1921,7 @@ msgstr "Dienstleistung" #. module: product #: view:product.template:0 msgid "Internal Description" -msgstr "" +msgstr "Interne Beschreibung" #. module: product #: model:product.template,name:product.product_product_48_product_template @@ -1793,12 +1934,16 @@ msgid "" "Sepcify a unit of measure here if invoicing is made in another unit of " "measure than inventory. Keep empty to use the default unit of measure." msgstr "" +"Spezifizieren Sie hier die Mengeneinheit, wenn die Abrechnung in einer " +"anderen Einheit als die Abrechnungseinheit erfolgen soll." #. module: product #: code:addons/product/product.py:206 #, python-format msgid "Cannot change the category of existing Unit of Measure '%s'." msgstr "" +"Es kann nicht in die Kategorie der existierenden Mengeneinheit '%s' so " +"einfach gewechselt werden." #. module: product #: help:product.packaging,height:0 @@ -2115,6 +2260,8 @@ msgid "" "Specify a template if this rule only applies to one product template. Keep " "empty otherwise." msgstr "" +"Wählen Sie eine Produkt Vorlage aus, wenn die Regel nur auf dieses einzige " +"Produkt angewendet werden soll." #. module: product #: model:product.template,description:product.product_product_2_product_template @@ -2150,12 +2297,12 @@ msgstr "Beschreibungen" #. module: product #: model:res.groups,name:product.group_stock_packaging msgid "Manage Product Packaging" -msgstr "" +msgstr "Verwalte Produkte Verpackung" #. module: product #: model:product.category,name:product.product_category_2 msgid "Internal" -msgstr "" +msgstr "Intern" #. module: product #: model:product.template,name:product.product_product_45_product_template @@ -2226,6 +2373,21 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Erstellung einer neuen Preisliste.\n" +"

\n" +" Die Preisliste beinhaltet ein konfigurierbares Regelwerk " +"nach denen sich die Einkaufspreise \n" +"berechnen lassen. Die Standard Preisliste hat z.B. nur eine einzige Regel, " +"wonach sich der Preis aus dem eingetragenen Standard Preis im Produkte " +"Formular ergibt. Sie brauchen sich also nicht um Preislisten zu kümmern, " +"wenn Sie keine besonderen Anforderungen diesbezüglich haben.\n" +"

\n" +" Sie können aber auch komplexe Preislisten Ihrer Lieferanten " +"importieren, die Preisstaffeln berücksichtigen, oder tagesaktuelle " +"Aktionspreise beinhalten. \n" +"

\n" +" " #. module: product #: selection:product.template,mes_type:0 @@ -2236,7 +2398,7 @@ msgstr "Variabel" #: field:product.product,message_comment_ids:0 #: help:product.product,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Kommentare und EMails" #. module: product #: field:product.template,rental:0 @@ -2256,7 +2418,7 @@ msgstr "Min. Preis Spanne" #. module: product #: model:res.groups,name:product.group_uom msgid "Manage Multiple Units of Measure" -msgstr "" +msgstr "Verwalte multiple Mengeneinheiten" #. module: product #: help:product.packaging,weight:0 @@ -2266,7 +2428,7 @@ msgstr "Gewicht eines beladenen Pakets, Pallete oder Box." #. module: product #: view:product.uom:0 msgid "e.g: 1 * (this unit) = ratio * (reference unit)" -msgstr "" +msgstr "z.B. 1 * (Diese Einheit) = Faktor * (Referenz Einheit)" #. module: product #: model:product.template,description:product.product_product_25_product_template @@ -2291,6 +2453,9 @@ msgid "" "Average delay in days to produce this product. In the case of multi-level " "BOM, the manufacturing lead times of the components will be added." msgstr "" +"Durchschnittliche Dauer zur Produktion dieses Produkts. Im Fall einer " +"mehrdimensionalen Stückliste, muss diese Dauer für alle Komponenten summiert " +"werden." #. module: product #: model:product.template,name:product.product_assembly_product_template @@ -2313,6 +2478,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Erstellung einer neuen Mengeneinheit.\n" +"

\n" +" Sie müssen eine Umrechnung, zwischen den einzelnen Einheiten " +"\n" +" innerhalb einer Kategorie definieren.\n" +"

\n" +" " #. module: product #: model:product.template,name:product.product_product_11_product_template @@ -2366,6 +2539,9 @@ msgid "" "image, with aspect ratio preserved. Use this field anywhere a small image is " "required." msgstr "" +"Kleines Bild für das Produkt. Es wird automatisch herunter skaliert auf " +"64x64px, unter Beibehaltung des Formfaktors. Benutzen Sie dieses Feld " +"überall, wo Sie es in dieser Größe benötigen können." #. module: product #: model:product.template,name:product.product_product_40_product_template @@ -2375,12 +2551,12 @@ msgstr "" #. module: product #: selection:product.uom,uom_type:0 msgid "Reference Unit of Measure for this category" -msgstr "" +msgstr "Referenz Mengeneinheit dieser Kategorie" #. module: product #: field:product.supplierinfo,product_uom:0 msgid "Supplier Unit of Measure" -msgstr "" +msgstr "Lieferanten Mengeneinheit" #. module: product #: view:product.product:0 @@ -2420,6 +2596,22 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Erstellung einer Preisliste.\n" +"

\n" +" Eine Preisliste beinhaltet das Regelwerk zur Berechnung der " +"Verkaufspreise Ihrer\n" +"Produkte.\n" +"

\n" +" Dabei können Preislisten verschiedene Versionen haben (2010, " +"2011, Promotion Verkauf\n" +" Februar 2010, etc.) und jede Version hat seine eigene " +"Preisberechnungslogik.\n" +" (z.B. der Verkaufspreis einer bestimmten Kategorie errechnet " +"sich aus dem \n" +" Einkaufspreis multipliziert mit 1,8).\n" +"

\n" +" " #. module: product #: model:ir.model,name:product.model_product_template diff --git a/addons/product/i18n/pt.po b/addons/product/i18n/pt.po index 246a37ec954..a9a6df49e22 100644 --- a/addons/product/i18n/pt.po +++ b/addons/product/i18n/pt.po @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-05-10 18:01+0000\n" -"Last-Translator: António Anacleto (www.biztek.cv) " -"\n" +"PO-Revision-Date: 2012-12-11 15:41+0000\n" +"Last-Translator: Andrei Talpa (multibase.pt) \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: 2012-12-04 05:32+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: product #: field:product.packaging,rows:0 @@ -547,7 +546,7 @@ msgstr "Caixa 20x20x40" #. module: product #: field:product.template,warranty:0 msgid "Warranty" -msgstr "" +msgstr "Garantia" #. module: product #: view:product.pricelist.item:0 @@ -626,7 +625,7 @@ msgstr "" #. module: product #: view:product.price_list:0 msgid "or" -msgstr "" +msgstr "ou" #. module: product #: constraint:product.packaging:0 @@ -865,7 +864,7 @@ msgstr "" #. module: product #: view:product.template:0 msgid "days" -msgstr "" +msgstr "dias" #. module: product #: model:process.node,name:product.process_node_supplier0 @@ -1102,7 +1101,7 @@ msgstr "Acréscimo de Preço" #: field:product.product,code:0 #: field:product.product,default_code:0 msgid "Internal Reference" -msgstr "" +msgstr "Referência interna" #. module: product #: model:product.template,name:product.product_product_8_product_template @@ -1134,7 +1133,7 @@ msgstr "Nome" #. module: product #: model:product.category,name:product.product_category_4 msgid "Computers" -msgstr "" +msgstr "Computadores" #. module: product #: help:product.product,message_ids:0 @@ -1159,7 +1158,7 @@ msgstr "km" #. module: product #: field:product.template,standard_price:0 msgid "Cost" -msgstr "" +msgstr "Custo" #. module: product #: help:product.category,sequence:0 @@ -1572,7 +1571,7 @@ msgstr "A taxa de rácio para uma unidade de medida não pode ser 0!" #. module: product #: model:product.template,name:product.product_product_24_product_template msgid "Graphics Card" -msgstr "" +msgstr "Placa gráfica" #. module: product #: help:product.packaging,ean:0 @@ -1688,7 +1687,7 @@ msgstr "Artigo" #. module: product #: view:product.product:0 msgid "Price:" -msgstr "" +msgstr "Preço:" #. module: product #: field:product.template,weight:0 @@ -1761,7 +1760,7 @@ msgstr "Caixa 30x40x60" #. module: product #: model:product.template,name:product.product_product_47_product_template msgid "Switch, 24 ports" -msgstr "" +msgstr "Switch, 24 portas" #. module: product #: selection:product.uom,uom_type:0 @@ -1777,7 +1776,7 @@ msgstr "Serviço" #. module: product #: view:product.template:0 msgid "Internal Description" -msgstr "" +msgstr "Descrição interna" #. module: product #: model:product.template,name:product.product_product_48_product_template @@ -1851,13 +1850,13 @@ msgstr "Este artigo está configurado com exemplo de push/pull flows" #. module: product #: field:product.product,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Mensagens" #. module: product #: code:addons/product/product.py:174 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: product #: field:product.packaging,length:0 @@ -1872,7 +1871,7 @@ msgstr "Comprimento / Distância" #. module: product #: model:product.category,name:product.product_category_8 msgid "Components" -msgstr "" +msgstr "Componentes" #. module: product #: model:ir.model,name:product.model_product_pricelist_type @@ -2008,7 +2007,7 @@ msgstr "Prazo de entrega da lead" #. module: product #: view:product.product:0 msgid "months" -msgstr "" +msgstr "meses" #. module: product #: help:product.uom,active:0 @@ -2027,7 +2026,7 @@ msgstr "Prazo de Entrega do Fornecedor" #. module: product #: model:ir.model,name:product.model_decimal_precision msgid "decimal.precision" -msgstr "" +msgstr "decimal.precision" #. module: product #: selection:product.ul,type:0 @@ -2230,7 +2229,7 @@ msgstr "Variável" #: field:product.product,message_comment_ids:0 #: help:product.product,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Comentários e emails" #. module: product #: field:product.template,rental:0 @@ -2311,7 +2310,7 @@ msgstr "" #. module: product #: model:product.template,name:product.product_product_11_product_template msgid "Mouse, Laser" -msgstr "" +msgstr "Rato, laser" #. module: product #: view:product.template:0 diff --git a/addons/product_margin/i18n/pt.po b/addons/product_margin/i18n/pt.po index 7892c65ec04..e97ae6a3c3c 100644 --- a/addons/product_margin/i18n/pt.po +++ b/addons/product_margin/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2010-12-04 10:01+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:58+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:42+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: product_margin #: view:product.product:0 @@ -270,7 +270,7 @@ msgstr "Soma de Quantidade em Faturas de Cliente" #. module: product_margin #: view:product.margin:0 msgid "or" -msgstr "" +msgstr "ou" #. module: product_margin #: model:ir.model,name:product_margin.model_product_margin diff --git a/addons/project_gtd/i18n/pt.po b/addons/project_gtd/i18n/pt.po index 2107c42b4ac..fef57b56910 100644 --- a/addons/project_gtd/i18n/pt.po +++ b/addons/project_gtd/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2010-12-15 05:28+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2012-12-11 15:39+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:37+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: project_gtd #: view:project.task:0 @@ -194,7 +194,7 @@ msgstr "project.gtd.timebox" #: code:addons/project_gtd/wizard/project_gtd_empty.py:52 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: project_gtd #: model:ir.actions.act_window,name:project_gtd.open_gtd_timebox_tree @@ -224,7 +224,7 @@ msgstr "Seleção de Tarefas" #. module: project_gtd #: view:project.task:0 msgid "Display" -msgstr "" +msgstr "Aparência" #. module: project_gtd #: model:project.gtd.context,name:project_gtd.context_office @@ -296,7 +296,7 @@ msgstr "Para re-abrir as tarefas?" #. module: project_gtd #: view:project.timebox.fill.plan:0 msgid "or" -msgstr "" +msgstr "ou" #~ msgid "My Deadlines" #~ msgstr "Meus prazos" diff --git a/addons/project_long_term/i18n/ru.po b/addons/project_long_term/i18n/ru.po new file mode 100644 index 00000000000..5df46595efb --- /dev/null +++ b/addons/project_long_term/i18n/ru.po @@ -0,0 +1,509 @@ +# Russian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-03 16:04+0000\n" +"PO-Revision-Date: 2012-12-11 07:40+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: project_long_term +#: help:project.phase,constraint_date_end:0 +msgid "force the phase to finish before this date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "In Progress" +msgstr "" + +#. module: project_long_term +#: field:account.analytic.account,use_phases:0 +#: model:ir.actions.act_window,name:project_long_term.act_project_phases +#: view:project.project:0 +msgid "Phases" +msgstr "" + +#. module: project_long_term +#: field:project.phase,user_ids:0 +msgid "Assigned Users" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,next_phase_ids:0 +msgid "Next Phases" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_user_allocation +msgid "Phase User Allocation" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project's Tasks" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,help:project_long_term.action_project_compute_phases +msgid "" +"To schedule phases of all or a specified project. It then open a gantt " +"view.\n" +" " +msgstr "" + +#. module: project_long_term +#: field:project.phase,task_ids:0 +msgid "Project Tasks" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.action_project_compute_phases +#: model:ir.ui.menu,name:project_long_term.menu_compute_phase +#: view:project.compute.phases:0 +msgid "Schedule Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,state:0 +msgid "Status" +msgstr "" + +#. module: project_long_term +#: field:project.compute.phases,target_project:0 +msgid "Action" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Phase" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_task +msgid "Task" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Draft" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "C_ompute" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "New" +msgstr "" + +#. module: project_long_term +#: field:project.phase,product_uom:0 +msgid "Duration Unit of Measure" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves +msgid "Resource Leaves" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Pending" +msgstr "" + +#. module: project_long_term +#: help:project.phase,progress:0 +msgid "Computed based on related tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "In Progress Phases" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:141 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:48 +#, python-format +msgid "Please specify a project to schedule." +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "or" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: view:project.user.allocation:0 +msgid "Group By..." +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Remaining Hours" +msgstr "" + +#. module: project_long_term +#: field:project.phase,constraint_date_start:0 +msgid "Minimum Start Date" +msgstr "" + +#. module: project_long_term +#: help:project.phase,product_uom:0 +msgid "" +"Unit of Measure (Unit of Measure) is the unit of measurement for Duration" +msgstr "" + +#. module: project_long_term +#: help:project.phase,user_ids:0 +msgid "" +"The resources on the project can be computed automatically by the scheduler." +msgstr "" + +#. module: project_long_term +#: field:project.phase,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: project_long_term +#: help:account.analytic.account,use_phases:0 +msgid "Check this field if you plan to use phase-based scheduling" +msgstr "" + +#. module: project_long_term +#: help:project.user.allocation,date_start:0 +msgid "Starting Date" +msgstr "" + +#. module: project_long_term +#: help:project.phase,state:0 +msgid "" +"If the phase is created the status 'Draft'.\n" +" If the phase is started, the status becomes 'In Progress'.\n" +" If review is needed the phase is in 'Pending' status. " +" \n" +" If the phase is over, the status is set to 'Done'." +msgstr "" + +#. module: project_long_term +#: field:project.phase,progress:0 +msgid "Progress" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_pm_users_project1 +#: model:ir.ui.menu,name:project_long_term.menu_view_resource +msgid "Resources" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "My Projects" +msgstr "" + +#. module: project_long_term +#: view:project.project:0 +#: view:project.user.allocation:0 +msgid "Phase" +msgstr "" + +#. module: project_long_term +#: help:project.phase,duration:0 +msgid "By default in days" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar +msgid "Working Time" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Pending Phases" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:126 +#, python-format +msgid "Day" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Related Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Month" +msgstr "" + +#. module: project_long_term +#: field:project.phase,date_end:0 +#: field:project.user.allocation,date_end:0 +msgid "End Date" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_tasks +msgid "Project Compute Tasks" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,help:project_long_term.act_project_phase +msgid "" +"A project can be split into the different phases. For each phase, you can " +"define your users allocation, describe different tasks and link your phase " +"to previous and next phases, add date constraints for the automated " +"scheduling. Use the long term planning in order to planify your available " +"users, convert your phases into a series of tasks when you start working on " +"the project." +msgstr "" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute a Single Project" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,previous_phase_ids:0 +msgid "Previous Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "New Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "" + +#. module: project_long_term +#: field:project.project,phase_count:0 +msgid "Open Phases" +msgstr "" + +#. module: project_long_term +#: help:project.phase,date_end:0 +msgid "" +" It's computed by the scheduler according to the start date and the duration." +msgstr "" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Loops in phases not allowed" +msgstr "" + +#. module: project_long_term +#: view:project.user.allocation:0 +#: field:project.user.allocation,user_id:0 +msgid "User" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_project +#: field:project.compute.phases,project_id:0 +#: field:project.compute.tasks,project_id:0 +#: view:project.phase:0 +#: field:project.phase,project_id:0 +#: view:project.task:0 +#: view:project.user.allocation:0 +#: field:project.user.allocation,project_id:0 +msgid "Project" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +#: view:project.phase:0 +msgid "Cancel" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project Users" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_phase +#: view:project.phase:0 +#: view:project.task:0 +#: field:project.task,phase_id:0 +#: field:project.user.allocation,phase_id:0 +msgid "Project Phase" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule +msgid "Scheduling" +msgstr "" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Phase start-date must be lower than phase end-date." +msgstr "" + +#. module: project_long_term +#: selection:project.phase,state:0 +msgid "Cancelled" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Total Hours" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_phases +msgid "Project Compute Phases" +msgstr "" + +#. module: project_long_term +#: field:project.phase,date_start:0 +#: field:project.user.allocation,date_start:0 +msgid "Start Date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Constraints" +msgstr "" + +#. module: project_long_term +#: help:project.phase,sequence:0 +msgid "Gives the sequence order when displaying a list of phases." +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list +msgid "Tasks" +msgstr "" + +#. module: project_long_term +#: help:project.user.allocation,date_end:0 +msgid "Ending Date" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:48 +#, python-format +msgid "Error!" +msgstr "" + +#. module: project_long_term +#: help:project.phase,date_start:0 +msgid "" +"It's computed by the scheduler according the project date or the end date of " +"the previous phase." +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_project_phase +#: model:ir.actions.act_window,name:project_long_term.act_project_phase_list +#: model:ir.ui.menu,name:project_long_term.menu_project_phase +#: model:ir.ui.menu,name:project_long_term.menu_project_phase_list +#: view:project.phase:0 +#: field:project.project,phase_ids:0 +msgid "Project Phases" +msgstr "" + +#. module: project_long_term +#: help:project.phase,constraint_date_start:0 +msgid "force the phase to start after this date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Month" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_account_analytic_account +msgid "Analytic Account" +msgstr "" + +#. module: project_long_term +#: field:project.phase,constraint_date_end:0 +msgid "Deadline" +msgstr "" + +#. module: project_long_term +#: view:project.user.allocation:0 +msgid "Project User Allocation" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.action_project_compute_tasks +#: model:ir.ui.menu,name:project_long_term.menu_compute_tasks +#: view:project.compute.tasks:0 +msgid "Schedule Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Done" +msgstr "" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute All My Projects" +msgstr "" + +#. module: project_long_term +#: field:project.phase,user_force_ids:0 +msgid "Force Assigned Users" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,duration:0 +msgid "Duration" +msgstr "" + +#. module: project_long_term +#: view:project.user.allocation:0 +msgid "Users" +msgstr "" + +#. module: project_long_term +#: field:project.phase,name:0 +msgid "Name" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation +#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation +#: view:project.phase:0 +#: view:project.user.allocation:0 +msgid "Planning of Users" +msgstr "" diff --git a/addons/project_mrp/i18n/pt.po b/addons/project_mrp/i18n/pt.po index aeca87b6c96..dcc0e3e7c07 100644 --- a/addons/project_mrp/i18n/pt.po +++ b/addons/project_mrp/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2010-12-15 13:49+0000\n" -"Last-Translator: Madalena_prime \n" +"PO-Revision-Date: 2012-12-11 15:46+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:36+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: project_mrp #: model:process.node,note:project_mrp.process_node_procuretasktask0 @@ -30,7 +30,7 @@ msgstr "O Tipo de artigo é um serviço, então ele cria a tarefa." #: code:addons/project_mrp/project_procurement.py:93 #, python-format msgid "Task created" -msgstr "" +msgstr "Tarefa criada" #. module: project_mrp #: model:process.node,note:project_mrp.process_node_mrptask0 @@ -94,7 +94,7 @@ msgstr "Linha da ordem de venda" #. module: project_mrp #: view:product.product:0 msgid "False" -msgstr "" +msgstr "Falso" #. module: project_mrp #: view:product.product:0 @@ -110,7 +110,7 @@ msgstr "" #: code:addons/project_mrp/project_procurement.py:87 #, python-format msgid "Task created." -msgstr "" +msgstr "Tarefa criada" #. module: project_mrp #: model:process.transition,note:project_mrp.process_transition_ordertask0 diff --git a/addons/purchase/i18n/pl.po b/addons/purchase/i18n/pl.po index ab2bb4a98bf..98d5eb118a2 100644 --- a/addons/purchase/i18n/pl.po +++ b/addons/purchase/i18n/pl.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2011-11-07 12:53+0000\n" +"PO-Revision-Date: 2012-12-11 23:03+0000\n" "Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \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: 2012-12-04 05:12+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: purchase #: model:res.groups,name:purchase.group_analytic_accounting msgid "Analytic Accounting for Purchases" -msgstr "" +msgstr "Ksiągowość analityczna dla zakupów" #. module: purchase #: model:ir.model,name:purchase.model_account_config_settings @@ -39,6 +39,11 @@ msgid "" "Example: Product: this product is deprecated, do not purchase more than 5.\n" " Supplier: don't forget to ask for an express delivery." msgstr "" +"Pozwala konfigurować powiadomienie w produkcie lub dostawcy i uruchomić je " +"kiedy użytkownik będzie chciał dokonać zakupu.\n" +"Przykład: Produkt: ten produkt wychodzi z użycia, nie kupuj powyżej 5 " +"sztuk.\n" +" Dostawca: żądaj ekspresowej dostawy." #. module: purchase #: model:product.pricelist,name:purchase.list0 @@ -62,7 +67,7 @@ msgstr "" #. module: purchase #: model:ir.actions.server,name:purchase.actions_server_purchase_order_read msgid "Purchase: Mark read" -msgstr "" +msgstr "Zakupy: Oznacz jako przeczytane" #. module: purchase #: view:purchase.report:0 @@ -78,7 +83,7 @@ msgstr "Zamówienia z dnia" #. module: purchase #: help:purchase.order,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Jeśli zaznaczone, to wiadomość wymaga twojej uwagi" #. module: purchase #: model:ir.ui.menu,name:purchase.menu_procurement_management_inventory @@ -111,7 +116,7 @@ msgstr "" #: code:addons/purchase/wizard/purchase_order_group.py:47 #, python-format msgid "Warning!" -msgstr "" +msgstr "Ostrzeżenie !" #. module: purchase #: code:addons/purchase/purchase.py:573 @@ -123,7 +128,7 @@ msgstr "Musisz najpierw anulować wszystkie przyjęcia dla tego zamówienia." #: model:ir.model,name:purchase.model_res_partner #: field:purchase.order.line,partner_id:0 msgid "Partner" -msgstr "" +msgstr "Partner" #. module: purchase #: field:purchase.report,negociation:0 @@ -149,6 +154,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Tutaj możesz śledzić wszystkie przyjęcia zamówienia zakupu\n" +" kiedy fakturowanie jest \"Na podstawie przyjęć\",\n" +" dla zamówień, dla których nie otrzymałeś jeszcze faktury od " +"dostawcy.\n" +" Możesz wygenerować fakturę od dostawcy na podstawie " +"przyjęć.\n" +"

\n" +" " #. module: purchase #: view:purchase.report:0 @@ -160,7 +174,7 @@ msgstr "Cena przeciętna" #: code:addons/purchase/purchase.py:830 #, python-format msgid "Invoice paid." -msgstr "" +msgstr "Faktura zapłacona." #. module: purchase #: view:purchase.order:0 @@ -194,12 +208,12 @@ msgstr "Adres do wysyłki :" #. module: purchase #: view:purchase.order:0 msgid "Confirm Order" -msgstr "" +msgstr "Potwierdź zamówienie" #. module: purchase #: field:purchase.config.settings,module_warning:0 msgid "Alerts by products or supplier" -msgstr "" +msgstr "Alerty wg produktów lub dostawców" #. module: purchase #: field:purchase.order,name:0 @@ -211,7 +225,7 @@ msgstr "Odnośnik zamówienia" #. module: purchase #: view:purchase.config.settings:0 msgid "Invoicing Process" -msgstr "" +msgstr "Proces fakturowania" #. module: purchase #: model:process.transition,name:purchase.process_transition_approvingpurchaseorder0 @@ -222,7 +236,7 @@ msgstr "Aprobata" #: help:purchase.config.settings,group_uom:0 msgid "" "Allows you to select and maintain different units of measure for products." -msgstr "" +msgstr "Pozwala stosować różne jednostki miary." #. module: purchase #: help:purchase.order,minimum_planned_date:0 @@ -237,12 +251,12 @@ msgstr "" #: code:addons/purchase/purchase.py:255 #, python-format msgid "In order to delete a purchase order, you must cancel it first." -msgstr "" +msgstr "Aby usunąć zamówienia zakupu, to musisz je najpierw anulować." #. module: purchase #: view:product.product:0 msgid "When you sell this product, OpenERP will trigger" -msgstr "" +msgstr "Kiedy sprzedaż ten produkt, to OpenERP uruchomi" #. module: purchase #: view:purchase.order:0 @@ -262,7 +276,7 @@ msgstr "Suma kwot netto" #. module: purchase #: model:ir.ui.menu,name:purchase.menu_purchase_uom_categ_form_action msgid "Unit of Measure Categories" -msgstr "" +msgstr "Kategorie jednostek miary" #. module: purchase #: view:purchase.report:0 @@ -273,7 +287,7 @@ msgstr "Kategoria" #. module: purchase #: view:purchase.order:0 msgid "Quotation " -msgstr "" +msgstr "Oferta " #. module: purchase #: code:addons/purchase/purchase.py:810 @@ -281,6 +295,7 @@ msgstr "" msgid "" "Quotation for %s converted to a Purchase Order of %s %s." msgstr "" +"Oferta %s skonwertowana do zamówienia zakupu od %s %s." #. module: purchase #: model:process.transition,note:purchase.process_transition_purchaseinvoice0 @@ -300,7 +315,7 @@ msgstr "" #: field:purchase.order.line,state:0 #: view:purchase.report:0 msgid "Status" -msgstr "" +msgstr "Stan" #. module: purchase #: selection:purchase.report,month:0 @@ -310,7 +325,7 @@ msgstr "Sierpień" #. module: purchase #: view:product.product:0 msgid "to" -msgstr "" +msgstr "do" #. module: purchase #: selection:purchase.report,month:0 @@ -326,7 +341,7 @@ msgstr "Zamówienia zakupu" #: help:account.config.settings,group_analytic_account_for_purchases:0 #: help:purchase.config.settings,group_analytic_account_for_purchases:0 msgid "Allows you to specify an analytic account on purchase orders." -msgstr "" +msgstr "Pozwala ustawić konto analityczne na zamówienie zakupu." #. module: purchase #: model:ir.actions.act_window,help:purchase.action_invoice_pending @@ -343,6 +358,17 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij tu, aby utworzyć projekt faktury.\n" +"

\n" +" Stosuj to menu do zarządzania fakturami, które masz otrzymać od\n" +" dostawców. OpenERP generuje projekty faktur z zamówień zakupu\n" +" lub z przyjęć zależnie od twoich ustawień.\n" +"

\n" +" Once you receive a supplier invoice, you can match it with the\n" +" draft invoice and validate it.\n" +"

\n" +" " #. module: purchase #: selection:purchase.report,month:0 @@ -353,12 +379,12 @@ msgstr "Październik" #: code:addons/purchase/purchase.py:837 #, python-format msgid "Purchase Order for %s cancelled." -msgstr "" +msgstr "Zamówienie zakupu od %s anulowano." #. module: purchase #: field:purchase.order,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Podsumowanie" #. module: purchase #: model:process.transition,note:purchase.process_transition_createpackinglist0 @@ -376,7 +402,7 @@ msgstr "Oferty" #. module: purchase #: view:purchase.order.line_invoice:0 msgid "Do you want to generate the supplier invoices?" -msgstr "" +msgstr "Chcesz wygenerować fakturę od dostawcy?" #. module: purchase #: field:purchase.order.line,product_qty:0 @@ -389,7 +415,7 @@ msgstr "Ilość" #: code:addons/purchase/purchase.py:819 #, python-format msgid "Shipment %s scheduled for %s." -msgstr "" +msgstr "Przesyłkę %s zaplanowano %s." #. module: purchase #: field:purchase.order,fiscal_position:0 @@ -399,7 +425,7 @@ msgstr "Obszar podatkowy" #. module: purchase #: field:purchase.config.settings,default_invoice_method:0 msgid "Default invoicing control method" -msgstr "" +msgstr "Domyślne fakturowanie" #. module: purchase #: model:ir.model,name:purchase.model_stock_picking_in @@ -423,6 +449,16 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij tutaj, aby zarejestrować fakturę od dostawcy.\n" +"

\n" +" Faktura od dostawcy może być wygenerowana na podstawie " +"zamówienia\n" +" zakupu lub przyjęcia. To pozwala sprawdzać nadchodzące " +"faktury\n" +" według tych, których projekty masz już w systemie.\n" +"

\n" +" " #. module: purchase #: view:purchase.order:0 @@ -447,12 +483,14 @@ msgid "" "Put an address if you want to deliver directly from the supplier to the " "customer. Otherwise, keep empty to deliver to your own company." msgstr "" +"Wprowadź adres, jeśli chcesz dostawy prosto do twojego klienta. Pozostaw " +"puste, jeśli dostawa ma być do twojej firmy." #. module: purchase #: code:addons/purchase/purchase.py:824 #, python-format msgid "Draft Invoice of %s %s is waiting for validation." -msgstr "" +msgstr "Projekt faktury %s %s oczekuje na zatwierdzenie." #. module: purchase #: model:ir.actions.act_window,help:purchase.purchase_line_form_action2 @@ -468,6 +506,16 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Tutaj możesz sprawdzać pozycje do fakturowania, kiedy \n" +" fakturowanie jest \"Na podstawie pozycji Zamówienia " +"zakupu\", \n" +" i dla których nie otrzymałeś jeszcze faktur. Możesz " +"wygenerować\n" +" projekt faktury od dostawcy na podstawie pozycji z tej " +"listy.\n" +"

\n" +" " #. module: purchase #: field:purchase.order.line,date_planned:0 @@ -499,12 +547,12 @@ msgstr "Zamówienia zakupu z pozycjami niezafakturowanymi" #: view:product.product:0 #: field:product.template,purchase_ok:0 msgid "Can be Purchased" -msgstr "" +msgstr "Może być kupowane" #. module: purchase #: model:ir.ui.menu,name:purchase.menu_action_picking_tree_in_move msgid "Incoming Products" -msgstr "" +msgstr "Produkty przychodzące" #. module: purchase #: view:purchase.config.settings:0 @@ -532,7 +580,7 @@ msgstr "" #. module: purchase #: view:purchase.config.settings:0 msgid "Apply" -msgstr "" +msgstr "Zastosuj" #. module: purchase #: field:purchase.order,amount_untaxed:0 @@ -551,12 +599,12 @@ msgstr "" #. module: purchase #: view:purchase.order:0 msgid "Customer Address" -msgstr "" +msgstr "Adres klienta" #. module: purchase #: selection:purchase.order,state:0 msgid "RFQ Sent" -msgstr "" +msgstr "Wysłano zapytanie ofertowe" #. module: purchase #: view:purchase.order:0 @@ -576,7 +624,7 @@ msgstr "Dostawca" #: code:addons/purchase/purchase.py:508 #, python-format msgid "Define expense account for this company: \"%s\" (id:%d)." -msgstr "" +msgstr "Definiuj konto wydatków dla firmy: \"%s\" (id:%d)." #. module: purchase #: model:process.transition,name:purchase.process_transition_packinginvoice0 @@ -609,12 +657,12 @@ msgstr "Zamówienia w stanie projekt" #. module: purchase #: view:product.product:0 msgid "Suppliers" -msgstr "" +msgstr "Dostawcy" #. module: purchase #: view:product.product:0 msgid "To Purchase" -msgstr "" +msgstr "Do zakupu" #. module: purchase #: model:ir.actions.act_window,help:purchase.purchase_form_action @@ -632,11 +680,21 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby utworzyć zapytanie ofertowe, które będzie " +"skonwertowane do zamówienia zakupu. \n" +"

\n" +" Stosuj to menu do wyszukiwania zamówień zakupu według\n" +" numerów, dostawców, produktów itp. Dla każdego zamówienia\n" +" możesz śledzić komunikację z dostawcą, śledzić przyjęcia\n" +" i faktury od dostawcy.\n" +"

\n" +" " #. module: purchase #: view:purchase.order.line:0 msgid "Invoices and Receptions" -msgstr "" +msgstr "faktury i rachunki" #. module: purchase #: view:purchase.report:0 @@ -648,7 +706,7 @@ msgstr "# pozycji" #: code:addons/purchase/wizard/purchase_line_invoice.py:110 #, python-format msgid "Define expense account for this product: \"%s\" (id:%d)." -msgstr "" +msgstr "Definiuj konto wydatków dla tego produktu: \"%s\" (id:%d)." #. module: purchase #: view:purchase.order:0 @@ -670,7 +728,7 @@ msgstr "To oznacza, że pobranie zostało wykonane" #: code:addons/purchase/purchase.py:572 #, python-format msgid "Unable to cancel this purchase order." -msgstr "" +msgstr "Nie mozna anulować tego zamówienia zakupu." #. module: purchase #: model:ir.ui.menu,name:purchase.menu_procurement_management_invoice @@ -702,6 +760,8 @@ msgid "" "Unique number of the purchase order, computed automatically when the " "purchase order is created." msgstr "" +"Unikalny numer zamówienia zakupu, obliczony automatycznie przy tworzeniu " +"zamówienia." #. module: purchase #: model:ir.ui.menu,name:purchase.menu_product_pricelist_action2_purchase @@ -729,7 +789,7 @@ msgstr "Cennik" #. module: purchase #: selection:purchase.order,state:0 msgid "Draft PO" -msgstr "" +msgstr "Projekt zamówienia" #. module: purchase #: model:process.node,name:purchase.process_node_draftpurchaseorder0 @@ -749,7 +809,7 @@ msgstr "Data zamówienia" #. module: purchase #: field:purchase.config.settings,group_uom:0 msgid "Manage different units of measure for products" -msgstr "" +msgstr "zarządza różnymi jednostkami miary dla produktu" #. module: purchase #: model:process.node,name:purchase.process_node_invoiceafterpacking0 @@ -781,7 +841,7 @@ msgstr "Zapytanie ofertowe :" #: model:ir.actions.act_window,name:purchase.action_picking_tree4_picking_to_invoice #: model:ir.ui.menu,name:purchase.menu_action_picking_tree4_picking_to_invoice msgid "On Incoming Shipments" -msgstr "" +msgstr "Przy przyjęciu" #. module: purchase #: report:purchase.order:0 @@ -797,7 +857,7 @@ msgstr "Przesunięcia zapasów" #: code:addons/purchase/purchase.py:1158 #, python-format msgid "Draft Purchase Order created" -msgstr "" +msgstr "Projekt zamówienia zakupu utworzono" #. module: purchase #: model:ir.ui.menu,name:purchase.menu_product_category_config_purchase @@ -812,12 +872,12 @@ msgstr "To oznacza, że faktura została zapłacona" #. module: purchase #: field:purchase.order,notes:0 msgid "Terms and Conditions" -msgstr "" +msgstr "Warunki i postanowienia" #. module: purchase #: field:purchase.order,currency_id:0 msgid "unknown" -msgstr "" +msgstr "nieznane" #. module: purchase #: help:purchase.order,date_order:0 @@ -864,12 +924,12 @@ msgstr "Firmy" #. module: purchase #: view:purchase.order.group:0 msgid "Are you sure you want to merge these orders?" -msgstr "" +msgstr "Jesteś pewien, że chcesz połaczyć te zamówienia?" #. module: purchase #: field:account.config.settings,module_purchase_analytic_plans:0 msgid "Use multiple analytic accounts on orders" -msgstr "" +msgstr "Stosuj wiele kont analitycznych na zamówieniu" #. module: purchase #: view:product.product:0 @@ -894,7 +954,7 @@ msgstr "Dni do zatwierdzenia" #. module: purchase #: view:purchase.config.settings:0 msgid "Supplier Features" -msgstr "" +msgstr "Funkcje dostawcy" #. module: purchase #: report:purchase.order:0 @@ -916,7 +976,7 @@ msgstr "Anuluj" #: field:purchase.order,message_comment_ids:0 #: help:purchase.order,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Komentarze i emaile" #. module: purchase #: sql_constraint:purchase.order:0 @@ -955,12 +1015,12 @@ msgstr "Data aprobowania" #: code:addons/purchase/purchase.py:806 #, python-format msgid "Request for quotation created." -msgstr "" +msgstr "zapytanie ofertowe utworzone." #. module: purchase #: view:product.product:0 msgid "a draft purchase order" -msgstr "" +msgstr "prjekt zamówienia zakupu" #. module: purchase #: view:purchase.report:0 @@ -970,13 +1030,13 @@ msgstr "Zamówienia z roku" #. module: purchase #: model:ir.actions.act_window,name:purchase.act_res_partner_2_purchase_order msgid "RFQs and Purchases" -msgstr "" +msgstr "Zapytania ofertowe i Zakupy" #. module: purchase #: field:account.config.settings,group_analytic_account_for_purchases:0 #: field:purchase.config.settings,group_analytic_account_for_purchases:0 msgid "Analytic accounting for purchases" -msgstr "" +msgstr "Księgowość analityczna dla zakupów" #. module: purchase #: model:process.transition,note:purchase.process_transition_confirmingpurchaseorder1 @@ -995,33 +1055,37 @@ msgid "" " Example: 10% for retailers, promotion of 5 EUR on this " "product, etc." msgstr "" +"Pozwala stosować różne ceny na podstawie reguł przypisanych do kategorii " +"dostawcy.\n" +" Przykład: 10% dla hurtowników, promocja 5 EUR na ten produkt " +"itp." #. module: purchase #: model:ir.model,name:purchase.model_mail_mail msgid "Outgoing Mails" -msgstr "" +msgstr "Wychodzace" #. module: purchase #: code:addons/purchase/purchase.py:437 #, python-format msgid "You cannot confirm a purchase order without any purchase order line." -msgstr "" +msgstr "Nie można potwierdzać zamówienia zakupu bez pozycji." #. module: purchase #: model:ir.actions.server,name:purchase.actions_server_purchase_order_unread msgid "Purchase: Mark unread" -msgstr "" +msgstr "Zakupy:: Oznacz jako nieprzeczytane" #. module: purchase #: help:purchase.order,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Wiadomości i historia komunikacji" #. module: purchase #: field:purchase.order,warehouse_id:0 #: field:stock.picking.in,warehouse_id:0 msgid "Destination Warehouse" -msgstr "" +msgstr "Docelowy magazyn" #. module: purchase #: code:addons/purchase/purchase.py:973 @@ -1030,6 +1094,8 @@ msgid "" "Selected Unit of Measure does not belong to the same category as the product " "Unit of Measure." msgstr "" +"Wybrana jednostka nie należy do tej samej kategorii co jednostka dla " +"produktu." #. module: purchase #: model:ir.ui.menu,name:purchase.menu_purchase_unit_measure_purchase @@ -1040,13 +1106,13 @@ msgstr "Jedn. miary" #. module: purchase #: field:purchase.config.settings,group_purchase_pricelist:0 msgid "Manage pricelist per supplier" -msgstr "" +msgstr "Zarządzaj cennikami dostawców" #. module: purchase #: code:addons/purchase/purchase.py:833 #, python-format msgid "Purchase Order has been set to draft." -msgstr "" +msgstr "Zamowienie zakupu zostało ustawione na projekt." #. module: purchase #: view:board.board:0 @@ -1057,12 +1123,12 @@ msgstr "Konsola zakupów" #: code:addons/purchase/purchase.py:566 #, python-format msgid "First cancel all receptions related to this purchase order." -msgstr "" +msgstr "Najpierw anuluj wszystkie pobrania do tego zamówienia zakkupu." #. module: purchase #: view:purchase.order:0 msgid "Approve Order" -msgstr "" +msgstr "Aprobuj zamówienie" #. module: purchase #: help:purchase.report,date:0 @@ -1090,7 +1156,7 @@ msgstr "Statystyka zamówień zakupu" #: view:purchase.order:0 #: field:purchase.order,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Nieprzeczytane wiadomości" #. module: purchase #: view:purchase.order.line_invoice:0 @@ -1110,7 +1176,7 @@ msgstr "Uwagi" #. module: purchase #: field:purchase.config.settings,module_purchase_requisition:0 msgid "Manage purchase requisitions" -msgstr "" +msgstr "Zarządzaj zleceniami zakupu" #. module: purchase #: report:purchase.order:0 @@ -1135,7 +1201,7 @@ msgstr "Przesunięcie zapasu" #: code:addons/purchase/purchase.py:255 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Niedozwolona akcja!" #. module: purchase #: field:purchase.order,validator:0 @@ -1163,7 +1229,7 @@ msgstr "Zapytanie ofertowe" #. module: purchase #: view:purchase.order:0 msgid "Source" -msgstr "" +msgstr "Źródło" #. module: purchase #: model:ir.model,name:purchase.model_stock_picking @@ -1184,12 +1250,12 @@ msgstr "Faktury wygenerowane do zamówienia zakupu" #. module: purchase #: selection:purchase.config.settings,default_invoice_method:0 msgid "Pre-generate draft invoices based on purchase orders" -msgstr "" +msgstr "Wygeneruj projekt faktury na podstawie zamówienia zakupu" #. module: purchase #: help:product.template,purchase_ok:0 msgid "Specify if the product can be selected in a purchase order line." -msgstr "" +msgstr "Określ, czy produkt ma być wybieralny w pozycjach zamówienia zakupu." #. module: purchase #: model:process.transition,note:purchase.process_transition_invoicefrompackinglist0 @@ -1232,12 +1298,14 @@ msgid "" "a draft\n" " purchase order" msgstr "" +"projekt\n" +" zamówienia zakupu" #. module: purchase #: code:addons/purchase/purchase.py:310 #, python-format msgid "Please create Invoices." -msgstr "" +msgstr "Utwórz faktury" #. module: purchase #: model:ir.model,name:purchase.model_procurement_order @@ -1258,7 +1326,7 @@ msgstr "Marzec" #. module: purchase #: view:purchase.order:0 msgid "Receive Invoice" -msgstr "" +msgstr "Pobierz fakturę" #. module: purchase #: view:purchase.order:0 @@ -1296,7 +1364,7 @@ msgstr "Stan zamówienia zakupu" #. module: purchase #: field:purchase.order.line,product_uom:0 msgid "Product Unit of Measure" -msgstr "" +msgstr "Jednostka miary produktu" #. module: purchase #: model:ir.actions.act_window,help:purchase.purchase_pricelist_version_action @@ -1312,6 +1380,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby dodać wersję cennika.\n" +"

\n" +" Wersji cennika może być więcej. Każda z nich musi mieć\n" +" okres ważności. Przykłądy: Ceny 2010, 2011, Ceny letnie\n" +" itp.\n" +"

\n" +" " #. module: purchase #: model:ir.actions.act_window,name:purchase.action_view_purchase_line_invoice @@ -1332,18 +1408,18 @@ msgstr "ZZ: %s" #. module: purchase #: view:purchase.order:0 msgid "Send by EMail" -msgstr "" +msgstr "Wyślij mailem" #. module: purchase #: code:addons/purchase/purchase.py:498 #, python-format msgid "Define purchase journal for this company: \"%s\" (id:%d)." -msgstr "" +msgstr "Zdefiniuj dziennik zakupów dla tej firmy: \"%s\" (id:%d)." #. module: purchase #: view:purchase.order:0 msgid "Purchase Order " -msgstr "" +msgstr "Zamówienie zakupu " #. module: purchase #: view:purchase.order.line:0 @@ -1354,12 +1430,12 @@ msgstr "Ręczne faktury" #: model:ir.actions.act_window,name:purchase.action_purchase_configuration #: view:purchase.config.settings:0 msgid "Configure Purchases" -msgstr "" +msgstr "Konfiguruj zakupy" #. module: purchase #: view:purchase.order:0 msgid "Untaxed" -msgstr "" +msgstr "Netto" #. module: purchase #: model:process.transition,name:purchase.process_transition_createpackinglist0 @@ -1370,7 +1446,7 @@ msgstr "Pobranie zostało wygenerowane" #: model:ir.actions.act_window,name:purchase.purchase_line_form_action2 #: model:ir.ui.menu,name:purchase.menu_purchase_line_order_draft msgid "On Purchase Order Lines" -msgstr "" +msgstr "Wg pozycji zamówienia zakupu" #. module: purchase #: report:purchase.quotation:0 @@ -1382,17 +1458,17 @@ msgstr "VAT:" msgid "" "This is the list of incoming shipments that have been generated for this " "purchase order." -msgstr "" +msgstr "To jest lista przyjęć wygenerowana do tego zamówienia zakupu." #. module: purchase #: field:purchase.config.settings,module_purchase_double_validation:0 msgid "Force two levels of approvals" -msgstr "" +msgstr "Wymuś dwa poziomy akceptacji" #. module: purchase #: model:ir.ui.menu,name:purchase.menu_product_pricelist_action2_purchase_type msgid "Price Types" -msgstr "" +msgstr "Typy cen" #. module: purchase #: help:purchase.order,date_approve:0 @@ -1446,6 +1522,17 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby utworzyć zapytanie ofertowe.\n" +"

\n" +" Zapytanie zawiera historię kontaktów z dostawcą.\n" +" Po potwierdzeniu zapytanie jest konwertowane do\n" +" zamówienia zakupu.\n" +"

\n" +" Większość zamówień zakupu jest generowana automatycznie\n" +" według ustawień logistycznych i zapotrzebowań.\n" +"

\n" +" " #. module: purchase #: model:process.transition,note:purchase.process_transition_approvingpurchaseorder0 @@ -1476,7 +1563,7 @@ msgstr "Połącz zamówienia" #. module: purchase #: field:purchase.config.settings,module_purchase_analytic_plans:0 msgid "Use multiple analytic accounts on purchase orders" -msgstr "" +msgstr "Stosuj podziały analityczne na zamówieniach zakupu" #. module: purchase #: model:ir.ui.menu,name:purchase.menu_procurement_management @@ -1499,7 +1586,7 @@ msgstr "Poprawione ręcznie" #. module: purchase #: field:purchase.config.settings,group_costing_method:0 msgid "Compute product cost price based on average cost" -msgstr "" +msgstr "Wyliczaj ceną kosztową na podstawie ceny przeciętnej" #. module: purchase #: code:addons/purchase/purchase.py:340 @@ -1547,11 +1634,18 @@ msgid "" "* The 'Cancelled' status is set automatically when user cancel purchase " "order." msgstr "" +" * Stan 'Projekt' jest nadawany automatycznie po utworzeniu zamówienia " +"zakupu. \n" +"* Stan 'Potwierdzone' jest nadawany po potwierdzeniu. " +" \n" +"* Stan 'Wykonano' jest nadawany po wykonaniu. " +" \n" +"* Stan 'Anulowano' nadawany jest po anulowaniu." #. module: purchase #: field:purchase.order,invoiced:0 msgid "Invoice Received" -msgstr "" +msgstr "fakturę otrzymano" #. module: purchase #: field:purchase.order,invoice_method:0 @@ -1596,6 +1690,9 @@ msgid "" "lines on a purchase order between several accounts and analytic plans.\n" " This installs the module purchase_analytic_plans." msgstr "" +"Pozwala użytkownikowi stosować kilka podziałów analitycznych. To pozwala " +"dzielić pozycje zamówienia zakupu na kilka kont analitycznych.\n" +" Zostanie zainstalowany moduł purchase_analytic_plans." #. module: purchase #: field:purchase.order,location_id:0 @@ -1607,17 +1704,17 @@ msgstr "Przeznaczenie" #. module: purchase #: field:purchase.order,dest_address_id:0 msgid "Customer Address (Direct Delivery)" -msgstr "" +msgstr "Adres klienta (bezpośrednia dostawa)" #. module: purchase #: model:ir.actions.client,name:purchase.action_client_purchase_menu msgid "Open Purchase Menu" -msgstr "" +msgstr "Otwórz menu Zakupów" #. module: purchase #: model:ir.model,name:purchase.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "Kreator email" #. module: purchase #: field:purchase.order,company_id:0 @@ -1670,7 +1767,7 @@ msgstr "Analiza przyjęć" #. module: purchase #: field:purchase.order,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Wiadomości" #. module: purchase #: model:ir.actions.report.xml,name:purchase.report_purchase_order @@ -1695,7 +1792,7 @@ msgstr "Zamówienie zakupu" #: code:addons/purchase/wizard/purchase_line_invoice.py:109 #, python-format msgid "Error!" -msgstr "" +msgstr "Błąd!" #. module: purchase #: report:purchase.order:0 @@ -1733,13 +1830,13 @@ msgstr "Anulowano" #. module: purchase #: field:res.partner,purchase_order_count:0 msgid "# of Purchase Order" -msgstr "" +msgstr "# Zamówień zakupu" #. module: purchase #: code:addons/purchase/purchase.py:827 #, python-format msgid "Shipment received." -msgstr "" +msgstr "Przyjęcie przyjęte." #. module: purchase #: report:purchase.quotation:0 @@ -1749,7 +1846,7 @@ msgstr "Tel.:" #. module: purchase #: view:purchase.order:0 msgid "Resend Purchase Order" -msgstr "" +msgstr "Ostatnie zamówienie zakupu" #. module: purchase #: report:purchase.order:0 @@ -1864,7 +1961,7 @@ msgstr "Cennik EDI (%s)" #: view:purchase.report:0 #: field:purchase.report,product_uom:0 msgid "Reference Unit of Measure" -msgstr "" +msgstr "Referencyjna jednostka miary" #. module: purchase #: model:process.node,note:purchase.process_node_packinginvoice0 @@ -1911,7 +2008,7 @@ msgstr "Lista zamówionych produktów" #. module: purchase #: view:purchase.order:0 msgid "Incoming Shipments & Invoices" -msgstr "" +msgstr "Przyjęcia i Faktury" #. module: purchase #: selection:purchase.order,state:0 @@ -1963,7 +2060,7 @@ msgstr "Listopad" #. module: purchase #: help:purchase.config.settings,group_costing_method:0 msgid "Allows you to compute product cost price based on average cost." -msgstr "" +msgstr "Pozwala obliczyć cenę produktu opartą o koszt przeciętny." #. module: purchase #: report:purchase.order:0 @@ -1984,6 +2081,10 @@ msgid "" "Bases on incoming shipments: let you create an invoice when receptions are " "validated." msgstr "" +"Na podstawie pozycji: Ustawia pozycje na liście, gdzie możesz fakturować " +"każdą pozycję oddzielnie.\n" +"Na podstawie faktury: Tworzy projekt faktury do późniejszego zatwierdzenia.\n" +"Na podstawie przyjęć: Pozwala fakturować przy zatwierdzaniu przyjęcia." #. module: purchase #: help:purchase.order,origin:0 @@ -1991,6 +2092,8 @@ msgid "" "Reference of the document that generated this purchase order request; a sale " "order or an internal procurement request." msgstr "" +"Odnośnik do dokumentu, który spowodował wygenerowanie tego zamówienia " +"zakupu, To może być zamówienie sprzedaży lub Zapotrzebowanie." #. module: purchase #: model:ir.ui.menu,name:purchase.menu_partner_categories_in_form @@ -2010,7 +2113,7 @@ msgstr "Zapytanie ofertowe nr" #. module: purchase #: view:purchase.config.settings:0 msgid "Invoicing Settings" -msgstr "" +msgstr "Ustawienia fakturowania" #. module: purchase #: model:email.template,body_html:purchase.email_template_edi_purchase @@ -2103,7 +2206,7 @@ msgstr "Suma zamówień na użytkownika na miesiąc" #. module: purchase #: selection:purchase.order,invoice_method:0 msgid "Based on incoming shipments" -msgstr "" +msgstr "Na podstawie przyjęć" #. module: purchase #: view:purchase.report:0 @@ -2118,6 +2221,9 @@ msgid "" "used to do the matching when you receive the products as this reference is " "usually written on the delivery order sent by your supplier." msgstr "" +"Odnośnik zamówienia sprzedaży lub oferty przysłanej ci przez dostawcę. To " +"jest stosowane do skojarzenia z dokumentem wydania wystawionym przez " +"dostawcę." #. module: purchase #: code:addons/purchase/purchase.py:991 @@ -2150,7 +2256,7 @@ msgstr "Luty" #: model:ir.actions.act_window,name:purchase.action_invoice_pending #: model:ir.ui.menu,name:purchase.menu_procurement_management_pending_invoice msgid "On Draft Invoices" -msgstr "" +msgstr "Projekty faktur" #. module: purchase #: model:ir.actions.act_window,name:purchase.action_purchase_order_report_all @@ -2176,7 +2282,7 @@ msgstr "Suma kwot" #. module: purchase #: model:ir.model,name:purchase.model_product_template msgid "Product Template" -msgstr "" +msgstr "Szablon produktu" #. module: purchase #: view:purchase.order.group:0 @@ -2207,7 +2313,7 @@ msgstr "" #. module: purchase #: view:product.product:0 msgid "When you sell this service to a customer," -msgstr "" +msgstr "Kiedy sprzedaż usługę klientowi" #. module: purchase #: model:ir.actions.act_window,name:purchase.purchase_pricelist_version_action @@ -2229,7 +2335,7 @@ msgstr "Rok" #. module: purchase #: selection:purchase.config.settings,default_invoice_method:0 msgid "Based on purchase order lines" -msgstr "" +msgstr "Na podstawie pozycji zamówienia zakupu" #. module: purchase #: model:ir.actions.act_window,help:purchase.act_res_partner_2_purchase_order @@ -2246,6 +2352,17 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Do tego dostawcy nie ma zamówień zakupu. Kliknij, aby " +"utworzyć nowe zapytanie ofertowe.\n" +"

\n" +" Zapytanie ofertowe jest pierwszym krokiem w procesie " +"zakupu. Kiedy jest\n" +" skonwertowane do zamówienia zakupu będziesz mógł " +"nadzorować przyjęcie\n" +" produktów i fakturę od dostawcy.\n" +"

\n" +" " #. module: purchase #: view:purchase.report:0 diff --git a/addons/purchase_analytic_plans/i18n/pl.po b/addons/purchase_analytic_plans/i18n/pl.po index b4b71e06720..34416c033b2 100644 --- a/addons/purchase_analytic_plans/i18n/pl.po +++ b/addons/purchase_analytic_plans/i18n/pl.po @@ -7,29 +7,29 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2009-02-04 05:56+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2012-12-11 10:20+0000\n" +"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \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: 2012-12-04 05:05+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: purchase_analytic_plans #: field:purchase.order.line,analytics_id:0 msgid "Analytic Distribution" -msgstr "" +msgstr "Podział analityczny" #. module: purchase_analytic_plans #: model:ir.model,name:purchase_analytic_plans.model_purchase_order_line msgid "Purchase Order Line" -msgstr "" +msgstr "Pozycja zamówienia zakupu" #. module: purchase_analytic_plans #: model:ir.model,name:purchase_analytic_plans.model_purchase_order msgid "Purchase Order" -msgstr "" +msgstr "Zamówienie zakupu" #~ msgid "Invalid XML for View Architecture!" #~ msgstr "XML niewłaściwy dla tej architektury wyświetlania!" diff --git a/addons/purchase_double_validation/i18n/pl.po b/addons/purchase_double_validation/i18n/pl.po index a15ae73ace9..df746d6e647 100644 --- a/addons/purchase_double_validation/i18n/pl.po +++ b/addons/purchase_double_validation/i18n/pl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:54+0000\n" -"PO-Revision-Date: 2012-02-25 20:46+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 10:28+0000\n" +"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: purchase_double_validation #: model:ir.model,name:purchase_double_validation.model_purchase_config_settings @@ -25,28 +25,28 @@ msgstr "" #. module: purchase_double_validation #: view:purchase.order:0 msgid "Purchase orders which are not approved yet." -msgstr "" +msgstr "Zamówienia zakupu jeszcze nie zaaprobowane" #. module: purchase_double_validation #: field:purchase.config.settings,limit_amount:0 msgid "limit to require a second approval" -msgstr "" +msgstr "kwota wymagająca drugiej aprobaty" #. module: purchase_double_validation #: view:board.board:0 #: model:ir.actions.act_window,name:purchase_double_validation.purchase_waiting msgid "Purchase Orders Waiting Approval" -msgstr "" +msgstr "Zamówienia oczekujące na aprobatę" #. module: purchase_double_validation #: view:purchase.order:0 msgid "To Approve" -msgstr "" +msgstr "Do aprobaty" #. module: purchase_double_validation #: help:purchase.config.settings,limit_amount:0 msgid "Amount after which validation of purchase is required." -msgstr "" +msgstr "Kwota, powyżej której wymagane jest zatwierdzenie" #~ msgid "Configure Limit Amount for Purchase" #~ msgstr "Konfiguruj kwotę limitu zakupów" diff --git a/addons/purchase_double_validation/i18n/pt.po b/addons/purchase_double_validation/i18n/pt.po index 5ebff742bbf..2fe44af393a 100644 --- a/addons/purchase_double_validation/i18n/pt.po +++ b/addons/purchase_double_validation/i18n/pt.po @@ -8,24 +8,24 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-24 02:54+0000\n" -"PO-Revision-Date: 2012-03-29 11:26+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-12-11 15:45+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: purchase_double_validation #: model:ir.model,name:purchase_double_validation.model_purchase_config_settings msgid "purchase.config.settings" -msgstr "" +msgstr "purchase.config.settings" #. module: purchase_double_validation #: view:purchase.order:0 msgid "Purchase orders which are not approved yet." -msgstr "" +msgstr "Ordens de compra que ainda não foram aprovadas." #. module: purchase_double_validation #: field:purchase.config.settings,limit_amount:0 @@ -36,17 +36,17 @@ msgstr "" #: view:board.board:0 #: model:ir.actions.act_window,name:purchase_double_validation.purchase_waiting msgid "Purchase Orders Waiting Approval" -msgstr "" +msgstr "Ordens de compra aguardando aprovação" #. module: purchase_double_validation #: view:purchase.order:0 msgid "To Approve" -msgstr "" +msgstr "Por aprovar" #. module: purchase_double_validation #: help:purchase.config.settings,limit_amount:0 msgid "Amount after which validation of purchase is required." -msgstr "" +msgstr "Valor a partir do qual é necessário validar a compra" #~ msgid "Purchase Application Configuration" #~ msgstr "Configurar aplicação de compra" diff --git a/addons/report_webkit/i18n/es.po b/addons/report_webkit/i18n/es.po index da824c59c84..5bcd984c8e7 100644 --- a/addons/report_webkit/i18n/es.po +++ b/addons/report_webkit/i18n/es.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2010-12-29 10:24+0000\n" -"Last-Translator: Borja López Soilán (NeoPolus) \n" +"PO-Revision-Date: 2012-12-11 23:01+0000\n" +"Last-Translator: lambdasoftware \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: report_webkit #: view:ir.actions.report.xml:0 @@ -75,7 +75,7 @@ msgstr "Compañía" #: code:addons/report_webkit/webkit_report.py:235 #, python-format msgid "Please set a header in company settings." -msgstr "" +msgstr "Por favor, ponga una cabecera en ajustes de la compañia." #. module: report_webkit #: selection:ir.header_webkit,format:0 @@ -127,7 +127,7 @@ msgstr "B6 20 125 x 176 mm" #: code:addons/report_webkit/webkit_report.py:177 #, python-format msgid "Webkit error" -msgstr "" +msgstr "Error Webkit" #. module: report_webkit #: selection:ir.header_webkit,format:0 @@ -142,7 +142,7 @@ msgstr "B2 17 500 x 707 mm" #: code:addons/report_webkit/webkit_report.py:307 #, python-format msgid "Webkit render!" -msgstr "" +msgstr "Motor de renderizado Webit!" #. module: report_webkit #: model:ir.model,name:report_webkit.model_ir_header_img @@ -163,6 +163,11 @@ msgid "" "http://code.google.com/p/wkhtmltopdf/downloads/list and set the path in the " "ir.config_parameter with the webkit_path key.Minimal version is 0.9.9" msgstr "" +"Por favor, instale el ejecutable en su sistema (sudo apt-get install " +"wkhtmltopdf) o descárguelo desde aquí: " +"http://code.google.com/p/wkhtmltopdf/downloads/list y ponga la ruta del " +"archivo en ir.config_parameter la clave webkit_path. La versión mínima es la " +"0.9.9" #. module: report_webkit #: selection:ir.header_webkit,format:0 @@ -214,7 +219,7 @@ msgstr "La cabecera relacionada con el informe" #: code:addons/report_webkit/webkit_report.py:95 #, python-format msgid "Wkhtmltopdf library path is not set" -msgstr "" +msgstr "La ruta a la libreria Wkhtmltopdf no está configurada" #. module: report_webkit #: view:ir.actions.report.xml:0 @@ -296,7 +301,7 @@ msgstr "Imagen" #. module: report_webkit #: view:ir.header_img:0 msgid "Header Image" -msgstr "" +msgstr "Imagen de la cabecera" #. module: report_webkit #: field:res.company,header_webkit:0 @@ -325,7 +330,7 @@ msgstr "Horizontal" #. module: report_webkit #: view:report.webkit.actions:0 msgid "or" -msgstr "" +msgstr "o" #. module: report_webkit #: selection:ir.header_webkit,orientation:0 @@ -342,6 +347,8 @@ msgstr "B8 22 62 x 88 mm" #, python-format msgid "The command 'wkhtmltopdf' failed with error code = %s. Message: %s" msgstr "" +"El comando 'wkhtmltopdf' ha fallado con el siguiente código de error = %s. " +"Mensaje: %s" #. module: report_webkit #: selection:ir.header_webkit,format:0 @@ -387,7 +394,7 @@ msgstr "Margen derecho (mm)" #: code:addons/report_webkit/webkit_report.py:229 #, python-format msgid "Webkit report template not found!" -msgstr "" +msgstr "¡La plantilla del informe webkit no ha sido encontrada!" #. module: report_webkit #: field:ir.header_webkit,orientation:0 @@ -423,7 +430,7 @@ msgstr ":B10 16 31 x 44 mm" #. module: report_webkit #: view:report.webkit.actions:0 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: report_webkit #: field:ir.header_webkit,css:0 @@ -445,7 +452,7 @@ msgstr "Logos de Webkit" #: code:addons/report_webkit/webkit_report.py:173 #, python-format msgid "No diagnosis message was provided" -msgstr "" +msgstr "No se ha obtenido ningún mensaje de diagnóstico" #. module: report_webkit #: selection:ir.header_webkit,format:0 @@ -534,12 +541,12 @@ msgstr "ir.acciones.informe.xml" #: code:addons/report_webkit/webkit_report.py:175 #, python-format msgid "The following diagnosis message was provided:\n" -msgstr "" +msgstr "Se ha obtenido el siguiente mensaje de diagnóstico:\n" #. module: report_webkit #: view:ir.header_webkit:0 msgid "HTML Header" -msgstr "" +msgstr "Cabecera HTML" #~ msgid "WebKit Header" #~ msgstr "Cabecera WebKit" diff --git a/addons/sale/i18n/de.po b/addons/sale/i18n/de.po index 4564b4f22d8..c1c039f455b 100644 --- a/addons/sale/i18n/de.po +++ b/addons/sale/i18n/de.po @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-09 22:57+0000\n" -"Last-Translator: Felix Schubert \n" +"PO-Revision-Date: 2012-12-11 15:17+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:48+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale #: model:ir.model,name:sale.model_account_config_settings @@ -28,8 +29,8 @@ msgid "" "Sale Order Lines that are confirmed, done or in exception state and haven't " "yet been invoiced" msgstr "" -"Verkaufsauftragspositionen, die bestätigt, erledigt oder in Ausnahmezustand " -"sind und noch nicht fakturiert wurden" +"Auftragspositionen, die bestätigt, erledigt oder Sonderfälle sind und noch " +"nicht abgerechnet sind." #. module: sale #: view:sale.order:0 @@ -74,7 +75,7 @@ msgstr "Fehlerhafte Daten" #: code:addons/sale/wizard/sale_make_invoice_advance.py:102 #, python-format msgid "The value of Advance Amount must be positive." -msgstr "Der Wert eines Vorschussbetrags muss positiv sein" +msgstr "Der Wert einer Anzahlung muss positiv sein" #. module: sale #: help:sale.order,message_unread:0 @@ -84,7 +85,7 @@ msgstr "Wenn aktiviert, erfordern neue Nachrichten Ihr Handeln" #. module: sale #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Ungültig" #. module: sale #: report:sale.order:0 @@ -101,6 +102,13 @@ msgid "" "The 'Waiting Schedule' status is set when the invoice is confirmed " " but waiting for the scheduler to run on the order date." msgstr "" +"Anzeige des Status von Angebot oder Auftrag. \n" +"Um Sonderfälle handelt es sich, wenn im späteren Verlauf bei der " +"Verarbeitung von Rechnungen (Rechnung Sonderfall) oder Lieferaufträgen " +"(Lieferschein Sonderfall) Vorgänge abgebrochen werden.\n" +"In den 'Warteliste' Zustand gelangt ein Auftrag, wenn korrespondierende " +"Rechnungen schon bestätigt wurden und \"nur\" noch der Auftrag auf seine " +"Ausführung zum Bestelldatum wartet." #. module: sale #: field:sale.order,project_id:0 @@ -108,7 +116,7 @@ msgstr "" #: field:sale.report,analytic_account_id:0 #: field:sale.shop,project_id:0 msgid "Analytic Account" -msgstr "Analytisches Konto" +msgstr "Kostenstelle" #. module: sale #: help:sale.order,message_summary:0 @@ -151,12 +159,12 @@ msgstr "Standard Zahlungsbedingung" #: code:addons/sale/sale.py:662 #, python-format msgid "Invoice paid." -msgstr "Rechnung bezahlt" +msgstr "Rechnung ist bezahlt" #. module: sale #: field:sale.config.settings,group_uom:0 msgid "Allow using different units of measures" -msgstr "Erlaubt die Verwendung verschiedener Maßeinheiten" +msgstr "Erlaubt die Verwendung verschiedener Mengeneinheiten" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 @@ -172,7 +180,7 @@ msgstr "Rabatt (%)" #: code:addons/sale/sale.py:787 #, python-format msgid "Please define income account for this product: \"%s\" (id:%d)." -msgstr "Weisen Sie ein Ertragskonto für diese Produkt zu: \"%s\" (id:%d)." +msgstr "Weisen Sie ein Ertragskonto für dieses Produkt zu: \"%s\" (id:%d)." #. module: sale #: view:sale.report:0 @@ -201,17 +209,23 @@ msgid "" "user-wise as well as month wise.\n" " This installs the module account_analytic_analysis." msgstr "" +"Diese Anwendung modifiziert die Anzeige einer Kostenstelle durch wichtige " +"Daten für Projektleiter.\n" +" Sie können eine Zusammenfassung der Kostenstellen Statistik " +"nach Benutzer oder nach Monaten bekommen.\n" +" Durch diese Auswahl installieren Sie das Modul " +"account_analytic_analysis." #. module: sale #: selection:sale.order,invoice_quantity:0 msgid "Ordered Quantities" -msgstr "Beauftragte Menge" +msgstr "Bestellmenge" #. module: sale #: field:sale.order,name:0 #: field:sale.order.line,order_id:0 msgid "Order Reference" -msgstr "Referenz Bestellung" +msgstr "Auftragsreferenz" #. module: sale #: view:sale.order:0 @@ -246,7 +260,7 @@ msgstr "Angebote und Verkäufe" msgid "" "Allows you to select and maintain different units of measure for products." msgstr "" -"Ermöglicht die Auswahl und Verwaltung verschiedener Maßeinheiten für " +"Ermöglicht die Auswahl und Verwaltung verschiedener Mengeneinheiten für " "Produkte." #. module: sale @@ -268,7 +282,7 @@ msgstr "Rabatt (%)" #. module: sale #: view:sale.order.line.make.invoice:0 msgid "Create & View Invoice" -msgstr "Erzeuge und zeige Rechnung an" +msgstr "Rechnung erstellen und anzeigen" #. module: sale #: view:board.board:0 @@ -322,12 +336,12 @@ msgstr "Angebot " #: code:addons/sale/wizard/sale_make_invoice_advance.py:106 #, python-format msgid "Advance of %s %%" -msgstr "Abschlagszahlung von %s %%" +msgstr "Anzahlung von %s %%" #. module: sale #: model:ir.actions.act_window,name:sale.action_order_tree2 msgid "Sales in Exception" -msgstr "Verkaufsaufträge in Fehlerliste" +msgstr "fehlerhafte Sonderfälle" #. module: sale #: help:sale.order.line,address_allotment_id:0 @@ -387,7 +401,7 @@ msgstr "Statistik Verkaufsauftrag" #. module: sale #: help:sale.order,project_id:0 msgid "The analytic account related to a sales order." -msgstr "Das analytische Konto zu diesem Verkaufsauftrag." +msgstr "Die Projekt Kostenstelle für diesen Auftrag" #. module: sale #: selection:sale.report,month:0 @@ -409,7 +423,7 @@ msgstr "Rechnung anzeigen" #: code:addons/sale/wizard/sale_make_invoice_advance.py:115 #, python-format msgid "Advance of %s %s" -msgstr "Abschlagszahlung von %s %s" +msgstr "Anzahlung von %s %s" #. module: sale #: view:board.board:0 @@ -428,7 +442,7 @@ msgstr "Menge" #. module: sale #: help:sale.order,partner_shipping_id:0 msgid "Delivery address for current sales order." -msgstr "Lieferadress für den aktuellen Auftrag." +msgstr "Lieferadresse für den aktuellen Auftrag." #. module: sale #: report:sale.order:0 @@ -449,7 +463,7 @@ msgstr "Steuerzuordnung" #: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "In Progress" -msgstr "In Bearbeitung" +msgstr "In Arbeit" #. module: sale #: code:addons/sale/sale.py:667 @@ -464,8 +478,8 @@ msgid "" "'In progress' or 'Manual in progress'." msgstr "" "Der Verkäufer bestätigt den Verkaufsauftrag. Der Status des " -"Verkaufsauftrages wechselt entweder auf 'In Bearbeitung' oder auf 'Manuell " -"in Bearbeitung'." +"Verkaufsauftrages wechselt auf 'In Bearbeitung' oder auf 'In Bearbeitung und " +"abzurechnen'." #. module: sale #: code:addons/sale/sale.py:843 @@ -506,17 +520,17 @@ msgstr "" #. module: sale #: model:res.groups,name:sale.group_delivery_invoice_address msgid "Addresses in Sale Orders" -msgstr "Addressen in Aufträgen" +msgstr "Adressen in Aufträgen" #. module: sale #: field:sale.order,project_id:0 msgid "Contract / Analytic" -msgstr "Vertrag/Analytisches Konto" +msgstr "Vertrag / Projekt" #. module: sale #: model:res.groups,name:sale.group_invoice_so_lines msgid "Enable Invoicing Sale order lines" -msgstr "Rechnungserstellung basierend auf Auftragszeilen" +msgstr "Abrechnung von Auftragszeilen" #. module: sale #: view:sale.report:0 @@ -548,12 +562,12 @@ msgstr "Abgerechnet" #. module: sale #: model:res.groups,name:sale.group_analytic_accounting msgid "Analytic Accounting for Sales" -msgstr "Analytische Konten für den Verkauf" +msgstr "Kostenstelle für den Verkauf" #. module: sale #: field:sale.order,date_confirm:0 msgid "Confirmation Date" -msgstr "Datum Auftragsbestätigung" +msgstr "Bestätigung am" #. module: sale #: field:sale.order.line,address_allotment_id:0 @@ -563,7 +577,7 @@ msgstr "Vertriebspartner" #. module: sale #: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv msgid "Invoice Order" -msgstr "Bestellungsrechnung" +msgstr "Abrechnung Auftrag" #. module: sale #: selection:sale.report,month:0 @@ -584,8 +598,7 @@ msgstr "Gesamtsumme." #: field:sale.config.settings,module_sale_journal:0 msgid "Allow batch invoicing of delivery orders through journals" msgstr "" -"Stapelverarbeitung zur Erzeugung von Rechnungen auf Basis von Lieferscheinen " -"erlauben" +"Stapelverarbeitung von Rechnungen auf Basis von Lieferauftragsjournalen" #. module: sale #: field:sale.order.line,price_subtotal:0 @@ -605,12 +618,12 @@ msgstr "Rechnungsanschrift:" #. module: sale #: field:sale.order.line,product_uom:0 msgid "Unit of Measure " -msgstr "Maßeinheit " +msgstr "Mengeneinheit " #. module: sale #: field:sale.config.settings,time_unit:0 msgid "The default working time unit for services is" -msgstr "Standard Zeiteinheit für Dienstleistungen ist" +msgstr "Die" #. module: sale #: field:sale.order,partner_invoice_id:0 @@ -649,13 +662,12 @@ msgstr "(aktualisieren)" #: model:ir.model,name:sale.model_sale_order_line #: field:stock.move,sale_line_id:0 msgid "Sales Order Line" -msgstr "Auftragsposition" +msgstr "" #. module: sale #: field:sale.config.settings,module_analytic_user_function:0 msgid "One employee can have different roles per contract" -msgstr "" -"Ein Mitarbeiter kann verschiedene Rollen in verschiedenen Verträgen haben." +msgstr "Ein Mitarbeiter hatte mehrere Rollen in veschiedenen Verträgen" #. module: sale #: view:sale.order:0 @@ -685,6 +697,11 @@ msgid "" " and perform batch operations on journals.\n" " This installs the module sale_journal." msgstr "" +"Bei Aktivierung können Sie Aufträge und Lieferungen (Lieferaufträge) " +"zwischen verschiedenen \n" +"Journalen differenzieren und dann im Stapel ausführen. Sie installieren " +"hierdurch das Modul\n" +"sale_journal." #. module: sale #: field:sale.order,create_date:0 @@ -732,6 +749,16 @@ msgid "" " \n" "* The 'Cancelled' status is set when a user cancel the sales order related." msgstr "" +"* Die \"Entwurf\"-Status wird zugewiesen, wenn der zugehörige Auftrag im " +"Entwurf-Status ist.\n" +"* Die \"Bestätigt\"-Status wird zugewiesen, wenn der korrespondierende " +"Auftrag bestätigt wurde.\n" +"* Der \"Sonderfall\" Status wird zugewiesen, wenn korrespondierende Belege " +"des Auftrags abgebrochen wurden.\n" +"* Der \"Erledigt\" Status wird zugewiesen, wenn die Auftragspositionen " +"versendet wurden.\n" +"* Der \"Abgebrochen\"-Status wird zugewiesen, wenn ein Benutzer den " +"korrespondierenden Auftrag abbricht." #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:92 @@ -801,6 +828,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Definition eines neuen Verkauf Shops.\n" +"

\n" +" Jedes Angebot oder Auftrag muss einem Shop zugewiesen " +"werden. Der Shop bestimmt das\n" +" Zentrallager aus dem die Produkte für jeden einzelnen " +"Auftrag ausgeliefert werden.\n" +"

\n" +" " #. module: sale #: report:sale.order:0 @@ -890,6 +926,9 @@ msgid "" " You may have to create it and set it as a default value on " "this field." msgstr "" +"Wählen Sie ein Dienstleistungsprodukt namens \"Anzahlung\".\n" +" Möglicherweise müssen Sie dieses Produkt vorab definieren, " +"um es als Standard Vorauswahl zu hinterlegen." #. module: sale #: help:sale.config.settings,module_warning:0 @@ -899,6 +938,13 @@ msgid "" "Example: Product: this product is deprecated, do not purchase more than 5.\n" " Supplier: don't forget to ask for an express delivery." msgstr "" +"Durch Aktivierung können Sie automatische Mitteilungen für Produkte " +"hinterlegen und diese automatisch ausführen, wenn ein Benutzer dieses " +"Produkt in eine Angebotsposition übernimmt. Zum Beispiel Mitteilungen bei " +"Produkten: Dieses Produkt wird demnächst nicht mehr verfügbar sein, bitte " +"nicht mehr als 5 St. verkaufen.\n" +" Mitteilung bei Lieferant: Nicht vergessen, " +"Expresslieferung bei Bestellung anzugeben." #. module: sale #: code:addons/sale/sale.py:979 @@ -986,6 +1032,8 @@ msgid "" "Manage Related Stock.\n" " This installs the module sale_stock." msgstr "" +"Ermöglicht die Erstellung von Aufträgen unter Verwendung verschiedener " +"Lieferbedingungen und angebundener Lagerwirtschaft." #. module: sale #: model:email.template,subject:sale.email_template_edi_sale @@ -1039,7 +1087,7 @@ msgstr "Nachrichten und Kommunikations-Historie" #. module: sale #: view:sale.order:0 msgid "New Copy of Quotation" -msgstr "" +msgstr "Neue Kopie des Angebots" #. module: sale #: code:addons/sale/sale.py:1007 @@ -1156,6 +1204,13 @@ msgid "" "available.\n" " This installs the module analytic_user_function." msgstr "" +"Die Funktion eines Mitarbeiters kann als Standard bei Projekt Verträgen " +"übernommen werden.\n" +" Dieses ist sinnvoll, wenn Benutzer Vertragsarbeiten über " +"Stundenzettel eingeben. Diese Werte können dann einfach übernommen werden.\n" +" Es gibt dennoch natürlich die Möglichkeit die Werte zu " +"überschreiben. Durch Aktivierung installieren Sie hier die Anwendung " +"analytic_user_function." #. module: sale #: help:sale.order,create_date:0 @@ -1437,6 +1492,113 @@ msgid "" "\n" " " msgstr "" +"\n" +"
\n" +"\n" +"

Hallo${object.partner_id.name and ' ' or ''}${object.partner_id.name " +"or ''},

\n" +" \n" +"

wir senden Ihnen auf diesem Weg ein(en)${object.state in ('draft', " +"'sent') and 'quotation' or 'order confirmation'} " +"von${object.company_id.name}:

\n" +"\n" +"

\n" +"   BEZUG
\n" +"   Angebots-/Auftragsnummer: " +"${object.name}
\n" +"   Betrag: ${object.amount_total} " +"${object.pricelist_id.currency_id.name}
\n" +"   Datum: ${object.date_order}
\n" +" % if object.origin:\n" +"   Bezug: ${object.origin}
\n" +" % endif\n" +" % if object.client_order_ref:\n" +"   Ihre Referenz: ${object.client_order_ref}
\n" +" % endif\n" +" % if object.user_id:\n" +"   Ihr Ansprechpartner: ${object.user_id.name}\n" +" % endif\n" +"

\n" +"\n" +" % if object.order_policy in ('prepaid','manual') and " +"object.company_id.paypal_account and object.state != 'draft':\n" +" <%\n" +" comp_name = quote(object.company_id.name)\n" +" order_name = quote(object.name)\n" +" paypal_account = quote(object.company_id.paypal_account)\n" +" order_amount = quote(str(object.amount_total))\n" +" cur_name = quote(object.pricelist_id.currency_id.name)\n" +" paypal_url = \"https://www.paypal.com/cgi-" +"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Order%%20%s\" \\\n" +" " +"\"&invoice=%s&amount=%s&currency_code=%s&button_subtype=servi" +"ces&no_note=1\" \\\n" +" \"&bn=OpenERP_Order_PayNow_%s\" % \\\n" +" " +"(paypal_account,comp_name,order_name,order_name,order_amount,cur_name,cur_nam" +"e)\n" +" %>\n" +"
\n" +"

Sie können gerne Online mit Paypal bezahlen:

\n" +" \n" +" \n" +" \n" +" % endif\n" +"\n" +"
\n" +"

Zögern Sie bitte nicht, uns bei Fragen Ihrerseits zu " +"kontaktieren.

\n" +"

${object.company_id.name or 'us'}!

\n" +"
\n" +"
\n" +"
\n" +"

\n" +" ${object.company_id.name}

\n" +"
\n" +"
\n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
\n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
\n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
\n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
\n" +" % endif\n" +"
\n" +" % if object.company_id.phone:\n" +"
\n" +" Phone:  ${object.company_id.phone}\n" +"
\n" +" % endif\n" +" % if object.company_id.website:\n" +"
\n" +" Homepage : ${object.company_id.website}\n" +"
\n" +" %endif\n" +"

\n" +"
\n" +"
\n" +" " #. module: sale #: field:sale.config.settings,group_sale_pricelist:0 @@ -1478,6 +1640,11 @@ msgid "" "between the Unit Price and Cost Price.\n" " This installs the module sale_margin." msgstr "" +"Durch Aktivierung können Sie Ihre Margen in Angeboten / Aufträgen anzeigen.\n" +" Hierdurch haben Sie die Möglichkeit Ihre Handelsspanne als " +"Differenz zwischen Verkauf Preis und Standard Preis zu berechnen.\n" +"\n" +" Sie installieren hierdurch das Modul sale_margin." #. module: sale #: report:sale.order:0 @@ -1542,6 +1709,11 @@ msgid "" "Before delivery: A draft invoice is created from the sales order and must be " "paid before the products can be delivered." msgstr "" +"Auf Wunsch: Sie können eine Rechnung erstellen, wenn Sie benötigt wird.\n" +"Bei Auslieferung: Sie können eine Rechnung zusammen mit der Auslieferung " +"erstellen.\n" +"Vor Auslieferung: Eine Rechnung wird zusammen mit dem Auftrag erstellt und " +"muss vor Auslieferung bezahlt werden." #. module: sale #: view:account.invoice.report:0 @@ -1558,7 +1730,7 @@ msgstr "Abrechnungsumfang" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Fixed price (deposit)" -msgstr "" +msgstr "Festpreis (Anzahlung)" #. module: sale #: report:sale.order:0 @@ -1663,6 +1835,13 @@ msgid "" " Use Some Order Lines to invoice a selection of the sale " "order lines." msgstr "" +"Benutzen Sie vollständige Abrechnung des Auftrags für eine Schlussrechnung.\n" +" Wählen Sie Prozentualer Anteil, für prozentuale " +"Teilabrechnung des Gesamtauftrags.\n" +" Wählen Sie Festpreis für die Anzahlung eines " +"Festbetrags im voraus.\n" +" Wählen Sie Einige Auftragspositionen für eine " +"selektive Abrechnung einzelner Positionen." #. module: sale #: help:sale.config.settings,module_account_analytic_analysis:0 @@ -1676,6 +1855,14 @@ msgid "" "invoice automatically.\n" " It installs the account_analytic_analysis module." msgstr "" +"Durch diese Anwendung können Sie die Konditionen Ihrer Projekt Verträge " +"definieren: Abrechnung\n" +" (Festpreis, von Stundenzettel, Ausgaben Verrechnung), Preise " +"(650 € / Tag) oder die Laufzeit \n" +" (z.B. 1 Jahr Support Vertrag). Sie können den Projekt " +"Vertrag Fortschritt verfolgen und automatisch\n" +" Abrechnungen erstellen. Es wird das Modul " +"account_analytic_analysis installiert." #. module: sale #: model:email.template,report_name:sale.email_template_edi_sale @@ -1774,6 +1961,10 @@ msgid "" "replenishment.\n" "On order: When needed, the product is purchased or produced." msgstr "" +"Beschaffe an Lager: Bei Bedarf wird das Produkt entweder direkt vom Lager " +"entnommen oder es wird abgewartet bis wieder Bestand auf Lager ist.\n" +"Beschaffe von Auftrag: Bei Bedarf wird das Produkt entweder eingekauft oder " +"produziert." #. module: sale #: selection:sale.order,state:0 @@ -1917,11 +2108,33 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klicken Sie zur Erstellung eines Angebots oder Auftrags für " +"diesen Kunden.\n" +"

\n" +" OpenERP hilft bei der vollständigen Abwicklung des " +"Auftragszyklus:\n" +" Angebot, Auftrag, Auslieferung, Abrechnung und " +"Zahlungsabwicklung.\n" +"

\n" +" Optimieren Sie auch die Kommunikation in Ihrem soziales " +"Business-Netzwerk. \n" +" Sie können direkt zu allen Geschäftsvorgängen wie Rechnungen " +"oder \n" +" Veranstaltungen Kurzmitteilungen versenden oder ad-hoc " +"Kommentare \n" +" versenden und empfangen. Verfolgen Sie mit höchstmöglicher " +"Effizienz \n" +" den Arbeitsfortschritt. Wichtige Infos können nicht mehr im " +"EMail Postfach\n" +" untergehen.\n" +"

\n" +" " #. module: sale #: selection:sale.order,order_policy:0 msgid "On Delivery Order" -msgstr "" +msgstr "Bei Auslieferung" #. module: sale #: view:sale.report:0 @@ -1947,6 +2160,22 @@ msgid "" "

\n" " " msgstr "" +"Klicken Sie einfach zur Erstellung eines neuen Auftrags.\n" +"

\n" +" OpenERP wird Ihnen dabei helfen, Ihren Vertriebsprozess " +"effizient abzubilden,\n" +" vom Angebot zum Auftrag, über den Lieferauftrag, die " +"tatsächliche Ablieferung \n" +" beim Kuden, die Abrechnung und die Verfolgung des " +"Zahlungseingangs.\n" +"

\n" +" Das soziale Netzwerk übernimmt dabei die Funktion des " +"Sozialnetwerks ,\n" +" die Diskussionen helfen dabei, Diskussionen zur jeder Sale " +"Order und ermöglicht\n" +" Ihren Kunden die Rückverfolgbarkeit eines Auftrags. \n" +"

\n" +" " #. module: sale #: code:addons/sale/wizard/sale_line_invoice.py:111 @@ -2083,7 +2312,7 @@ msgstr "Produkt für Anzahlung" #. module: sale #: help:sale.order.line,sequence:0 msgid "Gives the sequence order when displaying a list of sales order lines." -msgstr "" +msgstr "Anzeige der Nummernfolge bei mehrereren Zeilenordner." #. module: sale #: selection:sale.report,month:0 @@ -2125,7 +2354,7 @@ msgstr "Auftragsstatus" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Show Lines to Invoice" -msgstr "" +msgstr "Zeige abzurechnende Positionen" #. module: sale #: field:sale.report,date:0 @@ -2188,7 +2417,7 @@ msgstr "Wollen Sie wirklich diese Rechnung erstellen?" #. module: sale #: view:sale.order:0 msgid "Order Number" -msgstr "" +msgstr "Auftragsnummer" #. module: sale #: view:sale.order:0 @@ -2220,6 +2449,10 @@ msgid "" "with\n" " your customer." msgstr "" +"Nutzen Sie Verträge zur Abwicklung von Dienstleistungen mit\n" +" differenziert abzurechnenden Leistungen, die " +"Bestandteil der Vereinbarung\n" +" mit Ihren Kunden sind." #. module: sale #: view:sale.order:0 @@ -2230,7 +2463,7 @@ msgstr "Suche Verkaufsaufträge" #. module: sale #: field:sale.advance.payment.inv,advance_payment_method:0 msgid "What do you want to invoice?" -msgstr "" +msgstr "Was möchten Sie abrechnen ?" #. module: sale #: field:sale.order.line,sequence:0 @@ -2247,6 +2480,7 @@ msgstr "Zahlungsbedingung" #: help:account.config.settings,module_sale_analytic_plans:0 msgid "This allows install module sale_analytic_plans." msgstr "" +"Sie können durch Aktivierung das Modul sale_analytic_plans installieren." #. module: sale #: model:ir.actions.act_window,help:sale.action_order_report_all @@ -2284,7 +2518,7 @@ msgstr "Jahr" #. module: sale #: view:sale.order.line.make.invoice:0 msgid "Do you want to invoice the selected sale order lines?" -msgstr "" +msgstr "Möchten Sie die Auswahl der Auftragspositionen auch abrechnen ?" #~ msgid "Manages the delivery and invoicing progress" #~ msgstr "Verwaltet den Liefer- und Fakturierungs- Fortschritt" diff --git a/addons/sale/i18n/pl.po b/addons/sale/i18n/pl.po index c709b718840..ea9621ef3cf 100644 --- a/addons/sale/i18n/pl.po +++ b/addons/sale/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-05-10 18:23+0000\n" +"PO-Revision-Date: 2012-12-11 23:11+0000\n" "Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \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: 2012-12-04 05:30+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale #: model:ir.model,name:sale.model_account_config_settings @@ -44,7 +44,7 @@ msgstr "JS" #: view:sale.report:0 #: field:sale.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Sprzedawca" #. module: sale #: help:sale.order,pricelist_id:0 @@ -59,6 +59,7 @@ msgstr "Dzień" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancelorder0 +#: view:sale.order:0 msgid "Cancel Order" msgstr "Anuluj zamówienie" @@ -66,18 +67,18 @@ msgstr "Anuluj zamówienie" #: code:addons/sale/wizard/sale_make_invoice_advance.py:101 #, python-format msgid "Incorrect Data" -msgstr "" +msgstr "Niepoprawne dane" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:102 #, python-format msgid "The value of Advance Amount must be positive." -msgstr "" +msgstr "Wartość przedpłaty musi być dodatnia" #. module: sale #: help:sale.order,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Jeśli zaznaczone, to wiadomość wymaga twojej uwagi" #. module: sale #: view:res.partner:0 @@ -87,7 +88,7 @@ msgstr "" #. module: sale #: report:sale.order:0 msgid "Tax" -msgstr "" +msgstr "Podatek" #. module: sale #: help:sale.order,state:0 @@ -101,6 +102,7 @@ msgid "" msgstr "" #. module: sale +#: field:sale.order,project_id:0 #: view:sale.report:0 #: field:sale.report,analytic_account_id:0 #: field:sale.shop,project_id:0 @@ -123,7 +125,7 @@ msgstr "# Ilości" #. module: sale #: help:sale.config.settings,group_discount_per_so_line:0 msgid "Allows you to apply some discount per sale order line." -msgstr "" +msgstr "Pozwala zastosowac upust do pozycji zamówienia" #. module: sale #: help:sale.config.settings,group_sale_pricelist:0 @@ -141,17 +143,17 @@ msgstr "Domyślne warunki płatności" #: code:addons/sale/sale.py:662 #, python-format msgid "Invoice paid." -msgstr "" +msgstr "Faktura zapłacona." #. module: sale #: field:sale.config.settings,group_uom:0 msgid "Allow using different units of measures" -msgstr "" +msgstr "Pozwala stosowac różne jednostki miary" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Percentage" -msgstr "" +msgstr "Procentowo" #. module: sale #: report:sale.order:0 @@ -162,7 +164,7 @@ msgstr "Up.(%)" #: code:addons/sale/sale.py:787 #, python-format msgid "Please define income account for this product: \"%s\" (id:%d)." -msgstr "" +msgstr "Zdefiniuj konto przychodów dla tego produktu: \"%s\" (id:%d)." #. module: sale #: view:sale.report:0 @@ -211,17 +213,17 @@ msgstr "Inne informacje" #: code:addons/sale/wizard/sale_make_invoice.py:42 #, python-format msgid "Warning!" -msgstr "" +msgstr "Ostrzeżenie !" #. module: sale #: view:sale.config.settings:0 msgid "Invoicing Process" -msgstr "" +msgstr "Proces fakturowania" #. module: sale #: view:sale.order:0 msgid "Sales Order done" -msgstr "" +msgstr "Wykonano Zamówienie sprzedaży" #. module: sale #: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order @@ -233,7 +235,7 @@ msgstr "Oferty i zamówienia" #: help:sale.config.settings,group_uom:0 msgid "" "Allows you to select and maintain different units of measure for products." -msgstr "" +msgstr "Pozwala wybrać różne jednostki miary dla produktów." #. module: sale #: model:ir.model,name:sale.model_sale_make_invoice @@ -254,7 +256,7 @@ msgstr "Upust (%)" #. module: sale #: view:sale.order.line.make.invoice:0 msgid "Create & View Invoice" -msgstr "" +msgstr "Utwórz i pokaż fakturę" #. module: sale #: view:board.board:0 @@ -265,7 +267,7 @@ msgstr "Moje oferty" #. module: sale #: field:sale.config.settings,module_warning:0 msgid "Allow configuring alerts by customer or products" -msgstr "" +msgstr "Pozwala ustawić powiadomienia dotyczące klienta lub produktół" #. module: sale #: field:sale.shop,name:0 @@ -286,27 +288,34 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" To jest lista pozycji do fakturowania. Możesz fakturować\n" +" zamówienie sprzedaży częściowo po pozycjach. Nie\n" +" potrzebujesz tej listy, jeśli fakturujesz z wydań\n" +" zewnętrznych lub całościowo z amówienia.\n" +"

\n" +" " #. module: sale #: view:sale.order:0 msgid "Quotation " -msgstr "" +msgstr "Oferta " #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:106 #, python-format msgid "Advance of %s %%" -msgstr "" +msgstr "Zaliczka %s %%" #. module: sale -#: model:ir.actions.act_window,name:sale.action_orders_exception +#: model:ir.actions.act_window,name:sale.action_order_tree2 msgid "Sales in Exception" msgstr "Sprzedaże w stanie wyjątku" #. module: sale #: help:sale.order.line,address_allotment_id:0 msgid "A partner to whom the particular product needs to be allotted." -msgstr "" +msgstr "Partner, któremu produkt powinien być przydzielony." #. module: sale #: view:sale.order:0 @@ -336,6 +345,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby utworzyć ofertę, która później będzie " +"zamówieniem sprzedaży\n" +" order.\n" +"

\n" +" OpenERP pomoże ci przejść proces sprzedaży:\n" +" Oferta, Zamówienie sprzedaży, Faktura i płatność.\n" +"

\n" +" " #. module: sale #: selection:sale.report,month:0 @@ -360,23 +378,23 @@ msgstr "Październik" #. module: sale #: field:sale.order,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Podsumowanie" #. module: sale #: view:sale.order:0 msgid "View Invoice" -msgstr "" +msgstr "Wyświetl fakturę" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:113 #: code:addons/sale/wizard/sale_make_invoice_advance.py:115 #, python-format msgid "Advance of %s %s" -msgstr "" +msgstr "Zaliczka %s %s" #. module: sale -#: model:ir.actions.act_window,name:sale.action_quotations -#: model:ir.ui.menu,name:sale.menu_sale_quotations +#: view:board.board:0 +#: model:ir.actions.act_window,name:sale.action_quotation_for_sale #: view:sale.order:0 #: view:sale.report:0 msgid "Quotations" @@ -385,14 +403,13 @@ msgstr "Oferty" #. module: sale #: field:sale.advance.payment.inv,qtty:0 #: report:sale.order:0 -#: field:sale.order.line,product_uom_qty:0 msgid "Quantity" msgstr "Ilość" #. module: sale #: help:sale.order,partner_shipping_id:0 msgid "Delivery address for current sales order." -msgstr "" +msgstr "Adres dostawy dla bieżącego zamówienia sprzedaży" #. module: sale #: report:sale.order:0 @@ -410,6 +427,7 @@ msgid "Fiscal Position" msgstr "Obszar podatkowy" #. module: sale +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "In Progress" msgstr "W toku" @@ -418,7 +436,7 @@ msgstr "W toku" #: code:addons/sale/sale.py:667 #, python-format msgid "Draft Invoice of %s %s waiting for validation." -msgstr "" +msgstr "Projekt faktury %s %s czeka na zatwierdzenie." #. module: sale #: model:process.transition,note:sale.process_transition_confirmquotation0 @@ -434,6 +452,7 @@ msgstr "" #, python-format msgid "You cannot cancel a sale order line that has already been invoiced." msgstr "" +"Nie można anulować zamówienia sprzedaży,które już jest zafakturowane." #. module: sale #: report:sale.order:0 @@ -453,7 +472,7 @@ msgstr "" #. module: sale #: selection:sale.order,order_policy:0 msgid "Before Delivery" -msgstr "" +msgstr "Przed dostawą" #. module: sale #: code:addons/sale/sale.py:804 @@ -466,17 +485,17 @@ msgstr "" #. module: sale #: model:res.groups,name:sale.group_delivery_invoice_address msgid "Addresses in Sale Orders" -msgstr "" +msgstr "Adresy w zamówieniu sprzedaży" #. module: sale #: field:sale.order,project_id:0 msgid "Contract / Analytic" -msgstr "" +msgstr "Umowa / konto analityczne" #. module: sale #: model:res.groups,name:sale.group_invoice_so_lines msgid "Enable Invoicing Sale order lines" -msgstr "" +msgstr "Włącz fakturowanie pozycji" #. module: sale #: view:sale.report:0 @@ -499,7 +518,6 @@ msgid "or" msgstr "" #. module: sale -#: field:sale.order,invoice_exists:0 #: field:sale.order,invoiced_rate:0 #: field:sale.order.line,invoiced:0 msgid "Invoiced" @@ -508,7 +526,7 @@ msgstr "Zafakturowano" #. module: sale #: model:res.groups,name:sale.group_analytic_accounting msgid "Analytic Accounting for Sales" -msgstr "" +msgstr "Ksiągowość analityczna dla sprzedaży" #. module: sale #: field:sale.order,date_confirm:0 @@ -533,7 +551,7 @@ msgstr "Marzec" #. module: sale #: model:ir.actions.server,name:sale.actions_server_sale_order_read msgid "Sale: Mark read" -msgstr "" +msgstr "Sprzedaż: oznacz jako przeczytane" #. module: sale #: help:sale.order,amount_total:0 @@ -543,7 +561,7 @@ msgstr "Suma kwot" #. module: sale #: field:sale.config.settings,module_sale_journal:0 msgid "Allow batch invoicing of delivery orders through journals" -msgstr "" +msgstr "Pozwól na grupowe fakturowanie dostaw przez dzienniki" #. module: sale #: field:sale.order.line,price_subtotal:0 @@ -553,7 +571,7 @@ msgstr "Suma częściowa" #. module: sale #: field:sale.config.settings,group_discount_per_so_line:0 msgid "Allow setting a discount on the sale order lines" -msgstr "" +msgstr "Pozwól stosowac upust na pozycjach zamówienia sprzedaży" #. module: sale #: report:sale.order:0 @@ -563,12 +581,12 @@ msgstr "Adres do faktury :" #. module: sale #: field:sale.order.line,product_uom:0 msgid "Unit of Measure " -msgstr "" +msgstr "Jednostka miary " #. module: sale #: field:sale.config.settings,time_unit:0 msgid "The default working time unit for services is" -msgstr "" +msgstr "Domyślną jednostką miary czasu dla usług jest" #. module: sale #: field:sale.order,partner_invoice_id:0 @@ -601,18 +619,19 @@ msgstr "" #. module: sale #: model:ir.model,name:sale.model_sale_order_line +#: field:stock.move,sale_line_id:0 msgid "Sales Order Line" msgstr "Pozycja zamówienia sprzedaży" #. module: sale #: field:sale.config.settings,module_analytic_user_function:0 msgid "One employee can have different roles per contract" -msgstr "" +msgstr "jeden pracownik może mieć różne role dla umowy" #. module: sale #: view:sale.order:0 msgid "Print" -msgstr "" +msgstr "Drukuj" #. module: sale #: report:sale.order:0 @@ -620,7 +639,6 @@ msgid "Order N°" msgstr "Nr zamówienia" #. module: sale -#: view:sale.order:0 #: field:sale.order,order_line:0 msgid "Order Lines" msgstr "Pozycje zamówienia" @@ -628,7 +646,7 @@ msgstr "Pozycje zamówienia" #. module: sale #: field:account.config.settings,module_sale_analytic_plans:0 msgid "Use multiple analytic accounts on sales" -msgstr "" +msgstr "Stosuj wiele kont analitycznych w sprzedaży" #. module: sale #: help:sale.config.settings,module_sale_journal:0 @@ -648,7 +666,7 @@ msgstr "Data utworzenia" #: code:addons/sale/sale.py:659 #, python-format msgid "Sale Order for %s set to Done" -msgstr "" +msgstr "Zamówienie sprzedaży dla %s ustawiono na Wykonano" #. module: sale #: model:ir.actions.act_window,name:sale.action_order_line_tree3 @@ -690,7 +708,7 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:92 #, python-format msgid "There is no income account defined as global property." -msgstr "" +msgstr "Brak konta przychodów w globalnych właściwościach" #. module: sale #: code:addons/sale/sale.py:984 @@ -698,12 +716,12 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:95 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Błąd konfiguracji!" #. module: sale #: view:sale.order:0 msgid "Send by Email" -msgstr "" +msgstr "Wysłano jako mail" #. module: sale #: code:addons/sale/res_config.py:89 @@ -718,6 +736,7 @@ msgstr "Data zamówienia" #. module: sale #: view:sale.order.line:0 +#: field:sale.report,shipped:0 msgid "Shipped" msgstr "Wysłano" @@ -727,9 +746,10 @@ msgid "" "To allow your salesman to make invoices for sale order lines using the menu " "'Lines to Invoice'." msgstr "" +"Aby pozwolić sprzedawcy tworzyć faktury dla pozycji zamówienia sprzedaży " +"przez menu 'Pozycje do fakturowania'." #. module: sale -#: model:ir.model,name:sale.model_res_partner #: view:sale.report:0 #: field:sale.report,partner_id:0 msgid "Partner" @@ -738,7 +758,7 @@ msgstr "" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Create and View Invoice" -msgstr "" +msgstr "Utwórz i pokaż fakturę" #. module: sale #: model:ir.actions.act_window,help:sale.action_shop_form @@ -753,6 +773,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby utworzyć sklep.\n" +"

\n" +" Każda oferta i zamówienie sprzedaży musi być powiązana ze " +"sklepem.\n" +" Sklep definiuje magazyn wydawania produktów dla danej " +"sprzedaży.\n" +"

\n" +" " #. module: sale #: report:sale.order:0 @@ -766,7 +795,7 @@ msgid "You cannot confirm a sale order which has no line." msgstr "Nie możesz potwierdzać zamówienia sprzedaży bez pozycji." #. module: sale -#: code:addons/sale/sale.py:966 +#: code:addons/sale/sale.py:1124 #, python-format msgid "" "You have to select a pricelist or a customer in the sales form !\n" @@ -785,7 +814,7 @@ msgstr "Kategoria produktu" #: code:addons/sale/sale.py:555 #, python-format msgid "Cannot cancel this sales order!" -msgstr "" +msgstr "Nie mozna anulowac tego zamówienia sprzedaży!" #. module: sale #: view:sale.order:0 @@ -797,7 +826,7 @@ msgstr "Utwórz fakturę od nowa" #, python-format msgid "" "In order to delete a confirmed sale order, you must cancel it before !" -msgstr "" +msgstr "Aby usunąć zamówienie sprzedaży, musisz je najpierw anulować !" #. module: sale #: report:sale.order:0 @@ -807,12 +836,12 @@ msgstr "Podatki :" #. module: sale #: selection:sale.order,order_policy:0 msgid "On Demand" -msgstr "" +msgstr "Na życzenie" #. module: sale #: field:sale.order,currency_id:0 msgid "unknown" -msgstr "" +msgstr "nieznane" #. module: sale #: field:sale.order,message_is_follower:0 @@ -841,6 +870,9 @@ msgid "" " You may have to create it and set it as a default value on " "this field." msgstr "" +"Wybierz produkt typu usługa i nazwie 'Zaliczka'.\n" +" Możesz utworzyć taki produkt i ustawić go jako domyślny dla " +"tego pola.." #. module: sale #: help:sale.config.settings,module_warning:0 @@ -850,6 +882,9 @@ msgid "" "Example: Product: this product is deprecated, do not purchase more than 5.\n" " Supplier: don't forget to ask for an express delivery." msgstr "" +"Pozwala konfigurować powiadomienia przy produkcie i kliencie.\n" +"Przykład: Produkt: ten produkt wychodzi z użycia - Ostrzeż klienta.\n" +" Klient: Zapytaj, czy chce ekspresową dostawę." #. module: sale #: code:addons/sale/sale.py:979 @@ -860,7 +895,7 @@ msgstr "Nie znaleziono poprawnej pozycji cennika ! :" #. module: sale #: field:sale.config.settings,module_sale_margin:0 msgid "Display margins on sales orders" -msgstr "" +msgstr "Pokaż marże na zamówieniach sprzedaży" #. module: sale #: help:sale.order,invoice_ids:0 @@ -878,6 +913,7 @@ msgid "Your Reference" msgstr "Twój numer" #. module: sale +#: view:sale.order:0 #: view:sale.order.line:0 msgid "Qty" msgstr "Il." @@ -889,9 +925,10 @@ msgstr "Moje pozycje zamówień sprzedaży" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancel0 +#: model:process.transition.action,name:sale.process_transition_action_cancel1 +#: model:process.transition.action,name:sale.process_transition_action_cancel2 #: view:sale.advance.payment.inv:0 #: view:sale.make.invoice:0 -#: view:sale.order:0 #: view:sale.order.line:0 #: view:sale.order.line.make.invoice:0 msgid "Cancel" @@ -909,13 +946,14 @@ msgid "" "Cannot find a pricelist line matching this product and quantity.\n" "You have to change either the product, the quantity or the pricelist." msgstr "" +"Nie można znaleźć pozycji cennika odpowiadającej tej ilości i produktowi.\n" +"Musisz zmienić ilość, produkt lub cennik." #. module: sale #: model:process.transition,name:sale.process_transition_invoice0 +#: model:process.transition,name:sale.process_transition_invoiceafterdelivery0 #: model:process.transition.action,name:sale.process_transition_action_createinvoice0 #: view:sale.advance.payment.inv:0 -#: view:sale.order:0 -#: field:sale.order,order_policy:0 #: view:sale.order.line:0 msgid "Create Invoice" msgstr "Utwórz fakturę" @@ -939,16 +977,19 @@ msgid "" "${object.company_id.name} ${object.state in ('draft', 'sent') and " "'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })" msgstr "" +"${object.company_id.name} ${object.state in ('draft', 'sent') and 'Oferta' " +"or 'Zamówienie'} (Ref ${object.name or 'n/a' })" #. module: sale #: report:sale.order:0 +#: view:sale.order.line:0 msgid "Price" msgstr "Cena" #. module: sale #: view:sale.order:0 msgid "Quotation Number" -msgstr "" +msgstr "Numer Oferty" #. module: sale #: selection:sale.order.line,type:0 @@ -963,7 +1004,7 @@ msgstr "Adres do wysyłki :" #. module: sale #: help:account.config.settings,group_analytic_account_for_sales:0 msgid "Allows you to specify an analytic account on sale orders." -msgstr "" +msgstr "Pozwala stosować konta analityczne dla sprzedaży." #. module: sale #: model:process.node,note:sale.process_node_quotation0 @@ -974,28 +1015,29 @@ msgstr "Stan projekt zamówienia sprzedaży" #: code:addons/sale/sale.py:647 #, python-format msgid "Quotation for %s created." -msgstr "" +msgstr "Oferta dla %s została utworzona." #. module: sale #: help:sale.order,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Wiadomości i historia komunikacji" #. module: sale #: view:sale.order:0 msgid "New Copy of Quotation" -msgstr "" +msgstr "Nowa kopia oferty" #. module: sale #: code:addons/sale/sale.py:1007 #, python-format msgid "Cannot delete a sales order line which is in state '%s'." msgstr "" +"Nie można usunąć pozycji zamówienia, jeśli zamówienie jest w stanie '%s'." #. module: sale #: model:res.groups,name:sale.group_mrp_properties msgid "Properties on lines" -msgstr "" +msgstr "Właściwości pozycji" #. module: sale #: code:addons/sale/sale.py:888 @@ -1004,6 +1046,8 @@ msgid "" "Before choosing a product,\n" " select a customer in the sales form." msgstr "" +"Zanim wybierzesz produkt,\n" +" wybierz klienta w formularzu." #. module: sale #: view:sale.order:0 @@ -1024,7 +1068,7 @@ msgstr "Potwierdź ofertę" #: model:ir.actions.act_window,name:sale.action_order_line_tree2 #: model:ir.ui.menu,name:sale.menu_invoicing_sales_order_lines msgid "Order Lines to Invoice" -msgstr "" +msgstr "Pozycje do zafakturowania" #. module: sale #: view:sale.order:0 @@ -1036,7 +1080,7 @@ msgstr "Grupuj wg" #. module: sale #: view:sale.config.settings:0 msgid "Product Features" -msgstr "" +msgstr "Cechy produktu" #. module: sale #: selection:sale.order,state:0 @@ -1048,7 +1092,7 @@ msgstr "Czeka na planowanie" #: view:sale.order.line:0 #: field:sale.report,product_uom:0 msgid "Unit of Measure" -msgstr "" +msgstr "Jednostka Miary" #. module: sale #: field:sale.order.line,type:0 @@ -1058,18 +1102,18 @@ msgstr "Metoda zapotrzebowania" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Invoice the whole sale order" -msgstr "" +msgstr "Fakturuj całe zamówienie sprzedaży" #. module: sale #: view:sale.order:0 #: field:sale.order,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Nieprzeczytane wiadomości" #. module: sale #: selection:sale.order,state:0 msgid "Draft Quotation" -msgstr "" +msgstr "Projekt oferty" #. module: sale #: selection:sale.order,state:0 @@ -1077,6 +1121,7 @@ msgid "Sale Order" msgstr "Zamówienie sprzedaży" #. module: sale +#: view:sale.order:0 #: field:sale.order,amount_tax:0 #: field:sale.order.line,tax_id:0 msgid "Taxes" @@ -1116,7 +1161,7 @@ msgstr "Utwórz faktury" #: code:addons/sale/sale.py:1007 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Niedozwolona akcja!" #. module: sale #: report:sale.order:0 @@ -1145,13 +1190,14 @@ msgstr "" #. module: sale #: model:ir.actions.act_window,name:sale.action_sale_order_make_invoice #: model:ir.actions.act_window,name:sale.action_view_sale_order_line_make_invoice +#: view:sale.order:0 msgid "Make Invoices" msgstr "Utwórz faktury" #. module: sale #: field:res.partner,sale_order_count:0 msgid "# of Sales Order" -msgstr "" +msgstr "# zamówień sprzedaży" #. module: sale #: view:sale.order:0 @@ -1175,11 +1221,13 @@ msgid "" "After clicking 'Show Lines to Invoice', select lines to invoice and create " "the invoice from the 'More' dropdown menu." msgstr "" +"Po kliknięciu 'Pokaż pozycje do fakturowania', wybierz pozycje do " +"fakturowania i utwórz fakturę z rozwijanego menu 'Więcej'." #. module: sale #: help:sale.order,invoice_exists:0 msgid "It indicates that sale order has at least one invoice." -msgstr "" +msgstr "To oznacza, że zamówienie sprzedaży na co najmniej jedną fakturę." #. module: sale #: selection:sale.order,state:0 @@ -1197,16 +1245,18 @@ msgstr "Grupuj faktury" #, python-format msgid "Quotation for %s converted to Sale Order of %s %s." msgstr "" +"Oferta dla %s została skonwertowana do zamówienia sprzedaży " +"%s %s." #. module: sale #: view:sale.advance.payment.inv:0 msgid "Invoice Sale Order" -msgstr "" +msgstr "Fakturuj zamówienie sprzedaży" #. module: sale #: view:sale.config.settings:0 msgid "Contracts Management" -msgstr "" +msgstr "Umowy" #. module: sale #: view:sale.report:0 @@ -1249,7 +1299,7 @@ msgstr "Analiza Sprzedaży" #. module: sale #: model:process.node,name:sale.process_node_quotation0 -#: view:sale.order:0 +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "Quotation" msgstr "Oferta" @@ -1376,7 +1426,7 @@ msgstr "" #. module: sale #: field:sale.config.settings,group_sale_pricelist:0 msgid "Use pricelists to adapt your price per customers" -msgstr "" +msgstr "Stosuj cenniki do przypisania różnych cen klientom" #. module: sale #: view:sale.order.line:0 @@ -1390,6 +1440,9 @@ msgid "" "invoice). You have to choose " "if you want your invoice based on ordered " msgstr "" +"Zamówienie sprzedaży automatycznie tworzy propozycje faktury (Projekt " +"faktury). Powinieneś to wybrać, jeśli chcesz fakturować na podstawie " +"zamówionych " #. module: sale #: code:addons/sale/sale.py:435 @@ -1398,10 +1451,8 @@ msgid "Customer Invoices" msgstr "Faktury dla klientów" #. module: sale -#: model:ir.actions.act_window,name:sale.open_board_sales -#: model:ir.ui.menu,name:sale.menu_dashboard_sales +#: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order #: model:process.process,name:sale.process_process_salesprocess0 -#: view:res.partner:0 #: view:sale.order:0 #: view:sale.report:0 msgid "Sales" @@ -1415,6 +1466,10 @@ msgid "" "between the Unit Price and Cost Price.\n" " This installs the module sale_margin." msgstr "" +"To dodaje 'Marżę' na zamówieniach sprzedaży.\n" +" To podaje zyskowność licząc różnicę między Ceną sprzedaży i " +"ceną ksoztową.\n" +" To instaluje moduł sale_margin." #. module: sale #: report:sale.order:0 @@ -1423,7 +1478,6 @@ msgid "Unit Price" msgstr "Cena jednostkowa" #. module: sale -#: view:sale.order:0 #: selection:sale.order,state:0 #: view:sale.order.line:0 #: selection:sale.order.line,state:0 @@ -1432,10 +1486,8 @@ msgid "Done" msgstr "Wykonano" #. module: sale -#: code:addons/sale/wizard/sale_line_invoice.py:123 #: model:process.node,name:sale.process_node_invoice0 -#: view:sale.order:0 -#, python-format +#: model:process.node,name:sale.process_node_invoiceafterdelivery0 msgid "Invoice" msgstr "Faktura" @@ -1470,7 +1522,7 @@ msgstr "Produkt" #. module: sale #: field:sale.config.settings,group_invoice_so_lines:0 msgid "Generate invoices based on the sale order lines" -msgstr "" +msgstr "Generuj faktury na podstawie pozycji zamówienia sprzedaży" #. module: sale #: help:sale.order,order_policy:0 @@ -1482,6 +1534,12 @@ msgid "" "Before delivery: A draft invoice is created from the sales order and must be " "paid before the products can be delivered." msgstr "" +"Na życzenie: Projekt faktury będzie utworzony z zamówienia sprzedaży na " +"życzenie. \n" +"Wg wydań: Projekt faktury może być utworzony z Wydania zewnętrznego po jego " +"wykonaniu. \n" +"Przed wydaniem: Projekt faktury będzie utworzony z zamówienia sprzedaży i " +"musi być zapłacony przed wydaniem." #. module: sale #: view:account.invoice.report:0 @@ -1498,7 +1556,7 @@ msgstr "Faktura na" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Fixed price (deposit)" -msgstr "" +msgstr "Cena ustalona (kaucja)" #. module: sale #: report:sale.order:0 @@ -1511,6 +1569,7 @@ msgid "Product UoS" msgstr "JS produktu" #. module: sale +#: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "Manual In Progress" msgstr "Ręcznie w toku" @@ -1518,7 +1577,7 @@ msgstr "Ręcznie w toku" #. module: sale #: model:ir.actions.server,name:sale.actions_server_sale_order_unread msgid "Sale: Mark unread" -msgstr "" +msgstr "Sprzedaż: Oznacz jako nieprzeczytane" #. module: sale #: view:sale.order.line:0 @@ -1528,7 +1587,7 @@ msgstr "Kolejność" #. module: sale #: view:sale.order:0 msgid "Confirm Sale" -msgstr "" +msgstr "Potwierdź sprzedaż" #. module: sale #: model:process.transition,name:sale.process_transition_saleinvoice0 @@ -1556,7 +1615,7 @@ msgstr "" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Some order lines" -msgstr "" +msgstr "Część pozycji sprzedaży" #. module: sale #: view:res.partner:0 @@ -1566,7 +1625,7 @@ msgstr "" #. module: sale #: model:res.groups,name:sale.group_discount_per_so_line msgid "Discount on lines" -msgstr "" +msgstr "Upust na pozycjach" #. module: sale #: field:sale.order,client_order_ref:0 @@ -1586,6 +1645,10 @@ msgid "" " will create a draft invoice that can be modified\n" " before validation." msgstr "" +"Wybierz jak chcesz fakturować to zamówienie. Zostanie\n" +" utworzony projekt faktury, który może być " +"modyfikowany\n" +" przed zatwierdzeniem." #. module: sale #: view:board.board:0 @@ -1601,6 +1664,12 @@ msgid "" " Use Some Order Lines to invoice a selection of the sale " "order lines." msgstr "" +"Zastosuj Wszystko, aby utworzyć końcową fakturę.\n" +" Zastosuj Procentowo, aby zafakturować część kwoty.\n" +" Zastosuj Ustalona cena, aby zafakturować konkretną kwotę " +"zaliczki.\n" +" Zastosuj Część pozycji, aby zafakturować wybrane pozycje " +"zamówienia." #. module: sale #: help:sale.config.settings,module_account_analytic_analysis:0 @@ -1614,6 +1683,11 @@ msgid "" "invoice automatically.\n" " It installs the account_analytic_analysis module." msgstr "" +"Pozwala definiować warunki sprzedaży dla klientów: fakturowanie\n" +" (Ustalona cena, wg karty czasu pracy, zaliczki), cennik\n" +" (650€/dzień za programistę), okresy (rok gwarancji).\n" +" Będziesz mógł sprawdzać postępy w umowie automatycznie.\n" +" To instaluje moduł account_analytic_analysis." #. module: sale #: model:email.template,report_name:sale.email_template_edi_sale @@ -1632,6 +1706,7 @@ msgstr "Data potwierdzenia zamówienia sprzedaży." #, python-format msgid "First cancel all invoices attached to this sales order." msgstr "" +"Najpierw anuluj wszystkie faktury związane z tym zamówieniem sprzedaży." #. module: sale #: field:sale.order,company_id:0 @@ -1659,7 +1734,7 @@ msgid "Invoice Exception" msgstr "Wyjątek faktury" #. module: sale -#: code:addons/sale/sale.py:888 +#: code:addons/sale/sale.py:1017 #, python-format msgid "No Customer Defined !" msgstr "Nie zdefiniowano żadnego klienta !" @@ -1667,27 +1742,27 @@ msgstr "Nie zdefiniowano żadnego klienta !" #. module: sale #: field:sale.order,partner_shipping_id:0 msgid "Delivery Address" -msgstr "" +msgstr "Adres dostawy" #. module: sale #: selection:sale.order,state:0 msgid "Sale to Invoice" -msgstr "" +msgstr "Sprzedaż do faktury" #. module: sale #: view:sale.config.settings:0 msgid "Warehouse Features" -msgstr "" +msgstr "Funkcjonalność magazynu" #. module: sale #: field:sale.order,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Wiadomości" #. module: sale #: field:sale.config.settings,module_project:0 msgid "Project" -msgstr "" +msgstr "Projekt" #. module: sale #: code:addons/sale/sale.py:354 @@ -1697,7 +1772,7 @@ msgstr "" #: code:addons/sale/sale.py:803 #, python-format msgid "Error!" -msgstr "" +msgstr "Błąd!" #. module: sale #: report:sale.order:0 @@ -1711,6 +1786,9 @@ msgid "" "replenishment.\n" "On order: When needed, the product is purchased or produced." msgstr "" +"Z zapasu: Produkt będzie pobrany z magazynu lub nastąpi oczekiwanie na " +"uzupełnienie zapasów.\n" +"Na zamówienie: Produkt będzie kupiony lub wyprodukowany." #. module: sale #: selection:sale.order,state:0 @@ -1727,15 +1805,16 @@ msgstr "Przeszukaj niezafakturowane pozycje" #. module: sale #: selection:sale.order,state:0 msgid "Quotation Sent" -msgstr "" +msgstr "Oferta wysłana" #. module: sale #: model:ir.model,name:sale.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "Kreator email" #. module: sale #: model:ir.actions.act_window,name:sale.action_shop_form +#: model:ir.ui.menu,name:sale.menu_action_shop_form #: field:sale.order,shop_id:0 #: view:sale.report:0 #: field:sale.report,shop_id:0 @@ -1751,23 +1830,20 @@ msgstr "Data potwierdzenia" #: code:addons/sale/sale.py:355 #, python-format msgid "Please define sales journal for this company: \"%s\" (id:%d)." -msgstr "" +msgstr "Zdefiniuj dziennik sprzedaży dla tej firmy: \"%s\" (id:%d)." #. module: sale #: view:sale.config.settings:0 msgid "Contract Features" -msgstr "" +msgstr "Zapisy umowy" #. module: sale -#: code:addons/sale/sale.py:273 -#: code:addons/sale/sale.py:576 #: model:ir.model,name:sale.model_sale_order #: model:process.node,name:sale.process_node_order0 #: model:process.node,name:sale.process_node_saleorder0 -#: field:res.partner,sale_order_ids:0 #: model:res.request.link,name:sale.req_link_sale_order #: view:sale.order:0 -#, python-format +#: field:stock.picking,sale_id:0 msgid "Sales Order" msgstr "Zamówienie sprzedaży" @@ -1789,7 +1865,7 @@ msgstr "Potwierdzone" #. module: sale #: field:sale.order,note:0 msgid "Terms and conditions" -msgstr "" +msgstr "Warunki i zapisy" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_confirm0 @@ -1802,6 +1878,7 @@ msgid "Followers" msgstr "" #. module: sale +#: view:sale.order:0 #: field:sale.order.line,invoice_lines:0 msgid "Invoice Lines" msgstr "Pozycje faktury" @@ -1813,7 +1890,6 @@ msgid "# of Lines" msgstr "# pozycji" #. module: sale -#: model:ir.actions.act_window,name:sale.action_order_line_product_tree #: view:sale.order:0 #: view:sale.order.line:0 msgid "Sales Order Lines" @@ -1822,12 +1898,12 @@ msgstr "Pozycje zamówienia sprzedaży" #. module: sale #: view:sale.config.settings:0 msgid "Default Options" -msgstr "" +msgstr "Opcje domyślne" #. module: sale #: field:account.config.settings,group_analytic_account_for_sales:0 msgid "Analytic accounting for sales" -msgstr "" +msgstr "Księgowość analityczna dla sprzedaży" #. module: sale #: code:addons/sale/edi/sale_order.py:139 @@ -1855,16 +1931,28 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby utworzyć ofertę lub zamówienie sprzedaży dla " +"klienta.\n" +"

\n" +" OpenERP pomoże ci operować na całym procesie sprzedaży:\n" +" ofercie, zamówieniu sprzedaży, fakturze i płatności.\n" +"

\n" +" Specjalne funkcjonalności pomogą ci organizować kontakty\n" +" z klientem, a klientowi pozwolą obserwować\n" +" rozwój sytuacji w zakresie konkretnego zamówienia.\n" +"

\n" +" " #. module: sale #: selection:sale.order,order_policy:0 msgid "On Delivery Order" -msgstr "" +msgstr "Na podstawie wydania" #. module: sale #: view:sale.report:0 msgid "Reference Unit of Measure" -msgstr "" +msgstr "Referencyjna jednostka miary" #. module: sale #: model:ir.actions.act_window,help:sale.action_quotations @@ -1885,9 +1973,24 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby utworzyć ofertę. Pierwszy krok procesu " +"sprzedaży.\n" +"

\n" +" OpenERP pomoże ci w całym procesie:\n" +" od oferty przez zamówienie sprzedaży,\n" +" wydanie, fakturowanie do przyjęcia płatności.\n" +"

\n" +" Specjalne funkcjonalności pozwolą ci organizować " +"komunikację\n" +" z klientem a klientowi obserwować rozwój sytuacji " +"dotyczącej\n" +" konkretnego zamówienia.\n" +"

\n" +" " #. module: sale -#: code:addons/sale/wizard/sale_line_invoice.py:109 +#: code:addons/sale/wizard/sale_line_invoice.py:111 #, python-format msgid "" "Invoice cannot be created for this Sales Order Line due to one of the " @@ -1911,6 +2014,8 @@ msgid "Weight" msgstr "Waga" #. module: sale +#: view:sale.open.invoice:0 +#: view:sale.order:0 #: field:sale.order,invoice_ids:0 msgid "Invoices" msgstr "Faktury" @@ -1924,7 +2029,7 @@ msgstr "Grudzień" #: code:addons/sale/wizard/sale_make_invoice_advance.py:96 #, python-format msgid "There is no income account defined for this product: \"%s\" (id:%d)." -msgstr "" +msgstr "Nie zdefiniowano konta przychodów dla produktu: \"%s\" (id:%d)." #. module: sale #: view:sale.order.line:0 @@ -1942,7 +2047,10 @@ msgid "Untaxed Amount" msgstr "Kwota bez podatku" #. module: sale -#: code:addons/sale/wizard/sale_make_invoice_advance.py:202 +#: code:addons/sale/wizard/sale_make_invoice_advance.py:163 +#: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv +#: view:sale.advance.payment.inv:0 +#: view:sale.order:0 #, python-format msgid "Advance Invoice" msgstr "Faktura zaliczkowa" @@ -1950,7 +2058,7 @@ msgstr "Faktura zaliczkowa" #. module: sale #: model:ir.actions.client,name:sale.action_client_sale_menu msgid "Open Sale Menu" -msgstr "" +msgstr "Otwórz menu Sprzedaż" #. module: sale #: selection:sale.order.line,state:0 @@ -1960,7 +2068,7 @@ msgstr "Projekt" #. module: sale #: field:sale.config.settings,module_sale_stock:0 msgid "Trigger delivery orders automatically from sale orders" -msgstr "" +msgstr "Generuj wydania prosto z Zamówień sprzedaży" #. module: sale #: help:sale.order,amount_tax:0 @@ -1970,7 +2078,7 @@ msgstr "Kwota podatku" #. module: sale #: view:sale.order:0 msgid "Sale Order " -msgstr "" +msgstr "Zamówienie sprzedaży " #. module: sale #: view:sale.order.line:0 @@ -1983,6 +2091,8 @@ msgid "Email Templates" msgstr "Szablony wiadomości" #. module: sale +#: model:ir.actions.act_window,name:sale.action_order_form +#: model:ir.ui.menu,name:sale.menu_sale_order #: view:sale.order:0 msgid "Sales Orders" msgstr "Zamówienia sprzedaży" @@ -2002,7 +2112,7 @@ msgstr "Listopad" #: field:sale.order,message_comment_ids:0 #: help:sale.order,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Komentarze i emaile" #. module: sale #: field:sale.advance.payment.inv,product_id:0 @@ -2012,7 +2122,7 @@ msgstr "Produkt - zaliczka" #. module: sale #: help:sale.order.line,sequence:0 msgid "Gives the sequence order when displaying a list of sales order lines." -msgstr "" +msgstr "Określa kolejność pozycji w zamówieniu" #. module: sale #: selection:sale.report,month:0 @@ -2020,20 +2130,20 @@ msgid "January" msgstr "Styczeń" #. module: sale -#: model:ir.actions.act_window,name:sale.action_orders_in_progress +#: model:ir.actions.act_window,name:sale.action_order_tree4 msgid "Sales Order in Progress" msgstr "Zam. sprzedaży w trakcie przetwarzania" #. module: sale #: field:sale.config.settings,timesheet:0 msgid "Prepare invoices based on timesheets" -msgstr "" +msgstr "Generuj faktury na podstawie karty czasu pracy" #. module: sale #: code:addons/sale/sale.py:655 #, python-format msgid "Sale Order for %s cancelled." -msgstr "" +msgstr "Zamówienie sprzedaży dla %s anulowano." #. module: sale #: help:sale.order,origin:0 @@ -2049,12 +2159,12 @@ msgstr "Opóźnienie dostawy" #. module: sale #: field:sale.report,state:0 msgid "Order Status" -msgstr "" +msgstr "Stan zamówienia" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Show Lines to Invoice" -msgstr "" +msgstr "Pokaż pozycje do fakturowania" #. module: sale #: field:sale.report,date:0 @@ -2086,12 +2196,12 @@ msgstr "Brak cennika ! : " #: model:ir.actions.act_window,name:sale.action_orders #: model:ir.ui.menu,name:sale.menu_sale_order msgid "Sale Orders" -msgstr "" +msgstr "Zamówienia sprzedaży" #. module: sale #: field:sale.config.settings,module_account_analytic_analysis:0 msgid "Use contracts management" -msgstr "" +msgstr "Stosuj umowy" #. module: sale #: help:sale.order,invoiced:0 @@ -2117,7 +2227,7 @@ msgstr "Czy chcesz utworzyć fakturę(y) ?" #. module: sale #: view:sale.order:0 msgid "Order Number" -msgstr "" +msgstr "Numer zamówienia" #. module: sale #: view:sale.order:0 @@ -2197,6 +2307,7 @@ msgid "Quotation N°" msgstr "Nr oferty" #. module: sale +#: field:sale.order,picked_rate:0 #: view:sale.report:0 msgid "Picked" msgstr "Wydano" diff --git a/addons/sale/i18n/sl.po b/addons/sale/i18n/sl.po index 9df4169de6b..4ad5c27dcba 100644 --- a/addons/sale/i18n/sl.po +++ b/addons/sale/i18n/sl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-12-08 16:54+0000\n" -"Last-Translator: Dusan Laznik \n" +"PO-Revision-Date: 2012-12-11 13:56+0000\n" +"Last-Translator: Vida Potočnik \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: 2012-12-09 04:39+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale #: model:ir.model,name:sale.model_account_config_settings @@ -33,7 +33,7 @@ msgstr "" #. module: sale #: view:sale.order:0 msgid "UoS" -msgstr "" +msgstr "EM prodaje" #. module: sale #: report:sale.order:0 @@ -49,7 +49,7 @@ msgstr "Prodajalec" #. module: sale #: help:sale.order,pricelist_id:0 msgid "Pricelist for current sales order." -msgstr "Cenik za trenutno prodajo" +msgstr "Cenik za trenutni prodajni nalog." #. module: sale #: view:sale.report:0 @@ -78,17 +78,17 @@ msgstr "Znesek avansa mora biti pozitiven." #. module: sale #: help:sale.order,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Če je izbrano, zahtevajo nova sporočila vašo pozornost." #. module: sale #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Napačno" #. module: sale #: report:sale.order:0 msgid "Tax" -msgstr "" +msgstr "Davek" #. module: sale #: help:sale.order,state:0 @@ -140,7 +140,7 @@ msgstr "" #. module: sale #: field:sale.shop,payment_default_id:0 msgid "Default Payment Term" -msgstr "Privzeti plačilni pogoji" +msgstr "Privzeti plačilni pogoj" #. module: sale #: code:addons/sale/sale.py:662 @@ -156,7 +156,7 @@ msgstr "Dovoli uporabo različnih enot mere" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Percentage" -msgstr "" +msgstr "Odstotek" #. module: sale #: report:sale.order:0 @@ -204,19 +204,19 @@ msgstr "Naročene količine" #: field:sale.order,name:0 #: field:sale.order.line,order_id:0 msgid "Order Reference" -msgstr "Zaporednje Referenc" +msgstr "Referenčna številka" #. module: sale #: view:sale.order:0 msgid "Other Information" -msgstr "Ostale Podrobnosti" +msgstr "Ostale informacije" #. module: sale #: code:addons/sale/wizard/sale_line_invoice.py:109 #: code:addons/sale/wizard/sale_make_invoice.py:42 #, python-format msgid "Warning!" -msgstr "" +msgstr "Opozorilo!" #. module: sale #: view:sale.config.settings:0 @@ -291,6 +291,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Prodajni nalogi se lahko fakturirajo delno, po pozicijah \n" +" prodajnega naloga. Tu je seznam pozicij posameznih \n" +" prodajnih nalogov, ki jih je potrebno fakturirati. Če\n" +" fakturirate na osnovi dobavnic ali fakturirate prodajo v \n" +" celoti, tega seznama ne potrebujete. \n" +"

\n" +" " #. module: sale #: view:sale.order:0 @@ -320,7 +328,7 @@ msgstr "Partner, kateremu mora biti dodeljen posamezen produkt." #: field:sale.order.line,state:0 #: view:sale.report:0 msgid "Status" -msgstr "Stanje" +msgstr "Status" #. module: sale #: selection:sale.report,month:0 @@ -350,12 +358,12 @@ msgstr "Junij" #. module: sale #: model:ir.model,name:sale.model_sale_report msgid "Sales Orders Statistics" -msgstr "Statistika prodaje naročil" +msgstr "Statistika prodajnih nalogov" #. module: sale #: help:sale.order,project_id:0 msgid "The analytic account related to a sales order." -msgstr "Analitični račun, povezan z namenom prodaje" +msgstr "Analitični konto, povezan s prodajnim nalogom." #. module: sale #: selection:sale.report,month:0 @@ -449,7 +457,7 @@ msgstr "Tel. :" #. module: sale #: help:sale.order,partner_invoice_id:0 msgid "Invoice address for current sales order." -msgstr "Naslov računa za tekočo prodajo" +msgstr "Naslov za račun na trenutnem prodajnem nalogu." #. module: sale #: model:ir.model,name:sale.model_sale_config_settings @@ -557,7 +565,7 @@ msgstr "Skupaj" #. module: sale #: field:sale.config.settings,group_discount_per_so_line:0 msgid "Allow setting a discount on the sale order lines" -msgstr "Omogoči vnašanje popusta na pozicijo prodajenga naloga" +msgstr "Omogoči vnos popusta na pozicije prodajnega naloga" #. module: sale #: report:sale.order:0 diff --git a/addons/sale_crm/i18n/de.po b/addons/sale_crm/i18n/de.po index 1e6f17dda3d..91e0a60e75d 100644 --- a/addons/sale_crm/i18n/de.po +++ b/addons/sale_crm/i18n/de.po @@ -8,20 +8,21 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-01-13 18:23+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-11 15:42+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:19+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:90 #, python-format msgid "Insufficient Data!" -msgstr "" +msgstr "Unstimmige Daten!" #. module: sale_crm #: view:crm.lead:0 @@ -32,17 +33,17 @@ msgstr "Umwandlung in Angebot" #. module: sale_crm #: model:ir.model,name:sale_crm.model_account_invoice_report msgid "Invoices Statistics" -msgstr "" +msgstr "Statistik Rechnungen" #. module: sale_crm #: field:crm.make.sale,close:0 msgid "Mark Won" -msgstr "" +msgstr "Als verkauft markieren" #. module: sale_crm #: field:res.users,default_section_id:0 msgid "Default Sales Team" -msgstr "" +msgstr "Standard Verkaufsteam" #. module: sale_crm #: view:sale.order:0 @@ -52,7 +53,7 @@ msgstr "Mein(e) Verkaufsteam(s)" #. module: sale_crm #: model:ir.model,name:sale_crm.model_res_users msgid "Users" -msgstr "" +msgstr "Benutzer" #. module: sale_crm #: help:crm.make.sale,close:0 @@ -64,7 +65,7 @@ msgstr "" #. module: sale_crm #: field:sale.order,categ_ids:0 msgid "Categories" -msgstr "" +msgstr "Kategorien" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:124 @@ -91,7 +92,7 @@ msgstr "Erstelle Verkaufsauftrag" #. module: sale_crm #: model:ir.model,name:sale_crm.model_account_invoice msgid "Invoice" -msgstr "" +msgstr "Rechnung" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:93 @@ -103,7 +104,7 @@ msgstr "Verkaufschance: %s" #: code:addons/sale_crm/wizard/crm_make_sale.py:110 #, python-format msgid "Opportunity has been converted to the quotation %s." -msgstr "" +msgstr "Chance wurdeumgewandelt in ein Angebot %s." #. module: sale_crm #: field:crm.make.sale,shop_id:0 @@ -114,7 +115,7 @@ msgstr "Shop" #: code:addons/sale_crm/wizard/crm_make_sale.py:90 #, python-format msgid "No addresse(s) defined for this customer." -msgstr "" +msgstr "Keine Adresse für den Kunden definiert." #. module: sale_crm #: view:account.invoice:0 @@ -128,7 +129,7 @@ msgstr "Verkaufsteam" #. module: sale_crm #: view:crm.lead:0 msgid "Create Quotation" -msgstr "" +msgstr "Erstelle ein Angebot" #. module: sale_crm #: model:ir.actions.act_window,name:sale_crm.action_crm_make_sale @@ -148,7 +149,7 @@ msgstr "Verkaufsauftrag" #. module: sale_crm #: view:crm.make.sale:0 msgid "or" -msgstr "" +msgstr "oder" #~ msgid "Crm opportunity quotation" #~ msgstr "CRM Verkaufschance Angebot" diff --git a/addons/sale_journal/i18n/de.po b/addons/sale_journal/i18n/de.po index 0ec293b2b3e..7307b88af4b 100644 --- a/addons/sale_journal/i18n/de.po +++ b/addons/sale_journal/i18n/de.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-01-13 18:21+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" +"PO-Revision-Date: 2012-12-11 15:51+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \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: 2012-12-04 05:35+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:40+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale_journal #: field:sale_journal.invoice.type,note:0 @@ -31,6 +32,7 @@ msgstr "Rechnungstyp" msgid "" "This invoicing type will be used, by default, to invoice the current partner." msgstr "" +"Dieser Abrechnungstyp soll als Standard für Rechnungen genutzt werden." #. module: sale_journal #: view:res.partner:0 @@ -45,7 +47,7 @@ msgstr "Rechnungserstellung" #. module: sale_journal #: model:ir.model,name:sale_journal.model_stock_picking_in msgid "Incoming Shipments" -msgstr "" +msgstr "Wareneingang" #. module: sale_journal #: help:sale_journal.invoice.type,active:0 @@ -102,7 +104,7 @@ msgstr "" #. module: sale_journal #: help:sale.order,invoice_type_id:0 msgid "Generate invoice based on the selected option." -msgstr "" +msgstr "Erstelle Rechnung auf Basis der Auswahl" #. module: sale_journal #: view:sale.order:0 @@ -136,7 +138,7 @@ msgstr "Verkaufsauftrag" #. module: sale_journal #: model:ir.model,name:sale_journal.model_stock_picking_out msgid "Delivery Orders" -msgstr "" +msgstr "Warenauslieferung" #~ msgid "Monthly sales" #~ msgstr "Monatliche Umsätze" diff --git a/addons/sale_margin/i18n/pt.po b/addons/sale_margin/i18n/pt.po index decc93dc68e..604b6c50d17 100644 --- a/addons/sale_margin/i18n/pt.po +++ b/addons/sale_margin/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2010-11-09 08:01+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:40+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:46+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale_margin #: field:sale.order.line,purchase_price:0 @@ -44,6 +44,8 @@ msgid "" "It gives profitability by calculating the difference between the Unit Price " "and the cost price." msgstr "" +"Dá uma ideia do lucro ao calcular a diferença entre o preço unitário e o " +"preço de venda" #~ msgid "Customer Refund" #~ msgstr "Reembolso ao Cliente" diff --git a/addons/sale_mrp/i18n/pt.po b/addons/sale_mrp/i18n/pt.po index c5a54ebb2b0..de0812da701 100644 --- a/addons/sale_mrp/i18n/pt.po +++ b/addons/sale_mrp/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2011-12-10 12:06+0000\n" -"Last-Translator: Paulino Ascenção \n" +"PO-Revision-Date: 2012-12-11 15:42+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:46+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale_mrp #: model:ir.model,name:sale_mrp.model_mrp_production @@ -35,12 +35,12 @@ msgstr "Indique a Referência do Cliente do pedido de venda." #. module: sale_mrp #: field:mrp.production,sale_ref:0 msgid "Sale Reference" -msgstr "" +msgstr "Referência da venda" #. module: sale_mrp #: field:mrp.production,sale_name:0 msgid "Sale Name" -msgstr "" +msgstr "Nome da venda" #~ msgid "Sales and MRP Management" #~ msgstr "Vendas e Gestão de MRP" diff --git a/addons/sale_order_dates/i18n/pt.po b/addons/sale_order_dates/i18n/pt.po index 9f625cfb570..da73412b326 100644 --- a/addons/sale_order_dates/i18n/pt.po +++ b/addons/sale_order_dates/i18n/pt.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2010-12-12 09:31+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:41+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:51+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale_order_dates #: view:sale.order:0 msgid "Dates" -msgstr "" +msgstr "Datas" #. module: sale_order_dates #: field:sale.order,commitment_date:0 diff --git a/addons/sale_stock/i18n/de.po b/addons/sale_stock/i18n/de.po index 95cee9a28d8..54e2c907d41 100644 --- a/addons/sale_stock/i18n/de.po +++ b/addons/sale_stock/i18n/de.po @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-09-21 14:17+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 17:07+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale_stock #: help:sale.config.settings,group_invoice_deli_orders:0 @@ -23,12 +24,14 @@ msgid "" "To allow your salesman to make invoices for Delivery Orders using the menu " "'Deliveries to Invoice'." msgstr "" +"Um Ihren Verkäufern eine Abrechnung vom Lieferauftrag zu ermöglichen, wählen " +"Sie \"abzurechnende Lieferungen\"aus." #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:470 #, python-format msgid "Delivery Order %s scheduled for %s." -msgstr "" +msgstr "Warenauslieferung %s wurde geplant for %s." #. module: sale_stock #: model:process.node,name:sale_stock.process_node_deliveryorder0 @@ -40,13 +43,13 @@ msgstr "Lieferschein" msgid "" "Allows you to specify different delivery and invoice addresses on a sale " "order." -msgstr "" +msgstr "Ermöglicht eine Differenzierung verschiedener Adressen für Aufträge." #. module: sale_stock #: model:ir.actions.act_window,name:sale_stock.outgoing_picking_list_to_invoice #: model:ir.ui.menu,name:sale_stock.menu_action_picking_list_to_invoice msgid "Deliveries to Invoice" -msgstr "" +msgstr "Abzurechnende Lieferungen" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:569 @@ -81,7 +84,7 @@ msgstr "Beleg für Warenversand oder Auslieferung" #. module: sale_stock #: field:sale.config.settings,group_multiple_shops:0 msgid "Manage multiple shops" -msgstr "" +msgstr "Management Multi Shops" #. module: sale_stock #: model:process.transition.action,name:sale_stock.process_transition_action_validate0 @@ -93,7 +96,7 @@ msgstr "Validieren" #, python-format msgid "" "You must first cancel all delivery order(s) attached to this sales order." -msgstr "" +msgstr "Zuerst müssen Sie alle Lieferungen für diesen Auftrag abbrechen." #. module: sale_stock #: model:process.transition,name:sale_stock.process_transition_saleprocurement0 @@ -118,7 +121,7 @@ msgstr "" #: code:addons/sale_stock/sale_stock.py:640 #, python-format msgid "Error!" -msgstr "" +msgstr "Fehler !" #. module: sale_stock #: field:sale.order,picking_policy:0 @@ -132,6 +135,8 @@ msgid "" "You cannot make an advance on a sales order that is " "defined as 'Automatic Invoice after delivery'." msgstr "" +"Sie können keine Anzahlung für Aufträge leisten, die als Abrechnungsmethode " +"'Bei Lieferung' haben." #. module: sale_stock #: model:ir.ui.menu,name:sale_stock.menu_action_shop_form @@ -154,12 +159,12 @@ msgstr "Bestandsbuchung" #: code:addons/sale_stock/sale_stock.py:161 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Ungültige Aktion!" #. module: sale_stock #: field:sale.config.settings,module_project_timesheet:0 msgid "Project Timesheet" -msgstr "" +msgstr "Projekt Zeiterfassung" #. module: sale_stock #: help:sale.config.settings,module_delivery:0 @@ -169,18 +174,24 @@ msgid "" "prices.\n" " This installs the module delivery." msgstr "" +"Ermöglicht die Zuordnung einer Auslieferungsmethode zu Auftrag oder " +"Lieferung.\n" +" Sie können Ihre eigenen Frachtführer und " +"Frachttarife definieren.\n" +" Durch die Aktivierung wird das Modul delivery " +"installiert." #. module: sale_stock #: field:sale.config.settings,group_sale_delivery_address:0 msgid "Allow a different address for delivery and invoicing " -msgstr "" +msgstr "Ermöglicht everschiedene Adressen für Auslieferung und Abrechnung " #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:571 #: code:addons/sale_stock/sale_stock.py:622 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Konfigurationsfehler!" #. module: sale_stock #: model:process.node,name:sale_stock.process_node_saleprocurement0 @@ -201,7 +212,7 @@ msgstr "Verkaufsauftrag" #. module: sale_stock #: model:ir.model,name:sale_stock.model_stock_picking_out msgid "Delivery Orders" -msgstr "" +msgstr "Auslieferung Aufträge" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_order_line @@ -250,7 +261,7 @@ msgstr "Erzwinge Zuweisung" #. module: sale_stock #: field:sale.config.settings,default_order_policy:0 msgid "The default invoicing method is" -msgstr "" +msgstr "Die Standard Abrechnung ist" #. module: sale_stock #: field:sale.order.line,delay:0 @@ -260,12 +271,12 @@ msgstr "Tage bis Auslieferung" #. module: sale_stock #: view:sale.order:0 msgid "View Delivery Order" -msgstr "" +msgstr "Anzeige Auslieferauftrag" #. module: sale_stock #: selection:sale.config.settings,default_order_policy:0 msgid "Invoice based on sales orders" -msgstr "" +msgstr "Rechnung von Auftrag" #. module: sale_stock #: field:sale.order.line,move_ids:0 @@ -275,12 +286,12 @@ msgstr "Lieferaufträge" #. module: sale_stock #: view:sale.config.settings:0 msgid "Default Options" -msgstr "" +msgstr "Standardeinstellungen" #. module: sale_stock #: field:sale.config.settings,module_project_mrp:0 msgid "Project MRP" -msgstr "" +msgstr "Projekt MRP" #. module: sale_stock #: model:process.transition,note:sale_stock.process_transition_invoiceafterdelivery0 @@ -325,23 +336,23 @@ msgstr "" #. module: sale_stock #: field:sale.config.settings,group_invoice_deli_orders:0 msgid "Generate invoices after and based on delivery orders" -msgstr "" +msgstr "Erstelle Rechnungen durch Auslieferungen" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:473 #, python-format msgid "Order delivered." -msgstr "" +msgstr "Auftrag wurde ausgeliefert." #. module: sale_stock #: field:sale.config.settings,module_delivery:0 msgid "Allow adding shipping costs" -msgstr "" +msgstr "Ermögliche hinzufügen von Versandkosten" #. module: sale_stock #: view:sale.order:0 msgid "days" -msgstr "" +msgstr "Tage" #. module: sale_stock #: field:sale.order.line,product_packaging:0 @@ -354,16 +365,18 @@ msgid "" "International Commercial Terms are a series of predefined commercial terms " "used in international transactions." msgstr "" +"International Lieferbedingungen sind vordefinierte Konditionen und " +"Bedingungen, die zumeist im internationalen Handel eingesetzt werden." #. module: sale_stock #: field:sale.config.settings,default_picking_policy:0 msgid "Deliver all at once when all products are available." -msgstr "" +msgstr "Vollständig liefern, wenn alle Produkte verfügbar sind." #. module: sale_stock #: model:res.groups,name:sale_stock.group_invoice_deli_orders msgid "Enable Invoicing Delivery orders" -msgstr "" +msgstr "Abrechnung von Auslieferungen erlauben" #. module: sale_stock #: field:res.company,security_lead:0 @@ -380,12 +393,14 @@ msgstr "Beschaffung von verkauftem Material" msgid "" "Pick 'Deliver each product when available' if you allow partial delivery." msgstr "" +"Auswahl von 'Liefere einzelne Produkte bei Verfügbarkeit', wenn auch " +"Teillieferungen möglich sind" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:206 #, python-format msgid "Cannot cancel sales order!" -msgstr "" +msgstr "Der Auftrag kann nicht storniert werden!" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_shop @@ -410,7 +425,7 @@ msgstr "Eigenschaften" #. module: sale_stock #: field:sale.config.settings,group_mrp_properties:0 msgid "Product properties on order lines" -msgstr "" +msgstr "Produkteigenschaften von Auftragspositionen" #. module: sale_stock #: help:sale.config.settings,default_order_policy:0 @@ -468,6 +483,7 @@ msgid "" "Number of days between the order confirmation and the shipping of the " "products to the customer" msgstr "" +"Anzahl der Tage zwischen Auftragserteilung und Auslieferung zum Kunden" #. module: sale_stock #: help:sale.config.settings,default_picking_policy:0 @@ -476,6 +492,9 @@ msgid "" "instead of delivering each product when it is available. This may have an " "impact on the shipping price." msgstr "" +"Ein Auftrag wird im Standard so konfiguriert, dass eine vollständige " +"Lieferung an den Kunden präferiert wird. Dies kann eine Auswirkung auf die " +"Kosten der Auslieferung machen." #. module: sale_stock #: model:process.node,note:sale_stock.process_node_deliveryorder0 @@ -501,6 +520,8 @@ msgid "" "In order to delete a confirmed sales order, you must cancel it.\n" "To do so, you must first cancel related picking for delivery orders." msgstr "" +"Um einen bestätigten Auftrag zu löschen, müssen Sie ihn vorab stornieren.\n" +"Um dies zu tun, sollten Sie vorher alle Lieferaufträge löschen." #. module: sale_stock #: field:sale.order.line,number_packages:0 @@ -520,12 +541,12 @@ msgstr "Erzeuge Rechnung" #. module: sale_stock #: help:sale.config.settings,group_mrp_properties:0 msgid "Allows you to tag sale order lines with properties." -msgstr "" +msgstr "Kennzeichnung eines Auftrags durch Eigenschaften" #. module: sale_stock #: field:sale.config.settings,task_work:0 msgid "Prepare invoices based on task's activities" -msgstr "" +msgstr "Präpariere Rechnung von Aufgaben" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_advance_payment_inv @@ -555,7 +576,7 @@ msgstr "Lieferbedingung" #: code:addons/sale_stock/sale_stock.py:521 #, python-format msgid "Cannot cancel sales order line!" -msgstr "" +msgstr "Es kann kein Auftrag erstellt werden!" #. module: sale_stock #: model:process.transition.action,name:sale_stock.process_transition_action_cancelassignation0 @@ -588,6 +609,7 @@ msgid "" "This is a list of delivery orders that has been generated for this sales " "order." msgstr "" +"Dies ist eine Liste mit verfügbaren Auslieferaufträgen für diesen Kunden." #. module: sale_stock #: model:process.node,name:sale_stock.process_node_saleorderprocurement0 @@ -617,12 +639,12 @@ msgstr "" #. module: sale_stock #: view:sale.order:0 msgid "Recreate Delivery Order" -msgstr "" +msgstr "Wiederherstellen Auslieferung" #. module: sale_stock #: help:sale.config.settings,group_multiple_shops:0 msgid "This allows to configure and use multiple shops." -msgstr "" +msgstr "Sie können mehrere Shops konfigurieren und nutzen" #. module: sale_stock #: field:sale.order,picked_rate:0 diff --git a/addons/sale_stock/i18n/pl.po b/addons/sale_stock/i18n/pl.po index 954fff616e6..96f9b9ae2bd 100644 --- a/addons/sale_stock/i18n/pl.po +++ b/addons/sale_stock/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev_rc3\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-09-21 13:54+0000\n" +"PO-Revision-Date: 2012-12-11 22:41+0000\n" "Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \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: 2012-12-04 05:54+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: sale_stock #: help:sale.config.settings,group_invoice_deli_orders:0 @@ -22,17 +22,18 @@ msgid "" "To allow your salesman to make invoices for Delivery Orders using the menu " "'Deliveries to Invoice'." msgstr "" +"Aby pozwolić sprzedawcy tworzyć faktury z wydań przez menu 'faktury z wydań'." #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:470 #, python-format msgid "Delivery Order %s scheduled for %s." -msgstr "" +msgstr "Wydanie %s zaplanowane for %s." #. module: sale_stock #: model:process.node,name:sale_stock.process_node_deliveryorder0 msgid "Delivery Order" -msgstr "Zamówienie dostawy" +msgstr "Wydanie zewnętrzne" #. module: sale_stock #: help:sale.config.settings,group_sale_delivery_address:0 @@ -40,12 +41,13 @@ msgid "" "Allows you to specify different delivery and invoice addresses on a sale " "order." msgstr "" +"Pozwala określić na zamówieniu sprzedaży różne adresy dostawy i fakturowania." #. module: sale_stock #: model:ir.actions.act_window,name:sale_stock.outgoing_picking_list_to_invoice #: model:ir.ui.menu,name:sale_stock.menu_action_picking_list_to_invoice msgid "Deliveries to Invoice" -msgstr "" +msgstr "Wydania do zafakturowania" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:569 @@ -80,7 +82,7 @@ msgstr "Dokument przesunięcia do klienta." #. module: sale_stock #: field:sale.config.settings,group_multiple_shops:0 msgid "Manage multiple shops" -msgstr "" +msgstr "Zarządzaj sklepami" #. module: sale_stock #: model:process.transition.action,name:sale_stock.process_transition_action_validate0 @@ -92,7 +94,7 @@ msgstr "Zatwierdź" #, python-format msgid "" "You must first cancel all delivery order(s) attached to this sales order." -msgstr "" +msgstr "Musisz najpierw anulować wydania do tego zamówienia." #. module: sale_stock #: model:process.transition,name:sale_stock.process_transition_saleprocurement0 @@ -117,7 +119,7 @@ msgstr "" #: code:addons/sale_stock/sale_stock.py:640 #, python-format msgid "Error!" -msgstr "" +msgstr "Błąd!" #. module: sale_stock #: field:sale.order,picking_policy:0 @@ -131,6 +133,8 @@ msgid "" "You cannot make an advance on a sales order that is " "defined as 'Automatic Invoice after delivery'." msgstr "" +"Nie można wystawić przedpłaty do zamówienia sprzedaży zdefiniowanego jako " +"'Automatycznie fakturowanie po wydaniu'." #. module: sale_stock #: model:ir.ui.menu,name:sale_stock.menu_action_shop_form @@ -151,12 +155,12 @@ msgstr "Przesunięcie zapasów" #: code:addons/sale_stock/sale_stock.py:161 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Niedozwolona akcja!" #. module: sale_stock #: field:sale.config.settings,module_project_timesheet:0 msgid "Project Timesheet" -msgstr "" +msgstr "Karta czasu pracy projektu" #. module: sale_stock #: help:sale.config.settings,module_delivery:0 @@ -166,18 +170,21 @@ msgid "" "prices.\n" " This installs the module delivery." msgstr "" +"Pozwala dodać metody dostaw do zamówień sprzedaży i wydań.\n" +" Możesz zdefiniować przewoźnika i siatkę cen dostawy.\n" +" To instaluje moduł delivery." #. module: sale_stock #: field:sale.config.settings,group_sale_delivery_address:0 msgid "Allow a different address for delivery and invoicing " -msgstr "" +msgstr "Pozwól na różne adresy dostawy i faktury " #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:571 #: code:addons/sale_stock/sale_stock.py:622 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Błąd konfiguracji!" #. module: sale_stock #: model:process.node,name:sale_stock.process_node_saleprocurement0 @@ -198,7 +205,7 @@ msgstr "Zamówienie sprzedaży" #. module: sale_stock #: model:ir.model,name:sale_stock.model_stock_picking_out msgid "Delivery Orders" -msgstr "" +msgstr "Wydania zewnętrzne" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_order_line @@ -243,7 +250,7 @@ msgstr "Wymuś przypisanie" #. module: sale_stock #: field:sale.config.settings,default_order_policy:0 msgid "The default invoicing method is" -msgstr "" +msgstr "Domyślna metoda fakturowania jest" #. module: sale_stock #: field:sale.order.line,delay:0 @@ -253,12 +260,12 @@ msgstr "Czas dostawy" #. module: sale_stock #: view:sale.order:0 msgid "View Delivery Order" -msgstr "" +msgstr "Pokaż wydanie zewnętrzne" #. module: sale_stock #: selection:sale.config.settings,default_order_policy:0 msgid "Invoice based on sales orders" -msgstr "" +msgstr "Faktura na podstawie zamówienia sprzedaży" #. module: sale_stock #: field:sale.order.line,move_ids:0 @@ -268,12 +275,12 @@ msgstr "Przesunięcia zapasów" #. module: sale_stock #: view:sale.config.settings:0 msgid "Default Options" -msgstr "" +msgstr "Opcje domyślne" #. module: sale_stock #: field:sale.config.settings,module_project_mrp:0 msgid "Project MRP" -msgstr "" +msgstr "Projekt MRP" #. module: sale_stock #: model:process.transition,note:sale_stock.process_transition_invoiceafterdelivery0 @@ -318,23 +325,23 @@ msgstr "" #. module: sale_stock #: field:sale.config.settings,group_invoice_deli_orders:0 msgid "Generate invoices after and based on delivery orders" -msgstr "" +msgstr "Generuj faktury po wydaniu i na jego podstawie" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:473 #, python-format msgid "Order delivered." -msgstr "" +msgstr "Zamówienie wydano." #. module: sale_stock #: field:sale.config.settings,module_delivery:0 msgid "Allow adding shipping costs" -msgstr "" +msgstr "Pozwól dodawać koszty dostawy" #. module: sale_stock #: view:sale.order:0 msgid "days" -msgstr "" +msgstr "dni" #. module: sale_stock #: field:sale.order.line,product_packaging:0 @@ -347,16 +354,17 @@ msgid "" "International Commercial Terms are a series of predefined commercial terms " "used in international transactions." msgstr "" +"Międzynarodowe warunki handlowe są zestawem predefiniowanych procedur." #. module: sale_stock #: field:sale.config.settings,default_picking_policy:0 msgid "Deliver all at once when all products are available." -msgstr "" +msgstr "Wydaj wszystko naraz kiedy wszystkie produkty sa dostępne." #. module: sale_stock #: model:res.groups,name:sale_stock.group_invoice_deli_orders msgid "Enable Invoicing Delivery orders" -msgstr "" +msgstr "Włącz fakturowanie wydań" #. module: sale_stock #: field:res.company,security_lead:0 @@ -373,12 +381,14 @@ msgstr "Zapotrzebowanie na sprzedane materiały" msgid "" "Pick 'Deliver each product when available' if you allow partial delivery." msgstr "" +"Wybierz 'Wydanie oddzielnie dostępnych produktów' jeśli chcesz pozwolić na " +"dostawy częściowe." #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:206 #, python-format msgid "Cannot cancel sales order!" -msgstr "" +msgstr "Nie można anulować zamówienia sprzedaży" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_shop @@ -402,7 +412,7 @@ msgstr "Właściwości" #. module: sale_stock #: field:sale.config.settings,group_mrp_properties:0 msgid "Product properties on order lines" -msgstr "" +msgstr "Właściwości produktu na pozycji zamówienia sprzedazy" #. module: sale_stock #: help:sale.config.settings,default_order_policy:0 @@ -458,7 +468,7 @@ msgstr "Brak zapasu ! : " msgid "" "Number of days between the order confirmation and the shipping of the " "products to the customer" -msgstr "" +msgstr "Liczba dni pomiędzy potwierdzeniem zamówienia a wydaniem produktów" #. module: sale_stock #: help:sale.config.settings,default_picking_policy:0 @@ -467,6 +477,9 @@ msgid "" "instead of delivering each product when it is available. This may have an " "impact on the shipping price." msgstr "" +"Zamówienia sprzedaży domyślnie będzie skonfigurowane, aby wydawać produkty " +"naraz zamiast każdy oddzielnie kiedy jest gotowy do wydania. To może mieć " +"wpływ na cenę dostawy." #. module: sale_stock #: model:process.node,note:sale_stock.process_node_deliveryorder0 @@ -492,6 +505,8 @@ msgid "" "In order to delete a confirmed sales order, you must cancel it.\n" "To do so, you must first cancel related picking for delivery orders." msgstr "" +"Aby usunąć potwierdzone zamówienie sprzedaży musisz najpierw anulować je.\n" +"Aby to zrobić musisz najpierw anulować wszystkie wydania." #. module: sale_stock #: field:sale.order.line,number_packages:0 @@ -511,12 +526,12 @@ msgstr "Utwórz fakturę" #. module: sale_stock #: help:sale.config.settings,group_mrp_properties:0 msgid "Allows you to tag sale order lines with properties." -msgstr "" +msgstr "Pozwala stosować włąściwości do pozycji" #. module: sale_stock #: field:sale.config.settings,task_work:0 msgid "Prepare invoices based on task's activities" -msgstr "" +msgstr "Generuj fakturę na podstawie czynności w zadaniach" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_advance_payment_inv @@ -546,7 +561,7 @@ msgstr "Incoterm" #: code:addons/sale_stock/sale_stock.py:521 #, python-format msgid "Cannot cancel sales order line!" -msgstr "" +msgstr "Nie można anulować pozycji zamówienia sprzedaży" #. module: sale_stock #: model:process.transition.action,name:sale_stock.process_transition_action_cancelassignation0 @@ -578,7 +593,7 @@ msgstr "" msgid "" "This is a list of delivery orders that has been generated for this sales " "order." -msgstr "" +msgstr "To jest lista wydań wygenerowana do tego zamówienia sprzedaży." #. module: sale_stock #: model:process.node,name:sale_stock.process_node_saleorderprocurement0 @@ -608,12 +623,12 @@ msgstr "" #. module: sale_stock #: view:sale.order:0 msgid "Recreate Delivery Order" -msgstr "" +msgstr "utwórz ponownie wydanie" #. module: sale_stock #: help:sale.config.settings,group_multiple_shops:0 msgid "This allows to configure and use multiple shops." -msgstr "" +msgstr "To pozwala konfigurować i stosować wiele sklepów." #. module: sale_stock #: field:sale.order,picked_rate:0 diff --git a/addons/share/i18n/de.po b/addons/share/i18n/de.po index 0bc8609e866..2e0a4545b5d 100644 --- a/addons/share/i18n/de.po +++ b/addons/share/i18n/de.po @@ -7,20 +7,21 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-05-10 17:22+0000\n" -"Last-Translator: Ferdinand-camptocamp \n" +"PO-Revision-Date: 2012-12-11 23:08+0000\n" +"Last-Translator: Thorsten Vocks (OpenBig.org) \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:47+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: share #: code:addons/share/wizard/share_wizard.py:837 #, python-format msgid "Invitation to collaborate about %s" -msgstr "" +msgstr "Einladung zur Zusammenarbeit für %s" #. module: share #: code:addons/share/wizard/share_wizard.py:775 @@ -28,11 +29,13 @@ msgstr "" msgid "" "The share engine has not been able to fetch a record_id for your invitation." msgstr "" +"Die Einladung Automatik war leider nicht erfolgreich, um eine record_id für " +"Ihre Einladung zu erhalten." #. module: share #: view:share.wizard:0 msgid "Include an Optional Personal Message" -msgstr "" +msgstr "Inklusive einer persönlichen Mitteilung" #. module: share #: field:share.wizard,embed_option_title:0 @@ -47,13 +50,15 @@ msgstr "Zugriff erteilt!" #. module: share #: field:share.wizard,record_name:0 msgid "Record name" -msgstr "" +msgstr "Daten Bezeichnung" #. module: share #: help:share.wizard,message:0 msgid "" "An optional personal message, to be included in the email notification." msgstr "" +"Eine optionale persönliche Mitteilung, die in die Email Benachrichtigung mit " +"einbezogen werden soll." #. module: share #: field:share.wizard,user_type:0 @@ -75,6 +80,11 @@ msgid "" " %s\n" "\n" msgstr "" +"Die Dokumente wurden nicht angehängt, sie können diese entweder direkt in " +"OpenERP online sehen oder auf meinem lokalen OpenERP Server unter der " +"Adresse:\n" +" %s\n" +"\n" #. module: share #: model:ir.module.category,name:share.module_category_share @@ -89,6 +99,8 @@ msgid "" "Hello,\n" "\n" msgstr "" +"Hallo,\n" +"\n" #. module: share #: field:share.wizard,share_root_url:0 @@ -100,7 +112,7 @@ msgstr "Freigabe Zugriffs URL" #: field:share.wizard,email_2:0 #: field:share.wizard,email_3:0 msgid "New user email" -msgstr "" +msgstr "Neue Benutzer EMail" #. module: share #: code:addons/share/wizard/share_wizard.py:882 @@ -121,6 +133,8 @@ msgstr "(Verändert)" #, python-format msgid "You must be a member of the Share/User group to use the share wizard." msgstr "" +"Sie müssen Mitglied der Benutzergruppe Share/User sein, um den \"Freigabe " +"Assistenten\" zu nutzen." #. module: share #: code:addons/share/wizard/share_wizard.py:594 @@ -163,6 +177,8 @@ msgstr "(Duplikat für modifizierte Freigabe Berechtigungen)" msgid "" "Please indicate the emails of the persons to share with, one per line." msgstr "" +"Bitte geben Sie Zeile für Zeile die EMail Anschriften sämtlicher Personen " +"ein, die freigegeben werden sollen." #. module: share #: help:share.wizard,domain:0 @@ -179,6 +195,8 @@ msgstr "Weiter" #, python-format msgid "Action and Access Mode are required to create a shared access." msgstr "" +"Aktion und Freigabe Modus ist erforderlich, um Freigaben auf Daten zu " +"erzeugen." #. module: share #: code:addons/share/wizard/share_wizard.py:845 @@ -197,17 +215,17 @@ msgstr "Freigabeoptionen" #: code:addons/share/static/src/xml/share.xml:9 #, python-format msgid "Invite" -msgstr "" +msgstr "Einladen" #. module: share #: view:share.wizard:0 msgid "Embedded code options" -msgstr "" +msgstr "Einbindung optionale Quellen" #. module: share #: view:share.wizard:0 msgid "Configuration" -msgstr "" +msgstr "Konfiguration" #. module: share #: view:share.wizard:0 @@ -242,7 +260,7 @@ msgstr "" #. module: share #: view:res.groups:0 msgid "Non-Share Groups" -msgstr "" +msgstr "Nicht-freigegebene Gruppen" #. module: share #: view:share.wizard:0 @@ -250,12 +268,13 @@ msgid "" "An email notification with instructions has been sent to the following " "people:" msgstr "" +"Eine Email Mitteilung mit Anleitung wurde an folgende Personen versendet:" #. module: share #: code:addons/share/wizard/share_wizard.py:77 #, python-format msgid "Direct link or embed code" -msgstr "" +msgstr "Direkter Link oder Quellcode" #. module: share #: code:addons/share/wizard/share_wizard.py:851 @@ -278,7 +297,7 @@ msgstr "Freizugebende Aufgabe" #. module: share #: help:share.wizard,record_name:0 msgid "Name of the shared record, if sharing a precise record" -msgstr "" +msgstr "Bezeichnung der Freigaben" #. module: share #: field:res.users,share:0 @@ -295,13 +314,13 @@ msgstr "unbekannt" #: code:addons/share/wizard/share_wizard.py:652 #, python-format msgid "Sharing access cannot be created." -msgstr "" +msgstr "Freigaben können nicht erstellt werden" #. module: share #: code:addons/share/wizard/share_wizard.py:775 #, python-format msgid "Record id not found" -msgstr "" +msgstr "Datensatz wurde nicht gefunden." #. module: share #: help:res.groups,share:0 @@ -313,7 +332,7 @@ msgstr "" #. module: share #: view:res.groups:0 msgid "Share Groups" -msgstr "" +msgstr "Freigabe Gruppen" #. module: share #: help:share.wizard,action_id:0 @@ -359,6 +378,8 @@ msgid "" "You must configure your email address in the user preferences before using " "the Share button." msgstr "" +"Sie müssen Ihre Einstellungen in den Benutzereinstellungen eintragen, \r\n" +"bevor Sie allgemein den Freigeben Knopf drücken." #. module: share #: model:res.groups,name:share.group_share_user @@ -393,7 +414,7 @@ msgstr "Datenbank" #. module: share #: view:share.wizard:0 msgid "Share with these People (one email per line)" -msgstr "" +msgstr "Freigaben für diese Personen (eine EMail pro Zeile)" #. module: share #: field:share.wizard,domain:0 @@ -416,6 +437,8 @@ msgstr "Zusammenfassung" msgid "" "Embed this code in your documents to provide a link to the shared document." msgstr "" +"Einbettung von Quellen in die Belege, um einen Zugriff so schnell wie " +"möglich zu erhalten" #. module: share #: code:addons/share/wizard/share_wizard.py:508 @@ -427,7 +450,7 @@ msgstr "Kopierte Rechte für Nutzung" #: code:addons/share/wizard/share_wizard.py:812 #, python-format msgid "Invitation" -msgstr "" +msgstr "Einladung" #. module: share #: model:ir.actions.act_window,name:share.action_share_wizard_step1 @@ -471,6 +494,8 @@ msgid "" "I have shared %s (%s) with you!\n" "\n" msgstr "" +"Ich habe folgende Daten %s (%s) freigegeben!\n" +"\n" #. module: share #: field:share.wizard,view_type:0 @@ -531,11 +556,13 @@ msgid "" "The documents have been automatically added to your subscriptions.\n" "\n" msgstr "" +"Die Dokumente wurde automatisch zu Ihrem Abomodell hinzugefügt.\n" +"\n" #. module: share #: model:ir.model,name:share.model_res_users msgid "Users" -msgstr "" +msgstr "Benutzer" #. module: share #: code:addons/share/wizard/share_wizard.py:871 @@ -544,6 +571,8 @@ msgid "" "I've shared %s with you!\n" "\n" msgstr "" +"Ich habe %s für Sie freigegeben!\n" +"\n" #. module: share #: model:ir.model,name:share.model_res_groups @@ -553,7 +582,7 @@ msgstr "Berechtigungsgruppen" #. module: share #: field:share.wizard,invite:0 msgid "Invite users to OpenSocial record" -msgstr "" +msgstr "Benutzer zu OpenSocial einladen." #. module: share #: code:addons/share/wizard/share_wizard.py:846 @@ -595,7 +624,7 @@ msgstr "" #: code:addons/share/wizard/share_wizard.py:205 #, python-format msgid "No email address configured" -msgstr "" +msgstr "Es wurde keine Email Adresse konfiguriert." #. module: share #: field:share.wizard.result.line,login:0 @@ -615,7 +644,7 @@ msgstr "Zugriff" #. module: share #: view:share.wizard:0 msgid "Sharing: preparation" -msgstr "Freigabe: Voerbereitung" +msgstr "Freigabe: Vorbereitung" #. module: share #: model:ir.model,name:share.model_ir_model_access @@ -625,7 +654,7 @@ msgstr "ir.model.access" #. module: share #: view:share.wizard:0 msgid "or" -msgstr "" +msgstr "oder" #. module: share #: help:share.wizard,access_mode:0 diff --git a/addons/stock/i18n/pl.po b/addons/stock/i18n/pl.po index 8fd70a0ac3d..62d0debefe2 100644 --- a/addons/stock/i18n/pl.po +++ b/addons/stock/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:02+0000\n" -"PO-Revision-Date: 2012-08-26 10:20+0000\n" +"PO-Revision-Date: 2012-12-11 23:18+0000\n" "Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \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: 2012-12-04 05:07+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: stock #: field:stock.inventory.line.split,line_exist_ids:0 @@ -23,7 +23,7 @@ msgstr "" #: field:stock.move.split,line_exist_ids:0 #: field:stock.move.split,line_ids:0 msgid "Serial Numbers" -msgstr "" +msgstr "Numery Seryjne" #. module: stock #: help:stock.config.settings,group_product_variant:0 @@ -32,6 +32,8 @@ msgid "" "Shirts, for the same \"Linux T-Shirt\", you may have variants on sizes or " "colors; S, M, L, XL, XXL." msgstr "" +"Pozwala stosować warianty produktu. Przykład: Sprzedajesz koszulki. Wtedy " +"możesz mieć warianty rozmiarów lub kolorów; S, M, L, XL, XXL." #. module: stock #: model:ir.model,name:stock.model_stock_move_split_lines @@ -55,13 +57,13 @@ msgstr "" #. module: stock #: view:stock.picking.out:0 msgid "Confirm & Deliver" -msgstr "" +msgstr "Potwierdź i dostarcz" #. module: stock #: model:ir.actions.act_window,name:stock.action_view_change_product_quantity #: view:stock.change.product.qty:0 msgid "Update Product Quantity" -msgstr "" +msgstr "Aktualizuj ilość" #. module: stock #: field:stock.location,chained_location_id:0 @@ -86,7 +88,7 @@ msgstr "Śledzenie wstecz" #: code:addons/stock/stock.py:1448 #, python-format msgid "Products have been delivered." -msgstr "" +msgstr "Produkty zostały dostarczone." #. module: stock #: field:product.product,track_outgoing:0 @@ -128,7 +130,7 @@ msgstr "Przesunięcia produktu" #: code:addons/stock/stock.py:2650 #, python-format msgid "Please provide proper quantity." -msgstr "" +msgstr "Podaj poprawną ilość" #. module: stock #: model:ir.ui.menu,name:stock.menu_stock_inventory_control @@ -199,7 +201,7 @@ msgstr "Inwentaryzacje" #. module: stock #: selection:stock.location.product,type:0 msgid "Analyse a Period" -msgstr "" +msgstr "Analizuj okres" #. module: stock #: field:product.category,property_stock_journal:0 @@ -212,7 +214,7 @@ msgstr "Dziennik magazynowy" #: code:addons/stock/stock.py:1449 #, python-format msgid "Products have been received." -msgstr "" +msgstr "Produkty zostały przyjęte." #. module: stock #: view:report.stock.move:0 @@ -259,7 +261,7 @@ msgstr "Przypisane wydania" #: code:addons/stock/wizard/stock_change_standard_price.py:107 #, python-format msgid "Active ID is not set in Context." -msgstr "" +msgstr "Aktrywne ID nie jest ustawione w kontekście." #. module: stock #: selection:stock.picking,invoice_state:0 @@ -274,7 +276,7 @@ msgstr "Nie dotyczy" #: help:stock.picking.in,message_unread:0 #: help:stock.picking.out,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Jeśli zaznaczone, to wiadomość wymaga twojej uwagi" #. module: stock #: help:stock.tracking,serial:0 @@ -338,7 +340,7 @@ msgstr "" #. module: stock #: view:product.product:0 msgid "Forecasted:" -msgstr "" +msgstr "Przewidywane:" #. module: stock #: view:stock.partial.move:0 @@ -386,7 +388,7 @@ msgstr "Grupuj wg partnera" #: help:stock.picking.in,move_type:0 #: help:stock.picking.out,move_type:0 msgid "It specifies goods to be deliver partially or all at once" -msgstr "" +msgstr "To określa towary, które mają być wydane częściowo lub naraz" #. module: stock #: model:ir.model,name:stock.model_res_partner @@ -404,7 +406,7 @@ msgstr "Partner" #. module: stock #: field:stock.config.settings,module_claim_from_delivery:0 msgid "Allow claim on deliveries" -msgstr "" +msgstr "Pozwala na serwis z wydania" #. module: stock #: selection:stock.return.picking,invoice_state:0 @@ -420,12 +422,12 @@ msgstr "Przesunięcia wykonane" #: field:stock.inventory.line.split,use_exist:0 #: field:stock.move.split,use_exist:0 msgid "Existing Serial Numbers" -msgstr "" +msgstr "Istniejący numer seryjny" #. module: stock #: model:res.groups,name:stock.group_inventory_valuation msgid "Manage Inventory valuation" -msgstr "" +msgstr "Zarządzaj wyceną zapasów" #. module: stock #: model:stock.location,name:stock.stock_location_suppliers @@ -456,7 +458,7 @@ msgstr "Wewnętrzna strefa magazynowa" #. module: stock #: view:stock.move:0 msgid "Split in Serial Number" -msgstr "" +msgstr "Podziel na numery seryjne" #. module: stock #: view:stock.location:0 @@ -476,7 +478,7 @@ msgstr "Lag (Dni)" #. module: stock #: selection:stock.picking.out,state:0 msgid "Ready to Deliver" -msgstr "" +msgstr "Gotowe do wydania" #. module: stock #: model:ir.model,name:stock.model_action_traceability @@ -514,7 +516,7 @@ msgstr "Ilości przychodzące" #. module: stock #: model:ir.actions.client,name:stock.action_client_warehouse_menu msgid "Open Warehouse Menu" -msgstr "" +msgstr "Otwórz menu magazynu" #. module: stock #: field:stock.warehouse,lot_output_id:0 @@ -530,7 +532,7 @@ msgstr "Podziel na" #. module: stock #: field:stock.config.settings,module_product_expiry:0 msgid "Expiry date on serial numbers" -msgstr "" +msgstr "Daty ważności w numerach seryjnych" #. module: stock #: field:stock.move,price_currency_id:0 @@ -540,7 +542,7 @@ msgstr "Waluta przeciętnej ceny" #. module: stock #: view:product.product:0 msgid "Stock and Expected Variations" -msgstr "" +msgstr "Stany i spodziewane odstępstwa" #. module: stock #: help:product.category,property_stock_valuation_account_id:0 @@ -554,7 +556,7 @@ msgstr "" #. module: stock #: field:stock.config.settings,group_stock_tracking_lot:0 msgid "Track serial number on logistic units (pallets)" -msgstr "" +msgstr "śledź numery seryjne na jednostkach logistycznych (paletach)" #. module: stock #: help:product.template,sale_delay:0 @@ -563,6 +565,8 @@ msgid "" "the delivery of the finished products. It's the time you promise to your " "customers." msgstr "" +"Średni czas pomiędzy potwierdzeniem zamówienia od klienta a wydaniem " +"końcowych produktów. To jest czas obiecany klientowi." #. module: stock #: code:addons/stock/product.py:196 @@ -579,7 +583,7 @@ msgstr "Typ strefy magazynowej" #. module: stock #: view:stock.config.settings:0 msgid "Location & Warehouse" -msgstr "" +msgstr "Strefy i Magazyn" #. module: stock #: code:addons/stock/stock.py:1848 @@ -588,6 +592,8 @@ msgid "" "Quantities, Units of Measure, Products and Locations cannot be modified on " "stock moves that have already been processed (except by the Administrator)." msgstr "" +"Ilości, Jednostki miary, Produkty i strefy nie mogą być modyfikowane w " +"przesunięciach, które już zostały wykonane (może to zrobić Administrator)" #. module: stock #: help:report.stock.move,type:0 @@ -611,6 +617,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknij, aby utworzyć przesunięcie wewnętrzne. \n" +"

\n" +" Większość operacji jest generowana automatycznie według\n" +" ustawień logistycznych, ale możesz też wprowadzić " +"przesunięcie\n" +" ręcznie.\n" +"

\n" +" " #. module: stock #: model:ir.actions.report.xml,name:stock.report_move_labels @@ -621,7 +636,7 @@ msgstr "Etykiety elementów" #: code:addons/stock/stock.py:1444 #, python-format msgid "Back order %s has been created." -msgstr "" +msgstr "Pobranie częściowe %s zostało utworzone." #. module: stock #: model:ir.model,name:stock.model_report_stock_move @@ -632,12 +647,12 @@ msgstr "Statystyka przesunięć" #: help:stock.config.settings,group_uom:0 msgid "" "Allows you to select and maintain different units of measure for products." -msgstr "" +msgstr "Pozwala wybrać różne jednostki miary dla produktów." #. module: stock #: model:ir.model,name:stock.model_stock_report_tracklots msgid "Stock report by logistic serial number" -msgstr "" +msgstr "raport zapasów wg numerów seryjnych" #. module: stock #: help:product.product,track_outgoing:0 @@ -645,11 +660,13 @@ msgid "" "Forces to specify a Serial Number for all moves containing this product and " "going to a Customer Location" msgstr "" +"Wymusza określenie numeru seryjnego w przesunięciach tego produktu do strefy " +"klienta" #. module: stock #: model:ir.ui.menu,name:stock.menu_stock_products_moves msgid "Receive/Deliver Products" -msgstr "" +msgstr "Przyjmij/Wydaj produkty" #. module: stock #: field:stock.move,move_history_ids:0 @@ -684,7 +701,7 @@ msgstr "Opakowanie" #. module: stock #: model:ir.actions.report.xml,name:stock.report_picking_list_in msgid "Receipt Slip" -msgstr "" +msgstr "Dokument przyjęcia" #. module: stock #: code:addons/stock/wizard/stock_move.py:214 @@ -692,6 +709,7 @@ msgstr "" msgid "" "Serial number quantity %d of %s is larger than available quantity (%d)!" msgstr "" +"Ilość wg numerów seryjnych %d %s jest większa niż ilość dostępna (%d)!" #. module: stock #: report:stock.picking.list:0 @@ -701,7 +719,7 @@ msgstr "Zamówienie(pochodzenie)" #. module: stock #: model:ir.ui.menu,name:stock.menu_stock_uom_categ_form_action msgid "Unit of Measure Categories" -msgstr "" +msgstr "Kategorie jednostek miary" #. module: stock #: report:lot.stock.overview:0 @@ -891,7 +909,7 @@ msgstr "" #: field:stock.picking.in,message_summary:0 #: field:stock.picking.out,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Podsumowanie" #. module: stock #: view:product.category:0 @@ -910,7 +928,7 @@ msgstr "Odnośnik musi być unikalny w firmie!" #: field:stock.picking.in,date:0 #: field:stock.picking.out,date:0 msgid "Time" -msgstr "" +msgstr "Czas" #. module: stock #: code:addons/stock/product.py:443 @@ -926,7 +944,7 @@ msgstr "Pilne" #. module: stock #: selection:stock.picking.out,state:0 msgid "Delivered" -msgstr "" +msgstr "Pobrane" #. module: stock #: field:stock.move,move_dest_id:0 diff --git a/addons/subscription/i18n/pt.po b/addons/subscription/i18n/pt.po index 4a247f74a96..ad97f7bef53 100644 --- a/addons/subscription/i18n/pt.po +++ b/addons/subscription/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-11-24 02:54+0000\n" -"PO-Revision-Date: 2010-12-09 09:43+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:40+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-11-25 05:39+0000\n" -"X-Generator: Launchpad (build 16293)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: subscription #: field:subscription.subscription,doc_source:0 @@ -175,7 +175,7 @@ msgstr "Dias" #: code:addons/subscription/subscription.py:136 #, python-format msgid "Error!" -msgstr "" +msgstr "Erro!" #. module: subscription #: field:subscription.subscription,cron_id:0 diff --git a/addons/survey/i18n/pt.po b/addons/survey/i18n/pt.po index a0dbaf26c33..0dab6aa3a3a 100644 --- a/addons/survey/i18n/pt.po +++ b/addons/survey/i18n/pt.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2012-12-10 18:21+0000\n" -"Last-Translator: Andrei Talpa (multibase.pt) \n" +"PO-Revision-Date: 2012-12-11 17:36+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:49+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: survey #: view:survey.response.line:0 @@ -376,7 +376,7 @@ msgstr "Editar inquérito" #: code:addons/survey/wizard/survey_answer.py:962 #, python-format msgid "Please enter an integer value." -msgstr "" +msgstr "Por favor, indique um número inteiro." #. module: survey #: field:survey.question.column.heading,menu_choice:0 @@ -533,7 +533,7 @@ msgstr "Fase do plano de avaliação" #: code:addons/survey/wizard/survey_send_invitation.py:202 #, python-format msgid "Unknown" -msgstr "" +msgstr "Desconhecido" #. module: survey #: view:survey:0 @@ -576,7 +576,7 @@ msgstr "Email" #: code:addons/survey/survey.py:261 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (cópia)" #. module: survey #: selection:survey.response,state:0 @@ -602,7 +602,7 @@ msgstr "" #. module: survey #: model:ir.ui.menu,name:survey.menu_reporting msgid "Reporting" -msgstr "" +msgstr "Relatórios" #. module: survey #: model:ir.actions.act_window,name:survey.act_survey_answer @@ -737,7 +737,7 @@ msgstr "" #. module: survey #: view:survey:0 msgid "Delete" -msgstr "" +msgstr "Apagar" #. module: survey #: field:survey.response.answer,comment_field:0 @@ -1489,7 +1489,7 @@ msgstr "Deve ser um comprimento específico" #. module: survey #: model:survey.type,name:survey.survey_type3 msgid "Supplier Selection" -msgstr "" +msgstr "Seleção de fornecedor" #. module: survey #: code:addons/survey/wizard/survey_answer.py:993 @@ -1569,7 +1569,7 @@ msgstr "Soma de todas as opções" #. module: survey #: view:survey.request:0 msgid "Request" -msgstr "" +msgstr "Pedido" #. module: survey #: model:ir.model,name:survey.model_survey_response @@ -1633,7 +1633,7 @@ msgstr "Mensagem de erro" #: code:addons/survey/wizard/survey_send_invitation.py:74 #, python-format msgid "Warning!" -msgstr "" +msgstr "Aviso!" #. module: survey #: code:addons/survey/survey.py:467 diff --git a/addons/warning/i18n/pt.po b/addons/warning/i18n/pt.po index e2a3940b445..0cdb294d3be 100644 --- a/addons/warning/i18n/pt.po +++ b/addons/warning/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:04+0000\n" -"PO-Revision-Date: 2010-12-14 22:43+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-11 15:41+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 05:43+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: warning #: model:ir.model,name:warning.model_purchase_order_line @@ -25,7 +25,7 @@ msgstr "Linha de Ordem de Compra" #. module: warning #: model:ir.model,name:warning.model_stock_picking_in msgid "Incoming Shipments" -msgstr "" +msgstr "Receções Agendadas" #. module: warning #: field:product.product,sale_line_warn_msg:0 @@ -217,7 +217,7 @@ msgstr "Ordem de Vendas" #. module: warning #: model:ir.model,name:warning.model_stock_picking_out msgid "Delivery Orders" -msgstr "" +msgstr "Ordens de entrega" #. module: warning #: model:ir.model,name:warning.model_sale_order_line diff --git a/addons/web/i18n/de.po b/addons/web/i18n/de.po index f8439d25e4b..a08703c9600 100644 --- a/addons/web/i18n/de.po +++ b/addons/web/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 05:03+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:54+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/it.po b/addons/web/i18n/it.po index 0d2357673d3..de2a3607ec8 100644 --- a/addons/web/i18n/it.po +++ b/addons/web/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-11-30 22:53+0000\n" -"Last-Translator: Sergio Corato \n" +"PO-Revision-Date: 2012-12-11 12:49+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-01 05:20+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:54+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: web #. openerp-web @@ -236,7 +236,7 @@ msgstr "(no string)" #: code:addons/web/static/src/js/formats.js:282 #, python-format msgid "'%s' is not a correct time" -msgstr "" +msgstr "'%s' non è un orario corretto" #. module: web #. openerp-web @@ -553,7 +553,7 @@ msgstr "Tipo non letterale sconosciuto " #: code:addons/web/static/src/js/view_form.js:2345 #, python-format msgid "Resource error" -msgstr "" +msgstr "Errore risorsa" #. module: web #. openerp-web @@ -595,7 +595,7 @@ msgstr "Per maggiori informazioni visita" #: code:addons/web/static/src/xml/base.xml:1834 #, python-format msgid "Add All Info..." -msgstr "" +msgstr "Aggiungi tutte le informazioni ..." #. module: web #. openerp-web @@ -623,7 +623,7 @@ msgstr "Campi modello %s" #: code:addons/web/static/src/js/view_list.js:890 #, python-format msgid "Setting 'id' attribute on existing record %s" -msgstr "" +msgstr "Imposta l'attributo 'id' su record esistente %s" #. module: web #. openerp-web @@ -668,13 +668,14 @@ msgstr "Action ID:" #, python-format msgid "Your user's preference timezone does not match your browser timezone:" msgstr "" +"Il vostro timezone nelle preferenze non coincide al timezone del browser" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1238 #, python-format msgid "Field '%s' specified in view could not be found." -msgstr "" +msgstr "Il campo '%s' specificato nella vista non può essere trovato." #. module: web #. openerp-web @@ -695,21 +696,21 @@ msgstr "Vecchia Password:" #: code:addons/web/static/src/js/formats.js:113 #, python-format msgid "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" -msgstr "" +msgstr "Bytes, Kb, Mb, Gb, Tb, Pb, Eb, Zb, Yb" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:481 #, python-format msgid "The database has been duplicated." -msgstr "" +msgstr "Il database è stato duplicato." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1600 #, python-format msgid "Apply" -msgstr "" +msgstr "Applica" #. module: web #. openerp-web @@ -731,7 +732,7 @@ msgstr "Salva come" #: code:addons/web/static/src/js/view_form.js:2316 #, python-format msgid "E-mail error" -msgstr "" +msgstr "Errore e-mail" #. module: web #. openerp-web @@ -763,6 +764,10 @@ msgid "" "\n" "Are you sure you want to leave this page ?" msgstr "" +"Attenzione, il record è stato modificato, i vostri cambiamenti saranno " +"scartati se non salvati.\n" +"\n" +"Confermare l'abbandono della pagina" #. module: web #. openerp-web @@ -790,14 +795,14 @@ msgstr "Delimitatore:" #: code:addons/web/static/src/xml/base.xml:458 #, python-format msgid "Browser's timezone" -msgstr "" +msgstr "Timezone del browser" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1580 #, python-format msgid "Filter name" -msgstr "" +msgstr "Nome del filtro" #. module: web #. openerp-web @@ -821,7 +826,7 @@ msgstr "Aggiungi" #: code:addons/web/static/src/xml/base.xml:530 #, python-format msgid "Toggle Form Layout Outline" -msgstr "" +msgstr "Passa al layout struttura del form" #. module: web #. openerp-web @@ -835,14 +840,14 @@ msgstr "OpenERP.com" #: code:addons/web/static/src/js/view_form.js:2316 #, python-format msgid "Can't send email to invalid e-mail address" -msgstr "" +msgstr "Non è possibile inviare mail ad indirizzi non corretti" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:614 #, python-format msgid "Add..." -msgstr "" +msgstr "Aggiungi..." #. module: web #. openerp-web @@ -856,7 +861,7 @@ msgstr "Preferenze" #: code:addons/web/static/src/js/view_form.js:434 #, python-format msgid "Wrong on change format: %s" -msgstr "" +msgstr "Errato formato \"on change\": %s" #. module: web #. openerp-web @@ -864,14 +869,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:185 #, python-format msgid "Drop Database" -msgstr "" +msgstr "Elimina database" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:462 #, python-format msgid "Click here to change your user's timezone." -msgstr "" +msgstr "Cliccare qui per cambiare il timezone personale utente" #. module: web #. openerp-web @@ -885,7 +890,7 @@ msgstr "Modificatori:" #: code:addons/web/static/src/xml/base.xml:605 #, python-format msgid "Delete this attachment" -msgstr "" +msgstr "Elimina questo allegato" #. module: web #. openerp-web @@ -903,7 +908,7 @@ msgstr "Salva" #: code:addons/web/static/src/xml/base.xml:355 #, python-format msgid "More" -msgstr "" +msgstr "Più" #. module: web #. openerp-web @@ -917,21 +922,21 @@ msgstr "Utente" #: code:addons/web/static/src/js/chrome.js:481 #, python-format msgid "Duplicating database" -msgstr "" +msgstr "Duplicazione database" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:563 #, python-format msgid "Password has been changed successfully" -msgstr "" +msgstr "Password cambiata con successo" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list_editable.js:781 #, python-format msgid "The form's data can not be discarded" -msgstr "" +msgstr "I dati del form non possono essere scartati" #. module: web #. openerp-web @@ -966,6 +971,10 @@ msgid "" "\n" "%s" msgstr "" +"Fallita valutazione locale\n" +"%s\n" +"\n" +"%s" #. module: web #. openerp-web @@ -1000,14 +1009,14 @@ msgstr "Data Creazione:" #: code:addons/web/controllers/main.py:851 #, python-format msgid "Error, password not changed !" -msgstr "" +msgstr "Errore, la password non è stata cambiata!" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4810 #, python-format msgid "The selected file exceed the maximum file size of %s." -msgstr "" +msgstr "Il file selezionato eccede la massima dimensione possibile di %s." #. module: web #. openerp-web @@ -1015,14 +1024,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1275 #, python-format msgid "/web/binary/upload_attachment" -msgstr "" +msgstr "/web/binary/upload_attachment" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:563 #, python-format msgid "Changed Password" -msgstr "" +msgstr "Password modificata" #. module: web #. openerp-web @@ -1056,14 +1065,14 @@ msgstr "Backup" #: code:addons/web/static/src/js/dates.js:80 #, python-format msgid "'%s' is not a valid time" -msgstr "" +msgstr "'%s' non è un orario valido" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:274 #, python-format msgid "'%s' is not a correct date" -msgstr "" +msgstr "'%s' non è una data corretta" #. module: web #. openerp-web @@ -1117,7 +1126,7 @@ msgstr "Ultima Modifica fatta da:" #: code:addons/web/static/src/xml/base.xml:466 #, python-format msgid "Timezone mismatch" -msgstr "" +msgstr "Discordanza timezone" #. module: web #. openerp-web @@ -1131,7 +1140,7 @@ msgstr "Operatore %s sconosciuto nel dominio %s" #: code:addons/web/static/src/js/view_form.js:426 #, python-format msgid "%d / %d" -msgstr "" +msgstr "%d / %d" #. module: web #. openerp-web @@ -1185,7 +1194,7 @@ msgstr "Aggiungi Filtro Avanzato" #: code:addons/web/controllers/main.py:844 #, python-format msgid "The new password and its confirmation must be identical." -msgstr "" +msgstr "La nuova password e la sua conferma devono essere identiche." #. module: web #. openerp-web @@ -1200,7 +1209,7 @@ msgstr "Ripristina Database" #: code:addons/web/static/src/js/chrome.js:645 #, python-format msgid "Login" -msgstr "" +msgstr "Login" #. module: web #. openerp-web @@ -1229,21 +1238,21 @@ msgstr "Tipo di esportazione:" #: code:addons/web/static/src/xml/base.xml:406 #, python-format msgid "Log out" -msgstr "" +msgstr "Log out" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1092 #, python-format msgid "Group by: %s" -msgstr "" +msgstr "Raggruppa per: %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:151 #, python-format msgid "No data provided." -msgstr "" +msgstr "Nessun dato fornito." #. module: web #. openerp-web @@ -1272,7 +1281,7 @@ msgstr "E' necessario selezionare almeno un record." #: code:addons/web/static/src/js/coresetup.js:622 #, python-format msgid "Don't leave yet,
it's still loading..." -msgstr "" +msgstr "Non abbandonare ora,
caricamento in corso..." #. module: web #. openerp-web @@ -1286,7 +1295,7 @@ msgstr "Ricerca Non Valida" #: code:addons/web/static/src/js/view_list.js:959 #, python-format msgid "Could not find id in dataset" -msgstr "" +msgstr "Non è possibile trovare l'id nel set di dati" #. module: web #. openerp-web @@ -1314,7 +1323,7 @@ msgstr "%(page)d/%(page_count)d" #: code:addons/web/static/src/js/chrome.js:397 #, python-format msgid "The confirmation does not match the password" -msgstr "" +msgstr "La conferma password non combacia con la password" #. module: web #. openerp-web @@ -1353,7 +1362,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:393 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web #. openerp-web @@ -1367,7 +1376,7 @@ msgstr "1. Importa un file .CSV" #: code:addons/web/static/src/js/chrome.js:645 #, python-format msgid "No database selected !" -msgstr "" +msgstr "Nessun database selezionato!" #. module: web #. openerp-web @@ -1388,7 +1397,7 @@ msgstr "Cambia default:" #: code:addons/web/static/src/xml/base.xml:171 #, python-format msgid "Original database name:" -msgstr "" +msgstr "Nome originale database:" #. module: web #. openerp-web @@ -1405,14 +1414,14 @@ msgstr "è uguale a" #: code:addons/web/static/src/js/views.js:1455 #, python-format msgid "Could not serialize XML" -msgstr "" +msgstr "Non è possibile serializzare l'XML" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1594 #, python-format msgid "Advanced Search" -msgstr "" +msgstr "Ricerca avanzata" #. module: web #. openerp-web @@ -1427,6 +1436,8 @@ msgstr "Conferma nuova password principale" #, python-format msgid "Maybe you should consider reloading the application by pressing F5..." msgstr "" +"Probabilmente dovreste effettuare un reload dell'applicazione premendo il " +"tasto F5..." #. module: web #. openerp-web @@ -1458,7 +1469,7 @@ msgstr "Opzioni di importazione" #: code:addons/web/static/src/js/view_form.js:2909 #, python-format msgid "Add %s" -msgstr "" +msgstr "Aggiungi %s" #. module: web #. openerp-web @@ -1482,7 +1493,7 @@ msgstr "Chiudi" #, python-format msgid "" "You may not believe it,
but the application is actually loading..." -msgstr "" +msgstr "Potrete non crederci,
ma l'applicazione è già caricata..." #. module: web #. openerp-web @@ -1496,7 +1507,7 @@ msgstr "File CSV:" #: code:addons/web/static/src/js/search.js:1743 #, python-format msgid "Advanced" -msgstr "" +msgstr "Avanzate" #. module: web #. openerp-web @@ -1509,14 +1520,14 @@ msgstr "Albero" #: code:addons/web/controllers/main.py:766 #, python-format msgid "Could not drop database !" -msgstr "" +msgstr "Non è possibile eliminare il database!" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:227 #, python-format msgid "'%s' is not a correct integer" -msgstr "" +msgstr "'%s' non è un intero corretto" #. module: web #. openerp-web @@ -1537,21 +1548,21 @@ msgstr "Campo %s sconosciuto nel dominio %s" #: code:addons/web/static/src/js/views.js:1421 #, python-format msgid "Node [%s] is not a JSONified XML node" -msgstr "" +msgstr "Il node [%s] non è un nodo JSONified XML" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1403 #, python-format msgid "Advanced Search..." -msgstr "" +msgstr "Ricerca avanzata..." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:499 #, python-format msgid "Dropping database" -msgstr "" +msgstr "Eliminazione database" #. module: web #. openerp-web @@ -1574,7 +1585,7 @@ msgstr "Sì" #: code:addons/web/static/src/js/view_form.js:4831 #, python-format msgid "There was a problem while uploading your file" -msgstr "" +msgstr "C'è stato un problema durante l'upload del vostro file" #. module: web #. openerp-web @@ -1595,28 +1606,28 @@ msgstr "Dimensione:" #: code:addons/web/static/src/xml/base.xml:1799 #, python-format msgid "--- Don't Import ---" -msgstr "" +msgstr "--- Non importare ---" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1654 #, python-format msgid "Import-Compatible Export" -msgstr "" +msgstr "Esportazione compatile alla successiva importazione" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:601 #, python-format msgid "%d years ago" -msgstr "" +msgstr "%d anni fa'" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1019 #, python-format msgid "Unknown m2m command %s" -msgstr "" +msgstr "Comando m2m sconosciuto %s" #. module: web #. openerp-web @@ -1639,14 +1650,14 @@ msgstr "Nome nuovo database:" #: code:addons/web/static/src/js/chrome.js:394 #, python-format msgid "Please enter your new password" -msgstr "" +msgstr "Prego Inserire la tua nuova password" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1463 #, python-format msgid "Could not parse string to xml" -msgstr "" +msgstr "Non è possibile interpretare la stringa XML" #. module: web #. openerp-web @@ -1674,7 +1685,7 @@ msgstr "Linee da saltare" #: code:addons/web/static/src/js/view_form.js:2831 #, python-format msgid "Create \"%s\"" -msgstr "" +msgstr "Creato \"%s\"" #. module: web #. openerp-web @@ -1695,7 +1706,7 @@ msgstr "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved." #: code:addons/web/static/src/js/view_form.js:2345 #, python-format msgid "This resource is empty" -msgstr "" +msgstr "Questa risorsa è vuota" #. module: web #. openerp-web @@ -1717,7 +1728,7 @@ msgstr "L'importazione è fallita a causa di:" #: code:addons/web/static/src/xml/base.xml:533 #, python-format msgid "JS Tests" -msgstr "" +msgstr "JS test" #. module: web #. openerp-web @@ -1731,7 +1742,7 @@ msgstr "Salva come:" #: code:addons/web/static/src/js/search.js:929 #, python-format msgid "Filter on: %s" -msgstr "" +msgstr "Filtro su: %s" #. module: web #. openerp-web @@ -1753,7 +1764,7 @@ msgstr "Campi Vista" #: code:addons/web/static/src/xml/base.xml:330 #, python-format msgid "Confirm New Password:" -msgstr "" +msgstr "Conferma la nuova password:" #. module: web #. openerp-web @@ -1828,7 +1839,7 @@ msgstr "Caricando ..." #: code:addons/web/static/src/xml/base.xml:1828 #, python-format msgid "Name:" -msgstr "" +msgstr "Nome:" #. module: web #. openerp-web @@ -1842,7 +1853,7 @@ msgstr "Informazioni" #: code:addons/web/static/src/xml/base.xml:1406 #, python-format msgid "Search Again" -msgstr "" +msgstr "Cerca ancora" #. module: web #. openerp-web @@ -1874,13 +1885,15 @@ msgid "" "Grouping on field '%s' is not possible because that field does not appear in " "the list view." msgstr "" +"Il raggruppamento sul campo \"%s\" non è possibile perchè il campo non " +"appare nella lista" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:531 #, python-format msgid "Set Defaults" -msgstr "" +msgstr "Imposta predefiniti" #. module: web #. openerp-web @@ -1902,7 +1915,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:319 #, python-format msgid "The record could not be found in the database." -msgstr "" +msgstr "Il record non può essere trovato nel database" #. module: web #. openerp-web @@ -1923,7 +1936,7 @@ msgstr "Tipo:" #: code:addons/web/static/src/js/chrome.js:538 #, python-format msgid "Incorrect super-administrator password" -msgstr "" +msgstr "Password di super-admin non corretta" #. module: web #. openerp-web @@ -1965,6 +1978,8 @@ msgid "" "The type of the field '%s' must be a many2many field with a relation to " "'ir.attachment' model." msgstr "" +"Il tipo del campo \"%s\" deve essere: \"molti a molti\" con una relazione al " +"modello \"ir.attachment\"." #. module: web #. openerp-web @@ -1986,7 +2001,7 @@ msgstr "Aggiungi: " #: code:addons/web/static/src/xml/base.xml:1833 #, python-format msgid "Quick Add" -msgstr "" +msgstr "Aggiungi (rapido)" #. module: web #. openerp-web @@ -2029,14 +2044,14 @@ msgstr "Caricadati dimostrativi:" #: code:addons/web/static/src/js/dates.js:26 #, python-format msgid "'%s' is not a valid datetime" -msgstr "" +msgstr "\"%s\" non è un valido \"datetime\"" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1471 #, python-format msgid "Could not find a DOM Parser: %s" -msgstr "" +msgstr "Non è possibile trovare un interprete DOM : \"%s\"" #. module: web #. openerp-web @@ -2116,14 +2131,14 @@ msgstr "Download \"%s\"" #: code:addons/web/static/src/js/view_form.js:324 #, python-format msgid "New" -msgstr "" +msgstr "Nuovo" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1746 #, python-format msgid "Can't convert value %s to context" -msgstr "" +msgstr "Non è possibile convertire il valore %s a context" #. module: web #. openerp-web @@ -2189,34 +2204,34 @@ msgstr "è falso" #: code:addons/web/static/src/xml/base.xml:404 #, python-format msgid "About OpenERP" -msgstr "" +msgstr "Informazioni su OpenERP" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:297 #, python-format msgid "'%s' is not a correct date, datetime nor time" -msgstr "" +msgstr "\"%s\" non è una data corretta, datetime e neppure orario" #. module: web #: code:addons/web/controllers/main.py:1306 #, python-format msgid "No content found for field '%s' on '%s:%s'" -msgstr "" +msgstr "Nessun contenuto trovato per il campo \"%s\" su \"%s:%s\"" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:304 #, python-format msgid "Database Management" -msgstr "" +msgstr "Gestione Database" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4971 #, python-format msgid "Image" -msgstr "" +msgstr "Immagine" #. module: web #. openerp-web @@ -2230,7 +2245,7 @@ msgstr "Gestisci Database" #: code:addons/web/static/src/js/pyeval.js:765 #, python-format msgid "Evaluation Error" -msgstr "" +msgstr "Errore valutazione" #. module: web #. openerp-web @@ -2249,7 +2264,7 @@ msgstr "intero non valido" #: code:addons/web/static/src/xml/base.xml:1605 #, python-format msgid "or" -msgstr "" +msgstr "o" #. module: web #. openerp-web @@ -2263,7 +2278,7 @@ msgstr "No" #: code:addons/web/static/src/js/formats.js:309 #, python-format msgid "'%s' is not convertible to date, datetime nor time" -msgstr "" +msgstr "\"%s\" non è convertibile ad una data, datetime o orario" #. module: web #. openerp-web @@ -2281,21 +2296,21 @@ msgstr "Duplica" #: code:addons/web/static/src/xml/base.xml:1366 #, python-format msgid "Discard" -msgstr "" +msgstr "Scarta" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1599 #, python-format msgid "Add a condition" -msgstr "" +msgstr "Aggiungi una condizione" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading..." -msgstr "" +msgstr "Ancora in caricamento..." #. module: web #. openerp-web @@ -2310,6 +2325,7 @@ msgstr "Valore non valido per campo %(fieldname)s: [%(value)s] è %(message)s" #, python-format msgid "The o2m record must be saved before an action can be used" msgstr "" +"I record o2m devono essere salvati prima che l'azione possa essere usata" #. module: web #. openerp-web @@ -2323,21 +2339,21 @@ msgstr "Salvato" #: code:addons/web/static/src/xml/base.xml:1585 #, python-format msgid "Use by default" -msgstr "" +msgstr "Utilizza per default" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4846 #, python-format msgid "The field is empty, there's nothing to save !" -msgstr "" +msgstr "Questo campo è vuoto, non c'è nulla da salvare!" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1327 #, python-format msgid "%s (%d)" -msgstr "" +msgstr "%s (%d)" #. module: web #. openerp-web @@ -2351,7 +2367,7 @@ msgstr "avviato da vista ricerca" #: code:addons/web/static/src/js/search.js:980 #, python-format msgid "Filter" -msgstr "" +msgstr "Filtro" #. module: web #. openerp-web @@ -2393,14 +2409,14 @@ msgstr "Modifica Workflow" #: code:addons/web/static/src/js/views.js:1172 #, python-format msgid "Do you really want to delete this attachment ?" -msgstr "" +msgstr "Volete veramente cancellare questo allegato?" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:838 #, python-format msgid "Technical Translation" -msgstr "" +msgstr "Traduzione tecnica" #. module: web #. openerp-web @@ -2414,14 +2430,14 @@ msgstr "Campo:" #: code:addons/web/static/src/js/chrome.js:499 #, python-format msgid "The database %s has been dropped" -msgstr "" +msgstr "Il database %s è stato eliminato" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:456 #, python-format msgid "User's timezone" -msgstr "" +msgstr "Timezone utente" #. module: web #. openerp-web @@ -2436,7 +2452,7 @@ msgstr "Errore Client" #: code:addons/web/static/src/js/views.js:996 #, python-format msgid "Print" -msgstr "" +msgstr "Stampa" #. module: web #. openerp-web @@ -2451,6 +2467,7 @@ msgstr "Speciale:" msgid "" "The old password you provided is incorrect, your password was not changed." msgstr "" +"La vecchia password fornita non è corretta, la password non è stata cambiata." #. module: web #. openerp-web @@ -2478,7 +2495,7 @@ msgstr "Salva & Chiudi" #: code:addons/web/static/src/js/view_form.js:2818 #, python-format msgid "Search More..." -msgstr "" +msgstr "Cerca Ancora..." #. module: web #. openerp-web @@ -2516,21 +2533,21 @@ msgstr "Seleziona data" #: code:addons/web/static/src/js/search.js:1251 #, python-format msgid "Search %(field)s for: %(value)s" -msgstr "" +msgstr "Cerca %(field)s per: %(value)s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1252 #, python-format msgid "Delete this file" -msgstr "" +msgstr "Cancella questo file" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:109 #, python-format msgid "Create Database" -msgstr "" +msgstr "Crea database" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt_BR.po b/addons/web/i18n/pt_BR.po index f8935f2490f..066b5cf5425 100644 --- a/addons/web/i18n/pt_BR.po +++ b/addons/web/i18n/pt_BR.po @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-12-07 21:03+0000\n" -"Last-Translator: Luiz Fernando M.França (Sig Informática) \n" +"PO-Revision-Date: 2012-12-11 17:27+0000\n" +"Last-Translator: Fábio Martinelli - http://zupy.com.br " +"\n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-08 05:21+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:54+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: web #. openerp-web @@ -29,7 +30,7 @@ msgstr "Idioma padrão:" #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "%d minutes ago" -msgstr "%d minutos atrás" +msgstr "há %d minutos" #. module: web #. openerp-web @@ -1547,7 +1548,7 @@ msgstr "Campo desconhecido %s no domínio %s" #: code:addons/web/static/src/js/views.js:1421 #, python-format msgid "Node [%s] is not a JSONified XML node" -msgstr "" +msgstr "O Nó [%s] não é um nó no formato XML JSONified" #. module: web #. openerp-web @@ -2050,7 +2051,7 @@ msgstr "'%s' não é uma data válida" #: code:addons/web/static/src/js/views.js:1471 #, python-format msgid "Could not find a DOM Parser: %s" -msgstr "" +msgstr "Não foi possível encontrar um Interpretador DOM: %s" #. module: web #. openerp-web diff --git a/addons/web_calendar/i18n/it.po b/addons/web_calendar/i18n/it.po index ad1236aad6d..e92cce865b4 100644 --- a/addons/web_calendar/i18n/it.po +++ b/addons/web_calendar/i18n/it.po @@ -8,63 +8,63 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-30 18:13+0000\n" -"PO-Revision-Date: 2012-02-16 21:55+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-11 07:35+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-01 05:21+0000\n" -"X-Generator: Launchpad (build 16319)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:54+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:151 #, python-format msgid "New event" -msgstr "" +msgstr "Nuovo evento" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:154 #, python-format msgid "Details" -msgstr "" +msgstr "Dettagli" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:152 #, python-format msgid "Save" -msgstr "" +msgstr "Salva" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:99 #, python-format msgid "Calendar view has a 'date_delay' type != float" -msgstr "" +msgstr "La vista calendario ha un campo \"date_delay\" non di tipo float" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:147 #, python-format msgid "Today" -msgstr "" +msgstr "Oggi" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:149 #, python-format msgid "Week" -msgstr "" +msgstr "Settimana" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:161 #, python-format msgid "Full day" -msgstr "" +msgstr "Tutto il giorno" #. module: web_calendar #. openerp-web @@ -72,14 +72,14 @@ msgstr "" #: code:addons/web_calendar/static/src/js/calendar.js:172 #, python-format msgid "Description" -msgstr "" +msgstr "Descrizione" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:158 #, python-format msgid "Event will be deleted permanently, are you sure?" -msgstr "" +msgstr "L'evento sarà eliminato permanentemente, siete sicuri?" #. module: web_calendar #. openerp-web @@ -94,56 +94,56 @@ msgstr " " #: code:addons/web_calendar/static/src/js/calendar.js:171 #, python-format msgid "Date" -msgstr "" +msgstr "Data" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:468 #, python-format msgid "Edit: " -msgstr "" +msgstr "Modifica: " #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:148 #, python-format msgid "Day" -msgstr "" +msgstr "Giorno" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:155 #, python-format msgid "Edit" -msgstr "" +msgstr "Modifica" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:167 #, python-format msgid "Enabled" -msgstr "" +msgstr "Abilitato" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:164 #, python-format msgid "Do you want to edit the whole set of repeated events?" -msgstr "" +msgstr "Volete modificare l'intero set di eventi ricorsivi?" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:80 #, python-format msgid "Filter" -msgstr "" +msgstr "Filtro" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:165 #, python-format msgid "Repeat event" -msgstr "" +msgstr "Evento ricorsivo" #. module: web_calendar #. openerp-web @@ -151,56 +151,56 @@ msgstr "" #: code:addons/web_calendar/static/src/js/calendar.js:178 #, python-format msgid "Agenda" -msgstr "" +msgstr "Agenda" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:160 #, python-format msgid "Time period" -msgstr "" +msgstr "Periodo di tempo" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:156 #, python-format msgid "Delete" -msgstr "" +msgstr "Elimina" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:150 #, python-format msgid "Month" -msgstr "" +msgstr "Mese" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:166 #, python-format msgid "Disabled" -msgstr "" +msgstr "Disabilitato" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:433 #, python-format msgid "Create: " -msgstr "" +msgstr "Crea: " #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:175 #, python-format msgid "Year" -msgstr "" +msgstr "Anno" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:153 #, python-format msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: web_calendar #. openerp-web @@ -214,7 +214,7 @@ msgstr "Calendario" #: code:addons/web_calendar/static/src/js/calendar.js:91 #, python-format msgid "Calendar view has not defined 'date_start' attribute." -msgstr "" +msgstr "La vista calendario non ha definito l'attributo 'data_start'" #~ msgid "Navigator" #~ msgstr "Navigatore" diff --git a/addons/web_linkedin/i18n/es.po b/addons/web_linkedin/i18n/es.po new file mode 100644 index 00000000000..d6365593331 --- /dev/null +++ b/addons/web_linkedin/i18n/es.po @@ -0,0 +1,142 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:54+0000\n" +"PO-Revision-Date: 2012-12-11 22:49+0000\n" +"Last-Translator: lambdasoftware \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "here:" +msgstr "" + +#. module: web_linkedin +#: field:sale.config.settings,api_key:0 +msgid "API Key" +msgstr "Clave API" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:249 +#, python-format +msgid "No results found" +msgstr "No se obtuvieron resultados" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:84 +#, python-format +msgid "Ok" +msgstr "Aceptar" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Log into LinkedIn." +msgstr "Acceda a LinkedIn." + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:13 +#, python-format +msgid "People" +msgstr "Personas" + +#. module: web_linkedin +#: model:ir.model,name:web_linkedin.model_sale_config_settings +msgid "sale.config.settings" +msgstr "sale.config.settings" + +#. module: web_linkedin +#: field:sale.config.settings,server_domain:0 +msgid "unknown" +msgstr "desconocido" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "https://www.linkedin.com/secure/developer" +msgstr "https://www.linkedin.com/secure/developer" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:15 +#, python-format +msgid "Companies" +msgstr "Compañías" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "API key" +msgstr "Clave API" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Copy the" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:181 +#, python-format +msgid "LinkedIn search" +msgstr "Búsqueda en LinkedIn" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:31 +#, python-format +msgid "" +"LinkedIn access was not enabled on this server.\n" +" Please ask your administrator to configure it in Settings > " +"Configuration > Sales > Social Network Integration." +msgstr "" +"El acceso a LinkedIn no ha sido habilitado en este servidor.\n" +" Por favor consulte con su administrador como configurarlo en Ajustes > " +"Configuración > Ventas > Integración de redes sociales." + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "" +"To use the LinkedIn module with this database, an API Key is required. " +"Please follow this procedure:" +msgstr "" +"Para usar LinkedIn en esta base de datos, necesita una clave API. Por favor " +"siga este procedimiento:" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:82 +#, python-format +msgid "LinkedIn is not enabled" +msgstr "LinkedIn no está habilitado" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Add a new application and fill the form:" +msgstr "Añada una aplicación y rellene el formulario:" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Go to this URL:" +msgstr "Ir a este enlace:" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "The programming tool is Javascript" +msgstr "La herramienta de desarrollo es Javascript" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "JavaScript API Domain:" +msgstr "" diff --git a/addons/web_linkedin/i18n/it.po b/addons/web_linkedin/i18n/it.po new file mode 100644 index 00000000000..e4c95a7ca2c --- /dev/null +++ b/addons/web_linkedin/i18n/it.po @@ -0,0 +1,137 @@ +# Italian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:54+0000\n" +"PO-Revision-Date: 2012-12-11 08:53+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-12 04:41+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "here:" +msgstr "qui" + +#. module: web_linkedin +#: field:sale.config.settings,api_key:0 +msgid "API Key" +msgstr "Chiave API" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:249 +#, python-format +msgid "No results found" +msgstr "Nessun risultato trovato" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:84 +#, python-format +msgid "Ok" +msgstr "Ok" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Log into LinkedIn." +msgstr "Log in su LinkedIn" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:13 +#, python-format +msgid "People" +msgstr "Persone" + +#. module: web_linkedin +#: model:ir.model,name:web_linkedin.model_sale_config_settings +msgid "sale.config.settings" +msgstr "sale.config.settings" + +#. module: web_linkedin +#: field:sale.config.settings,server_domain:0 +msgid "unknown" +msgstr "sconosciuto" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "https://www.linkedin.com/secure/developer" +msgstr "https://www.linkedin.com/secure/developer" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:15 +#, python-format +msgid "Companies" +msgstr "Aziende" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "API key" +msgstr "Chiave API" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Copy the" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:181 +#, python-format +msgid "LinkedIn search" +msgstr "Ricerca LinkedIn" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:31 +#, python-format +msgid "" +"LinkedIn access was not enabled on this server.\n" +" Please ask your administrator to configure it in Settings > " +"Configuration > Sales > Social Network Integration." +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "" +"To use the LinkedIn module with this database, an API Key is required. " +"Please follow this procedure:" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:82 +#, python-format +msgid "LinkedIn is not enabled" +msgstr "LinkedIn non è abilitato" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Add a new application and fill the form:" +msgstr "Aggiungi una nuova applicazione e compila il form:" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Go to this URL:" +msgstr "Vai all'URL:" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "The programming tool is Javascript" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "JavaScript API Domain:" +msgstr "Dominio API JavaScript:" diff --git a/addons/web_view_editor/i18n/it.po b/addons/web_view_editor/i18n/it.po new file mode 100644 index 00000000000..9a0e71227b6 --- /dev/null +++ b/addons/web_view_editor/i18n/it.po @@ -0,0 +1,184 @@ +# Italian translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-30 18:13+0000\n" +"PO-Revision-Date: 2012-12-11 07:26+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-12 04:54+0000\n" +"X-Generator: Launchpad (build 16361)\n" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:164 +#, python-format +msgid "The following fields are invalid :" +msgstr "I seguenti campi non sono validi:" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:63 +#, python-format +msgid "Create" +msgstr "Crea" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:986 +#, python-format +msgid "New Field" +msgstr "Nuovo Campo" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:386 +#, python-format +msgid "Do you really wants to create an inherited view here?" +msgstr "Vuoi veramente creare una vista ereditata in questa posizione?" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:396 +#, python-format +msgid "Preview" +msgstr "Anteprima" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:183 +#, python-format +msgid "Do you really want to remove this view?" +msgstr "Vuoi veramente cancellare questa vista?" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:90 +#, python-format +msgid "Save" +msgstr "Salva" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:393 +#, python-format +msgid "Select an element" +msgstr "Seleziona un elemento" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:828 +#: code:addons/web_view_editor/static/src/js/view_editor.js:954 +#, python-format +msgid "Update" +msgstr "Aggiorna" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:263 +#, python-format +msgid "Please select view in list :" +msgstr "Prego selezionare una vista nella lista" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:37 +#, python-format +msgid "Manage Views (%s)" +msgstr "Gestisci Viste (%s)" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:13 +#, python-format +msgid "Manage Views" +msgstr "Gestisci Viste" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:825 +#: code:addons/web_view_editor/static/src/js/view_editor.js:951 +#, python-format +msgid "Properties" +msgstr "Proprietà" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:64 +#, python-format +msgid "Edit" +msgstr "Modifica" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:14 +#, python-format +msgid "Could not find current view declaration" +msgstr "Impossibile trovare la definizione della vista corrente" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:382 +#, python-format +msgid "Inherited View" +msgstr "Vista Ereditata" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:65 +#, python-format +msgid "Remove" +msgstr "Rimuovi" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:516 +#, python-format +msgid "Do you really want to remove this node?" +msgstr "Vuoi veramente rimuovere questo nodo?" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:390 +#, python-format +msgid "Can't Update View" +msgstr "Impossibile aggiornare la vista" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:379 +#, python-format +msgid "View Editor %d - %s" +msgstr "Editor Vista %d - %s" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:112 +#: code:addons/web_view_editor/static/src/js/view_editor.js:846 +#: code:addons/web_view_editor/static/src/js/view_editor.js:974 +#, python-format +msgid "Cancel" +msgstr "Annulla" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:66 +#: code:addons/web_view_editor/static/src/js/view_editor.js:413 +#, python-format +msgid "Close" +msgstr "Chiudi" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:88 +#, python-format +msgid "Create a view (%s)" +msgstr "Crea una vista (%s)" diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index 595eb78b9fa..32039b4e30a 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:45+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:37+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 936f9f179e1..3119314f541 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:46+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index fcfd03c5039..5b5d48f8905 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-10 15:22+0000\n" +"PO-Revision-Date: 2012-12-11 21:56+0000\n" "Last-Translator: krnkris \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-11 04:45+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -930,6 +930,33 @@ msgid "" "module named account_voucher.\n" " " msgstr "" +"\n" +"Könyvelési és pénzügyi számvitel.\n" +"====================================\n" +"\n" +"Pénzügyi és könyvelési modul ami tartalmazza:\n" +"--------------------------------------------\n" +" * Általános könyvelés\n" +" * Költség/Analízis számvitel\n" +" * Külsős könyvelés\n" +" * Adó kezelés\n" +" * Költségvetés\n" +" * Vevők és beszállítók számlái\n" +" * Banki kivonatok\n" +" * Partnerek egyeztetése\n" +"\n" +"Létrehoz a könyveléshez egy műszerfalat ami tartalmazza:\n" +"--------------------------------------------------\n" +" * Vevők számláinak jóváhagyás listáját\n" +" * Válalkozás analízist\n" +" * Grafikon az értékekről\n" +"\n" +"A főkönyvi kivonat átdolgozási folyamata végre lesz hajtva a megadott " +"pénzügyi jelentés alapján (sor mozgatások vagy csoportosítások a napló " +"alapján lesznek átdolgozva) \n" +"a pénzügyi évre vonatkozólag és elő lehet készíteni bizonylatot egy másik " +"modulla amit úgy hívnak, hogy account_voucher.\n" +" " #. module: base #: view:ir.model:0 @@ -1157,7 +1184,7 @@ msgstr "Email preferencia" #: code:addons/base/ir/ir_fields.py:196 #, python-format msgid "'%s' does not seem to be a valid date for field '%%(field)s'" -msgstr "" +msgstr "'%s' nem érvényes dátumnak néz ki a mezőhöz '%%(field)s'" #. module: base #: view:res.partner:0 @@ -1756,7 +1783,7 @@ msgstr "" #. module: base #: model:res.country,name:base.mf msgid "Saint Martin (French part)" -msgstr "" +msgstr "Saint Martin (francia oldal)" #. module: base #: model:ir.model,name:base.model_ir_exports @@ -1773,7 +1800,7 @@ msgstr "Nem létezik nyelv a \"%s\" kóddal" #: model:ir.module.category,name:base.module_category_social_network #: model:ir.module.module,shortdesc:base.module_mail msgid "Social Network" -msgstr "" +msgstr "Közösségi hálózat" #. module: base #: view:res.lang:0 @@ -1783,12 +1810,12 @@ msgstr "%Y - Év évszázaddal" #. module: base #: view:res.company:0 msgid "Report Footer Configuration" -msgstr "" +msgstr "Jelentés lábjegyzet beállítás" #. module: base #: field:ir.translation,comments:0 msgid "Translation comments" -msgstr "" +msgstr "Fordítási megjegyzések" #. module: base #: model:ir.module.module,description:base.module_lunch @@ -1814,6 +1841,27 @@ msgid "" "in their pockets, this module is essential.\n" " " msgstr "" +"\n" +"Az ebéd szervezésének alap modulja.\n" +"================================\n" +"\n" +"Több vállalkozás szokott rendelni szendvicset, pizzás és ételt, megszokott " +"beszállítóktól, a munkások, személyzet részére, hogy megkönnyítse és " +"szélesebbkörű választékot biztosítson az étkezésre. \n" +"\n" +"Azonban az ebéd beszerzéshez a vállalatnak pontos adminisztrációra van " +"szüksége, főként akkor, ha sok munkavállalója vagy sokféle a beszállító.\n" +"\n" +"Az \"ebéd rendelés\" modul lett létrehozva ennek a könnyebb felügyeletére és " +"a munkavállalóknak több lehetőséget és eszközt biztosítva. \n" +"\n" +"A teljes étkezési és beszerzési kezelésen túlmenően ez a modul lehetőséget " +"ajánl a képernyőn figyelemfelhívásra és gyors megrendelés kiválasztásra a " +"felhasználók által bevitt adatok alapján.\n" +"\n" +"Ha időt akar megtakarítani a személyzet, munkások részére és nem akarja, " +"hogy mindíg aprópénzt hordjanak a zsebükbe, akkor ez a modul hasznos lehet.\n" +" " #. module: base #: view:wizard.ir.model.menu.create:0 @@ -1851,7 +1899,7 @@ msgstr "" #. module: base #: help:res.partner,website:0 msgid "Website of Partner or Company" -msgstr "" +msgstr "Partner vagy cég weboldala" #. module: base #: help:base.language.install,overwrite:0 @@ -1897,7 +1945,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_sale msgid "Quotations, Sale Orders, Invoicing" -msgstr "" +msgstr "Árajánlat, Megrendelés, Számlázás" #. module: base #: field:res.users,login:0 @@ -1936,11 +1984,15 @@ msgid "" "Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" +"Kézi: Kézzel indított.\n" +"Automatikus: Mundíg futtatva lesz a rendszer újrakonfigurálásakkor.\n" +"Egyszeri kézi futtatás: Miután kézzel futtatva lett, át lesz állítva " +"autómatikusan elvégzett állapotra." #. module: base #: field:res.partner,image_small:0 msgid "Small-sized image" -msgstr "" +msgstr "Kis méretű ábra" #. module: base #: model:ir.module.module,shortdesc:base.module_stock @@ -2003,6 +2055,15 @@ msgid "" "Please keep in mind that you should review and adapt it with your " "Accountant, before using it in a live Environment.\n" msgstr "" +"\n" +"Ez a modul az osztrák alap könyvelési beállításhoz kell\n" +"\n" +"This module provides the standard Accounting Chart for Austria which is " +"based on the Template from BMF.gv.at.\n" +"=============================================================================" +"================================ \n" +"Please keep in mind that you should review and adapt it with your " +"Accountant, before using it in a live Environment.\n" #. module: base #: model:res.country,name:base.kg @@ -2021,6 +2082,14 @@ msgid "" "It assigns manager and user access rights to the Administrator and only user " "rights to the Demo user. \n" msgstr "" +"\n" +"Könyvelési hozzáférési jogosultságok\n" +"========================\n" +"Az admin felhasználónak teljes hozzáférést biztosít a könyvelési " +"tulajdonságokhoz mint naplótási tételek és a főkönyvi kivonatok.\n" +"\n" +"Kioszthatók vele a kezelési és felhasználói hozzáférési jogosultságok az " +"admin részére, valamint felhasználói jogok a Demo felhasználó részére. \n" #. module: base #: field:ir.attachment,res_id:0 @@ -2048,6 +2117,7 @@ msgstr "" #, python-format msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'" msgstr "" +"Nem értelmezhető érték '%s' a boolean mezőhöz '%%(field)s', feltételezve '%s'" #. module: base #: model:res.country,name:base.nl @@ -2062,7 +2132,7 @@ msgstr "" #. module: base #: selection:ir.translation,state:0 msgid "Translation in Progress" -msgstr "" +msgstr "Fordítás alatt" #. module: base #: model:ir.model,name:base.model_ir_rule @@ -2077,7 +2147,7 @@ msgstr "Napok" #. module: base #: model:ir.module.module,summary:base.module_fleet msgid "Vehicle, leasing, insurances, costs" -msgstr "" +msgstr "Gépjármű, lízing, biztosítás, költség" #. module: base #: view:ir.model.access:0 @@ -2308,7 +2378,7 @@ msgstr "Teljes elérés" #. module: base #: view:base.language.export:0 msgid "The next step depends on the file format:" -msgstr "" +msgstr "A következő lépés a fájl formátumától függ:" #. module: base #: model:ir.module.module,shortdesc:base.module_idea @@ -2328,7 +2398,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "PO(T) format: you should edit it with a PO editor such as" -msgstr "" +msgstr "PO(T) formátum: Szerkeszteni egy PO szerkesztővel lehez mint" #. module: base #: model:ir.ui.menu,name:base.menu_administration @@ -2352,7 +2422,7 @@ msgstr "Létrehozás / Írás / Másolás" #. module: base #: view:ir.sequence:0 msgid "Second: %(sec)s" -msgstr "" +msgstr "Másodperc: %(sec)s" #. module: base #: field:ir.actions.act_window,view_mode:0 @@ -2381,7 +2451,7 @@ msgstr "Koreai (KP)" #. module: base #: model:res.country,name:base.ax msgid "Åland Islands" -msgstr "" +msgstr "Åland szigetek" #. module: base #: field:res.company,logo:0 @@ -2422,7 +2492,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_tools msgid "Extra Tools" -msgstr "" +msgstr "További eszközök" #. module: base #: view:ir.attachment:0 @@ -2577,6 +2647,36 @@ msgid "" "\n" " " msgstr "" +"\n" +" \n" +"Belga lokalizáció a bejövő és kimenő számlákhoz\n" +" \n" +"Belgian localization for in- and outgoing invoices (prereq to " +"account_coda):\n" +"============================================================================" +"\n" +" - Rename 'reference' field labels to 'Communication'\n" +" - Add support for Belgian Structured Communication\n" +"\n" +"A Structured Communication can be generated automatically on outgoing " +"invoices according to the following algorithms:\n" +"-----------------------------------------------------------------------------" +"----------------------------------------\n" +" 1) Random : +++RRR/RRRR/RRRDD+++\n" +" **R..R =** Random Digits, **DD =** Check Digits\n" +" 2) Date : +++DOY/YEAR/SSSDD+++\n" +" **DOY =** Day of the Year, **SSS =** Sequence Number, **DD =** Check " +"Digits\n" +" 3) Customer Reference +++RRR/RRRR/SSSDDD+++\n" +" **R..R =** Customer Reference without non-numeric characters, **SSS " +"=** Sequence Number, **DD =** Check Digits \n" +" \n" +"The preferred type of Structured Communication and associated Algorithm can " +"be\n" +"specified on the Partner records. A 'random' Structured Communication will\n" +"generated if no algorithm is specified on the Partner record. \n" +"\n" +" " #. module: base #: model:res.country,name:base.pl @@ -2663,6 +2763,8 @@ msgid "" "View type: Tree type to use for the tree view, set to 'tree' for a " "hierarchical tree view, or 'form' for a regular list view" msgstr "" +"Nézet típus: Fa típus a fa nézethez, állítsa 'fa' értékre a rangsoros fa " +"nézethez, vagy 'forma' értékre az általános nézethez" #. module: base #: sql_constraint:ir.ui.view_sc:0 @@ -2715,6 +2817,28 @@ msgid "" "Print product labels with barcode.\n" " " msgstr "" +"\n" +"Ez az OpenERP alap modulja a termékek és árlisták kezeléséhez.\n" +"========================================================================\n" +"\n" +"Termékek támogatása veriációk, különböző beárazási eszközök, beszállítói " +"információk,\n" +"raktárkészlet/megrendelés elkészítés, különböző mértékegységek, csomagolás " +"és tulajdonságok.\n" +"\n" +"Árlista támogatás:\n" +"-------------------\n" +" * Több-szintű árengedmény (termékenként, kategóriánként, mennyiségekre)\n" +" * Ár számítása különböző feltételek alapján:\n" +" * Másik árlista\n" +" * Költség ár\n" +" * Lista ár\n" +" * Beszállítói árlista\n" +"\n" +"Árlista kedvezmény termékekként és/vagy partnerekként.\n" +"\n" +"Bárkódos termék cimke nyomtatása.\n" +" " #. module: base #: model:ir.module.module,description:base.module_account_analytic_default @@ -2732,6 +2856,18 @@ msgid "" " * Date\n" " " msgstr "" +"\n" +"Analitikai számla alap értékeinek beállítása.\n" +"==============================================\n" +"\n" +"Autómatikus analitika számlák kiválasztása a következő kritériumok alapján:\n" +"---------------------------------------------------------------------\n" +" * Termék\n" +" * Partner\n" +" * Felhasználó\n" +" * Válalkozás\n" +" * Dátum\n" +" " #. module: base #: field:res.company,rml_header1:0 @@ -2760,7 +2896,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth_signup msgid "Signup with OAuth2 Authentication" -msgstr "" +msgstr "OAuth2 hitelesítéssel való belépés" #. module: base #: selection:ir.model,state:0 @@ -2787,7 +2923,7 @@ msgstr "Görög / Ελληνικά" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Egyéni lábjegyzet" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm @@ -2821,6 +2957,13 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"USA könyvelési modul\n" +"\n" +"\n" +"United States - Chart of accounts.\n" +"==================================\n" +" " #. module: base #: field:ir.actions.act_url,target:0 @@ -2855,7 +2998,7 @@ msgstr "Gyorsbillentyű Neve" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Cím kitöltése" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2941,12 +3084,15 @@ msgid "" "Module to attach a google document to any model.\n" "================================================\n" msgstr "" +"\n" +"Modul a google dokumentumok bármely modellhez való hozzáadásához.\n" +"================================================\n" #. module: base #: code:addons/base/ir/ir_fields.py:334 #, python-format msgid "Found multiple matches for field '%%(field)s' (%d matches)" -msgstr "" +msgstr "Több találatot talált a mezőhöz '%%(field)s' (%d találatok)" #. module: base #: selection:base.language.install,lang:0 @@ -2965,6 +3111,16 @@ msgid "" "\n" " " msgstr "" +"\n" +"Perui könyvelési modul\n" +"\n" +"Peruvian accounting chart and tax localization. According the PCGE 2010.\n" +"========================================================================\n" +"\n" +"Plan contable peruano e impuestos de acuerdo a disposiciones vigentes de la\n" +"SUNAT 2011 (PCGE 2010).\n" +"\n" +" " #. module: base #: view:ir.actions.server:0 @@ -2980,7 +3136,7 @@ msgstr "Érvelés elküldve az ügyfél részére a nézet hozzáfüzéssel egy #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Kapcsolatok, Emberek és Vállalatok" #. module: base #: model:res.country,name:base.tt @@ -3013,7 +3169,7 @@ msgstr "Igazgató" #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Bocsánat, nincs jogosultsága ehhez a dokumentumhoz." #. module: base #: model:res.country,name:base.py @@ -3028,7 +3184,7 @@ msgstr "Fidzsi" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "Report Xml" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -3057,6 +3213,30 @@ msgid "" "* Purchase Analysis\n" " " msgstr "" +"\n" +"A vevői megrendelések termék igényeinek könnyű kezeléséhez\n" +"==================================================\n" +"\n" +"Vásárlói kezelés lehetővé teszi a beszállítók árajánlatainak nyomon " +"követését és vásárlói megrendeléssé való átalakítását ha szükséges.\n" +"OpenERP rendelkezik egy pár lehetőséggel a számlák figyelésére és a " +"megrendelt áruk vevő általi átvételének nyomon követésére. Rész-" +"szállításokat is tud kezelni az OpenERP, így nyomon követheti azokat a " +"termékeket, melyeket még ki kell szálítani a megrendelés szerint, ehhez " +"automatikusan tud hozzárendelni emlékeztetőt.\n" +"\n" +"OpenERP alkatrész kezelés szabálya megengedi a rendszernek, hogy sablonból " +"rendelést generáljon autómatikusan, vagy beállíthatja, hogy az egészet a " +"termelés tényleges igénynek megfelelően folyamat vezérléssel hajtsa végre.\n" +"\n" +"Dashboard / Műszerfal a beszerzés kezelés jelentés ezt tartalmazza:\n" +"---------------------------------------------------------\n" +"* Árajánlat kérések\n" +"* Jóváhagyásra váró megrendelések \n" +"* Kategória szerinti megrendelések havi bontásban\n" +"* Beérkezés analízis\n" +"* Megrendelés analízis\n" +" " #. module: base #: model:ir.model,name:base.model_ir_actions_act_window_close @@ -3089,6 +3269,18 @@ msgid "" " * Unlimited \"Group By\" levels (not stacked), two cross level analysis " "(stacked)\n" msgstr "" +"\n" +"Web kliens grafikon néztek.\n" +"===========================\n" +"\n" +" * Elemzés nézeben de dinamikusan változtatható a bemutató\n" +" * Grafikon típusok: lapos, vonalas, területi, oszlopos, radar\n" +" * Öszerakott/Különálló a területekre és az oszlopokra\n" +" * Feliratok: felül, belül (fent/balra), nem látható\n" +" * Tulajdonság: letölthető formátumok PNG vagy CSV, adat háló böngészése, " +"megjelenítés elforgatása\n" +" * Határtalan \"Csoportonkénti\" szintek (különálló), két kereszt szintű " +"analízis (öszerakott)\n" #. module: base #: view:res.groups:0 @@ -3124,12 +3316,28 @@ msgid "" " * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n" " " msgstr "" +"\n" +"Belga fizetési modul\n" +"\n" +"Belgian Payroll Rules.\n" +"======================\n" +"\n" +" * Employee Details\n" +" * Employee Contracts\n" +" * Passport based Contract\n" +" * Allowances/Deductions\n" +" * Allow to configure Basic/Gross/Net Salary\n" +" * Employee Payslip\n" +" * Monthly Payroll Register\n" +" * Integrated with Holiday Management\n" +" * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n" +" " #. module: base #: code:addons/base/ir/ir_fields.py:175 #, python-format msgid "'%s' does not seem to be an integer for field '%%(field)s'" -msgstr "" +msgstr "'%s' úgy tűnik nem egész szám ehhez a mezőhöz '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -3167,6 +3375,27 @@ msgid "" "purchase price and fixed product standard price are booked on a separate \n" "account." msgstr "" +"\n" +"Ez a modul támogatja az Anglo-Saxon /angol-amerikai/ könyvelési módszert a " +"könyvelés logikáját megváltoztatva a tőzsde tranzakciókra.\n" +"=============================================================================" +"========================================\n" +"\n" +"Az eltérés az Anglo-Saxon könyvelési országok és a Rhine \n" +"(vagy a kontinentális/Európai könyvelési) országok közt az, hogy a " +"költségnél az eladott árukkal számol\n" +"ellenben a költségek az eladások utánnal. Az Anglo-Saxons könyvelés akkor " +"veszi aköltséget\n" +"amikor kiállította a számlát, az Európai könyvelés akkor veszi a költséget\n" +"amikor az árut szállításba adja.\n" +"\n" +"Ez a modul feladatod ad egy időközi számlának, hogy elraktározza\n" +"a kiszállított áru értékét ami visszakönyveli ennek az időközi\n" +"számlának az értékét a számla kiállításakor az adós/tartozás vagy a " +"hitelezési\n" +"számlára. Másodsorban, a tényleges vételi ár és\n" +"az állandó termék általános ára közti árkülönbözetet lefoglalja egy\n" +"elkülönített számlán." #. module: base #: model:res.country,name:base.si @@ -3366,7 +3595,7 @@ msgstr "Ismeretlen jelentés tipus: %s" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Kiadások érvényesítése, Számlázás" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3376,6 +3605,12 @@ msgid "" "==========================================\n" " " msgstr "" +"\n" +"Belga bérszámfejtés könyvelési adatok\n" +"\n" +"Accounting Data for Belgian Payroll Rules.\n" +"==========================================\n" +" " #. module: base #: model:res.country,name:base.am @@ -3425,6 +3660,31 @@ msgid "" " payslip interface, but not in the payslip report\n" " " msgstr "" +"\n" +"Francia bérszámfejtés könyvelési adatok\n" +"\n" +"French Payroll Rules.\n" +"=====================\n" +"\n" +" - Configuration of hr_payroll for French localization\n" +" - All main contributions rules for French payslip, for 'cadre' and 'non-" +"cadre'\n" +" - New payslip report\n" +"\n" +"TODO :\n" +"------\n" +" - Integration with holidays module for deduction and allowance\n" +" - Integration with hr_payroll_account for the automatic " +"account_move_line\n" +" creation from the payslip\n" +" - Continue to integrate the contribution. Only the main contribution " +"are\n" +" currently implemented\n" +" - Remake the report under webkit\n" +" - The payslip.line with appears_in_payslip = False should appears in " +"the\n" +" payslip interface, but not in the payslip report\n" +" " #. module: base #: model:res.country,name:base.se @@ -3462,12 +3722,30 @@ msgid "" " - Yearly Salary by Head and Yearly Salary by Employee Report\n" " " msgstr "" +"\n" +"Indiai bérszámfejtés szabályok\n" +"\n" +"Indian Payroll Salary Rules.\n" +"============================\n" +"\n" +" -Configuration of hr_payroll for India localization\n" +" -All main contributions rules for India payslip.\n" +" * New payslip report\n" +" * Employee Contracts\n" +" * Allow to configure Basic / Gross / Net Salary\n" +" * Employee PaySlip\n" +" * Allowance / Deduction\n" +" * Integrated with Holiday Management\n" +" * Medical Allowance, Travel Allowance, Child Allowance, ...\n" +" - Payroll Advice and Report\n" +" - Yearly Salary by Head and Yearly Salary by Employee Report\n" +" " #. module: base #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Hiányzó dokumentum(ok)" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3482,6 +3760,8 @@ msgid "" "For more details about translating OpenERP in your language, please refer to " "the" msgstr "" +"Az OpenERP saját nyelvére való fordításának további részleteihez, kérem " +"hivatkozzon erre" #. module: base #: field:res.partner,image:0 @@ -3504,7 +3784,7 @@ msgstr "Naptár" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Tudás" #. module: base #: field:workflow.activity,signal_send:0 @@ -3608,6 +3888,27 @@ msgid "" "database,\n" " but in the servers rootpad like /server/bin/filestore.\n" msgstr "" +"\n" +"Ez egy teljes dokumentum kezelő rendszer.\n" +"==============================================\n" +"\n" +" * Felhasználó hitelesítés\n" +" * Dokumentum indexálás:- .pptx és .docx fájlok nem támogatottak Windows " +"felületen.\n" +" * Dashboard/Műszerfal a dokumentumhoz beleétve:\n" +" * Új fájlok (lista)\n" +" * Fájlok forrás típusa szerint (grafikon)\n" +" * Fájlok partnerek szerint (grafikon)\n" +" * Fájlo terjedelem havi bontásban (grafikon)\n" +"\n" +"FIGYELEM:\n" +"----------\n" +" - Ha ezt a modult telepíti egy működő vállalati rendszerben mely " +"rendelkezik \n" +" adatbázisba mentett PDF fájlokkal, akkor azokat el fogja veszíteni.\n" +" - Ha telepíti ezt a modult, akkor a PDF-ek nem lesznek többet az " +"adatbázisban tárolva,\n" +" hanem a szerveren egy gyökérszerkezetben mint /server/bin/filestore.\n" #. module: base #: help:res.currency,name:0 @@ -3670,7 +3971,7 @@ msgstr "workflow.activity" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Exportálás kész" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3699,7 +4000,7 @@ msgstr "Finn / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Rendszer tulajdonságok" #. module: base #: field:ir.sequence,prefix:0 @@ -3750,12 +4051,12 @@ msgstr "Válasszon egy importálandó modul csomagot (.zip file):" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Személyes" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Modulok Exportálása" #. module: base #: model:res.country,name:base.mt @@ -3768,6 +4069,8 @@ msgstr "Málta" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Csak a következő jogosultsági szintekkel rendelkező felhasználók végezhetik " +"ezt el" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3858,7 +4161,7 @@ msgstr "Antarktisz" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Személyek" #. module: base #: view:base.language.import:0 @@ -3918,7 +4221,7 @@ msgstr "Különböző szabályok egymás közti kölcsönhatásai" #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Jelentés lábléc" #. module: base #: selection:res.lang,direction:0 @@ -3928,7 +4231,7 @@ msgstr "Jobbról-balra" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (Holland rész))" #. module: base #: view:ir.actions.act_window:0 @@ -4037,7 +4340,7 @@ msgstr "Urdu / اردو" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Hozzáférés megtagadva" #. module: base #: field:res.company,name:0 @@ -4097,11 +4400,23 @@ msgid "" "If you need to manage your meetings, you should install the CRM module.\n" " " msgstr "" +"\n" +"Ez egy teljes naptár rendszer.\n" +"========================================\n" +"\n" +"Támogatja::\n" +"------------\n" +" - A naptári eseményeket\n" +" - Visszatérő eseményeket\n" +"\n" +"Ha rendszerezni akarja a találkozóit, akkor telepíteni kell a \n" +"ügyfélkapcsolat-kezelés (Customer Relationship Management - CRM) modult.\n" +" " #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Jersey" #. module: base #: model:ir.module.module,description:base.module_auth_anonymous @@ -4111,6 +4426,10 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"Névtelen hozzáférés engedélyezése az OpenERP-hez.\n" +"==================================\n" +" " #. module: base #: view:res.lang:0 @@ -4130,7 +4449,7 @@ msgstr "%x - Pontos dátum." #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Címke" #. module: base #: view:res.lang:0 @@ -4155,7 +4474,7 @@ msgstr "Mindent leállít" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "" +msgstr "Papír Formátum" #. module: base #: model:ir.module.module,description:base.module_note_pad @@ -4168,6 +4487,13 @@ msgid "" "invite.\n" "\n" msgstr "" +"\n" +"Ez a modul az OpenERP belső feljegyzéseit frissíti egy külső szerkesztővel\n" +"===================================================================\n" +"\n" +"Haszálja a szöveges feljegyzései, következő maghívott felhasználó általi, " +"valós idejű frissítéséhez.\n" +"\n" #. module: base #: code:addons/base/module/module.py:609 @@ -4387,6 +4713,20 @@ msgid "" "comptable\n" "Seddik au cours du troisième trimestre 2010." msgstr "" +"\n" +"MAROKKÓ könyvelési modul\n" +"\n" +"This is the base module to manage the accounting chart for Maroc.\n" +"=================================================================\n" +"\n" +"Ce Module charge le modèle du plan de comptes standard Marocain et permet " +"de\n" +"générer les états comptables aux normes marocaines (Bilan, CPC (comptes de\n" +"produits et charges), balance générale à 6 colonnes, Grand livre " +"cumulatif...).\n" +"L'intégration comptable a été validé avec l'aide du Cabinet d'expertise " +"comptable\n" +"Seddik au cours du troisième trimestre 2010." #. module: base #: help:ir.module.module,auto_install:0 @@ -4439,12 +4779,12 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_localization_account_charts msgid "Account Charts" -msgstr "" +msgstr "Könyvelési grafikonok" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Események szervezése" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4472,7 +4812,7 @@ msgstr "Alap mező" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Gépjárművek és szerződései kezelése" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4528,7 +4868,7 @@ msgstr "Alapértelmezett" #. module: base #: model:ir.module.module,summary:base.module_lunch msgid "Lunch Order, Meal, Food" -msgstr "" +msgstr "Ebéd megrendelés, Étkezés, Élelmiszer" #. module: base #: view:ir.model.fields:0 @@ -4645,7 +4985,7 @@ msgstr "'kód'-nak egyedinek kell lennie." #. module: base #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Knowledge Management System" -msgstr "" +msgstr "Tudás Kezelő Rendszer" #. module: base #: view:workflow.activity:0 @@ -4681,6 +5021,20 @@ msgid "" " * Number Padding\n" " " msgstr "" +"\n" +"Ez a modul karbantartjaa a belső könyvelési bevitel számsorrend számait.\n" +"======================================================================\n" +"\n" +"Lehetővé teszi a könyvelési számsorrend karbantartás beállítását.\n" +"\n" +"Testreszabhatja a következő számsorrend tulajdonságokat:\n" +"-----------------------------------------------------------\n" +" * Prefix - Előtag\n" +" * Suffix - Utótag\n" +" * Következő szám\n" +" * Növekmény szám\n" +" * Szám szerkesztő\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_project_timesheet @@ -4708,6 +5062,10 @@ msgid "" "==========================\n" "\n" msgstr "" +"\n" +"OpenERP Web naptár nézet.\n" +"==========================\n" +"\n" #. module: base #: selection:base.language.install,lang:0 @@ -4828,7 +5186,7 @@ msgstr "Egyenlítői Guinea" #. module: base #: model:ir.module.module,shortdesc:base.module_web_api msgid "OpenERP Web API" -msgstr "" +msgstr "OpenERP Web API" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -4882,7 +5240,7 @@ msgstr "ir.actions.report.xml" #. module: base #: model:res.country,name:base.ps msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Palesztin Megszállt Területek" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch @@ -5035,27 +5393,27 @@ msgstr "Munkafolyamatok" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Beszerzés" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese (BR) / Português (BR)" -msgstr "" +msgstr "Portuguese (BR) / Português (BR)" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin msgid "ir.needaction_mixin" -msgstr "" +msgstr "ir.needaction_mixin" #. module: base #: view:base.language.export:0 msgid "This file was generated using the universal" -msgstr "" +msgstr "Ez a fájl az általánost használva generált" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "IT Services" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications @@ -5065,7 +5423,7 @@ msgstr "Különleges ipari alkalmazások" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Google Docs integráció" #. module: base #: code:addons/base/ir/ir_fields.py:328 @@ -5108,6 +5466,41 @@ msgid "" "So, that we can compare the theoretic delay and real delay. \n" " " msgstr "" +"\n" +"Ez a modul hozzáad állapotot, start_dátumot, stop_dátumot a gyártási " +"megrendelés végrehalytási soraihoz (a 'Gyártási megrendelések' fülön).\n" +"=============================================================================" +"===================================\n" +"\n" +"Állapot: terv, leigazolt, elvégzett, érévnytelenített\n" +"Ha elvégzett/visszaigazolt, érévnytelenített a gyártási rendelés akkor " +"megfelelő állapot sorokat\n" +"be kell állítani az állapothoz.\n" +"\n" +"Menük létrehozás:\n" +"-------------\n" +" **Gyátás** > **Gyártás** > **Gyártási megrendelések**\n" +"\n" +"Megtalálható a 'Gyártási megrendelések' soraiban a gyártási " +"megrendeléseknél.\n" +"\n" +"Adjon hozzá gombokat a forma nézetben a gyártási megrendelések " +"gyártásrendelés fül alatt:\n" +"-------------------------------------------------------------------------\n" +" * start (állítsa be a visszaigazolt állapotot), állítsa be az " +"indulási_dátumot\n" +" * stop (állítsa be az elvégzett állapotot), állítsa be a stop_dátumot\n" +" * Tervezettr állít (állítsa be a tervezett állapotot)\n" +" * érévnytelenít (állítsa be az érvénytelenít állapotot)\n" +"\n" +"Ha egy gyártási rendelés 'elvégezhetővé' válik, akkor 'visszaigazoltnak' " +"kell lennie.\n" +"Ha a gyártási megrendelés elkészült, akkor minden műveletnek elvégzettnek \n" +"kell lennie.\n" +"\n" +"A 'Munka óra' mező az a számított idő (stop dátum - start dátum).\n" +"Így össze tudjuk mérni a számított és e tényleges időt. \n" +" " #. module: base #: view:res.config.installer:0 @@ -5127,7 +5520,7 @@ msgstr "Lesotho" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", vagy az előnyben részesített szöveg szerkesztője" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -5169,7 +5562,7 @@ msgstr "Általános" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ftp msgid "Shared Repositories (FTP)" -msgstr "" +msgstr "Megosztott adattárak (FTP)" #. module: base #: model:res.country,name:base.sm @@ -5199,7 +5592,7 @@ msgstr "Mentés" #. module: base #: field:ir.actions.report.xml,report_xml:0 msgid "XML Path" -msgstr "" +msgstr "XML elérési útvonal" #. module: base #: model:res.country,name:base.bj @@ -5260,6 +5653,19 @@ msgid "" " \n" "%(country_code)s: the code of the country" msgstr "" +"Meg tudja adni a címzés szokásos módjának a formáját ami jellemző az " +"országára.\n" +"\n" +"Használhatja a python-stílusu sort a cím összes mezejéhez (például, " +"használja '%(street)s' az utca kiírásához valamint\n" +" \n" +"%(state_name)s: az állam nevéhez\n" +" \n" +"%(state_code)s: az állam kódjához\n" +" \n" +"%(country_name)s: az ország nevéhez\n" +" \n" +"%(country_code)s: az ország kódjához" #. module: base #: model:res.country,name:base.mu @@ -5281,7 +5687,7 @@ msgstr "Biztonság" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese / Português" -msgstr "" +msgstr "Portuguese / Português" #. module: base #: code:addons/base/ir/ir_model.py:364 @@ -5298,7 +5704,7 @@ msgstr "Csak ez a bank számla tartozik a vállalkozásához" #: code:addons/base/ir/ir_fields.py:338 #, python-format msgid "Unknown sub-field '%s'" -msgstr "" +msgstr "Ismeretlen al-mező '%s'" #. module: base #: model:res.country,name:base.za @@ -5330,7 +5736,7 @@ msgstr "Magyarország" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment msgid "Recruitment Process" -msgstr "" +msgstr "Toborzási folyamat" #. module: base #: model:res.country,name:base.br @@ -5371,7 +5777,7 @@ msgstr "Árfolyamok" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "E-mail sablonok" #. module: base #: model:res.country,name:base.sy @@ -5386,7 +5792,7 @@ msgstr "======================================================" #. module: base #: sql_constraint:ir.model:0 msgid "Each model must be unique!" -msgstr "" +msgstr "Minden modellnek különbözőnek kell lennie!" #. module: base #: model:ir.module.category,name:base.module_category_localization @@ -5402,6 +5808,10 @@ msgid "" "================\n" "\n" msgstr "" +"\n" +"Openerp Web API.\n" +"================\n" +"\n" #. module: base #: selection:res.request,state:0 @@ -5476,7 +5886,7 @@ msgstr "" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Fejléc/Lábjegyzet előnézet" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5487,7 +5897,7 @@ msgstr "Főmenü" #. module: base #: field:res.partner.bank,owner_name:0 msgid "Account Owner Name" -msgstr "" +msgstr "Számla tulajdonos neve" #. module: base #: code:addons/base/ir/ir_model.py:412 @@ -5511,17 +5921,17 @@ msgstr "Tizedes elválasztó" #: code:addons/orm.py:5245 #, python-format msgid "Missing required value for the field '%s'." -msgstr "" +msgstr "Hiányzik a megkövetelt érték ehhez a mezőhöz '%s'." #. module: base #: model:ir.model,name:base.model_res_partner_address msgid "res.partner.address" -msgstr "" +msgstr "res.partner.address" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Írási hozzáférési jogosultság" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5576,7 +5986,7 @@ msgstr "Bouvet-sziget" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Illesztő típus" #. module: base #: field:res.company,child_ids:0 @@ -5600,6 +6010,13 @@ msgid "" "wizard if the delivery is to be invoiced.\n" " " msgstr "" +"\n" +"Számla tündér a szállításhoz.\n" +"============================\n" +"\n" +"Ha termékeket szállít ki, ez a modul automatikusan elindítja a számlázó \n" +"varázslót, ha a szállítás még nem lett kiszámlázva.\n" +" " #. module: base #: selection:ir.translation,type:0 @@ -5637,6 +6054,10 @@ msgid "" "=======================\n" " " msgstr "" +"\n" +"Lehetővé tesz a felhasználók feliratkozását.\n" +"=======================\n" +" " #. module: base #: model:res.country,name:base.zm @@ -11374,7 +11795,7 @@ msgstr "A mező mérete nem lehet kisebb 1-nél!" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_operations msgid "Manufacturing Operations" -msgstr "" +msgstr "Gyártási műveletek" #. module: base #: view:base.language.export:0 @@ -13489,7 +13910,7 @@ msgstr "Spanyol - Könyvelés (PGCE 2008)" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking msgid "Picking Before Manufacturing" -msgstr "" +msgstr "Kiválasztás a gyártás előtt" #. module: base #: model:ir.module.module,summary:base.module_note_pad @@ -14441,6 +14862,8 @@ msgid "" "Lets you install various interesting but non-essential tools like Survey, " "Lunch and Ideas box." msgstr "" +"Lehetővé teszi, hogy telepítsen különböző érdekes, de nem alapvető " +"eszközöket, mint Felmérés, Ebédrendelés és Ötlet doboz." #. module: base #: selection:ir.module.module,state:0 @@ -15383,6 +15806,8 @@ msgid "" "Helps you manage your manufacturing processes and generate reports on those " "processes." msgstr "" +"Segít Önnek a gyártási folyamatok kezelésében és az azokhoz tartozó " +"jelentések létrehozásában." #. module: base #: help:ir.sequence,number_increment:0 diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index b7b9d50b453..14eda741185 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-09 12:05+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-11 13:28+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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: 2012-12-10 04:36+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -376,6 +376,8 @@ msgid "" "Database ID of record to open in form view, when ``view_mode`` is set to " "'form' only" msgstr "" +"ID record del database da aprire nella modalità form quando ``view_mode`` è " +"impostato a form solamente" #. module: base #: field:res.partner.address,name:0 @@ -546,7 +548,7 @@ msgstr "" #. module: base #: field:ir.model.relation,name:0 msgid "Relation Name" -msgstr "" +msgstr "Nome relazione" #. module: base #: view:ir.rule:0 @@ -601,7 +603,7 @@ msgstr "Guyana Francese" #. module: base #: model:ir.module.module,summary:base.module_hr msgid "Jobs, Departments, Employees Details" -msgstr "" +msgstr "Lavori, dipartimenti, dettagli impiegati" #. module: base #: model:ir.module.module,description:base.module_analytic @@ -617,6 +619,16 @@ msgid "" "that have no counterpart in the general financial accounts.\n" " " msgstr "" +"\n" +"Modulo per definire gli oggetti di contabilità analitica.\n" +"===============================================\n" +"\n" +"In OpenERP, i conti analitici sono collegati ai conti generali ma sono " +"trattati\n" +"in modo totalmente indipendente. Potete inserire divverenti varietà di " +"operazioni \n" +"analitichethe non hanno la contropartita nei conti generali finaziari.\n" +" " #. module: base #: field:ir.ui.view.custom,ref_id:0 @@ -848,6 +860,11 @@ msgid "" "This module provides the Integration of the LinkedIn with OpenERP.\n" " " msgstr "" +"\n" +"OpenERP Modulo web LindekIn.\n" +"============================\n" +"Questo modulo fornisce l'integrazione di LinkedIn con OpenERP.\n" +" " #. module: base #: help:ir.actions.act_window,src_model:0 @@ -927,7 +944,7 @@ msgstr "Sicurezza ed Autenticazione" #. module: base #: model:ir.module.module,shortdesc:base.module_web_calendar msgid "Web Calendar" -msgstr "" +msgstr "Calendario Web" #. module: base #: selection:base.language.install,lang:0 @@ -1179,7 +1196,7 @@ msgstr "Principato di Andorra" #. module: base #: field:ir.rule,perm_read:0 msgid "Apply for Read" -msgstr "" +msgstr "Applica per leggere" #. module: base #: model:res.country,name:base.mn @@ -1291,7 +1308,7 @@ msgstr "Isole Cayman" #. module: base #: view:ir.rule:0 msgid "Record Rule" -msgstr "" +msgstr "Regola record" #. module: base #: model:res.country,name:base.kr @@ -1319,7 +1336,7 @@ msgstr "Contribuenti" #. module: base #: field:ir.rule,perm_unlink:0 msgid "Apply for Delete" -msgstr "" +msgstr "Applica per eliminare" #. module: base #: selection:ir.property,type:0 @@ -1329,7 +1346,7 @@ msgstr "Carattere" #. module: base #: field:ir.module.category,visible:0 msgid "Visible" -msgstr "" +msgstr "Visibile" #. module: base #: model:ir.actions.client,name:base.action_client_base_menu @@ -1394,6 +1411,9 @@ msgid "" " for uploading to OpenERP's translation " "platform," msgstr "" +"Formato TGZ: questo è un archivio compresso contenente un file PO, " +"direttamente utilizzabile\n" +"per essere caricato su una piattaforma di traduzione di OpenERP" #. module: base #: view:res.lang:0 @@ -1420,7 +1440,7 @@ msgstr "Test" #. module: base #: field:ir.actions.report.xml,attachment:0 msgid "Save as Attachment Prefix" -msgstr "" +msgstr "Salva come prefisso allegato" #. module: base #: field:ir.ui.view_sc,res_id:0 @@ -1457,7 +1477,7 @@ msgstr "Haiti" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll msgid "French Payroll" -msgstr "" +msgstr "Busta paga francese" #. module: base #: view:ir.ui.view:0 @@ -1483,7 +1503,7 @@ msgstr "" #. module: base #: field:ir.module.category,parent_id:0 msgid "Parent Application" -msgstr "" +msgstr "Applicazione padre" #. module: base #: code:addons/base/res/res_users.py:135 @@ -1579,6 +1599,12 @@ msgid "" "=============\n" " " msgstr "" +"\n" +"Questo modulo aggiunge un menù reclami ed altre caratteristiche al vostro " +"portale, se sono installati i moduli reclami e portale .\n" +"=============================================================================" +"=============\n" +" " #. module: base #: model:ir.actions.act_window,help:base.action_res_partner_bank_account_form @@ -1606,7 +1632,7 @@ msgstr "" #. module: base #: model:res.country,name:base.mf msgid "Saint Martin (French part)" -msgstr "" +msgstr "Saint-Martin (Francia)" #. module: base #: model:ir.model,name:base.model_ir_exports @@ -1623,7 +1649,7 @@ msgstr "Nessuna esiste lingua con il codice \"%s\"" #: model:ir.module.category,name:base.module_category_social_network #: model:ir.module.module,shortdesc:base.module_mail msgid "Social Network" -msgstr "" +msgstr "Social network" #. module: base #: view:res.lang:0 @@ -1633,12 +1659,12 @@ msgstr "%Y - Anno con secolo." #. module: base #: view:res.company:0 msgid "Report Footer Configuration" -msgstr "" +msgstr "Configurazione piè pagina" #. module: base #: field:ir.translation,comments:0 msgid "Translation comments" -msgstr "" +msgstr "Commenti traduzione" #. module: base #: model:ir.module.module,description:base.module_lunch @@ -1676,6 +1702,8 @@ msgid "" "The field on the current object that links to the target object record (must " "be a many2one, or an integer field with the record ID)" msgstr "" +"Il campo per l'oggetto corrente che si collega al record oggetto di " +"destinazione (deve essere un many2one o un campo intero con l'ID record)" #. module: base #: model:ir.model,name:base.model_res_bank @@ -1699,7 +1727,7 @@ msgstr "" #. module: base #: help:res.partner,website:0 msgid "Website of Partner or Company" -msgstr "" +msgstr "Sito Web del Partner o dell'Azienda" #. module: base #: help:base.language.install,overwrite:0 @@ -1746,7 +1774,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_sale msgid "Quotations, Sale Orders, Invoicing" -msgstr "" +msgstr "Preventivi, Ordini di Vendita, Fatturazione" #. module: base #: field:res.users,login:0 @@ -1789,12 +1817,12 @@ msgstr "" #. module: base #: field:res.partner,image_small:0 msgid "Small-sized image" -msgstr "" +msgstr "Immagine (formato piccolo)" #. module: base #: model:ir.module.module,shortdesc:base.module_stock msgid "Warehouse Management" -msgstr "" +msgstr "Gestione Magazzino" #. module: base #: model:ir.model,name:base.model_res_request_link @@ -1822,7 +1850,7 @@ msgstr "Azioni Server" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_lu msgid "Luxembourg - Accounting" -msgstr "" +msgstr "Contabilità - Lussemburgo" #. module: base #: model:res.country,name:base.tp @@ -1870,6 +1898,14 @@ msgid "" "It assigns manager and user access rights to the Administrator and only user " "rights to the Demo user. \n" msgstr "" +"\n" +"Diritti di accesso contabilità\n" +"========================\n" +"Da all'utente amministratore accesso a tutte le caratteristiche contabili, " +"come elementi del giornale, piano dei conti.\n" +"\n" +"Assegna manager e diritti di accesso utente all'amministratore e solamente " +"diritti utente all'utente Demo. \n" #. module: base #: field:ir.attachment,res_id:0 @@ -1894,6 +1930,7 @@ msgstr "" #, python-format msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'" msgstr "" +"Valore sconosciuto '%s' per un campo booleano '%%(field)s', assuming '%s'" #. module: base #: model:res.country,name:base.nl @@ -1903,12 +1940,12 @@ msgstr "Olanda" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_event msgid "Portal Event" -msgstr "" +msgstr "Evento portale" #. module: base #: selection:ir.translation,state:0 msgid "Translation in Progress" -msgstr "" +msgstr "Traduzione in cordo" #. module: base #: model:ir.model,name:base.model_ir_rule @@ -1923,7 +1960,7 @@ msgstr "Giorni" #. module: base #: model:ir.module.module,summary:base.module_fleet msgid "Vehicle, leasing, insurances, costs" -msgstr "" +msgstr "Veicoli, Leasing, assicurazioni, costi" #. module: base #: view:ir.model.access:0 @@ -1955,7 +1992,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_process msgid "Enterprise Process" -msgstr "" +msgstr "Processo Aziendale" #. module: base #: help:res.partner,supplier:0 @@ -1963,6 +2000,9 @@ msgid "" "Check this box if this contact is a supplier. If it's not checked, purchase " "people will not see it when encoding a purchase order." msgstr "" +"Spuntare il riquadro se il contatto è un fornitore. Se non è spuntato, il " +"personale agli acquisti non lo vedrà durante la codifica dell'ordine " +"d'acquisto" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_evaluation @@ -2004,13 +2044,13 @@ msgstr "Genitore sinistra" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mrp msgid "Create Tasks on SO" -msgstr "" +msgstr "Crea attività su Ordine acquisto" #. module: base #: code:addons/base/ir/ir_model.py:316 #, python-format msgid "This column contains module data and cannot be removed!" -msgstr "" +msgstr "Questa colonna contiene dati modulo e non può essere rimossa!" #. module: base #: field:ir.attachment,res_model:0 @@ -2020,7 +2060,7 @@ msgstr "Modello allegato" #. module: base #: field:res.partner.bank,footer:0 msgid "Display on Reports" -msgstr "" +msgstr "Visualizza nei report" #. module: base #: model:ir.module.module,description:base.module_project_timesheet @@ -2107,7 +2147,7 @@ msgstr "%s (copia)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart msgid "Template of Charts of Accounts" -msgstr "" +msgstr "Modello di piano dei conti" #. module: base #: field:res.partner,type:0 @@ -2147,12 +2187,12 @@ msgstr "Percorso completo" #. module: base #: view:base.language.export:0 msgid "The next step depends on the file format:" -msgstr "" +msgstr "Il prossimo passo dipenderà dal formato del file:" #. module: base #: model:ir.module.module,shortdesc:base.module_idea msgid "Ideas" -msgstr "" +msgstr "Idee" #. module: base #: view:res.lang:0 @@ -2169,7 +2209,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "PO(T) format: you should edit it with a PO editor such as" -msgstr "" +msgstr "formato PO(T): è necessario modificarlo con un PO editor come" #. module: base #: model:ir.ui.menu,name:base.menu_administration @@ -2193,7 +2233,7 @@ msgstr "Crea / Scrivi / Copia" #. module: base #: view:ir.sequence:0 msgid "Second: %(sec)s" -msgstr "" +msgstr "Secondi: %(sec)s" #. module: base #: field:ir.actions.act_window,view_mode:0 @@ -2206,6 +2246,8 @@ msgid "" "Display this bank account on the footer of printed documents like invoices " "and sales orders." msgstr "" +"Mostra questo conto bancario nel piè pagina dei documenti stampati, come " +"fatture e ordini di vendita" #. module: base #: selection:base.language.install,lang:0 @@ -2220,7 +2262,7 @@ msgstr "Korean (KP) / 한국어 (KP)" #. module: base #: model:res.country,name:base.ax msgid "Åland Islands" -msgstr "" +msgstr "Åland Islands" #. module: base #: field:res.company,logo:0 @@ -2230,7 +2272,7 @@ msgstr "Logo" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cr msgid "Costa Rica - Accounting" -msgstr "" +msgstr "Contabilità - Costa Rica" #. module: base #: selection:ir.actions.act_url,target:0 @@ -2241,12 +2283,12 @@ msgstr "Nuova Finestra" #. module: base #: field:ir.values,action_id:0 msgid "Action (change only)" -msgstr "" +msgstr "Azione (cambiare solamente)" #. module: base #: model:ir.module.module,shortdesc:base.module_subscription msgid "Recurring Documents" -msgstr "" +msgstr "Documenti ricorrenti" #. module: base #: model:res.country,name:base.bs @@ -2256,12 +2298,12 @@ msgstr "Bahamas" #. module: base #: field:ir.rule,perm_create:0 msgid "Apply for Create" -msgstr "" +msgstr "Applica per creare" #. module: base #: model:ir.module.category,name:base.module_category_tools msgid "Extra Tools" -msgstr "" +msgstr "Strumenti extra" #. module: base #: view:ir.attachment:0 @@ -2288,7 +2330,7 @@ msgstr "Numero di moduli aggiornati" #. module: base #: field:ir.cron,function:0 msgid "Method" -msgstr "" +msgstr "Metodo" #. module: base #: view:workflow.activity:0 @@ -2328,6 +2370,7 @@ msgstr "" msgid "" "No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'" msgstr "" +"Nessun record trovato per %(field_type)s '%(value)s' nel campo '%%(field)s'" #. module: base #: model:ir.actions.act_window,help:base.action_ui_view @@ -2342,7 +2385,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_setup msgid "Initial Setup Tools" -msgstr "" +msgstr "Strumenti setup iniziale" #. module: base #: field:ir.actions.act_window,groups_id:0 @@ -2469,7 +2512,7 @@ msgstr "" #. module: base #: field:ir.mail_server,smtp_debug:0 msgid "Debugging" -msgstr "" +msgstr "Debugging" #. module: base #: model:ir.module.module,description:base.module_crm_helpdesk @@ -2492,6 +2535,8 @@ msgid "" "View type: Tree type to use for the tree view, set to 'tree' for a " "hierarchical tree view, or 'form' for a regular list view" msgstr "" +"Tipo di vista: Tree è usato per le viste elenco, imposta a 'tree' per una " +"vista strutturata (con eredità), oppure 'form' per una lista regolare" #. module: base #: sql_constraint:ir.ui.view_sc:0 @@ -2589,7 +2634,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth_signup msgid "Signup with OAuth2 Authentication" -msgstr "" +msgstr "Registrazione con autenticazione OAuth2" #. module: base #: selection:ir.model,state:0 @@ -2616,12 +2661,12 @@ msgstr "Greco / Ελληνικά" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Piè pagina personalizzato" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm msgid "Opportunity to Quotation" -msgstr "" +msgstr "Opportunità a Preventivo" #. module: base #: model:ir.module.module,description:base.module_sale_analytic_plans @@ -2643,6 +2688,10 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"Piano dei conti - USA\n" +"==================================\n" +" " #. module: base #: field:ir.actions.act_url,target:0 @@ -2657,17 +2706,17 @@ msgstr "Anguilla" #. module: base #: model:ir.actions.report.xml,name:base.report_ir_model_overview msgid "Model Overview" -msgstr "" +msgstr "Panoramica modello" #. module: base #: model:ir.module.module,shortdesc:base.module_product_margin msgid "Margins by Products" -msgstr "" +msgstr "Margini per prodotti" #. module: base #: model:ir.ui.menu,name:base.menu_invoiced msgid "Invoicing" -msgstr "" +msgstr "Fatturazione" #. module: base #: field:ir.ui.view_sc,name:0 @@ -2677,7 +2726,7 @@ msgstr "Nome Scorciatoia" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Indirizzo completo" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2744,12 +2793,12 @@ msgstr "" #: field:ir.translation,res_id:0 #: field:ir.values,res_id:0 msgid "Record ID" -msgstr "" +msgstr "ID record" #. module: base #: view:ir.filters:0 msgid "My Filters" -msgstr "" +msgstr "I miei filtri" #. module: base #: field:ir.actions.server,email:0 @@ -2763,12 +2812,15 @@ msgid "" "Module to attach a google document to any model.\n" "================================================\n" msgstr "" +"\n" +"Modulo per collegare Google Docs ad ogni modello.\n" +"================================================\n" #. module: base #: code:addons/base/ir/ir_fields.py:334 #, python-format msgid "Found multiple matches for field '%%(field)s' (%d matches)" -msgstr "" +msgstr "Trovati record multipli in base al campo '%%(field)s' (%d trovati)" #. module: base #: selection:base.language.install,lang:0 @@ -2797,12 +2849,12 @@ msgstr "Azione Server" #. module: base #: help:ir.actions.client,params:0 msgid "Arguments sent to the client along withthe view tag" -msgstr "" +msgstr "Argomenti inviato ai clienti con il tag vista" #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Contatti, persone e aziende" #. module: base #: model:res.country,name:base.tt @@ -2829,13 +2881,13 @@ msgstr "Esporta traduzioni" #: model:res.groups,name:base.group_sale_manager #: model:res.groups,name:base.group_tool_manager msgid "Manager" -msgstr "" +msgstr "Manager" #. module: base #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Spiacente, non avete i diritti di accesso a questo documento." #. module: base #: model:res.country,name:base.py @@ -2850,7 +2902,7 @@ msgstr "Fiji" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "Report XML" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -2915,13 +2967,13 @@ msgstr "" #. module: base #: view:res.groups:0 msgid "Inherited" -msgstr "" +msgstr "Ereditato" #. module: base #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "sì" #. module: base #: field:ir.model.fields,serialization_field_id:0 @@ -2951,7 +3003,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:175 #, python-format msgid "'%s' does not seem to be an integer for field '%%(field)s'" -msgstr "" +msgstr "'%s' non sembra un campo intero '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -2959,6 +3011,8 @@ msgid "" "Lets you install various tools to simplify and enhance OpenERP's report " "creation." msgstr "" +"Permette di installare una serie di strumenti per semplificare e potenziare " +"la creazione dei report in OpenERP" #. module: base #: view:res.lang:0 @@ -3010,7 +3064,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_linkedin msgid "LinkedIn Integration" -msgstr "" +msgstr "Integrazione con LinkedIn" #. module: base #: code:addons/orm.py:2021 @@ -3137,7 +3191,7 @@ msgstr "Attenzione: non puoi creare aziende ricorsive" #: view:res.users:0 #, python-format msgid "Application" -msgstr "" +msgstr "Applicazione" #. module: base #: model:res.groups,comment:base.group_hr_manager @@ -3164,7 +3218,7 @@ msgstr "" #. module: base #: field:ir.actions.client,params_store:0 msgid "Params storage" -msgstr "" +msgstr "Parametri deposito" #. module: base #: code:addons/base/module/module.py:499 @@ -3181,12 +3235,12 @@ msgstr "Cuba" #: code:addons/report_sxw.py:441 #, python-format msgid "Unknown report type: %s" -msgstr "" +msgstr "Tipo di report sconosciuto: %s" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Convalida spese, fatturazione" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3254,7 +3308,7 @@ msgstr "Svezia" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report File" -msgstr "" +msgstr "File report" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3287,7 +3341,7 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Documento(i) mancante" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3324,7 +3378,7 @@ msgstr "Calendario" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Knowledge" #. module: base #: field:workflow.activity,signal_send:0 @@ -3436,7 +3490,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_contract msgid "Employee Contracts" -msgstr "" +msgstr "Contratti impiegato" #. module: base #: view:ir.actions.server:0 @@ -3468,13 +3522,13 @@ msgstr "" #: code:addons/base/ir/ir_mail_server.py:238 #, python-format msgid "SMTP-over-SSL mode unavailable" -msgstr "" +msgstr "Modalità SMTP-over-SSL non disponibile" #. module: base #: model:ir.module.module,shortdesc:base.module_survey #: model:ir.ui.menu,name:base.next_id_10 msgid "Survey" -msgstr "" +msgstr "Sondaggio" #. module: base #: selection:base.language.install,lang:0 @@ -3489,7 +3543,7 @@ msgstr "workflow.activity" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Esportazione completata" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3518,7 +3572,7 @@ msgstr "Finnish / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Proprietà di sistema" #. module: base #: field:ir.sequence,prefix:0 @@ -3562,12 +3616,12 @@ msgstr "Seleziona il pacchetto per il modulo da importare (.zip file):" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Personale" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Moduli da esportare" #. module: base #: model:res.country,name:base.mt @@ -3580,6 +3634,8 @@ msgstr "Malta" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Solamente gli utenti con il seguente grado di accesso sono abilitati a fare " +"questo" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3660,7 +3716,7 @@ msgstr "" #. module: base #: help:ir.mail_server,smtp_host:0 msgid "Hostname or IP of SMTP server" -msgstr "" +msgstr "Hostname o IP del server SMTP" #. module: base #: model:res.country,name:base.aq @@ -3670,7 +3726,7 @@ msgstr "Antartide" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Persone" #. module: base #: view:base.language.import:0 @@ -3690,7 +3746,7 @@ msgstr "Formato Separatore" #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit msgid "Webkit Report Engine" -msgstr "" +msgstr "Motore report Webkit" #. module: base #: model:ir.ui.menu,name:base.next_id_9 @@ -3710,7 +3766,7 @@ msgstr "Mayotte" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_todo msgid "Tasks on CRM" -msgstr "" +msgstr "Attività su CRM" #. module: base #: help:ir.model.fields,relation_field:0 @@ -3724,13 +3780,13 @@ msgstr "" #. module: base #: view:ir.rule:0 msgid "Interaction between rules" -msgstr "" +msgstr "Integrazione tra le regole" #. module: base #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Piè di pagina del Report" #. module: base #: selection:res.lang,direction:0 @@ -3740,7 +3796,7 @@ msgstr "Da destra a sinistra" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (parte danese)" #. module: base #: view:ir.actions.act_window:0 @@ -3826,12 +3882,12 @@ msgstr "Togo" #: field:ir.actions.act_window,res_model:0 #: field:ir.actions.client,res_model:0 msgid "Destination Model" -msgstr "" +msgstr "Modello destinazione" #. module: base #: selection:ir.sequence,implementation:0 msgid "Standard" -msgstr "" +msgstr "Standard" #. module: base #: model:res.country,name:base.ru @@ -3849,7 +3905,7 @@ msgstr "Urdu / اردو" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Accesso negato" #. module: base #: field:res.company,name:0 @@ -3909,7 +3965,7 @@ msgstr "" #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Jersey" #. module: base #: model:ir.module.module,description:base.module_auth_anonymous @@ -3938,7 +3994,7 @@ msgstr "%x - Rappresentazione di data appropriata" #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Tag" #. module: base #: view:res.lang:0 @@ -3963,7 +4019,7 @@ msgstr "Ferma tutto" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "" +msgstr "Formato Carta" #. module: base #: model:ir.module.module,description:base.module_note_pad @@ -3990,7 +4046,7 @@ msgstr "" #. module: base #: model:res.country,name:base.sk msgid "Slovakia" -msgstr "" +msgstr "Slovakia" #. module: base #: model:res.country,name:base.nr @@ -4040,7 +4096,7 @@ msgstr "Montenegro" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail msgid "Email Gateway" -msgstr "" +msgstr "Server email" #. module: base #: code:addons/base/ir/ir_mail_server.py:466 @@ -4113,7 +4169,7 @@ msgstr "Liechtenstein" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue_sheet msgid "Timesheet on Issues" -msgstr "" +msgstr "Timesheet su problematica" #. module: base #: model:res.partner.title,name:base.res_partner_title_ltd @@ -4139,12 +4195,12 @@ msgstr "Portogallo" #. module: base #: model:ir.module.module,shortdesc:base.module_share msgid "Share any Document" -msgstr "" +msgstr "Condividi qualsiasi documento" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "" +msgstr "Leads, Opportunità, Telefonate" #. module: base #: view:res.lang:0 @@ -4238,7 +4294,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Organizzazione eventi" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4266,7 +4322,7 @@ msgstr "Campo Base" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Gestione veicoli e contratti" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4290,7 +4346,7 @@ msgstr "res.config" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pl msgid "Poland - Accounting" -msgstr "" +msgstr "Contabilità - Polonia" #. module: base #: view:ir.cron:0 @@ -4336,7 +4392,7 @@ msgstr "Riepilogo" #. module: base #: model:ir.module.category,name:base.module_category_hidden_dependency msgid "Dependency" -msgstr "" +msgstr "Dipendenza" #. module: base #: model:ir.module.module,description:base.module_portal @@ -4422,12 +4478,12 @@ msgstr "Oggetto di innesco" #. module: base #: sql_constraint:ir.sequence.type:0 msgid "`code` must be unique." -msgstr "" +msgstr "`code` deve essere unico." #. module: base #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Knowledge Management System" -msgstr "" +msgstr "Gestione Know How" #. module: base #: view:workflow.activity:0 @@ -4467,7 +4523,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_project_timesheet msgid "Bill Time on Tasks" -msgstr "" +msgstr "Fatturazione delle attività" #. module: base #: model:ir.module.category,name:base.module_category_marketing @@ -4504,7 +4560,7 @@ msgstr "Tipo Sequenza" #. module: base #: view:base.language.export:0 msgid "Unicode/UTF-8" -msgstr "" +msgstr "Unicode/UTF-8" #. module: base #: selection:base.language.install,lang:0 @@ -4516,12 +4572,12 @@ msgstr "Hindi / हिंदी" #: model:ir.actions.act_window,name:base.action_view_base_language_install #: model:ir.ui.menu,name:base.menu_view_base_language_install msgid "Load a Translation" -msgstr "" +msgstr "Carica una traduzione" #. module: base #: field:ir.module.module,latest_version:0 msgid "Installed Version" -msgstr "" +msgstr "Versione installata" #. module: base #: field:ir.module.module,license:0 @@ -4610,7 +4666,7 @@ msgstr "Guinea Equatoriale" #. module: base #: model:ir.module.module,shortdesc:base.module_web_api msgid "OpenERP Web API" -msgstr "" +msgstr "API Web OpenERP" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -4664,12 +4720,12 @@ msgstr "ir.actions.report.xml" #. module: base #: model:res.country,name:base.ps msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Territori Palestinesi Occupati" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch msgid "Switzerland - Accounting" -msgstr "" +msgstr "Contabilità - Svizzera" #. module: base #: field:res.bank,zip:0 @@ -4706,7 +4762,7 @@ msgstr "" #. module: base #: model:ir.module.category,description:base.module_category_marketing msgid "Helps you manage your marketing campaigns step by step." -msgstr "" +msgstr "Aiuta a gestire passo passo la campagne di marketing." #. module: base #: selection:base.language.install,lang:0 @@ -4750,7 +4806,7 @@ msgstr "Regole" #. module: base #: field:ir.mail_server,smtp_host:0 msgid "SMTP Server" -msgstr "" +msgstr "Server SMTP" #. module: base #: code:addons/base/module/module.py:299 @@ -4814,17 +4870,17 @@ msgstr "Workflow" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Acquisti" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese (BR) / Português (BR)" -msgstr "" +msgstr "Portuguese (BR) / Português (BR)" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin msgid "ir.needaction_mixin" -msgstr "" +msgstr "ir.needaction_mixin" #. module: base #: view:base.language.export:0 @@ -4834,7 +4890,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "Servizi IT" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications @@ -4844,13 +4900,13 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Integrazione Google Docs" #. module: base #: code:addons/base/ir/ir_fields.py:328 #, python-format msgid "name" -msgstr "" +msgstr "nome" #. module: base #: model:ir.module.module,description:base.module_mrp_operations @@ -4896,7 +4952,7 @@ msgstr "Salta" #. module: base #: model:ir.module.module,shortdesc:base.module_event_sale msgid "Events Sales" -msgstr "" +msgstr "Eventi vendite" #. module: base #: model:res.country,name:base.ls @@ -4911,7 +4967,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign msgid "Partners Geo-Localization" -msgstr "" +msgstr "Geo-Localizzazione dei Partners" #. module: base #: model:res.country,name:base.ke @@ -4948,7 +5004,7 @@ msgstr "Generico" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ftp msgid "Shared Repositories (FTP)" -msgstr "" +msgstr "Depositi condivisi (FTP)" #. module: base #: model:res.country,name:base.sm @@ -4973,12 +5029,12 @@ msgstr "Imposta a NULL" #. module: base #: view:res.users:0 msgid "Save" -msgstr "" +msgstr "Salva" #. module: base #: field:ir.actions.report.xml,report_xml:0 msgid "XML Path" -msgstr "" +msgstr "Percorso XML" #. module: base #: model:res.country,name:base.bj @@ -4999,7 +5055,7 @@ msgstr "Valore del suffisso per la sequenza dei dati" #. module: base #: help:ir.mail_server,smtp_user:0 msgid "Optional username for SMTP authentication" -msgstr "" +msgstr "Nome utente opzionale per autenticazione SMTP" #. module: base #: model:ir.model,name:base.model_ir_actions_actions @@ -5060,7 +5116,7 @@ msgstr "Sicurezza" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese / Português" -msgstr "" +msgstr "Portoghese / Português" #. module: base #: code:addons/base/ir/ir_model.py:364 @@ -5077,7 +5133,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:338 #, python-format msgid "Unknown sub-field '%s'" -msgstr "" +msgstr "Sottocampo sconosciuto \"%s\"" #. module: base #: model:res.country,name:base.za @@ -5109,7 +5165,7 @@ msgstr "Ungheria" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment msgid "Recruitment Process" -msgstr "" +msgstr "Processo di assunzione" #. module: base #: model:res.country,name:base.br @@ -5150,7 +5206,7 @@ msgstr "Tassi" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "Modelli di Email" #. module: base #: model:res.country,name:base.sy @@ -5165,13 +5221,13 @@ msgstr "======================================================" #. module: base #: sql_constraint:ir.model:0 msgid "Each model must be unique!" -msgstr "" +msgstr "Ogni modello deve essere unico!" #. module: base #: model:ir.module.category,name:base.module_category_localization #: model:ir.ui.menu,name:base.menu_localisation msgid "Localization" -msgstr "" +msgstr "Localizzazione" #. module: base #: model:ir.module.module,description:base.module_web_api @@ -5181,6 +5237,10 @@ msgid "" "================\n" "\n" msgstr "" +"\n" +"API Web OpenERP\n" +"================\n" +"\n" #. module: base #: selection:res.request,state:0 @@ -5250,12 +5310,12 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_partner_category_form msgid "Partner Tags" -msgstr "" +msgstr "Tags Partner" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Anteprima Intestazione / Piè pagina" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5294,12 +5354,12 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_res_partner_address msgid "res.partner.address" -msgstr "" +msgstr "res.partner.address" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Diritti di accesso in scrittura" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5322,7 +5382,7 @@ msgstr "" #: view:ir.filters:0 #: field:ir.filters,name:0 msgid "Filter Name" -msgstr "" +msgstr "Nome Filtro" #. module: base #: view:ir.attachment:0 @@ -5334,7 +5394,7 @@ msgstr "Storico" #. module: base #: model:res.country,name:base.im msgid "Isle of Man" -msgstr "" +msgstr "Isola di Man" #. module: base #: help:ir.actions.client,res_model:0 @@ -5354,7 +5414,7 @@ msgstr "Isola Bouvet" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Tipo vincolo" #. module: base #: field:res.company,child_ids:0 @@ -5395,7 +5455,7 @@ msgstr "Campo" #. module: base #: model:ir.module.module,shortdesc:base.module_project_long_term msgid "Long Term Projects" -msgstr "" +msgstr "Progetti a lungo termine" #. module: base #: model:res.country,name:base.ve @@ -5424,7 +5484,7 @@ msgstr "Zambia" #. module: base #: view:ir.actions.todo:0 msgid "Launch Configuration Wizard" -msgstr "" +msgstr "Avvia wizard di configurazione" #. module: base #: model:ir.module.module,summary:base.module_mrp @@ -5497,7 +5557,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Visualizza tutte le lead" #. module: base #: model:res.country,name:base.ci @@ -5517,7 +5577,7 @@ msgstr "%w - Numero del giorno della settiamana [0(domenica),6]." #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Filtri definiti dall'utente" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -5568,13 +5628,13 @@ msgstr "Montserrat" #. module: base #: model:ir.module.module,shortdesc:base.module_decimal_precision msgid "Decimal Precision Configuration" -msgstr "" +msgstr "Configurazione precisione decimale" #. module: base #: model:ir.model,name:base.model_ir_actions_act_url #: selection:ir.ui.menu,action:0 msgid "ir.actions.act_url" -msgstr "" +msgstr "ir.actions.act_url" #. module: base #: model:ir.ui.menu,name:base.menu_translation_app @@ -5630,7 +5690,7 @@ msgstr "" #: model:ir.module.category,name:base.module_category_generic_modules_accounting #: view:res.company:0 msgid "Accounting" -msgstr "" +msgstr "Contabilità" #. module: base #: model:ir.module.module,description:base.module_base_vat @@ -5691,7 +5751,7 @@ msgstr "Web" #. module: base #: model:ir.module.module,shortdesc:base.module_lunch msgid "Lunch Orders" -msgstr "" +msgstr "Ordini pranzo" #. module: base #: selection:base.language.install,lang:0 @@ -5727,7 +5787,7 @@ msgstr "" #. module: base #: view:ir.translation:0 msgid "Comments" -msgstr "" +msgstr "Commenti" #. module: base #: model:res.country,name:base.et @@ -5737,7 +5797,7 @@ msgstr "Etiopia" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Autenticazione" #. module: base #: model:res.country,name:base.sj @@ -5753,7 +5813,7 @@ msgstr "ir.actions.wizard" #. module: base #: model:ir.module.module,shortdesc:base.module_web_kanban msgid "Base Kanban" -msgstr "" +msgstr "Base Kanban" #. module: base #: view:ir.actions.act_window:0 @@ -5771,7 +5831,7 @@ msgstr "Titolo" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "true" -msgstr "" +msgstr "vero" #. module: base #: model:ir.model,name:base.model_base_language_install @@ -5781,7 +5841,7 @@ msgstr "Installa lingua" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 msgid "Services" -msgstr "" +msgstr "Servizi" #. module: base #: view:ir.translation:0 @@ -5829,7 +5889,7 @@ msgstr "" #: model:ir.module.category,name:base.module_category_usability #: view:res.users:0 msgid "Usability" -msgstr "" +msgstr "Usabilità" #. module: base #: field:ir.actions.act_window,domain:0 @@ -5885,7 +5945,7 @@ msgstr "" #: code:addons/base/ir/workflow/workflow.py:99 #, python-format msgid "Operation forbidden" -msgstr "" +msgstr "Operazione proibita" #. module: base #: view:ir.actions.server:0 @@ -5915,6 +5975,12 @@ msgid "" "Allows users to create custom dashboard.\n" " " msgstr "" +"\n" +"Permette di creare all'utente una dashboard personalizzata.\n" +"========================================\n" +"\n" +"Permette agli utenti di creare dashboard personalizzate.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.ir_access_act @@ -5948,7 +6014,7 @@ msgstr "Il nome del gruppo non può iniziare con '-'" #. module: base #: view:ir.module.module:0 msgid "Apps" -msgstr "" +msgstr "Apps" #. module: base #: view:ir.ui.view_sc:0 @@ -5977,7 +6043,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll msgid "Belgium - Payroll" -msgstr "" +msgstr "Busta paga - Belgio" #. module: base #: view:workflow.activity:0 @@ -5998,7 +6064,7 @@ msgstr "Titolare del conto" #. module: base #: model:ir.module.category,name:base.module_category_uncategorized msgid "Uncategorized" -msgstr "" +msgstr "Senza Categoria" #. module: base #: field:ir.attachment,res_name:0 @@ -6009,7 +6075,7 @@ msgstr "Nome Risorsa" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "E' una azienda" #. module: base #: selection:ir.cron,interval_type:0 @@ -6048,6 +6114,10 @@ msgid "" "========================\n" "\n" msgstr "" +"\n" +"Vista Kanban Web OpenERP \n" +"========================\n" +"\n" #. module: base #: code:addons/base/ir/ir_fields.py:183 @@ -6064,7 +6134,7 @@ msgstr "" #. module: base #: view:res.partner.bank:0 msgid "My Banks" -msgstr "" +msgstr "Mie banche" #. module: base #: model:ir.module.module,description:base.module_hr_recruitment @@ -6089,7 +6159,7 @@ msgstr "" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Il nome del filtro deve essere univoco" #. module: base #: help:multi_company.default,object_id:0 @@ -6099,12 +6169,12 @@ msgstr "Oggetto soggetto a questa regola" #. module: base #: selection:ir.actions.act_window,target:0 msgid "Inline View" -msgstr "" +msgstr "Vista inline" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Filtro default" #. module: base #: report:ir.module.reference:0 @@ -6119,7 +6189,7 @@ msgstr "Nome Menu" #. module: base #: field:ir.values,key2:0 msgid "Qualifier" -msgstr "" +msgstr "Qualificatore" #. module: base #: model:ir.module.module,description:base.module_l10n_be_coda @@ -6221,7 +6291,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_reset_password msgid "Reset Password" -msgstr "" +msgstr "Reimposta Password" #. module: base #: view:ir.attachment:0 @@ -6238,7 +6308,7 @@ msgstr "Malesia" #: code:addons/base/ir/ir_sequence.py:131 #, python-format msgid "Increment number must not be zero." -msgstr "" +msgstr "Il numero di incremento deve essere zero" #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel @@ -6248,7 +6318,7 @@ msgstr "" #. module: base #: field:res.partner,tz_offset:0 msgid "Timezone offset" -msgstr "" +msgstr "Offset Timezone" #. module: base #: model:ir.module.module,description:base.module_marketing_campaign @@ -6386,12 +6456,12 @@ msgstr "Menu Creati" #: view:ir.module.module:0 #, python-format msgid "Uninstall" -msgstr "" +msgstr "Disinstalla" #. module: base #: model:ir.module.module,shortdesc:base.module_account_budget msgid "Budgets Management" -msgstr "" +msgstr "Gestione budget" #. module: base #: field:workflow.triggers,workitem_id:0 @@ -6401,7 +6471,7 @@ msgstr "Oggetto di Lavoro" #. module: base #: model:ir.module.module,shortdesc:base.module_anonymization msgid "Database Anonymization" -msgstr "" +msgstr "Anonimizzazione database" #. module: base #: selection:ir.mail_server,smtp_encryption:0 diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index 90bc8bdcea3..b7c60e7f64f 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-10 20:03+0000\n" +"PO-Revision-Date: 2012-12-11 11:47+0000\n" "Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \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: 2012-12-11 04:45+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -13029,7 +13029,7 @@ msgstr "NIP" #. module: base #: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions msgid "Bank Statement Extensions to Support e-banking" -msgstr "" +msgstr "Rozszerzenie do wyciągów bankowych" #. module: base #: field:ir.model.fields,field_description:0 @@ -13059,7 +13059,7 @@ msgstr "Zair" #. module: base #: model:ir.module.module,summary:base.module_project msgid "Projects, Tasks" -msgstr "" +msgstr "Projekty, Zadania" #. module: base #: field:workflow.instance,res_id:0 @@ -13135,7 +13135,7 @@ msgstr "Działania" #. module: base #: model:ir.module.module,shortdesc:base.module_product msgid "Products & Pricelists" -msgstr "" +msgstr "Produkty i cenniki" #. module: base #: help:ir.filters,user_id:0 @@ -13143,6 +13143,8 @@ msgid "" "The user this filter is private to. When left empty the filter is public and " "available to all users." msgstr "" +"Użytkownik, który będzie korzystał z tego filtra na zasadach wyłączności. " +"Jeśli pole jest puste, to filtr jest publiczny." #. module: base #: field:ir.actions.act_window,auto_refresh:0 @@ -13192,12 +13194,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking msgid "Picking Before Manufacturing" -msgstr "" +msgstr "Pobranie przed produkcją" #. module: base #: model:ir.module.module,summary:base.module_note_pad msgid "Sticky memos, Collaborative" -msgstr "" +msgstr "Notatki, Współpraca" #. module: base #: model:res.country,name:base.wf @@ -13249,7 +13251,7 @@ msgstr "" #: view:ir.model.data:0 #: field:ir.model.data,name:0 msgid "External Identifier" -msgstr "" +msgstr "Identyfikator zewnętrzny" #. module: base #: model:ir.module.module,description:base.module_event_sale @@ -13318,7 +13320,7 @@ msgstr "Akcje" #. module: base #: model:ir.module.module,shortdesc:base.module_delivery msgid "Delivery Costs" -msgstr "" +msgstr "Koszty dostawy" #. module: base #: code:addons/base/ir/ir_cron.py:391 @@ -13377,7 +13379,7 @@ msgstr "Aktywność docelowa" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue msgid "Issue Tracker" -msgstr "" +msgstr "Śledzenie problemów" #. module: base #: view:base.module.update:0 @@ -13461,7 +13463,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Supplier Partners" -msgstr "" +msgstr "Dostawcy" #. module: base #: view:res.config.installer:0 @@ -13471,12 +13473,12 @@ msgstr "Instaluj moduły" #. module: base #: model:ir.ui.menu,name:base.menu_import_crm msgid "Import & Synchronize" -msgstr "" +msgstr "Importuj i synchronizuj" #. module: base #: view:res.partner:0 msgid "Customer Partners" -msgstr "" +msgstr "Klienci" #. module: base #: sql_constraint:res.users:0 @@ -13502,7 +13504,7 @@ msgstr "Źródło" #: field:ir.model.constraint,date_init:0 #: field:ir.model.relation,date_init:0 msgid "Initialization Date" -msgstr "" +msgstr "Data inicjalizacji" #. module: base #: model:res.country,name:base.vu @@ -13644,7 +13646,7 @@ msgstr "Wykonano konfiguracje systemu" #: view:ir.config_parameter:0 #: model:ir.ui.menu,name:base.ir_config_menu msgid "System Parameters" -msgstr "" +msgstr "Parametry systemu" #. module: base #: model:ir.module.module,description:base.module_l10n_ch @@ -13713,7 +13715,7 @@ msgstr "Akcja na wielu dokumentach" #: model:ir.actions.act_window,name:base.action_partner_title_partner #: model:ir.ui.menu,name:base.menu_partner_title_partner msgid "Titles" -msgstr "" +msgstr "Tytuły" #. module: base #: model:ir.module.module,description:base.module_anonymization @@ -13774,7 +13776,7 @@ msgstr "Luksemburg" #. module: base #: model:ir.module.module,summary:base.module_base_calendar msgid "Personal & Shared Calendar" -msgstr "" +msgstr "Kalendarze osobiste i współdzielone" #. module: base #: selection:res.request,priority:0 @@ -13854,7 +13856,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_payment msgid "Suppliers Payment Management" -msgstr "" +msgstr "Zarządzanie płatnościami od dostawców" #. module: base #: model:res.country,name:base.sv @@ -13884,7 +13886,7 @@ msgstr "Tajlandia" #. module: base #: model:ir.module.module,summary:base.module_account_voucher msgid "Send Invoices and Track Payments" -msgstr "" +msgstr "Wysyła faktury i śledzi płatności" #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_lead @@ -13935,7 +13937,7 @@ msgstr "Relacja obiektu" #. module: base #: model:ir.module.module,shortdesc:base.module_account_voucher msgid "eInvoicing & Payments" -msgstr "" +msgstr "Fakturowanie i Płatności" #. module: base #: model:ir.module.module,description:base.module_base_crypt @@ -14012,7 +14014,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_custom_multicompany msgid "Multi-Companies" -msgstr "" +msgstr "Wielofirmowość" #. module: base #: field:workflow,osv:0 @@ -14029,7 +14031,7 @@ msgstr "" #. module: base #: field:ir.rule,perm_write:0 msgid "Apply for Write" -msgstr "" +msgstr "Zastosuj do zapisu" #. module: base #: model:ir.module.module,description:base.module_stock @@ -14137,6 +14139,8 @@ msgid "" "Lets you install various interesting but non-essential tools like Survey, " "Lunch and Ideas box." msgstr "" +"Pozwala zainstalować ciekawe, ale nie kluczowe narzędzia jak: Ankieta, " +"Posiłki, Pomysły." #. module: base #: selection:ir.module.module,state:0 @@ -14161,7 +14165,7 @@ msgstr "Autoładowanie widoku" #. module: base #: view:res.users:0 msgid "Allowed Companies" -msgstr "" +msgstr "Dozwolone firmy" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_de @@ -14171,7 +14175,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Day of the Year: %(doy)s" -msgstr "" +msgstr "Dzień roku: %(doy)s" #. module: base #: field:ir.ui.menu,web_icon:0 @@ -14186,7 +14190,7 @@ msgstr "Rozpocznij zaplanowane instalacje" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_journal msgid "Invoicing Journals" -msgstr "" +msgstr "Dzienniki faktur" #. module: base #: help:ir.ui.view,groups_id:0 @@ -14231,7 +14235,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "Export Settings" -msgstr "" +msgstr "Ustawienia eksportu" #. module: base #: field:ir.actions.act_window,src_model:0 @@ -14241,7 +14245,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Day of the Week (0:Monday): %(weekday)s" -msgstr "" +msgstr "Dzień tygodnia (0:Monday): %(weekday)s" #. module: base #: code:addons/base/module/wizard/base_module_upgrade.py:84 @@ -14398,12 +14402,12 @@ msgstr "Firma" #. module: base #: model:ir.module.category,name:base.module_category_report_designer msgid "Advanced Reporting" -msgstr "" +msgstr "Zaawansowane raportowanie" #. module: base #: model:ir.module.module,summary:base.module_purchase msgid "Purchase Orders, Receptions, Supplier Invoices" -msgstr "" +msgstr "Zamówienia zakupu, Przyjęcia, Faktury od dostawcy" #. module: base #: model:ir.module.module,description:base.module_hr_payroll @@ -14456,7 +14460,7 @@ msgstr "Uruchom" #. module: base #: selection:res.partner,type:0 msgid "Shipping" -msgstr "" +msgstr "Przewoźnik" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -14500,7 +14504,7 @@ msgstr "Ograniczenie" #. module: base #: model:res.groups,name:base.group_hr_user msgid "Officer" -msgstr "" +msgstr "Urzędnik" #. module: base #: code:addons/orm.py:789 @@ -14517,7 +14521,7 @@ msgstr "Jamajka" #: field:res.partner,color:0 #: field:res.partner.address,color:0 msgid "Color Index" -msgstr "" +msgstr "Indeks kolorów" #. module: base #: model:ir.actions.act_window,help:base.action_partner_category_form @@ -14571,7 +14575,7 @@ msgstr "Ostrzeżenie" #. module: base #: model:ir.module.module,shortdesc:base.module_edi msgid "Electronic Data Interchange (EDI)" -msgstr "" +msgstr "Elektroniczna wymiana danych (EDI)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_anglo_saxon @@ -14602,7 +14606,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_generic_modules msgid "Generic Modules" -msgstr "" +msgstr "Moduły podstawowe" #. module: base #: model:res.country,name:base.mk @@ -14656,7 +14660,7 @@ msgstr "Bieżące okno" #: model:ir.module.category,name:base.module_category_hidden #: view:res.users:0 msgid "Technical Settings" -msgstr "" +msgstr "Ustawienia techniczne" #. module: base #: model:ir.module.category,description:base.module_category_accounting_and_finance @@ -14673,7 +14677,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_event msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations" -msgstr "" +msgstr "Szkolenia, Konferencje, Spotkania, Wystawy, Rejestracje" #. module: base #: model:ir.model,name:base.model_res_country @@ -14691,7 +14695,7 @@ msgstr "Kraj" #. module: base #: model:res.partner.category,name:base.res_partner_category_15 msgid "Wholesaler" -msgstr "" +msgstr "Hurtownik" #. module: base #: model:ir.module.module,shortdesc:base.module_base_vat @@ -14759,7 +14763,7 @@ msgstr "" #. module: base #: field:ir.module.module,auto_install:0 msgid "Automatic Installation" -msgstr "" +msgstr "Instalacja automatyczna" #. module: base #: model:ir.module.module,description:base.module_l10n_hn @@ -14876,7 +14880,7 @@ msgstr "" #. module: base #: field:ir.sequence,implementation:0 msgid "Implementation" -msgstr "" +msgstr "Implementacja" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ve @@ -14918,7 +14922,7 @@ msgstr "Nazwa widoku" #. module: base #: model:ir.model,name:base.model_res_groups msgid "Access Groups" -msgstr "" +msgstr "Grupy dostępu" #. module: base #: selection:base.language.install,lang:0 @@ -15034,6 +15038,8 @@ msgid "" "Tax Identification Number. Check the box if this contact is subjected to " "taxes. Used by the some of the legal statements." msgstr "" +"Numer identyfikacji podatkowej. Zaznacz tę opcję jeśli kontakt jest " +"podatnikiem. Stosowane w wymaganiach ustawowych." #. module: base #: field:res.partner.bank,partner_id:0 @@ -15072,7 +15078,7 @@ msgstr "Ostrzeżenie przy przełączaniu firmy" msgid "" "Helps you manage your manufacturing processes and generate reports on those " "processes." -msgstr "" +msgstr "Pomaga w prowadzeniu działalności produkcyjnej." #. module: base #: help:ir.sequence,number_increment:0 @@ -15118,7 +15124,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Internal Notes" -msgstr "" +msgstr "Uwagi wewnętrzne" #. module: base #: selection:res.partner.address,type:0 @@ -15134,7 +15140,7 @@ msgstr "SA" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_requisition msgid "Purchase Requisitions" -msgstr "" +msgstr "Zlecenia zakupu" #. module: base #: selection:ir.actions.act_window,target:0 @@ -15160,14 +15166,14 @@ msgstr "Partnerzy: " #. module: base #: view:res.partner:0 msgid "Is a Company?" -msgstr "" +msgstr "Jest firmą?" #. module: base #: code:addons/base/res/res_company.py:159 #: field:res.partner.bank,name:0 #, python-format msgid "Bank Account" -msgstr "" +msgstr "Konto bankowe" #. module: base #: model:res.country,name:base.kp @@ -15192,7 +15198,7 @@ msgstr "Kontekst" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_mrp msgid "Sales and MRP Management" -msgstr "" +msgstr "Sprzedaż i MRP" #. module: base #: model:ir.actions.act_window,help:base.action_partner_form diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index 3816aed3448..c28d191fc5c 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-10 18:08+0000\n" -"Last-Translator: Rui Franco (multibase.pt) \n" +"PO-Revision-Date: 2012-12-11 10:27+0000\n" +"Last-Translator: Virgílio Oliveira \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: 2012-12-11 04:45+0000\n" -"X-Generator: Launchpad (build 16356)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -7892,7 +7892,7 @@ msgstr "Assistente" #: code:addons/base/ir/ir_fields.py:304 #, python-format msgid "database id" -msgstr "" +msgstr "id da base de dados" #. module: base #: model:ir.module.module,shortdesc:base.module_base_import @@ -8462,7 +8462,7 @@ msgstr "Nepal" #. module: base #: model:ir.module.module,shortdesc:base.module_document_page msgid "Document Page" -msgstr "" +msgstr "Página do documento" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ar @@ -9091,7 +9091,7 @@ msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #. module: base #: view:ir.filters:0 msgid "Filters shared with all users" -msgstr "" +msgstr "Filtros partilhados com todos os utilizadores" #. module: base #: view:ir.translation:0 @@ -10191,7 +10191,7 @@ msgstr "" #. module: base #: help:res.company,rml_footer:0 msgid "Footer text displayed at the bottom of all reports." -msgstr "" +msgstr "Texto de rodapé mostrados no final de todos os relatórios." #. module: base #: model:ir.module.module,shortdesc:base.module_note_pad @@ -10614,7 +10614,7 @@ msgstr "Tipos de Sequências" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Formating Error" -msgstr "" +msgstr "Erro de formatação" #. module: base #: model:res.country,name:base.ye diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index ad649948427..832c513d2a4 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -7,15 +7,15 @@ msgstr "" "Project-Id-Version: pt_BR\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-07 22:22+0000\n" +"PO-Revision-Date: 2012-12-11 11:52+0000\n" "Last-Translator: Fábio Martinelli - http://zupy.com.br " "\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: 2012-12-08 04:58+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -255,6 +255,34 @@ msgid "" "* Planned Revenue by Stage and User (graph)\n" "* Opportunities by Stage (graph)\n" msgstr "" +"\n" +"CRM - Gestão de Relacionamento com o Cliente\n" +"================================================== ===\n" +"\n" +"Este aplicativo permite que um grupo de pessoas gerencie de forma " +"inteligente e eficiente prospectos, oportunidades, reuniões e telefonemas.\n" +"\n" +"Ele gerencia tarefas essenciais, como a comunicação, a identificação, " +"priorização, atribuição, resolução e notificação.\n" +"\n" +"O OpenERP garante que todos os casos são rastreado com sucesso por usuários, " +"clientes e fornecedores. É possível enviar automaticamente lembretes, " +"escalar o pedido, acionar métodos específicos e muitas outras ações com base " +"em suas próprias regras empresariais.\n" +"\n" +"A melhor coisa sobre este sistema é que os usuários não precisam fazer nada " +"de especial. O módulo de CRM tem um gateway de e-mail para a interface de " +"sincronização entre e-mails e OpenERP. Dessa forma, os usuários podem enviar " +"e-mails apenas para o rastreador do pedido.\n" +"\n" +"O OpenERP vai cuidar de agradecê-los por sua mensagem, encaminhá-la para o " +"pessoal apropriado automaticamente e certificar-se de que toda a futura " +"correspondência chegue ao lugar certo.\n" +"\n" +"O Painel para CRM inclue:\n" +"-----------------------------------\n" +"* Receita planejada por estágio e usuário (gráfico)\n" +"* Oportunidades por estágio (gráfico)\n" #. module: base #: code:addons/base/ir/ir_model.py:397