Wednesday, 11 June 2014

A custom export to excel function with custom filters.




public void ExpotToExcel()
{
   

    CustInvoiceJour localcustInvoiceJour;
    CustInvoiceTrans localcustInvoiceTrans;
    SalesTable localsalesTable;
    SalesLine localsalesLine;
    InventDim localinventDim;
    ProdTable localprodTable;
    CustTable localcustTable;

    container line;
    CommaIo   file;

    FormRun     formrun;
    Args        args;
    ARG_InvoiceExportFilters invoiceExportFilters;

    FilePath filename = WinAPI::getSaveFileName(0, ["Comma Sperated Value .csv", "*.csv"], "", "Specify Path", "", "InvoiceInquiry"+ curUserId() + date2str(systemDateGet(), 321, 2, DateSeparator::None, 2, DateSeparator::None, 4) + ".csv");

    args = new Args(formStr(ARG_InvoiceExportFilters));


    formRun = new FormRun(args);
    formRun.init();
    formRun.run();
    formRun.wait();

    select invoiceExportFilters;

    file = new CommaIo(filename, 'W');
    if( !file || file.status() != IO_Status::Ok)
    {
        throw error("File Cannot be opened");
    }

    line = ["Invoice", "Date", "Item Id", "Main Account", "Sales Order", "Delivery Name", "Sales District", "Sales Taker", "Production Order",
            "Location", "Size", "Resource Group", "Prod Line", "Shipped", "Booking", "Extended Cost", "Commission", "Profit %",
            "Actual Item Costs", "Actual Process Costs", "Actual Service Costs", "Actual Indirect Rate Costs", "Actual Costs Total",
            "Estimated Item Costs", "Estimated Process Costs", "Estimated Service Costs", "Estimated Indirect Rate Costs", "Estimated Costs Total",
            "Standard Costs"];
    file.writeExp(line);

    if(subStr(invoiceExportFilters.InvoiceDate, 0, 1) == "<"){

        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate < str2Date(subStr(invoiceExportFilters.InvoiceDate, 2, strLen(invoiceExportFilters.InvoiceDate)-1), 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }
    else if(subStr(invoiceExportFilters.InvoiceDate, 0, 1) == ">"){


        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate > str2Date(subStr(invoiceExportFilters.InvoiceDate, 2, strLen(invoiceExportFilters.InvoiceDate)-1), 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                       file.writeExp(line);
                }
        }
    }

    else if(invoiceExportFilters.InvoiceDate == "*"){
        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }
    else if(strContains(invoiceExportFilters.InvoiceDate, "..")){
        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate >= str2Date(subStr(invoiceExportFilters.InvoiceDate, 1, 10), 123)
                                             && localcustInvoiceJour.InvoiceDate <= str2Date(subStr(invoiceExportFilters.InvoiceDate, 13, strLen(invoiceExportFilters.InvoiceDate)-1), 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }

    else{

        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate == str2Date(invoiceExportFilters.InvoiceDate, 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }

    info("Data exported to file: " + filename);


}

No comments:

Post a Comment