Skip to content

Commit

Permalink
Making the default UBL order reference ID value customizable; #23
Browse files Browse the repository at this point in the history
  • Loading branch information
phax committed Apr 12, 2024
1 parent 54e3866 commit d1c3c20
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,55 +75,61 @@ public class CIIToUBLConverter implements Callable <Integer>
@Option (names = "--ubl",
paramLabel = "version",
defaultValue = "2.1",
description = "Version of the target UBL Format: '2.1', '2.2', '2.3' or '2.4' (default: ${DEFAULT-VALUE})")
description = "Version of the target UBL Format: '2.1', '2.2', '2.3' or '2.4' (default: '${DEFAULT-VALUE}')")
private String m_sUBLVersion;

@Option (names = "--mode",
paramLabel = "mode",
defaultValue = "AUTOMATIC",
description = "Allowed values: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE})")
description = "Allowed values: ${COMPLETION-CANDIDATES} (default: '${DEFAULT-VALUE}')")
private EUBLCreationMode m_eMode;

@Option (names = { "-t", "--target" },
paramLabel = "directory",
defaultValue = ".",
description = "The target directory for result output (default: ${DEFAULT-VALUE})")
description = "The target directory for result output (default: '${DEFAULT-VALUE}')")
private String m_sOutputDir;

@Option (names = "--output-suffix",
paramLabel = "filename part",
defaultValue = "-ubl",
description = "The suffix added to the output filename (default: ${DEFAULT-VALUE})")
description = "The suffix added to the output filename (default: '${DEFAULT-VALUE}')")
private String m_sOutputFileSuffix;

@Option (names = "--ubl-vatscheme",
paramLabel = "vat scheme",
defaultValue = AbstractCIIToUBLConverter.DEFAULT_VAT_SCHEME,
description = "The UBL VAT scheme to be used (default: ${DEFAULT-VALUE})")
description = "The UBL VAT scheme to be used (default: '${DEFAULT-VALUE}')")
private String m_sVATScheme;

@Option (names = "--ubl-customizationid",
paramLabel = "ID",
defaultValue = AbstractCIIToUBLConverter.DEFAULT_CUSTOMIZATION_ID,
description = "The UBL customization ID to be used (default: ${DEFAULT-VALUE})")
description = "The UBL customization ID to be used (default: '${DEFAULT-VALUE}')")
private String m_sCustomizationID;

@Option (names = "--ubl-profileid",
paramLabel = "ID",
defaultValue = AbstractCIIToUBLConverter.DEFAULT_PROFILE_ID,
description = "The UBL profile ID to be used (default: ${DEFAULT-VALUE})")
description = "The UBL profile ID to be used (default: '${DEFAULT-VALUE}')")
private String m_sProfileID;

@Option (names = "--ubl-cardaccountnetworkid",
paramLabel = "ID",
defaultValue = AbstractCIIToUBLConverter.DEFAULT_CARD_ACCOUNT_NETWORK_ID,
description = "The UBL CardAccount network ID to be used (default: ${DEFAULT-VALUE})")
description = "The UBL CardAccount network ID to be used (default: '${DEFAULT-VALUE}')")
private String m_sCardAccountNetworkID;

@Option (names = "--ubl-defaultorderrefid",
paramLabel = "ID",
defaultValue = AbstractCIIToUBLConverter.DEFAULT_ORDER_REF_ID,
description = "The UBL default order reference ID to be used (default: '${DEFAULT-VALUE}')")
private String m_sDefaultOrderRefID;

@Option (names = "--verbose",
paramLabel = "boolean",
defaultValue = "false",
description = "Enable debug logging (default: ${DEFAULT-VALUE})")
description = "Enable debug logging (default: '${DEFAULT-VALUE}')")
private boolean m_bVerbose;

@Option (names = "--disable-wildcard-expansion",
Expand Down Expand Up @@ -165,7 +171,9 @@ private ICommonsList <File> _resolveWildcards (@Nonnull final List <String> aFil
final File aRootDir = new File (".").getCanonicalFile ();
for (final String sFilename : aFilenames)
{
if (sFilename.indexOf ('*') >= 0 || sFilename.indexOf ('?') >= 0 || (sFilename.indexOf ('[') >= 0 && sFilename.indexOf (']') >= 0))
if (sFilename.indexOf ('*') >= 0 ||
sFilename.indexOf ('?') >= 0 ||
(sFilename.indexOf ('[') >= 0 && sFilename.indexOf (']') >= 0))
{
// Make search pattern absolute
final String sRealName = new File (sFilename).getAbsolutePath ();
Expand Down Expand Up @@ -275,7 +283,8 @@ public Integer call () throws Exception
.setVATScheme (m_sVATScheme)
.setCustomizationID (m_sCustomizationID)
.setProfileID (m_sProfileID)
.setCardAccountNetworkID (m_sCardAccountNetworkID);
.setCardAccountNetworkID (m_sCardAccountNetworkID)
.setDefaultOrderRefID (m_sDefaultOrderRefID);

for (final File f : m_aSourceFiles)
{
Expand Down Expand Up @@ -303,35 +312,40 @@ public Integer call () throws Exception
{
eSuccess = UBL21Marshaller.invoice ()
.setFormattedOutput (bFormattedOutput)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType) aUBL, aDestFile);
.write ((oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType) aUBL,
aDestFile);
}
else
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType)
{
eSuccess = UBL21Marshaller.creditNote ()
.setFormattedOutput (bFormattedOutput)
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType) aUBL, aDestFile);
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType) aUBL,
aDestFile);
}
else
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType)
{
eSuccess = UBL22Marshaller.invoice ()
.setFormattedOutput (bFormattedOutput)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType) aUBL, aDestFile);
.write ((oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType) aUBL,
aDestFile);
}
else
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType)
{
eSuccess = UBL22Marshaller.creditNote ()
.setFormattedOutput (bFormattedOutput)
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType) aUBL, aDestFile);
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType) aUBL,
aDestFile);
}
else
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType)
{
eSuccess = UBL23Marshaller.invoice ()
.setFormattedOutput (bFormattedOutput)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType) aUBL, aDestFile);
.write ((oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType) aUBL,
aDestFile);
}
else
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_23.CreditNoteType)
Expand All @@ -356,7 +370,11 @@ public Integer call () throws Exception

public static void main (final String [] aArgs)
{
LOGGER.info ("CII to UBL Converter v" + CIIToUBLVersion.BUILD_VERSION + " (build " + CIIToUBLVersion.BUILD_TIMESTAMP + ")");
LOGGER.info ("CII to UBL Converter v" +
CIIToUBLVersion.BUILD_VERSION +
" (build " +
CIIToUBLVersion.BUILD_TIMESTAMP +
")");

final CommandLine cmd = new CommandLine (new CIIToUBLConverter ());
cmd.setCaseInsensitiveEnumValuesAllowed (true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,10 @@ public abstract class AbstractCIIToUBLConverter <IMPLTYPE extends AbstractCIIToU
public static final String DEFAULT_PROFILE_ID = "urn:fdc:peppol.eu:2017:poacc:billing:01:1.0";
public static final String DEFAULT_CARD_ACCOUNT_NETWORK_ID = "mapped-from-cii";
public static final String DEFAULT_DATE_TIME_FORMAT = "102";
public static final String DEFAULT_ORDER_REF_ID = "";
public static final boolean DEFAULT_SWAP_QUANTITY_SIGN_IF_NEEDED = true;
public static final boolean DEFAULT_SWAP_PRICE_SIGN_IF_NEEDED = true;

protected static final String DEFAULT_UBL_ORDER_REF_ID = "";

private static final Logger LOGGER = LoggerFactory.getLogger (AbstractCIIToUBLConverter.class);

// Source: EN 16931 validation artefacts
Expand All @@ -102,6 +101,7 @@ public abstract class AbstractCIIToUBLConverter <IMPLTYPE extends AbstractCIIToU
private String m_sCustomizationID = DEFAULT_CUSTOMIZATION_ID;
private String m_sProfileID = DEFAULT_PROFILE_ID;
private String m_sCardAccountNetworkID = DEFAULT_CARD_ACCOUNT_NETWORK_ID;
private String m_sDefaultOrderRefID = DEFAULT_ORDER_REF_ID;
private boolean m_bSwapQuantitySignIfNeeded = DEFAULT_SWAP_QUANTITY_SIGN_IF_NEEDED;
private boolean m_bSwapPriceSignIfNeeded = DEFAULT_SWAP_PRICE_SIGN_IF_NEEDED;

Expand Down Expand Up @@ -194,6 +194,20 @@ public final IMPLTYPE setCardAccountNetworkID (@Nonnull final String sCardAccoun
return thisAsT ();
}

@Nonnull
public final String getDefaultOrderRefID ()
{
return m_sDefaultOrderRefID;
}

@Nonnull
public final IMPLTYPE setDefaultOrderRefID (@Nonnull final String sDefaultOrderRefID)
{
ValueEnforcer.notNull (sDefaultOrderRefID, "DefaultOrderRefID");
m_sDefaultOrderRefID = sDefaultOrderRefID;
return thisAsT ();
}

public final boolean isSwapQuantitySignIfNeeded ()
{
return m_bSwapQuantitySignIfNeeded;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -551,8 +551,8 @@ private void _convertPaymentMeans (@Nonnull final HeaderTradeSettlementType aHea
}

@Nullable
private static OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
private OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
{
final OrderReferenceType aUBLOrderRef = new OrderReferenceType ();
if (aBuyerOrderRef != null)
Expand All @@ -563,7 +563,7 @@ private static OrderReferenceType _createUBLOrderRef (@Nullable final Referenced
if (aUBLOrderRef.getIDValue () == null)
{
// Mandatory element
aUBLOrderRef.setID (DEFAULT_UBL_ORDER_REF_ID);
aUBLOrderRef.setID (getDefaultOrderRefID ());
}
ifNotEmpty (aUBLOrderRef::setSalesOrderID, aSellerOrderRef.getIssuerAssignedIDValue ());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -551,8 +551,8 @@ private void _convertPaymentMeans (@Nonnull final HeaderTradeSettlementType aHea
}

@Nullable
private static OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
private OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
{
final OrderReferenceType aUBLOrderRef = new OrderReferenceType ();
if (aBuyerOrderRef != null)
Expand All @@ -562,7 +562,7 @@ private static OrderReferenceType _createUBLOrderRef (@Nullable final Referenced
if (aUBLOrderRef.getIDValue () == null)
{
// Mandatory element
aUBLOrderRef.setID (DEFAULT_UBL_ORDER_REF_ID);
aUBLOrderRef.setID (getDefaultOrderRefID ());
}
ifNotEmpty (aUBLOrderRef::setSalesOrderID, aSellerOrderRef.getIssuerAssignedIDValue ());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -552,8 +552,8 @@ private void _convertPaymentMeans (@Nonnull final HeaderTradeSettlementType aHea
}

@Nullable
private static OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
private OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
{
final OrderReferenceType aUBLOrderRef = new OrderReferenceType ();
if (aBuyerOrderRef != null)
Expand All @@ -563,7 +563,7 @@ private static OrderReferenceType _createUBLOrderRef (@Nullable final Referenced
if (aUBLOrderRef.getIDValue () == null)
{
// Mandatory element
aUBLOrderRef.setID (DEFAULT_UBL_ORDER_REF_ID);
aUBLOrderRef.setID (getDefaultOrderRefID ());
}
ifNotEmpty (aUBLOrderRef::setSalesOrderID, aSellerOrderRef.getIssuerAssignedIDValue ());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -552,8 +552,8 @@ private void _convertPaymentMeans (@Nonnull final HeaderTradeSettlementType aHea
}

@Nullable
private static OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
private OrderReferenceType _createUBLOrderRef (@Nullable final ReferencedDocumentType aBuyerOrderRef,
@Nullable final ReferencedDocumentType aSellerOrderRef)
{
final OrderReferenceType aUBLOrderRef = new OrderReferenceType ();
if (aBuyerOrderRef != null)
Expand All @@ -563,7 +563,7 @@ private static OrderReferenceType _createUBLOrderRef (@Nullable final Referenced
if (aUBLOrderRef.getIDValue () == null)
{
// Mandatory element
aUBLOrderRef.setID (DEFAULT_UBL_ORDER_REF_ID);
aUBLOrderRef.setID (getDefaultOrderRefID ());
}
ifNotEmpty (aUBLOrderRef::setSalesOrderID, aSellerOrderRef.getIssuerAssignedIDValue ());
}
Expand Down

0 comments on commit d1c3c20

Please sign in to comment.