User Tools

Site Tools


rm25486

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
rm25486 [2018/05/17 14:18] – [Reproduce] kalaschnikowrm25486 [2018/05/17 15:50] (current) – [Result] kalaschnikow
Line 1: Line 1:
 +====== rm#25486 PO - Wrong error message when undergoing already invoiced quantites via modify ======
  
 +https://cust-projects.seeburger.de/redmine/issues/25486
 +
 +===== Description =====
 +...
 +
 +===== TODO =====
 +  * **-** Analyze
 +    * The error message is formed in ''POCollabPreprocessor.doPreProcessing():120''
 +
 +
 +  * **-** Fix
 +  * **-** Test
 +
 +===== Analyze =====
 +
 +The error message is formed in ''POCollabPreprocessor.doPreProcessing():120''
 +
 +The invoice information seems to be written in the database with the help of BillableObject import ( see ''BillableObjectStatusInboundXMLHandler.processRootElement()''). 
 +
 +==== Reproduce ====
 +The invoice information seems to be imported in the system through BillableObject import, but it was too difficult for me to get such a file (no one seems to have such files now). It is possible to reproduce it on the simple way and
 +Simple
 +
 +1. Import PO with 3 Positions ( an example: D:\development\testdata\purchaseorder\rm#25486_WrongErrMsgAboutInvoicedQties\po_003.xml )
 +
 +2. Find out ''CREFHEADERID'' for this PO: 
 +<code sql>
 +SELECT * FROM TAIRPOSCHEDULE where CLINEPONUM = 'rm25486_003';
 +</code>
 +
 +3. Update invoice quantities for example with the following statement : 
 +<code sql>
 +UPDATE TAIRPOLINEITEM 
 +SET CFULLYINVOICED=1,CINVOICEREMAININGQTY=35,CINVOICETOTALQTY=90,CREQTOTALQTY=90,CPROMTOTALQTY=90 
 +WHERE CREFHEADERID=<ref_header_id>
 +</code>
 +
 +
 +==== Misc ====
 +  * Fetch PO schedule lines for given PO Number: ''SELECT * FROM TAIRPOSCHEDULE where CLINEPONUM = 'rm25486_003';''
 +  * Fetch POLineItem for given RefId: ''select * from TAIRPOLINEITEM where CREFHEADERID = 545442''
 +  * Original entry in tAirPOLineItem: ''INSERT INTO TAIRPOLINEITEM (CLINEITEMID,CREFHEADERID,CPOSNUM,CFULLYINVOICED,CINVOICEREMAININGQTY,CINVOICETOTALQTY,CREQTOTALQTY,CPROMTOTALQTY) VALUES (5755555,545442,'1',0,0,0,90,70);''
 +  * I've changed it with: ''UPDATE TAIRPOLINEITEM SET CFULLYINVOICED=1,CINVOICEREMAININGQTY=35,CINVOICETOTALQTY=90,CREQTOTALQTY=90,CPROMTOTALQTY=90 WHERE CREFHEADERID=545442''
 +===== Result =====
 +
 +''POCollabPreProcessor.doPreProcessing()'' was changed:
 +
 +<code java>
 +                        BigDecimal invoicedQty =
 +                                Toolbox.getBigDecimalOrZero(poLineItemData.getInvoiceTotalQty()).subtract(
 +                                    Toolbox.getBigDecimalOrZero(poLineItemData.getInvoiceRemainingQty()));
 +                        resultModel.addMessage(new ClientResultMessageEntry(false, IPOConstants.ERROR_CODE_REQ_QTY_BELOW_INV_QTY, nlsKey,
 +                                "The quantity of the schedule lines %s1 of the PO item %s2 can't be changed because the resulting item quantity %s3 would be below the already invoiced quantity %s4",
 +                                slText, preProcData.getPosNumber(), poLineItemData.getReqTotalQty(), invoicedQty));
 +
 +</code>