metasfresh / metasfresh-webui-api-legacy

metasfresh webui API server
GNU General Public License v3.0
30 stars 32 forks source link

Receipt candidates: HU editor: cannot call Transform for a CU #764

Closed teosarca closed 6 years ago

teosarca commented 6 years ago

Is this a bug or feature request?

bug needed for https://github.com/metasfresh/metasfresh/issues/3209

What is the current behavior?

Which are the steps to reproduce?

What is the expected or desired behavior?

shall work :)

Note to IT:

calling (HU) Transform for a CU line shall work in:

Pls check for a CU which is:

metas-dh commented 6 years ago

Results of IT1 tested in mf15

I. Material receipt candidates:

II: Handling Unit Editor:

error "Not Found" exception "de.metas.ui.web.exceptions.EntityNotFoundException" exceptionAttributes {topLevelRowId: "1000057"} topLevelRowId "1000057" message "No row found for 1000057-2005577" path "/rest/api/documentView/540189/540189-ea320dd890c146f590f21e40bfae33df/1000057-2005577/attributes/layout"

III: Results from testing transform:

metas-ts commented 6 years ago

cherry-picked the fix https://github.com/metasfresh/metasfresh-webui-api/commit/03b52c6ee1a65998030ad0cc857875a3e2b073c4 to release

metas-dh commented 6 years ago

Results of IT2 tested in mf15

II: Handling Unit Editor:

III: Results from testing transform:

error : "Internal Server Error" exception : "org.adempiere.exceptions.AdempiereException" message : "Ihr Test hat einen bisher unentdeckten Fehler offengelegt. ↵Bitte leiten Sie diese Meldung an metas weiter:↵↵Assumption failure: partner=null for attributeSet=HUAttributeStorage{hu=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>], huAttributePropagatorFactory=de.metas.handlingunits.attribute.propagation.impl.HUAttributePropagatorFactory3f9185c4, storageFactory=HUAttributeStorageFactory{storages#=2}, indexedAttributeValues=AbstractAttributeStorage.IndexedAttributeValues {↵ attributeValuesRO = <size=21> {↵ HUAttributeValue{name=Gewicht Netto, value=0.000, type=N},HUAttributeValue{name=Cost price, value=null, type=N},HUAttributeValue{name=Qualitäts Abzug %, value=0.00, type=N},HUAttributeValue{name=SerialNo, value=null, type=S},HUAttributeValue{name=Qualitäts Notiz, value=null, type=S},HUAttributeValue{name=Herkunft, value=null, type=S},HUAttributeValue{name=Produktionsart, value=null, type=S},HUAttributeValue{name=Unterlieferanten, value=2156427.00, type=N},HUAttributeValue{name=Label, value=null, type=S},HUAttributeValue{name=Tageslot Datum, value=null, type=D},HUAttributeValue{name=Zitrusfrüchte, value=null, type=S},HUAttributeValue{name=Lot-Nummer, value=null, type=S},HUAttributeValue{name=Marke (ADR), value=null, type=S},HUAttributeValue{name=Karotten-ID, value=null, type=S},HUAttributeValue{name=Waschprobe alt, value=null, type=S},HUAttributeValue{name=Waschprobe, value=null, type=S},HUAttributeValue{name=In-/Ausland, value=null, type=S},HUAttributeValue{name=MHD, value=null, type=S},HUAttributeValue{name=Mindesthaltbarkeit, value=null, type=D},HUAttributeValue{name=Bestellzeile, value=null, type=N},HUAttributeValue{name=Wareneingang Zeile, value=1000015.00, type↵ }↵ attributeId2attributeRO = {540008=MAttribute[540008-Qualitäts Notiz,Type=L,Instance=true], 1000015=MAttribute[1000015-Marke (ADR),Type=L,Instance=true], 540034=MAttribute[540034-SerialNo,Type=S,Instance=true], 540003=MAttribute[540003-Qualitäts Abzug %,Type=N,Instance=true], 1000004=MAttribute[1000004-Produktionsart,Type=L,Instance=true], 540004=MAttribute[540004-Gewicht Netto,Type=N,Instance=true], 1000002=MAttribute[1000002-Label,Type=L,Instance=true], 1000001=MAttribute[1000001-Herkunft,Type=L,Instance=true], 1000000=MAttribute[1000000-In-/Ausland,Type=L,Instance=true], 540024=MAttribute[540024-Wareneingang Zeile,Type=N,Instance=true], 540025=MAttribute[540025-Waschprobe,Type=L,Instance=true], 1000025=MAttribute[1000025-MHD,Type=S,Instance=true], 540017=MAttribute[540017-Unterlieferanten,Type=L,Instance=true], 540018=MAttribute[540018-Karotten-ID,Type=L,Instance=true], 540019=MAttribute[540019-Cost price,Type=N,Instance=true], 1000020=MAttribute[1000020-Zitrusfrüchte,Type=L,Instance=true], 540020=MAttribute[540020-Mindesthaltbarkeit,Type=D,Instance=true], 540021=MAttribute[540021-Waschprobe alt,Type=L,Instance=true], 540022=MAttribute[540022-Tageslot Datum,Type=D,Instance=true], 1000017=MAttribute[1000017-Lot-Nummer,Type=S,Instance=true], 540023=MAttribute[540023-Bestellzeile,Type=N,Instance=true]}↵ attributeId2attributeValueRO = {540008=HUAttributeValue{name=Qualitäts Notiz, value=null, type=S}, 1000015=HUAttributeValue{name=Marke (ADR), value=null, type=S}, 540034=HUAttributeValue{name=SerialNo, value=null, type=S}, 540003=HUAttributeValue{name=Qualitäts Abzug %, value=0.00, type=N}, 1000004=HUAttributeValue{name=Produktionsart, value=null, type=S}, 540004=HUAttributeValue{name=Gewicht Netto, value=0.000, type=N}, 1000002=HUAttributeValue{name=Label, value=null, type=S}, 1000001=HUAttributeValue{name=Herkunft, value=null, type=S}, 1000000=HUAttributeValue{name=In-/Ausland, value=null, type=S}, 540024=HUAttributeValue{name=Wareneingang Zeile, value=1000015.00, type=N}, 540025=HUAttributeValue{name=Waschprobe, value=null, type=S}, 1000025=HUAttributeValue{name=MHD, value=null, type=S}, 540017=HUAttributeValue{name=Unterlieferanten, value=2156427.00, type=N}, 540018=HUAttributeValue{name=Karotten-ID, value=null, type=S}, 540019=HUAttributeValue{name=Cost price, value=null, type=N}, 1000020=HUAttributeValue{name=Zitrusfrüchte, value=null, type=S}, 540020=HUAttributeValue{name=Mindesthaltbarkeit, value=null, type=D}, 540021=HUAttributeValue{name=Waschprobe alt, value=null, type=S}, 540022=HUAttributeValue{name=Tageslot Datum, value=null, type=D}, 1000017=HUAttributeValue{name=Lot-Nummer, value=null, type=S}, 540023=HUAttributeValue{name=Bestellzeile, value=null, type=N}}↵}, listeners=CompositeAttributeStorageListener [listeners=[CalloutAttributeStorageListener [calloutExecutor=AttributeSetCalloutExecutor [calloutsActive=[org.adempiere.mm.attributes.spi.impl.HUSubProducerBPartnerAttributeHandler5f7a530e]]], HUTrxAttributesCollector [_disposed=false, transactions=[MutableHUTransactionAttribute{attribute=Cost price, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=1000022, trxName=<<Threa…_Attribute[M_HU_Attribute_ID=1000778, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Karotten-ID, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=1000035, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000779, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Waschprobe alt, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=540030, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000780, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Waschprobe, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=540034, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000781, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=In-/Ausland, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=1000036, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000782, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=MHD, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=1000037, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000783, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Mindesthaltbarkeit, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=540029, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000784, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Bestellzeile, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=540032, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000785, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Wareneingang Zeile, valueString=null, valueNumber=0, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=540033, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000786, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Qualitäts Abzug %, valueString=null, valueNumber=0.00, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=1000026, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000769, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}, MutableHUTransactionAttribute{attribute=Wareneingang Zeile, valueString=null, valueNumber=1000015.00, valueDate=null, valueStringInitial=null, valueNumberInitial=0, valueDateInitial=null, operation=SAVE, piAttribute=X_M_HU_PI_Attribute[M_HU_PI_Attribute_ID=540033, trxName=<<ThreadInherited>>], huAttribute=X_M_HU_Attribute[M_HU_Attribute_ID=1000786, Value=null, trxName=<<ThreadInherited>>], referencedObject=X_M_HU[M_HU_ID=1000036, Value=1000036, trxName=<<ThreadInherited>>]}], uniqueKeyIndex=1]]], attributeValueListener=AbstractAttributeStorage[<anonymous IAttributeValueListener>]}, therefore subProducerJustInitialized is false" path : "/rest/api/process/ADP_540763/1001935/start"

2018-01-16 10_06_19-metasfresh

teosarca commented 6 years ago

about

putting CUs on an existing TU: only worked for me when i moved the whole qty of the standalone CU to the TU, for partial qties i got an error....

I observed that is not always reproducible. i think your CU shall have a sub-producer set and the TU shall not have. The BPartner shall not be set at all for CU nor for TU. Can u pls find out the precise case? Not urgent... anyways, i think this is an issue which is NOT related with this task.

(technically, there exception was thrown from org.adempiere.mm.attributes.api.impl.SubProducerAttributeBL.recalculateADR(Properties, IAttributeSet, boolean))

About the other things u reported... still have to look...

teosarca commented 6 years ago

in Handling Unit Editor, i had HUs with status: Planning (after material receipt was created), and i could transform them as well; is that OK, to transform a HU that is not active yet?

Hmm.... why not? But i would put it the other way around: why showing the Planning HUs in the Handling Unit Editor window?

@metas-mk wdyt?

teosarca commented 6 years ago

when putting a TU on an existing LU, i had not only LUs do select from, but other types of HU as well (IFCOs and No Packing Items):

"known" issue. Please create a separate task for it. Long story short, the explanation is: in case of Handling Unit editor window, atm we cannot afford to filter the LUs in memory (the way how is impl. now). (technically, de.metas.ui.web.handlingunits.process.WebuiHUTransformParametersFiller.getLUsLookupValues(LookupDataSourceContext)).

Pls create a task for it. Pls include my comment too.

teosarca commented 6 years ago

in one case, i had a standalone CU, qty 5, and a standalone TU with 10 CUs (full qty); tried to move qty 2 from the standalone CU to the TU: => standalone TU then had CUs with qty 2 and qty 8, and there were 2 standalone CUs, with qty 2 and qty 3 (had a similar case as well, trying to reproduce)

Not sure if I understood it correctly, but in ur case, after transformation i would expect:

metas-dh commented 6 years ago

Can u pls find out the precise case? Not urgent... anyways, i think this is an issue which is NOT related with this task.

yes, i will try and create a new issue if successful

Hmm.... why not? But i would put it the other way around: why showing the Planning HUs in the Handling Unit Editor window?

exactly... => #729 and i was wondering why i can transform a HU which is not really existing yet, in Handling Unit Editor window where i cannot change its status (like in material receipt candidates, where i can make the HU an active one by receiving it)

Pls create a task for it. Pls include my comment too.

=> #783

Not sure if I understood it correctly, but in ur case, after transformation i would expect: the standalone CU: qty=3 the TU: one CU with 10 one CU with 2

yes, me too; worked in one case, but not in others; i'll try to reproduce to see if i find a pattern or sth

metas-lc commented 6 years ago

I had a similar case with @metas-dh , but different error

  1. opened HU Editor 1 TU with 10 CUs
  2. put 1 CU to New TU => TU1: 9CU, TU2: 1CU OK
  3. selected the 9CUs, used CUs to existing TU, qty 1 => error App.js:79 Assigning HUs which are not top-level is not allowed Zeile Nr.: X_M_ReceiptSchedule[M_ReceiptSchedule_ID=1000015, trxName=null] Handling Units: 1000293 (ID=1000293) NOK??? => TU1: 9CU, TU2: 1CU
  4. selected the 9CUs again, CU to new CU, qty 1 (1/8 for some reason showed 8 instead of 9) NOK => TU1: 7CU!!!!!!!!, NOK TU2: 1CU, CU3: 1 CU OK
metas-dh commented 6 years ago

Update:

follow ups:

closing this one.