User Tools

Site Tools


rm25486

rm#25486 PO - Wrong error message when undergoing already invoiced quantites via modify

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:

SELECT * FROM TAIRPOSCHEDULE WHERE CLINEPONUM = 'rm25486_003';

3. Update invoice quantities for example with the following statement :

UPDATE TAIRPOLINEITEM 
SET CFULLYINVOICED=1,CINVOICEREMAININGQTY=35,CINVOICETOTALQTY=90,CREQTOTALQTY=90,CPROMTOTALQTY=90 
WHERE CREFHEADERID=<ref_header_id>

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:

                        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));
rm25486.txt · Last modified: by kalaschnikow