Skip to content
This repository has been archived by the owner on Jun 8, 2022. It is now read-only.

Commit

Permalink
#3: Changes after discussion + cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
haneloreianoseck committed Apr 11, 2019
1 parent cac0bf2 commit 743ffac
Show file tree
Hide file tree
Showing 19 changed files with 506 additions and 237 deletions.
164 changes: 89 additions & 75 deletions src/main/java/de/metas/edi/esb/bean/desadv/EDIXMLDesadvBean.java

Large diffs are not rendered by default.

274 changes: 185 additions & 89 deletions src/main/java/de/metas/edi/esb/bean/invoice/EDIXMLInvoiceBean.java

Large diffs are not rendered by default.

69 changes: 47 additions & 22 deletions src/main/java/de/metas/edi/esb/bean/order/XMLEDIOrdersBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,14 @@

package de.metas.edi.esb.bean.order;

import de.metas.edi.esb.pojo.common.MeasurementUnit;
import de.metas.edi.esb.pojo.order.*;
import de.metas.edi.esb.pojo.order.compudata.H000;
import de.metas.edi.esb.pojo.order.compudata.H100;
import de.metas.edi.esb.pojo.order.compudata.P100;
import de.metas.edi.esb.pojo.order.qualifier.*;
import org.apache.commons.lang.StringUtils;
import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.util.ArrayList;
Expand All @@ -41,22 +43,22 @@ public class XMLEDIOrdersBean extends AbstractEDIOrdersBean
{
final List<OrderEDI> ediDocuments = new ArrayList<>();

OrderEDI orderEDI = new OrderEDI(new H000());
final OrderEDI orderEDI = new OrderEDI(new H000());
ediDocuments.add(orderEDI);
Document ordersDocument = (Document)orders.get(0);
for (final Xbest4H order : ordersDocument.getXbest4H())
{
HEADERXbest header = order.getHEADER();
final HEADERXbest header = order.getHEADER();
H100 h100 = mapToH100(header);

OrderHeader orderHeader = new OrderHeader(h100);
final OrderHeader orderHeader = new OrderHeader(h100);
orderEDI.addOrderHeader(orderHeader);
for (DETAILXbest detail : header.getDETAIL())
for (final DETAILXbest detail : header.getDETAIL())
{

P100 p100 = mapToP100(header, detail);
final P100 p100 = mapToP100(header, detail);

OrderLine orderLine = new OrderLine(p100);
final OrderLine orderLine = new OrderLine(p100);
orderHeader.addOrderLine(orderLine);

}
Expand All @@ -67,15 +69,15 @@ public class XMLEDIOrdersBean extends AbstractEDIOrdersBean

private P100 mapToP100(HEADERXbest header, DETAILXbest detail)
{
P100 p100 = new P100();
final P100 p100 = new P100();
p100.setPositionNo(detail.getLINENUMBER());

BigDecimal cutuQty = BigDecimal.ZERO;
BigDecimal orderQty = BigDecimal.ZERO;
String orderUnit = StringUtils.EMPTY;
for (DQUAN1 dquan1 : detail.getDQUAN1())
for (final DQUAN1 dquan1 : detail.getDQUAN1())
{
QuantityQual quantityQual = QuantityQual.valueOf(dquan1.getQUANTITYQUAL());
final QuantityQual quantityQual = QuantityQual.valueOf(dquan1.getQUANTITYQUAL());
switch (quantityQual)
{
case CUTU:
Expand All @@ -88,8 +90,12 @@ private P100 mapToP100(HEADERXbest header, DETAILXbest detail)
{
final String quantityStr = dquan1.getQUANTITY();
orderQty = orderQty.add(new BigDecimal(quantityStr));
//TODO explain
orderUnit = dquan1.getMEASUREMENTUNIT();
//using measurement unit from ORDR, supposing CUTU will not have measurement unit for now
MeasurementUnit measurementUnit = MeasurementUnit.valueOf(dquan1.getMEASUREMENTUNIT());
if (measurementUnit != null)
{
orderUnit = measurementUnit.getCuom();
}
break;
}
}
Expand All @@ -102,16 +108,16 @@ private P100 mapToP100(HEADERXbest header, DETAILXbest detail)
p100.setOrderQty(orderQty.toString());
p100.setOrderUnit(orderUnit);

//TODO get first price
//using only first price
BigDecimal price = BigDecimal.ZERO;
for (DPRIC1 dpric1 : detail.getDPRIC1())
if (!CollectionUtils.isEmpty(detail.getDPRIC1()))
{
price = price.add(new BigDecimal(dpric1.getPRICE()));
price = new BigDecimal(detail.getDPRIC1().get(0).getPRICE());
}
p100.setBuyerPrice(price.toString());

// ProductDescription
for (DPRDE1 dprde1 : detail.getDPRDE1())
for (final DPRDE1 dprde1 : detail.getDPRDE1())
{
if (ProductDescQual.valueOf(dprde1.getPRODUCTDESCQUAL()) == ProductDescQual.PROD)
{
Expand All @@ -122,11 +128,30 @@ private P100 mapToP100(HEADERXbest header, DETAILXbest detail)
}

// Product information
//TODO check mapping
for (DPRIN1 dprin1 : detail.getDPRIN1())
{
//TODO order: EANT, UPCt, EANC, UPCC, GTIN
if (ProductQual.valueOf(dprin1.getPRODUCTQUAL()) == ProductQual.GTIN)
final ProductQual productQual = ProductQual.valueOf(dprin1.getPRODUCTQUAL());
if (productQual == ProductQual.EANT)
{
p100.setEanArtNo(dprin1.getPRODUCTID());
break;
}
if (productQual == ProductQual.UPCT)
{
p100.setEanArtNo(dprin1.getPRODUCTID());
break;
}
if (productQual == ProductQual.EANC)
{
p100.setEanArtNo(dprin1.getPRODUCTID());
break;
}
if (productQual == ProductQual.UPCC)
{
p100.setEanArtNo(dprin1.getPRODUCTID());
break;
}
if (productQual == ProductQual.GTIN)
{
p100.setEanArtNo(dprin1.getPRODUCTID());
break;
Expand All @@ -145,9 +170,9 @@ private H100 mapToH100(HEADERXbest header)
{
H100 h100 = new H100();

for (HADRE1 hadre1 : header.getHADRE1())
for (final HADRE1 hadre1 : header.getHADRE1())
{
AddressQual addressQual = AddressQual.valueOf(hadre1.getADDRESSQUAL());
final AddressQual addressQual = AddressQual.valueOf(hadre1.getADDRESSQUAL());
switch (addressQual)
{
case SUPL:
Expand Down Expand Up @@ -178,9 +203,9 @@ private H100 mapToH100(HEADERXbest header)
}
}

for (HDATE1 hdate1 : header.getHDATE1())
for (final HDATE1 hdate1 : header.getHDATE1())
{
DateQual dateQual = DateQual.valueOf(hdate1.getDATEQUAL());
final DateQual dateQual = DateQual.valueOf(hdate1.getDATEQUAL());
switch (dateQual)
{
case CREA:
Expand Down
46 changes: 46 additions & 0 deletions src/main/java/de/metas/edi/esb/pojo/common/MeasurementUnit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package de.metas.edi.esb.pojo.common;

import com.google.common.collect.Maps;

import java.util.Map;

public enum MeasurementUnit
{
KILO("KGM"),
LITR("LTR"),
METR("MTR"),
SQMT("MTK"),
CBMT("MTQ"),
PIEC("PCE"),
PACK("CNP"), //TODO not sure
CART("KRT"),
BAGS("Bund"); //TODO not sure

private final String cuom;

MeasurementUnit(String cuom)
{
this.cuom = cuom;
}

private static final Map<String, MeasurementUnit> cuomIndex =
Maps.newHashMapWithExpectedSize(MeasurementUnit.values().length);

static
{
for (MeasurementUnit uom : MeasurementUnit.values())
{
cuomIndex.put(uom.cuom, uom);
}
}

public static MeasurementUnit fromCUOM(String name)
{
return cuomIndex.get(name);
}

public String getCuom()
{
return cuom;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@

public enum DiscrepencyCode
{
BFOL, BCOM
BFOL, BCOM, OVSH
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.desadv.qualifier;

public enum PackagingCode
{
ISO1, ISO2, ONEW, RETR, PACK, SLPS, CART, BOXS
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.desadv.qualifier;

public enum PackagingLevel
{
INNE, OUTE
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@
public enum AddressQual
{
SUPL, BUYR, DELV, IVCE, ULCO, ISSI

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@

public enum DocumentType
{
CMIV, CRNO, DBNO
CMIV, CRNO, DBNO, CRNF, DBNF, CSIV, CSCN
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.invoice.qualifier;

public enum EancomLocationQual
{
DP, IV, BY, SU, SN
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.invoice.qualifier;

public enum PriceSpecCode
{
NETP, RETP
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.invoice.qualifier;

public enum ProductDescLang
{
DE, EN, FR, IT
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.invoice.qualifier;

public enum ProductDescType
{
CU, TU, RC, SER
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.invoice.qualifier;

public enum TimePeriodType
{
DAYS
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.metas.edi.esb.pojo.invoice.qualifier;

public enum TimeRelation
{
AFTR
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
*/

import de.metas.edi.esb.commons.Constants;
import de.metas.edi.esb.commons.Util;
import de.metas.edi.esb.jaxb.EDICctopInvoicVType;
import de.metas.edi.esb.jaxb.EDIExpDesadvType;
import de.metas.edi.esb.jaxb.EDIExpMInOutType;
Expand All @@ -37,9 +38,16 @@
@Component
public class EDIExportCommonRoute extends AbstractEDIRoute
{

public static final String EDI_INVOICE_IS_XML = "edi.props.invoice.isXML";

public static final String EDI_DESADV_IS_XML = "edi.props.desadv.isXML";

@Override
public void configureEDIRoute(final DataFormat jaxb, final DecimalFormat decimalFormat)
{
final String isXMLInvoice = Util.resolvePropertyPlaceholders(getContext(), EDIExportCommonRoute.EDI_INVOICE_IS_XML);
final String isXMLDesadv = Util.resolvePropertyPlaceholders(getContext(), EDIExportCommonRoute.EDI_DESADV_IS_XML);
from(Constants.EP_AMQP_FROM_AD)
.routeId("XML-To-EDI-Common")

Expand All @@ -55,18 +63,25 @@ public void configureEDIRoute(final DataFormat jaxb, final DecimalFormat decimal

// @formatter:off
.choice()
// Invoice
.when(body().isInstanceOf(EDICctopInvoicVType.class))
.to(EDIInvoiceRoute.EP_EDI_INVOICE_CONSUMER)
//TODO use property - for diff
//
.choice()
.when(isXML -> Boolean.valueOf(isXMLInvoice))
.to(XMLInvoiceRoute.EP_EDI_INVOICE_XML_CONSUMER)
.otherwise()
.to(EDIInvoiceRoute.EP_EDI_INVOICE_CONSUMER)
.endChoice()
// Single InOut DESADV
.when(body().isInstanceOf(EDIExpMInOutType.class))
.to(EDIDesadvRoute.EP_EDI_DESADV_SINGLE_CONSUMER)
//
// Aggregated InOut DESADV
.when(body().isInstanceOf(EDIExpDesadvType.class))
.to(EDIDesadvRoute.EP_EDI_DESADV_AGGREGATE_CONSUMER)
//TODO use property - for diff
.choice()
.when(isXML -> Boolean.valueOf(isXMLDesadv))
.to(XMLDesadvRoute.EP_EDI_XML_DESADV_AGGREGATE)
.otherwise()
.to(EDIDesadvRoute.EP_EDI_DESADV_AGGREGATE_CONSUMER)
.endChoice()
.end();
// @formatter:on
}
Expand Down
Loading

0 comments on commit 743ffac

Please sign in to comment.