Unicenta POS Integration

1,615 views
Skip to first unread message

redhuan d. oon

unread,
Feb 7, 2017, 7:13:13 AM2/7/17
to iDempiere

I have made progress in reviewing Ghintech of Venezuela/Panama inprovement to my original OpenbravoPOS integration (much thanks to Eduardo Gil). Progress is here http://red1.org/adempiere/viewtopic.php?f=45&t=1825
I will upload my own amended sources to github/bitbucket in due time.
Ghintech has made some good moves which i will maintain further i.e. the auto-timer synching two way, from the POS. I have essentially remove their small core model changes to iDempiere side and plug up some nulls handling at the POS side.
I will maintain this as my version of not going towards WebServices but remain to use Active Message Queue technology as it does not expose the iDempiere server side at all. Both the POS clients and iDempiere only need to ring up the Active MQ 'postbox' but remain off the Internet.
My future roadmap is to downsize POS to a bare minimum i.e. its job is only to record sales, take payments and send via orders to the ERP side. No further ERP intelligence. Let HQ be the domain of that. It be a dumb but efficient POS network. This is because as time goes on, it becomes harder to maintain projects. Either no one else does a good work on it. I hardly find any further documentation or even a decent README. Also Unicenta POS as the fork of Openbravo POS are now both defunct projects with code changes been kept private by its vendor owners. I hope to eventually make a minimalist fork just as a ring of POS stations around an iDempiere ERP.

Carlos Antonio Ruiz Gomez

unread,
Feb 7, 2017, 9:07:55 PM2/7/17
to idem...@googlegroups.com
There is a new fork of the fork:
https://sourceforge.net/projects/chromispos/


El 07/02/17 a las 04:13, redhuan d. oon escribió:
--

redhuan d. oon

unread,
Feb 17, 2017, 10:26:08 PM2/17/17
to iDempiere
I have discssued with Eduardo Gil of Ghintech after studying their fork of my OpenbravoPOS integration and incorporated their auto-timer background synch but only for sending back orders to ERP.
He told me his version is for heavy use in Latin American market of megamalls and supermarts. So ActiveMQ is not feasible for his clients' operations and he will contribute his just finished WS version.
We agreed i will focus on restaurant based supply chain integration. I made a movie to install a working version here https://youtu.be/6VcwDKmIx30. I will follow up in my forum on the BOM supply chain part http://red1.org/adempiere/viewtopic.php?f=45&t=1825&p=8858#p8858

redhuan d. oon

unread,
Feb 22, 2017, 1:20:31 AM2/22/17
to iDempiere
Carlos Ruiz, i have posted at Chromis POS forum, they seem to be considering paid options and claiming the rest Unicenta/Openbravo POS as all closing up. So this is an opportunity to just stay the ground and keep been open while studying some of their new stuff if any.

Meanwhile i have given the Restaurant Kitchen Store Management a boost with http://wiki.idempiere.org/en/Plugin:_AutoBOMOrder

Vassili Kouleshov

unread,
Apr 2, 2017, 9:03:20 AM4/2/17
to iDempiere
Hi all, I was testing the integration and found some issues:

On vanilla latest idempiere all scripts applied with only gardenworld the order sync works fine
However if I create a new client, and then return to gardenworld and sync orders from queue, I will get a sales order with bpartner id 1000000 which corresponds with bpartner id of "standard" of the newly created client.

Attaching some screens


redhuan d. oon

unread,
Apr 2, 2017, 10:24:43 AM4/2/17
to iDempiere
GardenWorld is used for testing and i have not test on new Client. Can your new client sync well and correctly? You have to give more explicit and detailed case so i am sure when i take the time out to fix in the code.

Thanks for testing.

Vassili Kouleshov

unread,
Apr 2, 2017, 10:34:15 AM4/2/17
to iDempiere
Hi, no, i did not test on new client yet, just on gardenword, i am doing generic testing,  the issue comes when you create a new client and then go back to gardenworld and sync from queue there, it seems that the sync is not getting the correct context of the logged in client and using records from new client, as I show on screenshots, the resulting Sales Order Standard business partner is populating with the id of the newly created Standard business partner from the new Client.

Steps to reproduce, 

1 - Import some sales orders under Idempiere with just GardenWorld Client - works
2 - Create a new client 
3 - Go back to Gardenworld and try to import sales ordes - the business partner gets populated with the id of the Standard business partner of the newly created client
4 - The above later needs manual record editing of the database of the said Sales Order because you can no longer change resulting Sales Order, it just informs that Changes Ignored.

redhuan d. oon

unread,
Apr 2, 2017, 11:08:26 AM4/2/17
to iDempiere
OK thanks, i will put that in my TODO list for next release. I am busy with the new WMS design at the moment.

Vassili Kouleshov

unread,
Apr 2, 2017, 11:28:39 AM4/2/17
to iDempiere
Thank you, I will proceed with additional testing and will inform of other issues here.

Vassili Kouleshov

unread,
Apr 4, 2017, 4:50:47 AM4/4/17
to iDempiere
Hi, I created a new client and modified the Unicenta POS configuration accordingly, synced and these are issues that I found

1 - You can't export a Price list version, it will give an Incorrect Parameter error, you can only export if you select the p_SendAll checkbox
2 - When you import the resulting sales order from queue, an exactly same problem comes when you import it in GardenWorld, ie it assumes the Standard Business partner from GardenWorld with id of 12, screenshot is below, after that you cant save or modify the resulting sales order as it ignores all changes and informs you that changes are ignored. If you go to gardenworld and rename the Standard business partner to something else, the sync stops working completely and starts throwing an error as: ** Error: : Product is not on PriceList - Product:Café Latte, Price List:Standard,Date:04/02/2017

redhuan d. oon

unread,
Apr 4, 2017, 5:54:32 AM4/4/17
to iDempiere
My response according to your item number:
1. That is what i showed in my forum and movie, you need p_SendAll as it is to allow newer data after first sending.
2. You must have a mandatory Standard BP if you do not have a Customer name at the POS side. It stands for 'Walk-In'. So create that in new Client.

Please also paste error stack to show what is the cause of the error.
Message has been deleted
Message has been deleted

Vassili Kouleshov

unread,
Apr 4, 2017, 6:37:46 AM4/4/17
to iDempiere
Hi, I do have a Standard BP in the new client, it gets created automatically when you create a new client
However let me explain the found behaviour
On vanilla idempiere with all scripts applied if you test posintegration with just gardenworld in db, it works without issues
Issues start when you create a new client and then posintegration stops working for both clients, ie when you test it from gardenworld, the resulting sales order gets a standard bp ID (1000000) from the new client, if you test it from the new client, the resulting sales order gets the id of standard BP (12) from gardenworld, as shown on above screenshots

there are no resulting errors from this however attaching tracelogs as asked in next message as my message is getting deleted when I do attach them here

Vassili Kouleshov

unread,
Apr 4, 2017, 6:39:39 AM4/4/17
to iDempiere
Attaching zip file with all tracelogs from today's tests
Archive.zip

redhuan d. oon

unread,
Apr 4, 2017, 7:27:43 AM4/4/17
to iDempiere
Please also paste the XML string sent by new client to ActiveMQ for C_BPartner and received from POS for POS Order.

Vassili Kouleshov

unread,
Apr 4, 2017, 7:30:13 AM4/4/17
to iDempiere
Please see below

<?xml version="1.0" ?><entityDetail><type>I_Order</type><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000002</AD_Org_ID><POSLocatorName>Armazem Alto-Mae</POSLocatorName><DateOrdered>2017-04-04 10:58:18.461</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>45a310e1-b4df-4e94-9282-67aa4184d75f-0</DocumentNo><MachineName>WIN-55V2B7C4HU0</MachineName><M_Product_ID>1000005</M_Product_ID><ProductValue>Cafe+Latte</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>90.0</PriceActual><TaxName>IVA</TaxName><TaxAmt>15.3</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>362.7</paymentAmount></detail><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000002</AD_Org_ID><POSLocatorName>Armazem Alto-Mae</POSLocatorName><DateOrdered>2017-04-04 10:58:18.461</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>45a310e1-b4df-4e94-9282-67aa4184d75f-1</DocumentNo><MachineName>WIN-55V2B7C4HU0</MachineName><M_Product_ID>1000017</M_Product_ID><ProductValue>Sprite+2l</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>100.0</PriceActual><TaxName>IVA</TaxName><TaxAmt>17.0</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>362.7</paymentAmount></detail><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000002</AD_Org_ID><POSLocatorName>Armazem Alto-Mae</POSLocatorName><DateOrdered>2017-04-04 10:58:18.461</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>45a310e1-b4df-4e94-9282-67aa4184d75f-2</DocumentNo><MachineName>WIN-55V2B7C4HU0</MachineName><M_Product_ID>1000016</M_Product_ID><ProductValue>Sprite+340ml</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>60.0</PriceActual><TaxName>IVA</TaxName><TaxAmt>10.200000000000001</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>362.7</paymentAmount></detail><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000002</AD_Org_ID><POSLocatorName>Armazem Alto-Mae</POSLocatorName><DateOrdered>2017-04-04 10:58:18.461</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>45a310e1-b4df-4e94-9282-67aa4184d75f-3</DocumentNo><MachineName>WIN-55V2B7C4HU0</MachineName><M_Product_ID>1000004</M_Product_ID><ProductValue>The+Tarik</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>60.0</PriceActual><TaxName>IVA</TaxName><TaxAmt>10.200000000000001</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>362.7</paymentAmount></detail></entityDetail>

Vassili Kouleshov

unread,
Apr 4, 2017, 7:35:59 AM4/4/17
to iDempiere
This one is from customers queue to pos

<?xml version="1.0" ?><entityDetail><type>openbravoPOS</type><detail><DocType>C_BPartner</DocType><CustomerName>pAdmin</CustomerName><Value>pAdmin</Value><IsActive>Y</IsActive><Description></Description><C_BPartner_ID>1000002</C_BPartner_ID><Address1></Address1><TotalOpenBalance>0.0</TotalOpenBalance><SalesRep_ID></SalesRep_ID><SalesRep_Name></SalesRep_Name><EMail></EMail><Phone></Phone><Phone2></Phone2><BPartnerBirthday></BPartnerBirthday><BPartnerGroup>Standard</BPartnerGroup></detail><detail><DocType>C_BPartner</DocType><CustomerName>Standard</CustomerName><Value>Standard</Value><IsActive>Y</IsActive><Description></Description><C_BPartner_ID>1000000</C_BPartner_ID><Address1></Address1><TotalOpenBalance>0.0</TotalOpenBalance><SalesRep_ID></SalesRep_ID><SalesRep_Name></SalesRep_Name><EMail></EMail><Phone></Phone><Phone2></Phone2><BPartnerBirthday></BPartnerBirthday><BPartnerGroup>Standard</BPartnerGroup></detail><detail><DocType>C_BPartner</DocType><CustomerName>pUser</CustomerName><Value>pUser</Value><IsActive>Y</IsActive><Description></Description><C_BPartner_ID>1000001</C_BPartner_ID><Address1></Address1><TotalOpenBalance>0.0</TotalOpenBalance><SalesRep_ID></SalesRep_ID><SalesRep_Name></SalesRep_Name><EMail></EMail><Phone></Phone><Phone2></Phone2><BPartnerBirthday></BPartnerBirthday><BPartnerGroup>Standard</BPartnerGroup></detail><detail><DocType>C_BPartner</DocType><CustomerName>Take-Away+Papu</CustomerName><Value>Papu</Value><IsActive>Y</IsActive><Description></Description><C_BPartner_ID>1000006</C_BPartner_ID><Address1></Address1><TotalOpenBalance>0</TotalOpenBalance><SalesRep_ID>1000000</SalesRep_ID><SalesRep_Name>pAdmin</SalesRep_Name><EMail></EMail><Phone></Phone><Phone2></Phone2><BPartnerBirthday></BPartnerBirthday><BPartnerGroup>Retalhistas</BPartnerGroup></detail><detail><DocType>C_BPartner</DocType><CustomerName>Take-Away+Nengue</CustomerName><Value>Nengue</Value><IsActive>Y</IsActive><Description></Description><C_BPartner_ID>1000007</C_BPartner_ID><Address1></Address1><TotalOpenBalance>0</TotalOpenBalance><SalesRep_ID>1000000</SalesRep_ID><SalesRep_Name>pAdmin</SalesRep_Name><EMail></EMail><Phone></Phone><Phone2></Phone2><BPartnerBirthday></BPartnerBirthday><BPartnerGroup>Retalhistas</BPartnerGroup></detail><detail><DocType>C_BPartner</DocType><CustomerName>Take-Away+Nilo</CustomerName><Value>Nilo</Value><IsActive>Y</IsActive><Description></Description><C_BPartner_ID>1000008</C_BPartner_ID><Address1></Address1><TotalOpenBalance>0</TotalOpenBalance><SalesRep_ID>1000000</SalesRep_ID><SalesRep_Name>pAdmin</SalesRep_Name><EMail></EMail><Phone></Phone><Phone2></Phone2><BPartnerBirthday></BPartnerBirthday><BPartnerGroup>Retalhistas</BPartnerGroup></detail><detail><DocType>C_BPartner</DocType><CustomerName>UCM+Nampula</CustomerName><Value>UCMNampula</Value><IsActive>Y</IsActive><Description></Description><C_BPartner_ID>1000009</C_BPartner_ID><Address1></Address1><TotalOpenBalance>0</TotalOpenBalance><SalesRep_ID>1000000</SalesRep_ID><SalesRep_Name>pAdmin</SalesRep_Name><EMail></EMail><Phone></Phone><Phone2></Phone2><BPartnerBirthday></BPartnerBirthday><BPartnerGroup>Standard</BPartnerGroup></detail></entityDetail>

redhuan d. oon

unread,
Apr 4, 2017, 7:37:25 AM4/4/17
to iDempiere
Is your Warehouse Name = 'Armazem Alto-Mae'? Can you remove spaces in Warehouse Name  to become 'ArmazemAlto-Mae' then send again to POS and import back the sales to test again.

Vassili Kouleshov

unread,
Apr 4, 2017, 8:00:53 AM4/4/17
to iDempiere
Yes it is, steps taken to test

1 - Restored Idempiere database to presync state
2 - Erased and reconfigured pos database
3 - Renamed Armazem Alto-Mae to ArmazemAlto-Mae
4 - Configured POS to ArmazemAlto-Mae
5 - Synced to pos and then synced back

Same result as before, screen attached.

redhuan d. oon

unread,
Apr 4, 2017, 7:13:31 PM4/4/17
to iDempiere

Woke up this morning and solved the bugs. Its a good catch. Thanks.
Now POS import will make sure you are in the right Client/Org. I put some screenshots here.

Also note that the Import will group or bunch together all orders into a single order if: 1. It is same BPartner, 2. if its still not completed on iDempiere side. This is a great feature :)

Vassili Kouleshov

unread,
Apr 5, 2017, 1:54:25 AM4/5/17
to iDempiere
Thanks red1, I tested and indeed orders now import correctly, I will now proceed with additional testing and inform of results here

Thanks and Regards

Vassili Kouleshov

unread,
Sep 10, 2017, 10:28:40 PM9/10/17
to iDempiere
Hi, I have continued my testing and found other issues

1 - When Exporting products to queue, if I select a my own created Tax Category it will not export products and under activemq server message details I get a XML creation error, it only accepts exporting Standard Tax Category.
2 - If you use several POS Stations under different Organizations, when you make sales and then Import the resulting Sales Ordes, the system will create only one draft Sales Order and will import all resulting sales under that sales order, even if they are from different organizations, setting the Organization from the first sale, the expected behaviour if I understand correctly is to create several sales orders for each POS Organization, the organizations are correctly set under options and if you do sales from one and then import it will correctly identify organization.
3 - If you Export to queue data set to only one organization, ie a Price List, other POS set to different Organizations still accept to import same data, ie if I export data for HQ, the POS set to Store will still Import said data.

Thanks and Regards

Vassili

redhuan d. oon

unread,
Sep 11, 2017, 1:20:57 AM9/11/17
to iDempiere
Hi Vassili,
1. Negative. My present Unicenta POS2 is not meant to handle different tax categories. It is best to include the price with whatever tax and handle it exclusively at the server side.

2. OK. I just fixed that and uploaded the binary. I hope you can test that and report if it works as i do not have two POS setup to test.

3. Pending. Workaround is just export data and POS stations, one at a time, clearing each MQ before the next one. My POS is different from others is that you need to do this one time only as constant upload of qty is redundant with the server-side inventory auto shipment reconcilation.
Only when prices change that you need to send over again (but my POS is still experimental for proof of concept, so you have to get a developer to contribute such an improvement for my review, but still i see that as making things too heavy and thick pipe. That is not my intention at all. You can switch to Egil Eduardo's version if you prefer the real time synch.).

Vassili Kouleshov

unread,
Sep 11, 2017, 2:00:03 AM9/11/17
to iDempiere
Hi red1 thanks for the help, i have just tested your modifications on 2 and it seems that the issue is still there, it stil imports sales from different organizations into one sales order.
I would also like to test the Egil Eduardo's version of the POS but I seem to be having difficulty in locating the correct server side plugin - Webservices configuration instructions.

Thanks and Regards

Vassili

redhuan d. oon

unread,
Sep 11, 2017, 3:34:52 AM9/11/17
to iDempiere
Please give me your test Active MQ link so i can test import the orders into on my computer.

redhuan d. oon

unread,
Sep 11, 2017, 3:49:25 AM9/11/17
to iDempiere
Vassil.. no need to give link. Just paste your two XML records. I made the change for AD_Org_ID but there is POSLocatorName. So if you can tell me which is acting as different Org - it will confirm that i have to apply same change in POSLocatorName.

Vassili Kouleshov

unread,
Sep 11, 2017, 3:58:14 AM9/11/17
to iDempiere
Hi, please see below


<?xml version="1.0" ?><entityDetail><type>I_Order</type><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000005</AD_Org_ID><POSLocatorName>Armazem Matola</POSLocatorName><DateOrdered>2017-09-11 09:52:55.08</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>a73c1d81-d65e-4095-aaff-8608fe895dcd-0</DocumentNo><MachineName>Nampula</MachineName><M_Product_ID>1000004</M_Product_ID><ProductValue>Arroz+50kg</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>500.0</PriceActual><TaxName>Imposto IVA</TaxName><TaxAmt>85.0</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>1755.0</paymentAmount></detail><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000005</AD_Org_ID><POSLocatorName>Armazem Matola</POSLocatorName><DateOrdered>2017-09-11 09:52:55.08</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>a73c1d81-d65e-4095-aaff-8608fe895dcd-1</DocumentNo><MachineName>Nampula</MachineName><M_Product_ID>1000004</M_Product_ID><ProductValue>Arroz+50kg</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>500.0</PriceActual><TaxName>Imposto IVA</TaxName><TaxAmt>85.0</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>1755.0</paymentAmount></detail><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000005</AD_Org_ID><POSLocatorName>Armazem Matola</POSLocatorName><DateOrdered>2017-09-11 09:52:55.08</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>a73c1d81-d65e-4095-aaff-8608fe895dcd-2</DocumentNo><MachineName>Nampula</MachineName><M_Product_ID>1000004</M_Product_ID><ProductValue>Arroz+50kg</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>500.0</PriceActual><TaxName>Imposto IVA</TaxName><TaxAmt>85.0</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>1755.0</paymentAmount></detail></entityDetail>
<?xml version="1.0" ?><entityDetail><type>I_Order</type><detail><DocTypeName>POS Order</DocTypeName><AD_Client_ID>1000000</AD_Client_ID><AD_Org_ID>1000003</AD_Org_ID><POSLocatorName>Armazem Alto-Mae</POSLocatorName><DateOrdered>2017-09-11 09:52:40.671</DateOrdered><BPartner></BPartner><UserName>Administrador</UserName><DocumentNo>b3042c34-7c22-4353-8a11-bf80482d1989-0</DocumentNo><MachineName>test-pc</MachineName><M_Product_ID>1000004</M_Product_ID><ProductValue>Arroz+50kg</ProductValue><QtyOrdered>1.0</QtyOrdered><PriceActual>1500.0</PriceActual><TaxName>Imposto IVA</TaxName><TaxAmt>255.00000000000003</TaxAmt><paymentType>POS Order</paymentType><creditnoteAmount>0.0</creditnoteAmount><paymentAmount>1755.0</paymentAmount></detail></entityDetail>

redhuan d. oon

unread,
Sep 11, 2017, 4:47:05 AM9/11/17
to iDempiere
Vasili,
Please take the latest jar from http://sourceforge.net/projects/red1/files/UnicentaPOS/
When testing, please read your log prompt and tell me the result of this log.info("checking ORG field .. ??

Vassili Kouleshov

unread,
Sep 11, 2017, 5:53:51 AM9/11/17
to iDempiere
HI, please see below

11:48:29.675 CalloutOrder.start: priceListReadOnly - C_Order_ID=1000000 (old=null) {active=false} [25]
11:48:30.393 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000000 (old=null) {active=false} [100]
11:48:33.048 CalloutOrder.start: priceListReadOnly - C_Order_ID=1000007 (old=1000000) {active=false} [27]
11:48:33.125 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000059 (old=1000000) {active=false} [27]
11:48:40.758 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000044 (old=1000059) {active=false} [100]
11:48:52.651 ImportQueue2Order.parseXMLString: checking ORG field AD_Org_ID = 1000005 [31]
11:48:52.741 ImportQueue2Order.parseXMLString: checking ORG field AD_Org_ID = 1000005 [31]
11:48:52.783 ImportQueue2Order.parseXMLString: checking ORG field AD_Org_ID = 1000005 [31]
11:48:52.843 ImportQueue2Order.parseXMLString: checking ORG field AD_Org_ID = 1000003 [31]
11:49:06.917 CalloutOrder.start: priceListReadOnly - C_Order_ID=1000000 (old=null) {active=false} [22]
11:49:07.426 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000000 (old=null) {active=false} [100]
11:49:12.657 CalloutOrder.start: priceListReadOnly - C_Order_ID=1000008 (old=1000004) {active=false} [25]
11:49:12.713 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000063 (old=1000044) {active=false} [25]
11:49:15.736 CalloutOrder.start: priceListReadOnly - C_Order_ID=1000004 (old=1000008) {active=false} [100]
11:49:15.758 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000044 (old=1000063) {active=false} [100]
11:49:16.926 CalloutOrder.start: priceListReadOnly - C_Order_ID=1000008 (old=1000004) {active=false} [20]
11:49:16.968 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000063 (old=1000044) {active=false} [20]

redhuan d. oon

unread,
Sep 11, 2017, 6:48:01 AM9/11/17
to iDempiere
OK, the log message i put there does appear. So did it work?
If not, try latest jar i just uploaded. I put in better log message so that it says what new MOrder  is saved.

Vassili Kouleshov

unread,
Sep 11, 2017, 7:01:34 AM9/11/17
to iDempiere
Hi, after installing latest version, now when I try to import the order, I get the below error

** Error: : Business Partner has no Ship To Address - _

redhuan d. oon

unread,
Sep 11, 2017, 7:51:26 AM9/11/17
to iDempiere
Need to see the same log again if the change works before determining a new bug is there. Since i never seen such an error with POS integration - that could be your own setup.

Vassili Kouleshov

unread,
Sep 11, 2017, 8:01:02 AM9/11/17
to iDempiere
Hi, sure, please see below

13:00:15.785 Trx.rollback: **** SvrProcess_faa3033d-ca98-45a5-b855-a8e65bc63058 [42]
13:00:15.786 Trx.commit: **** SvrProcess_faa3033d-ca98-45a5-b855-a8e65bc63058 [42]
13:00:15.789 Trx.commit: **** POSaveAD_PInstance_71c40dff-6a12-484f-9a66-0516ad628d4b [42]
13:02:49.660 AbstractProcessDialog.doRun: Process Info=ProcessInfo[Import Queue Orders,Process_ID=1000000,Error=false,Summary=,Log=0] AD_Client_ID=1000000 [44]
13:02:49.661 MRole.get: AD_Role_ID=1000000, AD_User_ID=1000000, reload=false [44]
13:02:49.670 Trx.commit: **** POSaveAD_PInstance_c1887a0d-433e-403c-ab7d-e601f3e77448 [44]
13:02:49.673 Trx.commit: **** POSaveAD_PInstance_Para_a9370ade-dc43-4704-8099-27f5b7b75652 [44]
13:02:49.679 Trx.commit: **** POSaveAD_PInstance_Para_875bf3e7-e7a1-4974-af41-3f2468807c52 [44]
13:02:49.682 Trx.commit: **** POSaveAD_PInstance_Para_78905e5a-60ea-455f-b6a2-3315420c6878 [44]
13:02:53.151===========> MOrder.saveError: FillMandatory - C_BPartner_ID is mandatory. [44]
13:02:53.152-----------> MOrder.save: beforeSave - MOrder[0-null,IsSOTrx=true,C_DocType_ID=0, GrandTotal=0.0] [44]
org.adempiere.exceptions.BPartnerNoShipToAddressException: Business Partner has no Ship To Address - _
	at org.compiere.model.MOrder.setBPartner(MOrder.java:496)
	at org.compiere.model.MOrder.beforeSave(MOrder.java:991)
	at org.compiere.model.PO.save(PO.java:2074)
	at org.compiere.model.PO.saveEx(PO.java:2224)
	at org.compiere.model.PO.saveEx(PO.java:2358)
	at org.adempiere.process.ImportQueue2Order.parseXMLString(ImportQueue2Order.java:135)
	at org.adempiere.process.ImportQueue2Order.doIt(ImportQueue2Order.java:78)
	at org.compiere.process.SvrProcess.process(SvrProcess.java:201)
	at org.compiere.process.SvrProcess.startProcess(SvrProcess.java:147)
	at org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:172)
	at org.compiere.apps.AbstractProcessCtl.startProcess(AbstractProcessCtl.java:466)
	at org.compiere.apps.AbstractProcessCtl.run(AbstractProcessCtl.java:234)

redhuan d. oon

unread,
Sep 11, 2017, 8:04:17 AM9/11/17
to iDempiere
I corrected something to saveEx(trx) same trx as new MOrder's. Please take jar and try again. And post me the logs again.

Vassili Kouleshov

unread,
Sep 11, 2017, 8:11:11 AM9/11/17
to iDempiere
Hi same error as before, below is the log, please note that this error only comes up with these two latest versions, the versions before did not have said error.

14:08:53.886 Trx.rollback: **** SvrProcess_07b5d234-b0bc-4a73-b4c2-d4d669de651c [51]
14:08:53.886 Trx.commit: **** SvrProcess_07b5d234-b0bc-4a73-b4c2-d4d669de651c [51]
14:08:53.895 Trx.commit: **** POSaveAD_PInstance_0fb183e9-9340-4edb-9415-4d43c264423a [51]
14:08:57.221 AbstractProcessDialog.doRun: Process Info=ProcessInfo[Import Queue Orders,Process_ID=1000000,Error=false,Summary=,Log=0] AD_Client_ID=1000000 [58]
14:08:57.221 MRole.get: AD_Role_ID=1000000, AD_User_ID=1000000, reload=false [58]
14:08:57.232 Trx.commit: **** POSaveAD_PInstance_85fa8c3e-2698-478d-86b6-a057e3e6cc2a [58]
14:08:57.236 Trx.commit: **** POSaveAD_PInstance_Para_501aab11-f470-4d6c-a301-c2679f0cfc6e [58]
14:08:57.323 Trx.commit: **** POSaveAD_PInstance_Para_66c9d928-4763-446f-ad26-8adfabfeaa67 [58]
14:08:57.328 Trx.commit: **** POSaveAD_PInstance_Para_92a73637-e9ef-4f25-937c-9a17ad45f5f9 [58]
14:08:57.345===========> MOrder.saveError: FillMandatory - C_BPartner_ID is mandatory. [58]
14:08:57.348-----------> MOrder.save: beforeSave - MOrder[0-null,IsSOTrx=true,C_DocType_ID=0, GrandTotal=0.0] [58]
org.adempiere.exceptions.BPartnerNoShipToAddressException: Business Partner has no Ship To Address - _
	at org.compiere.model.MOrder.setBPartner(MOrder.java:496)
	at org.compiere.model.MOrder.beforeSave(MOrder.java:991)
	at org.compiere.model.PO.save(PO.java:2074)
	at org.compiere.model.PO.saveEx(PO.java:2224)
	at org.compiere.model.PO.saveEx(PO.java:2358)
	at org.adempiere.process.ImportQueue2Order.parseXMLString(ImportQueue2Order.java:135)
	at org.adempiere.process.ImportQueue2Order.doIt(ImportQueue2Order.java:78)
	at org.compiere.process.SvrProcess.process(SvrProcess.java:201)
	at org.compiere.process.SvrProcess.startProcess(SvrProcess.java:147)
	at org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:172)
	at org.compiere.apps.AbstractProcessCtl.startProcess(AbstractProcessCtl.java:466)
	at org.compiere.apps.AbstractProcessCtl.run(AbstractProcessCtl.java:234)

redhuan d. oon

unread,
Sep 11, 2017, 8:35:47 AM9/11/17
to iDempiere
OK, its because i saved the order too early without data. Now try again.

Vassili Kouleshov

unread,
Sep 11, 2017, 8:44:55 AM9/11/17
to iDempiere
Hi the error is gone, and importing again, however still joining different orgs to same sales order and message "checking ORG field" is gone from the log file

redhuan d. oon

unread,
Sep 11, 2017, 9:00:46 AM9/11/17
to iDempiere
I changed the log message to "AD_Org_ID has new = ?" but i i still found some mistake and corrected again. So please take again and test.
I put another log message "Same Order - BP = ?, Org = ? IDs check:? = ?" <-- This is at the spot if its same order so we can see if it retains the OrgID.

So you need to show both log messages.

Vassili Kouleshov

unread,
Sep 11, 2017, 9:10:09 AM9/11/17
to iDempiere
Sucess, the import process now correctly creates separate sales orders and correctly updates them with additional sales if they are not closed !!! Below is the log portion

15:06:28.192 AbstractProcessDialog.doRun: Process Info=ProcessInfo[Import Queue Orders,Process_ID=1000000,Error=false,Summary=,Log=0] AD_Client_ID=1000000 [43]
15:06:28.193 MRole.get: AD_Role_ID=1000000, AD_User_ID=1000000, reload=false [43]
15:06:28.201 Trx.commit: **** POSaveAD_PInstance_89aecff6-7015-4529-86d8-9845eeb5dc4d [43]
15:06:28.210 Trx.commit: **** POSaveAD_PInstance_Para_cff16257-5491-4825-9a3d-8763aa477dd6 [43]
15:06:28.212 Trx.commit: **** POSaveAD_PInstance_Para_e7f4afa6-4699-4b51-9f23-55519f344191 [43]
15:06:28.214 Trx.commit: **** POSaveAD_PInstance_Para_513eb309-45d9-4dee-a8d8-13cd31ef2e3d [43]
15:06:28.250 ImportQueue2Order.parseXMLString: AD_Org_ID has new = 1000005 [43]
15:06:28.259 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000005 IDs check:1000005 and 1000005 [43]
15:06:28.390 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000013 [43]
15:06:28.394 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000005 IDs check:1000005 and 1000005 [43]
15:06:28.447 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000013 [43]
15:06:28.457 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000005 IDs check:1000005 and 1000005 [43]
15:06:28.509 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000013 [43]
15:06:28.513 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000005 IDs check:1000005 and 1000005 [43]
15:06:28.578 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000013 [43]
15:06:28.591 ImportQueue2Order.parseXMLString: AD_Org_ID has new = 1000003 [43]
15:06:28.596 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000003 IDs check:1000003 and 1000003 [43]
15:06:28.664 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000012 [43]
15:06:28.667 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000003 IDs check:1000003 and 1000003 [43]
15:06:28.719 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000012 [43]
15:06:28.728 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000003 IDs check:1000003 and 1000003 [43]
15:06:28.779 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000012 [43]
15:06:28.782 ImportQueue2Order.parseXMLString: Same Order - BP = Standard, Org = 1000003 IDs check:1000003 and 1000003 [43]
15:06:28.830 ImportQueue2Order.parseXMLString: saving MOrder: ID=1000012 [43]
15:06:38.847 Trx.commit: **** SvrProcess_d66b3358-728a-41c2-aff6-dc9b4b95b1fb [43]
15:06:38.852 Trx.commit: **** POSaveAD_PInstance_f89fa4b9-6432-4c61-bace-ab1aadd725ce [43]
15:06:45.446 GridTable.dataRefreshAll:  [20]
15:06:45.446 GridTable.open: MaxRows=0 [20]
15:06:45.452 Trx.commit: **** Loader_1c32452d-f5e3-48c8-8260-80680af96cac [48]
15:06:45.456 AbstractADWindowContent.dataStatusChanged:  1/6 [20]
15:06:45.475 AbstractADWindowContent.dataStatusChanged:  1/6 [20]
15:06:45.514 GridTable.dataRequery: C_OrderLine.C_Order_ID=1000013; OnlyCurrent=false [20]
15:06:45.514 GridTable.open: MaxRows=0 [20]
15:06:45.520 Trx.commit: **** Loader_855d9085-7cdc-4a5e-86e4-22c61270a0a1 [51]
15:06:45.529 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000076 (old=1000076) {active=false} [20]
15:06:51.786 GridTab.navigate: Row=1 [28]
15:06:51.795 CalloutOrder.start: priceListReadOnly - C_Order_ID=1000012 (old=1000013) {active=false} [28]
15:06:51.806 AbstractADWindowContent.dataStatusChanged:  2/6 [28]
15:06:51.812 GridTable.dataRequery: C_OrderLine.C_Order_ID=1000012; OnlyCurrent=false [28]
15:06:51.812 GridTable.open: MaxRows=0 [28]
15:06:51.815 Trx.commit: **** Loader_c0905f3e-bdee-4fef-b3c1-2a3ac20a38c2 [44]
15:06:51.830 CalloutOrder.start: navigateOrderLine - C_OrderLine_ID=1000075 (old=1000076) {active=false} [28]
15:07:04.516 AdempiereMonitor.processTraceParameter: Command: /opt/idempiere-server/log/idempiere.2017-09-11_2.log [25]
HI, please see below

Hi, please see below

Please see below

I have made progress in reviewing Ghintech of Venezuela/Panama inprovement to my original OpenbravoPOS integration (much thanks to Eduardo Gil). Progress is here <a href="https://l.facebook.com/l.php?u=http%3A%2F%2Fred1.org%2Fadempiere%2Fviewtopic.php%3Ff%3D45%26t%3D1825%26p%3D8854%23p8854&h=ATMb0BH3Jt3qZeTNAUf_Luj16JD9ZW90i-K-rWduZB0hSIjHDboq8YDwkCAY624rKD4EJvSiZMTHWVWRvTLwL682iIoYCthxz_xjeqpcBY64egvbNCYnJSk7iT1XfcPbQFKjWqxqoOHBjI61ig&enc=AZOQqo8mUPtkcp3uPrixGXvLDnj2AVOBYNj3-5kh7WXPMwai8K5Hqr4mce_iBSZlC7-LohxQVhVTAKCct3KFaVoUiS_GQNfJIVKtIJryho3pJiuLaJyAc0Bijhk-1xgZgo-CUqtKQTqR7sVv610iTqmlsovq0wjtSmZumnecfYGh3A&s=1" rel="nofollow" target="_blank" onmousedown="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fl.facebook.com%2Fl.php%3Fu%3Dhttp%253A%252F%252Fred1.org%252Fadempiere%252Fviewtopic.php%253Ff%253D45%2526t%253D1825%2526p%253D8854%2523p8854%26h%3DATMb0BH3Jt3qZeTNAUf_Luj16JD9ZW90i-K-rWduZB0hSIjHDboq8YDwkCAY624rKD4EJvSiZMTHWVWRvTLwL682iIoYCthxz_xjeqpcBY64egvbNCYnJSk7iT1XfcPbQFKjWqxqoOHBjI61ig%26enc%3DAZOQqo8mUPtkcp3uPrixGXvLDnj2AVOBYNj3-5kh7WXPMwai8K5Hqr4mce_iBSZlC7-LohxQVhVTAKCct3KFaVoUiS_GQNfJIVKtIJryho3pJiuLaJyAc0Bijhk-1xgZgo-CUqtKQTqR7sVv610iTqmlsovq0wjtSmZumnecfYGh3A%26s%3D1\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFXRLUCDjW_QnqsABxeZtJYHERTAw';return true;" onclick="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fl.facebook.com%2Fl.php%3Fu%3Dhttp%253A%252F%252Fred1.org%252Fadempiere%252Fviewtopic.php%253Ff%253D45%2526t%253D1825%2526p%253D8854%2523p8854%26h%3DATMb0BH3Jt3qZeTNAUf_Luj16JD9ZW90i-K-rWduZB0hSIjHDboq8YDwkCAY624rKD4EJvSiZMTHWVWRvTLwL682iIoYCthxz_xjeqpcBY64egvbNCYnJSk7iT1XfcPbQFKjWqxqoOHBjI61ig%26enc%3DAZOQqo8mUPtkcp3uPrixGXvLDnj2AVOBYNj3-5kh7WXPMwai8K5Hqr4mce_iBSZlC7-LohxQVhVTAKCct3KFaVoUiS_GQNfJIVKtIJryho3pJiuLaJyAc0Bijhk-1xgZgo-CUqtKQTqR7sVv610iTqmlsov

redhuan d. oon

unread,
Sep 11, 2017, 9:31:14 AM9/11/17
to iDempiere
OK, i removed a redundant part and changed to log.fine. Please confirm it is still working and if possible set your Logging to FINE to see the same messages.

Thank you for testing this first time proven on multiple stations synch.
HI, please see below

Hi, please see below

Please see below

Vassili Kouleshov

unread,
Sep 11, 2017, 9:48:18 AM9/11/17
to iDempiere
Thank you it works properly now, now to test sales from different orgs using different price lists, please there is a small, probably cosmetic issue, sometimes when i want to import orders i get the below message, i need to press the parameter again and then press start and the message goes away.

** Could not save record - Require unique data: Please change information.: ERROR: duplicate key value violates unique constraint "ad_pinstance_para_pkey" Detail: Key (ad_pinstance_id, seqno)=(1000119, 0) already exists.

redhuan d. oon

unread,
Sep 11, 2017, 4:23:22 PM9/11/17
to iDempiere
OK, this is a general error due to my 2Pack data not been centralised IDs. However to solve it is simple. Just login as SystemAdmin and execute Sequence Check.

Thank you for your good review. Later i will think about the 3rd issue you raised. It is more about proper design strategy not the issue. So it takes some time.

redhuan d. oon

unread,
Sep 11, 2017, 5:05:36 PM9/11/17
to iDempiere
Your 3rd reported issue:

3 - If you Export to queue data set to only one organization, ie a Price List, other POS set to different Organizations still accept to import same data, ie if I export data for HQ, the POS set to Store will still Import said data.

I began to recall it shouldn't happen and so this morning i checked the POS side code it seems the following has been commented away (not sure if by me or the other fork since i taken and commit afresh without history):

                    if (column.equals("POSLocatorName"))
                   
{
                       
//checking if right POS Name
                       
//if (!poslocator.equals(n.getTextContent()))
                       
//    break;
                                       
                           

WIll try to reset and commit via the NetBeans IDE

Vassili Kouleshov

unread,
Sep 11, 2017, 8:30:15 PM9/11/17
to iDempiere
Indeed, reenabling those lines now makes the pos to only import data with correct org set, also what I noticed is that when POS imports data, it only reads the first message from queue, wouldn't it be now feasible that now as the POS knows how to import correct data, that the POS iterates through all messages in the activemq queue and imports only messages destined to it ? It would make synchronizing multiple POS stations a breeze. WDYT

redhuan d. oon

unread,
Sep 11, 2017, 9:32:49 PM9/11/17
to iDempiere
You can now fetch POS2.zip to try out as it solves issue 3 about taking only the right POSLocator = OrgName.
I will see what i can do about the reading of all lines. Should be easy, but i have to break until i get a good line as POSzip is large.

Vassili Kouleshov

unread,
Sep 11, 2017, 9:46:35 PM9/11/17
to iDempiere
You can also tell me what to change, I have POS source code and running from Netbeans

Vassili Kouleshov

unread,
Sep 11, 2017, 10:17:21 PM9/11/17
to iDempiere
Just tested the POS2.zip and it does indeed solve issue 3, the pos correctly identifies the data based on org for import, thank you very much, now to just report one more issue based on what we discussed below:

If I export products without selecting a Product Category, all products categories are exported to the activemq queue creating a Message for each category, ie if there are 5 Categories, then there will be 5 messages, because of the bug/limitation the POS imports only the first Message from the queue, thus importing only one Category, so you need to delete the first message and then import again, and delete the first message again and import again until all messages are imported one by one.

redhuan d. oon

unread,
Sep 12, 2017, 5:09:34 AM9/12/17
to iDempiere
I just uploaded POS3.zip to let Unicenta POS client to take from ActiveMQ multiple XML strings, same time avoiding those not same POSLocator. So you can test if it solves the more Categories you just talked about.

Once confirmed, i will push the Unicenta2 souce code changes (if you can remind me how do do it from Netbeans, as I seldom use it).

Vassili Kouleshov

unread,
Sep 12, 2017, 6:13:33 AM9/12/17
to iDempiere
Hi, I just tested and the POS is still importing first line only

redhuan d. oon

unread,
Sep 12, 2017, 8:52:01 AM9/12/17
to iDempiere
OK, solved. Tested on Bushes and Tools categories export and it synched well. Now uploading POS3.zip again. Will take a while probably 30 mins.

Vassili Kouleshov

unread,
Sep 13, 2017, 1:42:01 AM9/13/17
to iDempiere
I have just tested POS3 and indeed it works properly now, thank you
To push changes from netbeans you can right-click on the project, select git, select remote, select push, I have attached a screenshot
Screen Shot 2017-09-13 at 7.37.29 AM.png

redhuan d. oon

unread,
Sep 13, 2017, 11:07:08 PM9/13/17
to iDempiere
Thanks, pushed. I updated my forum on this latest changes http://red1.org/adempiere/viewtopic.php?f=45&t=1825&p=8929#p8929

Vassili Kouleshov

unread,
Sep 17, 2017, 3:15:21 AM9/17/17
to iDempiere
Hi, it seems that the change required for the POS to import multiple xml messages did not get pushed to the unicenta2 repo on bitbucket

redhuan d. oon

unread,
Sep 17, 2017, 11:07:23 PM9/17/17
to iDempiere
Forgot to commit first before pushing. Now done. Please check. Thanks.
Reply all
Reply to author
Forward
0 new messages