Click or drag to resize

MPInterfacebImportPurchaseProcessDocument Method

Namespace:  MARIInterface
Assembly:  MARIInterface (in MARIInterface.dll) Version: 8.0.0.100
Syntax
public bool bImportPurchaseProcessDocument(
	clsImportPurchaseProcessDocument oPurchaseProcessDocument,
	clsImportBaseeImportMode nImportMode
)

Parameters

oPurchaseProcessDocument
Type: MARIInterfaceclsImportPurchaseProcessDocument
Instance of clsImportPurchaseProcessDocument
nImportMode
Type: MARIInterfaceclsImportBaseeImportMode
Type of validation. See eImportMode for details.

Return Value

Type: Boolean
Remarks

  • To create the coresponding SBO document, set TransferERP=true.
  • Process:
    • The document in MARIProject will be saved.
    • The corresponding item bookings will be created. Errors accure, when the phase is closed or the project manager is not allowed to book. Only purchase process positions linked to sales contract positions can be processed.
    • The document is transfered to SBO. Please consider the DI-API requirements. (32/64 bit, license, link of MARIProject user to SBO user).

Examples
Create Purchase Order
private int CreatePurchaseOrder(int lPOProcessID, DateTime dtDocumentDate) {
    Log($"CreatePurchaseOrder(lPOProcessID={lPOProcessID},{dtDocumentDate.ToShortDateString()})");

    clsImportPurchaseProcessDocument oNewPODoc;
    DateTime dtFilterPos = new DateTime(2016, 7, 1);
    clsImportSalesContractDocument.eDocTypes nDocType = clsImportSalesContractDocument.eDocTypes.PurchaseOrder;
    clsImportSalesContractDocument.eFilterBalanceMode nFilterBalance = clsImportSalesContractDocument.eFilterBalanceMode.NoFilterByQty;

    //The interface will now open the purchase process and creates a new PO document based on the BalaceMode
    oNewPODoc = oMPInterface.CreatePurchaseDocumentFromPurchaseProcess(lPOProcessID, dtFilterPos, nDocType, nFilterBalance,/*BaseDoc*/ 0);

    //add the external information
    oNewPODoc.DocumentDate = dtDocumentDate;
    oNewPODoc.PostingDate = dtDocumentDate;
    oNewPODoc.DocDueDate = new DateTime(2016, 8, 1); //delivery date for the print out

    //change del date in the positiosn
    foreach (clsImportPurchaseProcessDocumentPositions oPos in oNewPODoc.Positions) {
        oPos.DeliveryDate = new DateTime(2016, 8, 1);
    }

    //Create SBO document out of the MARIProject document
    oNewPODoc.TransferERP = true;

    if (oMPInterface.bImportPurchaseProcessDocument(oNewPODoc, clsImportBase.eImportMode.ValidateAndImport)) {
        Log($"CreatePurchaseOrder MPDocID={oNewPODoc.DocumentID}, SBO DocEntry={oNewPODoc.DocEntry}");
        return oNewPODoc.DocumentID;
    } else {
        LogFail("CreatePurchaseOrder: " + oMPInterface.oErrors.PrintErrors());
    }
    return 0;
}
A/P Invoice example
private int CreatePODocumentForPOProcess(int lPOProcessID, int lPurchaseOrderDocID, DateTime dtDocumentDate) {
    Log($"CreatePODocumentForPOProcess({lPOProcessID}, {lPurchaseOrderDocID}, {dtDocumentDate.ToShortDateString()})");

    clsImportPurchaseProcessDocument oNewPODoc;
    DateTime dtFilterPos = new DateTime(2016, 7, 1);
    clsImportSalesContractDocument.eDocTypes nDocType = clsImportSalesContractDocument.eDocTypes.AP_Invoice;
    clsImportSalesContractDocument.eFilterBalanceMode nFilterBalance = clsImportSalesContractDocument.eFilterBalanceMode.QuantityByBaseDocument;

    //The interface will now open the purchase process and creats a new PO document based on the BalaceMode
    oNewPODoc = oMPInterface.CreatePurchaseDocumentFromPurchaseProcess(lPOProcessID, dtFilterPos, nDocType, nFilterBalance, lPurchaseOrderDocID);

    //add the external information
    oNewPODoc.REFNumber = "123456"; // external AP Invoice number
    oNewPODoc.DocumentDate = dtDocumentDate;
    oNewPODoc.PostingDate = dtDocumentDate;
    oNewPODoc.JournalRemark = "Journal Remark";

    //Create SBO document out of the MARIProject document
    oNewPODoc.TransferERP = true;

    //example to add a new text line. Adding other position types needs a reference to the sales contract position.
    clsImportPurchaseProcessDocumentPositions oNewPos = new clsImportPurchaseProcessDocumentPositions();
    oNewPos.PositionType = clsImportSalesContractDocumentPositions.ePosTypes.Text;
    oNewPos.MPPositionType = clsImportProjectContractPosition.eContractPositionType.TextPosition;
    oNewPos.AccountingInfo = "My text";
    oNewPODoc.AddPosition(oNewPos);

    if (oMPInterface.bImportPurchaseProcessDocument(oNewPODoc, clsImportBase.eImportMode.ValidateAndImport)) {
        Log($"bImportPurchaseProcessDocument: MPDocID={oNewPODoc.DocumentID}, SBO DocEntry={oNewPODoc.DocEntry}");
        return oNewPODoc.DocumentID;
    } else {
        LogFail("bImportPurchaseProcessDocument: " + oMPInterface.oErrors.PrintErrors());
    }
    return 0;
}
See Also