IDempiere/FullMeeting20140618

From WikiQSS

Table of Contents | Full Meeting Minutes | Full Meeting 2014-06-18

JanThielemann: hi carlos
CarlosRuiz: hi
tbayen: And I am sure that my new plugin can never be 100% compatible to the old one (bug for bug).
tbayen: Hi CarlosRuiz :-) Any news from colombia I have to know about?
CarlosRuiz: nothing :-( I think the embassy is still celebrating the match against Portugal
tbayen: Do you have a mail address from them? Perhaps I can write a friendly question?!?
CarlosRuiz: yep - I'll send you the info later
Deepak: Namaste!!!
CarlosRuiz: I'm not going to attend today's meeting - maybe will be here at the afternoon
CarlosRuiz: need to go to the physician with my son (Jordi)
tbayen: :-( So we will decide without you about my newest patch that changes 20 files in 8 packages. ;)
Deepak: Thomas, Suggest to contact hengsin here in abscent of Carlos
Deepak: Let me check if he is available
tbayen: I don't know if hengsin will be here. For my issue he is right. I need an osgi guru. But Jan may also be helpful and wise...
Deepak: Thomas, we worked on Jasper upgrades, but yet not have full update on what you did. I will read thread on ticket and see if can provide any input
tbayen: The point is to make it possible to do own plugins.
JanThielemann: uhh an h to much xD
tbayen: Then in the next step I would like to share my work with you and see yours. But first it must be possible to easy exchange the jasper part.
adnan_T: @ThomasBayen
adnan_T: where od you use your ProcessFactory?
adnan_T: In JRViewerProvider?
tbayen: The old code calls "org.compiere.report.ReportStarter" and uses the DefaultProcessFactory for that. That is in principle a direct call with the classloader of the org.adempiere.base bundle. My new code uses the recommended plugin way to call the very same process class.
adnan_T: May be it will be more flexible if yyou would use java reflection to instantiate a class exiting in the class path
adnan_T: in that way you may load any process class even no japser reportStarter
tbayen: The reason why the classloader of the org.adempiere.base bundle is able to start a class in the org.adempiere.report.jasper bundle (and why it is a bad idea) is best explained on http://wiki.osgi.org/wiki/Split_Packages
adnan_T: i'm suggesting this because i'm woriking on a libreopioffce reporting pluzgin as you know
adnan_T: in your process factory i would put something like this
adnan_T: Get the className (l.ike for example org.-compire.rpeort.ReportStarter) and
adnan_T: then
adnan_T: Class clazz= Class.forName(«java.lang.String»); Object object= clazz.newInstance();
adnan_T: For this to work, the class to instatntiate must have a no-parameter construictor
adnan_T: I bleive in the ReportCtl Class the reporting process is loaded
tbayen: Some code in the reporting and process plugins depends on the value of "ProcessUtil.JASPER_STARTER_CLASS" (a String constant). I did not want to change all these things.
adnan_T: there is an if-else stament where it is cheked wether in th eprint format a jasper-process id is set
adnan_T: if yes the reportstarter is loaded, if not the normal idempiere reporting process is kicked off
adnan_T: JASPER_STARTER_CLASS = "org.compiere.report.ReportStarter";
Deepak: That is correct but reflection method do not works well in osgi environment
tbayen: The call is in priciple a normal Process call. There is no good way to choose another name here. We should change that in ProcessUtils.
Deepak: Base can not find class presents in another package, So good idea is to create new factory class for report start
adnan_T: @Deepak, I see, it was just a quick idea
adnan_T: @Deepak: Another way would to do it the osigui-way
adnan_T: using a ProcessModelFacorty or something like that
Deepak: Yes, Correct
adnan_T: where you have to implement the interface
JanThielemann: i think we should load the report starter classes via osgi and give the user a way to decide which kind of report it is in the AD
JanThielemann: so that you can have default reports, jasper reports and third party reports in the same environment
Deepak: Yes, Jan that is good idea
tbayen: Why not just use a file extension of .jasper or .odt and use that?
Deepak: Print Format, Jasper Reports etc
adnan_T: @Tbayen: whe n using file extension, you have to know all supporting types
Deepak: Thomas, If you need to create another plugin for jasper report as you working, extension will not work
JanThielemann: a simple dropdown to determine the type (jasper, evenos-open-office,...) and a window or list to link type and starter class together
adnan_T: what if in the future ther eis a file extension you dind'Ät think
adnan_T: whe have to modify the code again
adnan_T: I see it like JanTHielemann
JanThielemann: then in the print format you can select the report type or so (not sure where this should be placed but i think adnan know it)
adnan_T: A dropdown where you can choose the report type if you want is a possibility
Deepak: yes, can define new table called report type
JanThielemann: users could add new report starters dynamically and provide the starter classes via plugins
Deepak: And add report type field on Report and Process
Deepak: Also interface can used to retrieve report viewer
tbayen: The first step should be to have a way to exchange the plugins. Does anybody disagree with the ide behind my patch?
JanThielemann: tbayen i think your changes can be seen as a logical consequence of osgi
JanThielemann: you should let heng sin take a look at it
Deepak: Agree with Jan
Deepak: This is not factory implementation and Reflection do not work well in plugings
Deepak: Thanks hengsin for joining, we were discussing about making report factory
tbayen: Hi hengsin :-)
tbayen: hengsin, we talk about my last comment at https://idempiere.atlassian.net/browse/IDEMPIERE-1698 and my patch at https://bitbucket.org/tbayen/idempiere/commits/02899f2ca18e264cb67138702c96b737e6fcd614
hengsin: hi
hengsin: I've read that, it should be good to get rid of split packages
tbayen: And while talking about that adnan_T suggested to think about a way to include other reporting engines. Especially his OpenOffice Template plugin.
tbayen: But I think that are two different issues.
JanThielemann: thats definitely another issue
hengsin: for the package name, it should be org.adempiere.report.jasper instead of org.compiere.report.jasper
hengsin: common practise is the package name and project name should be the same
hengsin: project name/bundle name
tbayen: My patch is quite extensive and I am afraid I did something wrong. My tests say that it still works as before. :-)
tbayen: Do you think it is ok if I just change that?
hengsin: that patch doesn't seems complete, I guess there's another set of commit for it ?
tbayen: No, I don't think so. See here: https://bitbucket.org/tbayen/idempiere/commits/all
hengsin: another issue - IProcessFactory name will cause confusion, we already have another one at at org.adempiere.base
tbayen: I created a "wrong branch" before trying to solve that with fragments. But that idea was rubbish.
tbayen: Is it better to call the process factories all the same "ProcessFactory" in separate bundles? Or better call it "JasperProcessFactory"?
hengsin: I don't see where IProcessFactory is being call ...
tbayen: It is named in the file org.adempiere.report.jasper/OSGI-INF/processfactory.xml
tbayen: It is called from Core.java in the org.adempiere.base package.
hengsin: hmm .. so where is the changes for org.adempiere.base package ?
hengsin: there's no changes to org.adempiere.base at https://bitbucket.org/tbayen/idempiere/commits/02899f2ca18e264cb67138702c96b737e6fcd614
tbayen: No changes. ;-) I use the recommended way to call a Process by creating an IProcessFactory service for that.
tbayen: In the old code it was called using the DefaultProcessFactory. That uses the classloader of org.adempiere.base.
tbayen: That works because of the Required-Bundles trick explained on the Split-Packages wiki page.
tbayen: The better way to call a Process from another bundle is to create a service (a IProcessFactory) for that.
tbayen: Am I wrong?
hengsin: ah ok, got it
hengsin: yeah, changes looks fine. only issue is the package name I mention above.
tbayen: Fine. :-) I will change that asap.
hengsin: you can forward to carlos for integration after that ( you can mention I've review it ).
tbayen: I thought about changing also the package name of the ReportStarter. It would be a bit cleaner. But it could break compatibility if someone wrote this class name into ad_process. That's why I did not do that.
hengsin: It is always a pain to deal with the split package issue so patch to remove that is great.
hengsin: well, you can change that and cater for it in the processfactory implementation
hengsin: and it should breaks nothing unless they are code out there calling it directly.
tbayen: If we do not change the process name that is used for the calls there is no worth in even doing it at all.
tbayen: Better not break anything.
hengsin: I means temporary, you can have if (name equals old_process_name || name equas new_process_name ).
hengsin: a simple migration script should help to clean that up as well
hengsin: and after a while, you can remove the name equals_old_process_name check ...
tbayen: Do you think that makes it better and cleaner?
hengsin: yes
tbayen: ok.
tbayen: The package name changes creates changes in a lot of files. Do you prefer this as one single commit or can I do it above the first one?
gruntz: hi
gruntz: what's the default user for webui after install?
tbayen: I moved the ReportStarter to package org.adempiere.report.jasper. But I am unsure what to do with the Barbecue.java class. I have no clue how this is used. Will it break compatibility inside Reports if I move it too?
tbayen: gruntz, try SuperUser and password System
binario01: Barbecue should be used when you print a barcode in jasperreport
gruntz: tbayen: thank you!
hengsin: should be fine, doesn't looks like it is being use at all
hengsin: also, barbecue is a dead project, newer jasperreport should use barcode4j instead.
tbayen: thanks, hengsin. I will move it for this issue and think about an improvement when doing the new plugin.
binario01: I think so
red1: Halo tbayen i be looking at Alan Lescano work on Kenos idempiere
red1: and i be focusing only on Tax Module
red1: I wonder if you can describe the most complex tax use case from Germany?
red1: Then i want to prove that it can work easily in Kenos Tax
tbayen: I am not really sure about the real problem. Many law texts to read for that and no time to do it.
tbayen: I hope I can do it this weekend.
red1: danke schoen!
tbayen: I hope that I need only slightly changes. Kenos tax seems like a monster to me.
red1: I maybe coming to Paris by August
red1: i hope to attend your workshop
red1: i eavesdropped and overheard that Carlos be going
tbayen: Is there an easy document to get an overview about the kenos tax?
tbayen: It is still not fixed. He has visa issues.
tbayen: Lets better talk about the next conference. :-)
red1: tbayen: here http://adempiere.net/wp-content/uploads/2011/09/AWC2011_Localization-Brazil.pdf
red1: I will be working on the Andre MFG shopfloor with robotics solution
tbayen: I said if noone gets it done in brazil until the world cup I have to do it on my own. ;-)
red1: requested by our govt
red1: if u can help me ask factories around Germany about their wish list for MFG that be good
red1: we can offer that software free lunch first
tbayen: Are you already in the Kenos tax? Can you answer questions?
red1: it is to visualize the shopfloor production lines and color animate its constraints
red1: i cannot answer hard questions
red1: i can take questions first and ask Alan Lescano and Ricardo
tbayen: mfg?
red1: I spoke to Ricardo and edilsondneto
red1: very slowly about Tax.. they want example
red1: MFG = Manufacturing shopfloor
tbayen: Tell them as Brazillians do not invite us this year to the world cup time they have to pay double as a punishment next year. ;-)
red1: Well they have to fly double if we do it in Malaysia
red1: I been to Brazil three times.. it is not that interesting
red1: anymore
tbayen: Ah. ok. Malaysia is more interesting to you. ;)
red1: the research i doing on MFG is very important for factories to know what is the gap with their apps
tbayen: We have an issue in eu with tax depending on product type. Can Kenos Tax do that?
red1: I can answer that - Yes
tbayen: fine.
red1: I even done my budget based on product and qty if needed
red1: it did a tough feature
red1: to calcualte during runtime
red1: Kenos Tax can do during runtime
red1: u can see in the slide that shows ((XX) (XXX))
red1: in its rules config
red1: if u pose the question and Alan say its doable, then i will be sponsored to do more
red1: which wil be writing a FitNesse test script and document
tbayen: I try to think about tax this weekend.
tbayen: How does your mfg approach belong to libero manufacturing?
red1: i will email u now our prelim study
red1: sent
red1: Andre work is under our partnership company KalimaSystems
red1: its a pure shopfloor and interface with ERP loosely
tbayen: I have to admit that I have totally no clue about manufacturing (and do not want to have one). :-) But I talked to someone who is using ADempiere with libero. He is a bit afraid of migrating. I believe he is a customer of Evenos.
red1: MRP is 24 X 7 and ERP is only 9 to 5
red1: Germans are not afraid.. just careful :D
tbayen: You could do evenos a favour if you guide them how to solve that. Or is it a totally other approach?!?
red1: Libero i think JanThielemann already know the path to migrate Libero as a plugin as i also did
tbayen: ok. If jan did that I don't understand his afraidness. That was what I told him: "Ask Jan. He can do it!" :-)
red1: Speaking of the devil ralexsander
red1: Ricardo, oi
red1: We were just talking about Kenos Tax
ralexsander: Olá!
red1: i communicated with Alan Lescano already about this
ralexsander: Edilson told me to join the discussion
red1: So now tbayen has to describe his complex tax problem and see if u can answer if it is yes
red1: so tbayen u just ask now since Ricardo is here
tbayen: It is not so complex. Not for a brazilian. ;-)
red1: forget about football :D
red1: I want to confirm that Kenos Tax is practical before i take time on it
red1: but its nice to know that Alan has done good progress on whole of Kenos
red1: I like to focus on the FitNesse and documentation of it
tbayen: ralexsander, I need to create a different tax line in the invoice depending on the kind of product and the country.
tbayen: And this tax line has to be generated even if there is no tax.
tbayen: As an example: I need the total amount of "goods delivered inside eu" and another total amount for "services delivered inside eu".
tbayen: Both are without any tax (rate 0%). I just need the totals for the tax declaration.
tbayen: And similar for outside eu etc...
tbayen: This can be done with a similar configuration for every single of the eu countries. We can copy that. But something to tell what is "eu" would be great.
ralexsander: we this scenario here in Brazil, when you need to show the the tax declaration even if the tax rate is 0%
ralexsander: what we don't have is the country level
ralexsander: in the tax definition window, we included only region level
tbayen: oups! :-(
ralexsander: but the way it is developed is really easy to include that
tbayen: And it can differentiate between services and items?
ralexsander: yes
tbayen: And at the end you create a tax line like it is done before? This line contains the total sum and the tax (or 0 if rate is zero)?
ralexsander: We created a new table, C_OrderLineTax... when the tax is zero, we included the tax in the OrderLineTax, but we did not changed the original behavior of OrderTax
ralexsander: it means that the tax will not be included in the OrderTax table
tbayen: But the OrderTax table contains what will be accounted?!? Did you change the accounting?
ralexsander: the accounting still the same as before
tbayen: I see in the slides (page 11) that there is a new field in the order line "Brazilian Tax". How is it accounted?
ralexsander: this field is a group of all taxes of the order line, but each record has a link to the C_Tax table
ralexsander: so we didn't need to change the accounting, because it uses the same old table C_Tax to create the accounting consequences
tbayen: great.
tbayen: Is not the C_OrderTax (or C_InvoiceTax) the base for accounting?
ralexsander: Sure, the C_OrderTax and C_InvoiceTax are the base for accounting, the C_OrderLineTax and C_InvoiceLineTax (we created in LBR) will populate the those table
ralexsander: but C_Tax has the C_Tax_Acct, there you can find the accounts, schemas, etc
tbayen: is it already an idempiere plugin?
tbayen: I would like to install it on a demo server to play with it. It will be best to see it in action.
ralexsander: sure, but its not a plugin yet
tbayen: :-(
tbayen: Is that what red1 wanted to do?
ralexsander: Alan has done some work on it, but AFAIK its not completed yet
tbayen: ok.
tbayen: I think I only need a small change to the original trunk code for some special cases. But I wonder if it is better to use your code and promote it as a more widely used feature.
tbayen: This may be better than having one localization for every contry.
ralexsander: I can help you with the changes to make it more suitable for other countries
tbayen: I need some time to read the german and european laws. Before we spend time we should be sure to do it really the right way.
tbayen: I will contact you if I am ready. ;-) Please tell me if it is available as a plugin.
ralexsander: ok
terts: hi
tbayen: hi
terts: where are you from
tbayen: germany
edilsondneto: Thomas,
tbayen: hi edilson
edilsondneto: wanted to see some scripts jenkins server.
edilsondneto: is there any that I can have a User and password?
tbayen: Sorry, I host the server. But I did not install jenkins. Red1 and Carlos did that.
edilsondneto: ok
proSENSE: hei hei
proSENSE: is the Client name changable?
proSENSE: changeable*
nmicoud: yes, go to the Client window and change the name :)
proSENSE: oh...so easy :D ok thx...beer from me :)
nmicoud: :D
proSENSE: tbayen, i've found the way to import all thouse prices
proSENSE: your suggestion about pricelist - was brilliant
proSENSE: i opened pricelist, pricelist accociated products and imported all the products to this list... thats all
tbayen: :)
proSENSE: ghh... Wunderlist allow me to add only one Assign in one day :( but great software... thinking about pro version
tbayen: My proposal: Use idempiere requests and improve it to be as good as wunderlist. ;)
proSENSE: i think thats good advice :) ..must to check out mobile interface of iDempiere
proSENSE: U mean Partner relations - Request, right?
tbayen: yes
tbayen: It can be the base for very sophisticated configurations.
proSENSE: cool... i am really starting to love iDempiere :)
tbayen: You can connect these things to bpartners or products or projects or sales representatives or whatever. And you can check their status and have lists with done/not done and they escalate to the boss if you want etc.
proSENSE: i see that i could use it even in my IT Service office
tbayen: It sends mails if needed or you can see the notifications in the main screen (after logging in).
tbayen: And there is a way to create them automatically either via a customer on a web interface or from emails.
tbayen: (reading from your imap server)
proSENSE: is there a way to artificialy make ALL products stock. Like each of them are 100pcs in stock :/
tbayen: I don't know. iDempiere is document driven. I believe you have to create an inventory movement document. (And yes - the importer works everywhere...)
tbayen: rehi CarlosRuiz, everything ok with your son?
CarlosRuiz: yep - diagnosed a pharyngitis
tbayen: May be from too much crying and shouting during the soccer games.
CarlosRuiz: :-) he still doesn't know about that
tbayen: During the meeting I proposed my patch to IDEMPIERE-1698. I discussed with Hengsin and changed some more things. He told me to mention you that he reviewed it. :-) All changes are in this pull request: https://bitbucket.org/idempiere/idempiere/pull-request/86/idempiere-1698-let-the-user-choose-a/diff
CarlosRuiz: great
tbayen: Please review again. It is a quite big patch. And it addresses many bundles. I don't want to break something.
tbayen: Much of it is because Hengsin proposed to change some packages. I divided it in three commits so you can follow what I did. The first commit explaings the most important changes. The other two move some classes around to have better package divisions.
proSENSE: is it possible to correct grouping? i need to group products in idempiere by one field where are numbers from 1 to... i dont know 400 or 500 ... but its sorting 1 10 100 101 ... not 1 2 3 4 5 :(
tbayen: The Value is a textfield and sorted as a textfield. The
tbayen: My solution is to use "0001" as value. But it might work well to change the value's field type?!?
tbayen: It might be an adventure to try that. ;-)
proSENSE: ok..mabey its possibl;e to see how mutch of products is now in db?
tbayen: You can change that in dreict sql (if you are a master in sql-foo)
tbayen: fu
proSENSE: no im not so cool :D
tbayen: like "update set value=left('0000'||value,4) from c_product where ad_client_id=1000000;"
tbayen: This is not tested (just from my mind into the keyboard). Read postgres docs. And do a backup before. ;-)
tbayen: fault: use right instead of left
proSENSE: cool... http://wiki.idempiere.org/en/Physical_Inventory_(Window_ID-168) + importing = success
proSENSE: ok... going to sleep now... after 7hour must to wake up
tbayen: bye
proSENSE: bye