IRC logs of #tryton for Friday, 2008-09-26 #tryton log beginning Fri Sep 26 00:00:01 CEST 2008
CIA-52tryton: Bertrand Chenal <> default * 1027:86e994fe993a trytond/doc/models.rst: Added doc about models00:27
-!- yangoon( has joined #tryton05:19
-!- Timitos(n=Timitos@ has joined #tryton07:51
-!- Gedd(n=ged@ has joined #tryton08:26
-!- gadaga( has joined #tryton09:11
-!- cedk(n=ced@gentoo/developer/cedk) has joined #tryton09:42
udonohi gadaga09:55
gadagaudono: hi09:56
-!- rli( has joined #tryton09:59
CIA-52tryton: C?dric Krier <> default * 40:5ff3aba54fa3 gentoo-overlay/app-office/tryton/ (Manifest tryton-9999.ebuild): Use GPLv310:21
CIA-52tryton: C?dric Krier <> default * 41:44e86f21c4f7 gentoo-overlay/app-office/trytond/ (Manifest trytond-9999.ebuild): Use GPLv310:21
CIA-52tryton: C?dric Krier <> default * 42:7d4a6da31497 gentoo-overlay/app-tryton/account/ (Manifest account-9999.ebuild): Use GPLv310:21
CIA-52tryton: C?dric Krier <> default * 43:e90b05b3d189 gentoo-overlay/app-tryton/account_invoice/ (Manifest account_invoice-9999.ebuild): Use GPLv310:21
CIA-52tryton: C?dric Krier <> default * 44:278861f6a072 gentoo-overlay/app-tryton/company/ (Manifest company-9999.ebuild): Use GPLv310:21
CIA-52tryton: C?dric Krier <> default * 45:27c181a5adaa gentoo-overlay/app-tryton/currency/ (Manifest currency-9999.ebuild): Use GPLv310:21
CIA-52tryton: C?dric Krier <> default * 46:6f7c88afff33 gentoo-overlay/app-tryton/product/ (Manifest product-9999.ebuild): Use GPLv310:21
CIA-52tryton: C?dric Krier <> default * 47:8b181bb25e01 gentoo-overlay/app-tryton/relationship/ (Manifest relationship-9999.ebuild): Use GPLv310:21
-!- tekknokrat( has joined #tryton10:22
udonohello cedk: Do we have propertys type="one2many" ?10:22
cedkudono: no, but you can write once10:26
udonocedk: I am not sure if I need propertys... I like to give partys a special role like "internal" to mark them as part of the own enterprise. But I like to do this, without a complete party_role mechanism. So it seems a good ideas to provide roles as propertys.10:29
-!- gael_( has joined #tryton10:29
cedkudono: I don't understand10:30
cedkudono: what do you call complete party_role mechanism?10:31
cedkudono: by the way one2many for property has no sence10:35
udonocedk: ok, why?10:36
cedkudono: because with one2many, you have a new set of records for each record10:36
cedkudono: and property is juts the oposite, shared the same record with all records10:36
udonocedk: ok10:37
cedkudono: but I still don't understand what you try to do10:37
cedkudono: perhaps, it is default value ?10:38
udonocedk: but if I have a set of same records I like to share?10:38
cedkudono: it is quite difficult to handle this10:39
udonocedk: I see10:40
cedkudono: but properties is just a kind of default value10:40
cedkudono: but it is possible to extend Property to handle one2many or many2many10:41
udonocedk: I need to think more about propertys...10:43
udonocedk: In the tiny devel book the say: Use a property when the new feature is not related to the object but to an external concept.10:43
-!- ruijuan_( has joined #tryton10:44
udonocedk: party roles is an external concept I do not like to put in the party module. But in the party module I need compatibility if someone installs the party_roles module...10:45
cedkudono: don't take what is in tiny devel book as a rule10:46
cedkudono: for me property is usefull for field that has her value depending ofthe current company10:47
cedkudono: I don't understand the "external concept"10:47
cedkudono: what is for you "party roles"?10:48
udonocedk: the decision internal/external is a very generic decision I need to make in the party module via party_roles. But it needs to function without party_roles. Because the company module takes this role to say: This party is part of the own enterprise.10:48
cedkudono: don't understand10:49
cedkudono: the fact that a party is in a company is done by the employee object10:50
udonocedk: In model party you put everything which is forever and invariant fixed to the party. Like Party is: Person, Organisation, has a name, Birthdate, this things. In party_roles you put all time dependent informations for a party: is customer (from_date, thru_date), is a supplier, ist a salesman, belongs to the own enterprise. This is an endless list where you can say which role the party plays in your opinion.10:52
udonocedk: in party roles you can say that one party is a supplier and a customer.10:53
-!- bechamel( has joined #tryton10:54
udonocedk: other modules can take the party_roles for information or place automatically party_roles on transaction. I.e. Writing an invoice for party XYZ, open the invoice add the party role "Bill-to-Customer" to the party XYZ.10:56
udonocedk: upon this comes the layer for relationships10:56
udonocedk: Relationships are builded like: Party1 -- roleA --> Relationship <-- roleb -- Party210:57
cedkudono: so where is the property ?10:59
udonocedk: in the example with invoices, when you click open invoice, a relationship is created: B2CK -- internal company --> Customer Invoice <-- Bill-to-customer -- Udo Spallek.11:00
udonocedk: I dont know. I just thought about the explanation in the tiny devel book11:00
cedkudono: for me there is nothing to do with property11:01
cedkudono: you must create the record that all11:01
udonocedk: They say other things in the devel book: Note: one interesting thing is that properties avoid "spaghetti" code. The account module depends on the partner (base) module. But you can install the partner (base) module without the accounting module. If you add a field that points to an account in the partner object, both objects will depend on each other. It's much more difficult to maintain and code (for instance, try to remove a t11:03
cedkudono: that is wrong11:05
udonocedk: ok11:05
cedkudono: there is the inherit mecanism to handle this11:05
cedkudono: we use property for account definition on party because account depend of the company11:06
cedkudono: and party can be shared by different company11:06
cedkudono: so we need to have one account per company11:06
cedkudono: and property are company aware11:07
udonocedk: ok, than everything is clear for me. Party, Party_roles and Party_relationships doesnt need company awareness, because its everytime a specific company which is part of a relationship.11:09
cedkudono: property is a kind of field Function that store the value in an other table that is all11:09
udonocedk: Thanks.11:10
CIA-52tryton: C?dric Krier <> default * 1028:2926c96d869d trytond/trytond/ir/property.xml: Add value and res in tree view for ir.property11:44
CIA-52tryton: C?dric Krier <> default * 1029:11b553087cea trytond/trytond/osv/ Handle negative operator for search11:44
CIA-52tryton: C?dric Krier <> default * 1030:404d5997b367 trytond/: merge11:44
CIA-52tryton: C?dric Krier <> default * 787:f5b5be633206 tryton/tryton/gui/window/view_form/widget_search/ (8 files): Add operator on search widgets11:45
CIA-52tryton: Bertrand Chenal <> default * 1031:06d8a42f436a trytond/doc/models.rst: Doc: corrections on models12:00
CIA-52tryton: C?dric Krier <> default * 788:fc2cf9fe03d5 tryton/tryton/ Fix license13:04
CIA-52tryton: C?dric Krier <> default * 789:3f7865c2fbf3 tryton/ (6 files in 4 dirs): Use AboutDialog13:04
CIA-52tryton: C?dric Krier <> default * 790:3f0b97818692 tryton/tryton/gui/window/view_form/view/list_gtk/ Handle readonly states in list editable13:24
cedkTimitos: have you time to speak about statement?13:55
CIA-52tryton: C?dric Krier <> default * 1032:f809a5dd74b5 trytond/trytond/osv/ Enforce clause validation for invalid arguments13:58
CIA-52tryton: C?dric Krier <> default * 1033:9e82365e55fe trytond/: merge13:58
-!- Gedd(n=ged@ has joined #tryton14:10
Timitoscedk: i am available now for statement14:32
-!- udono( has joined #tryton14:49
udonocedk: who is async open source? and why they are in the copyright?15:07
cedkTimitos: ok15:09
cedkudono: it is from Async that comes the date_widget15:09
Timitoscedk: ok15:10
udonocedk: ok15:10
Timitoscedk: i think that there are two ways of handling a customer paying too much15:10
cedkTimitos: so in fact there is no problem if the amount is less than the invoice amount15:10
cedkTimitos: yes15:11
Timitos1. you can assign the amount to an invoice15:11
Timitos2. you can assing the amount only to the customer payable/receivable saldo15:11
cedkTimitos: to have the invoice considered as paid, you must reconcile the move lines15:12
Timitoscedk: i think the second version is better. the amount will be reconciled and marked as paid15:12
cedkTimitos: you can not reconciled amout that are not balanced15:12
Timitosthe remaining amount will be set as an own move15:12
cedkTimitos: so for me I think we must create two move lines15:13
Timitoscedk: yes15:13
cedkTimitos: one with the invoice amount and a second with the rest15:13
cedkTimitos: so for the interface, I think about this:15:13
Timitoscedk: yes15:13
cedkTimitos: enter the statement line and add the invoice15:13
cedkTimitos: then the software looks if it is not too much15:14
cedkTimitos: if it is too much, it changes the amount with the invoice amount and create a new line with the rest15:14
cedkTimitos: what do you think about this?15:14
Timitoscedk: sounds good.15:15
Timitosudono: what are you thinking about this?15:15
cedkTimitos: like that we handle also the case where customer paid two invoice with one payement15:15
cedkand we force the user to dispatch the amount into the invoices15:16
udonoTimitos: cedk sounds good.15:16
Timitoscedk: yes. you then need to add every invoice which is paid in the statement as one statement_move15:16
cedkTimitos: what is statement_move ?15:16
Timitoscedk: this is perhaps some more work, if there is a payment of many invoices with one payment15:17
Timitoscedk: account.statement.line  sorry15:18
Timitoscedk: do i understand this right? with your idea you can only add one invoice to one statement.line?15:19
cedkTimitos: yes, but generaly, you ask your customer to add in the communication a number to identify the payment15:20
cedkTimitos: so the customer generaly can not paid many invoice in once15:20
cedkTimitos: yes15:20
Timitoscedk: this is common for small businesses.15:20
cedkTimitos: because you must know how to divide the amount15:20
Timitoscedk: but for bigger companies payment is often done for more than one invoice15:20
cedkTimitos: but it is not mandatory to put the invoice15:21
cedkTimitos: and then you can work with global amount receivable/payable15:21
Timitoscedk: yes you are right. the mount could be reconciled later with the reconcile wizard when there is a payment for more than one invoice15:22
cedkTimitos: and make the reconciliation of many invoices15:22
Timitoscedk: yes i think that this is a good solution15:22
cedkTimitos: generally if you work like this, you don't care about the invoice status15:22
cedkTimitos: and you reconcile the lines when the payable = 015:23
cedkTimitos: big company works like that15:23
cedkTimitos: when they ask you to paid the unpaid amount, they don't give you an invoice number but just the move line that must be paid - the amount you already paid15:24
Timitoscedk: but with the reconcile wizard you can reconcile the lines individually together when the payable is not 0 too, i think15:24
cedkTimitos: yes of course, but it is a lot of work15:24
Timitoscedk: yes. but in some cases this is useful15:24
Timitoscedk: the way we go we let the user decide what way he want to choose15:25
cedkTimitos: I don't see, because the company must choice how it will work15:25
cedkTimitos: by invoice status or with customer account15:25
cedkTimitos: generally, there is no sence to mix the both15:25
cedkTimitos: but we can15:25
cedkTimitos: it just generates more works for the user15:26
Timitoscedk: i think that there would be no problem if it is mixed15:26
cedkTimitos: no15:26
Timitoscedk: so everything is ok with this topic?15:27
cedkTimitos: I think15:28
Timitoscedk: ok. so i can go to lunch ;-)15:28
cedkis there anyboday who has some things to say ?15:28
cedkTimitos: ok, good lunch15:28
udonocedk: Yes me :-)15:30
udonocedk: Ideas sound good.15:30
udonocedk: another thing is multicurrency in reconciliation15:30
cedkudono: for me, the reconciliation must be done on the company currency15:33
cedkudono: so if the customer has paid the right amount but there is a difference due to the currency rate15:33
cedkudono: you have to create a write-off in profit/lost because it is the company that lost/win the amount15:34
cedkudono: in accounting, when you work with currency, you must take the rate at the operation date15:35
udonocedk: yes, this sounds right. But I dont know the legal terms...15:36
CIA-52tryton: C?dric Krier <> default * 791:c9c1b3558f51 tryton/tryton/gui/window/view_form/widget_search/ Fix widget search for calendar if there is no value15:40
cedkudono: one thing that I'm sure it is that the amount to check for reconciliation is the amount in the company currency15:41
udonocedk: yes, but I think about this: you write an invoice for 1000 Libre including the local VAT of 20% on a exchange rate of 100 Libre are 100 EUR. Then the customer pays some days later 100 Libre to your account. But the exchange rate changed and on paymentdate 1000 Libre are now just 100 EUR. Your bank statement say you earned just 10 EUR. If you make the reconciliation like you say, we have a problem. Because if you take the exchang15:56
udonorget to update the exchangerate table in tryton). Then your client just pay 10 EUR and you can't set the invoice in state paied. And another thing is finaly your tax report says you have to pay 20EUR VAT, But you just earned 10EUR in fact from the customer.15:56
cedkudono: no, for me there is no error15:59
cedkudono: that is the danger to create invoice in other curency15:59
-!- udono( has joined #tryton15:59
cedkudono: I repeat15:59
cedkudono: that is the danger to create invoice in other curency15:59
cedkudono: when you say to your customer to pay in an other currency15:59
cedkudono: it is because you will assume the variation of the rate16:00
cedkudono: otherwise don't generate invoice in other currency16:00
udonocedk: I dont think that is a problem16:00
cedkthat is why when you buy something in US, you pay in Dollars16:00
cedkbecause US company doesn't want to handle the currency rate variation16:01
cedkudono: of course in your example, you must reconcile the line 10€ with the 100€16:02
udonocedk: I think this all is regulated.16:02
cedkudono: and you will lost 90€16:02
cedkudono: except if you have an account at the bank in Libre16:04
cedkudono: then you can let it there and wait that the Libre increase :-)16:04
cedkudono: and when you will make the end year operation, you will reevaluate your Libre account16:05
udonocedk: one thing is absolutely clear, the Libre will never increase ;-)16:05
cedkudono: and then you can perhaps earn16:05
cedkudono: there is never certainty in the market :-)16:06
cedkudono: look around you16:06
udonocedk: Yes, of course, you are right. But we need to know that we loss in cause of exchangerate. Maybe we need just check some more exchangerates on different dates for the calculation. Maybe we need to be shure for the reconciliation to have a table of all daily exchangerates.16:09
cedkudono: there is a table with currency rate16:10
cedkudono: and that is the user to handle the write-off16:10
udonocedk: yes, but it must be actual if you want to reconceile.16:10
cedkudono: no, you don't have to use the actual rate16:10
cedkudono: but the rate when the line enter into the account16:11
cedkudono: so you will have on the move line the second currency amount16:11
cedkudono: that is there to keep the history16:11
cedkof course we can think about an automatization by inherit the reconcile function16:12
udonocedk: you have to, if you want to be shure if the low payment of the customer is sole an exchange rate loss.16:13
cedkthat will generate the correct move on the correct account16:13
udonocedk: on SQL-Ledger mailing list I learned IIRC that exchangerates need datetime stamp, because of exchangerate changings per day...16:16
udonocedk: depending in which daytime zone you are sitting and when the "Wall Street" closes doors16:17
cedkudono: generaly in accounting, you take one rate per day16:18
cedkudono: or even one rate by month16:18
udonocedk: But for invoicing and payment we need just daily informations I think.16:18
udonocedk: yes16:18
cedkudono: no, it depends how you want to work16:18
cedkudono: it is not a bank that make currency exchange16:18
cedkudono: it is accounting, so generally the rate is higher than the market rate16:19
-!- tekknokrat( has left #tryton16:19
udonocedk: but a bank writes you an amount on you bank-statement and a date. This date is for the exchangerate of the payment. And the Invoice date is the date of the exchangerate of the invoic amount, Then we can calculate if the 10 EUR payed are realy ok. We can say 100 EUR * 1 Libre / EUR = 10 EUR * 10 Libre /EUR. And when the customer just pay 8EUR, we know there are missing 2 EUR which are not an exchangerate loss.16:26
udonocedk: its the formula: to_pay = invoiced_amount * rate.invoice_date / rate.payment_date16:29
cedkudono: only if you have an account in an other currency (which is not very well)16:32
cedkudono: and any way, you must just look if the customer paid the right amount in the currency that is all16:33
udonocedk: than you can say in reconciliation: currency_loss = invoice_amount - to_pay and you can say other_loss_or_gain = to_pay - paied_amount.16:36
udonotimitos: How do you understand the requirement of openerp in the question of multicurrency and reconciliation?16:41
cedkudono: yes we can customize the write-off message when it is due to currency rate16:45
udonocedk: then I think we do not have the problem of tiny erp.16:47
Timitoscedk: udono: i try to explain the common way to handle such a thing17:33
Timitos1. you have € as company currency17:34
Timitos2. you write an invoice with 100$ . on this day 100$ = 50€17:34
Timitosthe invoice is posted in the accounting with 50€ as accounting must be done in company currency17:35
Timitos3. the customer pays 100$ but on this day 100$ are only 45€17:35
Timitos4. the invoice is payed but there must be made a move "loss of currency fluctuations to Main Receivable" with value 5€17:36
Timitoscedk: udono: i don´t know if this must be handled on account_statement17:37
Timitosthis problem needs also be handled if there is a bank account in $ because accounting of the company cannot be done in different currencies. an account in company accounting will always have company currency. nothing else17:39
cedkTimitos: I agrre with you17:39
Timitosi think what is talked about in the openerp thread is the move "loss of currency fluctuations to Main Receivable"17:40
Timitoscedk: fine17:40
cedkTimitos: yes and this can be done with the write-off function17:41
Timitoscedk: great17:41
cedkTimitos: but of course with a different name, it is more simple for the user17:41
Timitoscedk: ok17:41
cedkTimitos: so i need to go17:41
cedkTimitos: if there is any other issue with that, you can post on the google groups17:42
CIA-52tryton: Bertrand Chenal <> default * 1034:2ec051e3d7a5 trytond/doc/models.rst: Added doc on models19:14
CIA-52tryton: Bertrand Chenal <> default * 1035:5a5b0e6fa9da trytond/: merge19:14
-!- b52laptop(n=b52lapto@ has joined #tryton22:28
-!- b52lap(n=b52lapto@ has joined #tryton22:54

Generated by 2.11.0 by Marius Gedminas - find it at!