zoukankan      html  css  js  c++  java
  • AX 2009 销售订单导入导出

      在AX 2009 中EXCEL的导入导出是经常会做的事情,很多客户用习惯了EXCEL,都喜欢直接在EXCEL里面去添加数据,不习惯在AX系统里去录数据,这样的话,我们就需要将EXCEL录入的数据导入到AX系统。

      要想没有任何问题的将EXCEL里的数据,准备的录入到AX中,我们需要得先在AX中生成EXCEL的模版,用户将根据AX系统提供的模版进行录入数据。这样达到准确无误的将数据添加到AX系统中,具体的实现代码如下。

    1,类,全局变量定义

    public class RGD_SalesOrderLead extends runBaseBatch
    {
        #Excel
    
        dialogfield             dialogFilename;
        dialogTabPage           dialogTabPageOut;
        dialogfield             dialogFileNameOut;
        dialogTabPage           dialogTabPageIn;
        dialogfield             ifLeadOut;
        NoYes                   leadOut;
        DialogField                     dialogShowTemplate;
        NoYesId                         showTemplate;
        FileNameOpen            fileName,fileNameAll,fileNameOut,fileNameOutAll;
    
        Str                 callParm;
        FormStringControl fileNameControl;
        boolean                retLead;
    
        LedgerJournalTrans  ledgerJournalTrans;
        SalesId             _salesId;
    
        Object              obj;
        FormDataSource      fds;
    
        SalesTable          salesTable;
    
        Str 20                useridTime;
    
        #File
        #define.CurrentVersion(1)
        #define.version1(1)
        #localmacro.CurrentList
            //filename
            fileNameOut
        #endmacro
    }
    

    2,画出操作界面

     

    protected Object dialog()
    {
        DialogRunbase       dialog = super();
        Str                 filenameStr;
        Str                 TxtName;
        container           Con;
        ;
        dialogTabPageIn     = dialog.addTabPage("销售订单导入");
    
        dialogFilename      = dialog.addFieldValue(typeid(FileNameOpen),fileName);
    
    
        dialogTabPageOut    = dialog.addTabPage("销售订单模板生成");
    
        dialogFileNameOut   = dialog.addFieldValue(typeid(FileNameSave),fileNameOut);
        dialogShowTemplate  = dialog.addFieldValue(typeid(NoYesId),showTemplate,"@INT3","@INT4");
        //filenameStr = WinAPI::getSaveFileName(infolog.hWnd(), ["文本文件","*.xsl"],dialogFileNameOut.value() , "文件保存","",TxtName);
        dialog.addMenuItemButton(MenuItemType::Action,identifierstr(Templates),DialogMenuItemGroup::CurrentGrp);
    
        this.dialogSetFilenameLookup(dialog);
        dialog.filenameLookupFilter();
        //ifLeadOut           = dialog.addFieldValue(typeid(noyes),leadOut,"确认生成模板");
    
    
    
        return              dialog;
    }
    
    public boolean getFromDialog()
    {
        int         position;
        int         positionOut;
        ;
        filename                = dialogFilename.value();
        fileNameOut             = dialogFileNameOut.value();
        //leadOut                 = ifLeadOut.value();
        filenameAll = filename;
        fileNameOutAll = fileNameOut;
        position = strfind(filenameAll,"\\",1,strlen(filenameAll));
        positionOut = strfind(fileNameOutAll,"\\",1,strlen(fileNameOutAll));
        showTemplate = dialogShowTemplate.value();
        if(filenameAll && position)
        {
            do
            {
                filenameAll = strins(filenameAll,"\\",position+1);
                position = strfind(filenameAll,"\\",position + 2,strlen(filenameAll));
            } while (position);
        }
    
        if(fileNameOutAll && positionOut)
        {
            do
            {
                fileNameOutAll = strins(fileNameOutAll,"\\",positionOut+1);
                positionOut = strfind(fileNameOutAll,"\\",positionOut + 2,strlen(fileNameOutAll));
            } while (positionOut);
        }
    
    
        return true;
    }
    
    public void dialogPostRun(DialogRunbase dialog)
    {
        super(dialog);
    
        dialog.dialogForm().formRun().controlMethodOverload(true);
        dialog.formRun().controlMethodOverloadObject(this);
    
    }
    
    void dialogSetFilenameLookup(DialogRunbase dialog)
    {
        FilePath        filePath;
    
    
        //fileNameOut.lookupButton(FormLookupButton::Always);
        dialogFileNameOut.lookupButton(FormLookupButton::Always);
        dialog.filenameLookupFileName(this.parmFileName());
        dialog.filenameLookupFilter(this.filenameLookupFilter());
        [filePath] = fileNameSplit(this.parmFileName());
        dialog.filenameLookupInitialPath(filePath);
    }
    
    container filenameLookupFilter()
    {
    
        return ["@SYS28576",#AllFilesName+#XLS+';'+#XLSM+';'+#XLSX];
    }
    
    private container fileNameLookupFilterCon()
    {
        ;
    
        return ["SXL文件", #AllFilesName + #AllFilesExt];
    }
    

    3,值的类型验证判断

    str 1024 getValue(COMVariant _comVariant)
    {
        str 1024    value;
        str     tmpSubStr;
        ;
        //info(enum2str(_comVariant.variantType()));
        switch(_comVariant.variantType())
        {
            case COMVariantType::VT_BSTR :
                  value=_comVariant.bStr();
                 break;
            case COMVariantType::VT_EMPTY:
                  value='';
                 break;
    
            case COMVariantType::VT_I1:
                  value=num2char(_comVariant.char());
                 break;
    
            case COMVariantType::VT_I2:
                  value=int2str(_comVariant.short());
                 break;
    
            case COMVariantType::VT_I4:
                  value= int2str(_comvariant.int());
                  if (!value)
                      value = int2str(_comVariant.long());
                   break;
    
            case COMVariantType::VT_UI1:
                   value = int2str(_comvariant.byte());
                 break;
    
            case COMVariantType::VT_UI2:
                   value = int2str(_comvariant.uShort());
                  break;
    
            case COMVariantType::VT_UI4:
                   value= int2str(_comVariant.uInt());
                    if (!value)
                        value = int2str(_comVariant.uLong());
                   break;
    
            case COMVariantType::VT_R4 :
                  value = num2str(_comVariant.float(),20,6,1,0);
    
                  tmpSubStr=substr(value,strfind(value,'.',1,strlen(value))+1,strLen(value));
    
                  if(str2int(tmpSubStr)==0)
                       value=num2str(_comVariant.float(),20,0,1,0);
    
                  break;
            case COMVariantType::VT_R8 :
                  value = num2str(_comVariant.double(),20,6,1,0);
    
                  tmpSubStr=substr(value,strfind(value,'.',1,strlen(value))+1,strLen(value));
    
                  if(str2int(tmpSubStr)==0)
                       value=num2str(_comVariant.double(),20,0,1,0);
    
    
                  break;
            case COMVariantType::VT_DECIMAL :
                  value = num2str(_comVariant.decimal(),20,6,1,0);
    
                  tmpSubStr=substr(value,strfind(value,'.',1,strlen(value))+1,strLen(value));
    
                  if(str2int(tmpSubStr)==0)
                       value=num2str(_comVariant.decimal(),20,0,1,0);
    
                  break;
            case COMVariantType::VT_DATE :
                  value = strfmt('%1',_comVariant.date());
                  break;
            case COMVariantType::VT_CY :
                  value = num2str(_comVariant.currency(),20,6,1,0);
    
                  tmpSubStr=substr(value,strfind(value,'.',1,strlen(value))+1,strLen(value));
    
                  if(str2int(tmpSubStr)==0)
                       value=num2str(_comVariant.currency(),20,0,1,0);
           }
    
          return strLtrim(strRtrim(value));
    }
    

    4,缓存上次输入的路径

    public container pack()
    {
        return [#CurrentVersion,#CurrentList];
    }
    
    public boolean unpack(container packedClass)
    {
        Version version     = runbase::getVersion(packedClass);
        ;
        switch (version)
        {
            case #CurrentVersion:
                [version,#CurrentList] = packedClass;
                break;
            default:
                return false;
        }
    
        return true;
    }
    

    5,属性的定义

    Str parmCallParm(Str     _parm = callParm)
    {
    ;
        callParm = _parm;
        return callParm;
    }
    
    FormDataSource parmfds(FormDataSource     _fds = fds)
    {
        ;
        fds = _fds;
        return fds;
    }
    
    FileName parmFileName(Filename _filename = filename)
    {
        ;
        filename = _filename;
        return filename;
    }
    
    Object parmobj(Object     _obj = obj)
    {
    ;
        obj = _obj;
        return obj;
    }
    
    SalesTable parmSalesTable(SalesTable     _salesTable = salesTable)
    {
    ;
        salesTable = _salesTable;
        return salesTable;
    }
    

    6,类构造

    static client public RGD_SalesOrderLead construct()
    {
        return new RGD_SalesOrderLead();
    }

    7,按钮事件

    void mnuItm_1_Clicked()
    {
        retlead = true;
        //this.getFromDialog();
        this.run();
    }

    8,逻辑调用

    static void main(Args _args)
    {
        RGD_SalesOrderLead     import;
        ;
    
        import = RGD_SalesOrderLead::construct();
        import.parmCallParm(_args.parm());
    
        if(_args.parm() == "SalesTable" && _args.record())
            import.parmSalesTable(_args.record());
    
        import.parmobj(_args.caller());
        if(_args.record())
        {
            import.parmfds(_args.caller().dataSource());
        }
        if (import && import.prompt())
        {
            import.run();
        }
    }
    
    void run()
    {
        salesLine           _salesLine;
        ;
    
    
        startLengthyOperation();
        if(callParm == "SalesTable")
        {
            if(retlead)
            {
                this.runTmpSalesTable();
                info("@RGD420");
            }
            else
            {
                if(filename == "")
                {
                    info("@RGD421");
                    return;
                }
                this.runImportSalesTable();
                info("@HFM229");
            }
        }
    
        endLengthyOperation();
    }
    
    void runImportSalesTable()
    {
        SysExcelApplication             excelApp;
        SysExcelWorkbooks               sysExcelWorkbooks;
        SysExcelWorkbook                sysExcelWorkbook;
        SysExcelWorksheets              sysExcelWorksheets;
        SysExcelWorksheet               sysExcelWorksheet;
        SysExcelWorksheet               sysExcelWorksheetLine;
        SysExcelCells                   sysExcelCells;
        SysExcelCells                   sysExcelCellsLine;
        SysExcelCell                    sysExcelCell;
        SysExcelCell                    sysExcelCellLine;
    
        SalesLine                       salesline;
        SalesTable                      _stl;
        SalesLine                       _sl;
        SalesLine                       salesUpd;
        InventDim                       inventDim;
        InventTable                     inventTable;
        CustTable                       tcustTable;
        real                            salesPriceDiscCustAccount;
        RGD_ImportBatchId               importBatchId;
        PriceDiscTable                  priceDiscTable;
        Address                         taddress;
        SalesId                         _sid;
        SalesId                         _sidLine;
        RGD_SalesorderNum               _excelOrderNum;
        AccountNum                      _accountNum;
        RGD_SalesTableHelper            _salesTableHelper;
        SalesTable                      _sth;
    
        str 100                         sheetname;
        int                             _count = 1;
        int                             _countLine = 1;
        //str                           itemid;
        Str                             unitid;
        Str                             InventLocationId;
        boolean                         canInsertflag;
        SalesPrice                      _SalesPrice;
        TaxItemGroup                    _taxItemGroup;
        boolean                         ifemptyBreak;
        boolean                         insertFlg;
        name                            shipTo;
        NumberSeq                       num;
        NumberSeq                       numBatchCode;
        boolean                         insertSalesTableFlg = true;
        boolean                         insertSalesLineFlg = true;
        Str 30                          custSearchName;
        CustTable                       _custTable;
        DirPartyTable                   dirPartTable;
        str                             test;
        boolean                         retRun;
    ;
        useridTime  = curuserid()+int2str(timenow());
        insertFlg   = true;
        sheetname = "Header";
        if( filename == "" )
            return;
    
        excelApp = SysExcelApplication::construct();
        excelApp.displayAlerts(false);
        if (excelApp.workbooks().count())
        {
            excelApp.workbooks().close();
        }
        sysExcelWorkbooks   = excelApp.workbooks();
        sysExcelWorkbooks.open(filenameAll);
        excelApp.displayAlerts(true);
        sysExcelWorkbook  = sysExcelWorkbooks.item(1);
        sysExcelWorksheets = sysExcelWorkbook.worksheets();
        sysExcelWorksheet  = sysExcelWorksheets.itemFromName(sheetname);
        sysExcelWorksheetLine  = sysExcelWorksheets.itemFromName("Line");
        if (!sysExcelWorksheet)
        {
            throw error("@RGD116");
        }
        sysExcelCells      = sysExcelWorksheet.cells();
        sysExcelCellsLine  = sysExcelWorksheetLine.cells();
        retRun = false;
        numBatchCode = NumberSeq::newGetNum(SalesParameters::RGD_ImportBatchId());
        importBatchId = numBatchCode.num();
        try
        {
            ttsbegin;
    
            _salesTableHelper.clear();
            do
            {
                _count++;
                _salesTableHelper.RGD_SalesorderNum = this.getValue(sysExcelCells.item(_count,1).value());
                if(!_salesTableHelper.RGD_SalesorderNum)
                {
                    insertSalesTableFlg = false;
                    continue;
                }
                select firstonly * from _custTable
                    where _custTable.AccountNum == this.getValue(sysExcelCells.item(_count,3).value());
                if(!_custTable)
                {
    
                    info(strfmt("@RGD171",this.getValue(sysExcelCells.item(_count,3).value()),int2str(_count)));
                    retRun = true;
                    continue;
                }
                num     = NumberSeq::newGetNum(SalesParameters::numRefSalesIdNRR());
                _stl.SalesId = num.num();
    
                _stl.RGD_SalesorderSourse = RGD_SalesorderSourse::NRR;
                _stl.CustAccount = this.getValue(sysExcelCells.item(_count,3).value());
                _stl.InvoiceAccount = this.getValue(sysExcelCells.item(_count,3).value());
                _stl.RGD_SalesRemark = this.getValue(sysExcelCells.item(_count,5).value());//Ryan Add 20110823 begin
                _stl.RGD_ImportBatchId = importBatchId;                                    //Ryan Add 20110823 end
                _stl.CurrencyCode = companyinfo::find().CurrencyCode;
                _stl.SalesType = SalesType::Sales;
                _stl.RGD_OrderDate = str2date(this.getValue(sysExcelCells.item(_count,4).value()),321);
                _stl.initValue();
                _stl.initFromCustTable();
                _stl.initInvoiceAccount();
                _stl.insert();
                _salesTableHelper.UseridTime  =  useridTime;
                _salesTableHelper.Salesid = _stl.SalesId;
                _salesTableHelper.insert();
    
            } while(insertSalesTableFlg);
            do
            {
                _countLine++;
                _excelOrderNum = this.getValue(sysExcelCellsLine.item(_countLine,1).value());
                if(!_excelOrderNum)
                {
                    insertSalesLineFlg = false;
                    continue;
                }
                select firstonly * from _salesTableHelper
                    where _salesTableHelper.RGD_SalesorderNum == _excelOrderNum
                       && _salesTableHelper.UseridTime  == useridTime;
                if(!_salesTableHelper.RGD_SalesorderNum)
                {
                    info(strfmt("@RGD169",this.getValue(sysExcelCellsLine.item(_countLine,1).value()),int2str(_countLine)));
                    retRun = true;
                    continue;
                }
                select firstonly * from inventTable
                    where inventTable.ItemId == this.getValue(sysExcelCellsLine.item(_countLine,2).value());
                if(!inventTable)
                {
                    info(strfmt("@RGD170",this.getValue(sysExcelCellsLine.item(_countLine,2).value()),int2str(_countLine)));
                    retRun = true;
                    continue;
                }
                _sl.clear();
                _sl.SalesId = _salesTableHelper.Salesid;
                _sl.ItemId = this.getValue(sysExcelCellsLine.item(_countLine,2).value());
                _sl.initValue();
                _sl.SalesPrice = inventTable.RGD_CoverPrice;
                _sl.initFromSalesTable(SalesTable::find(_salesTableHelper.Salesid));
                _sl.initFromInventTable(inventTable::find(_sl.ItemId));
                _sl.SalesQty = str2num(this.getValue(sysExcelCellsLine.item(_countLine,3).value()));
                _sl.RGD_GrossPrice = Str2num(this.getValue(sysExcelCellsLine.item(_countLine,4).value()));
    
    
    
                // CUS-Add by sherr on 2011-09-08 Begin
                /*
                _sl.HD_VendAccount        = this.getValue(sysExcelCellsLine.item(_countLine,9).value()) ;
                _sl.HD_PurchId            = this.getValue(sysExcelCellsLine.item(_countLine,10).value()) ;
                _sl.HD_LinePercent        = Str2num(this.getValue(sysExcelCellsLine.item(_countLine,11).value())) ;
                _sl.HD_PurchVatCode       = this.getValue(sysExcelCellsLine.item(_countLine,12).value()) ;
                _sl.HD_SalesPackingSlipId = this.getValue(sysExcelCellsLine.item(_countLine,13).value()) ;
                _sl.HD_PurchPackingSlipId = this.getValue(sysExcelCellsLine.item(_countLine,14).value()) ;
               */
               // CUS-Add by sherr on 2011-09-08 End
    
    
                _sth = SalesTable::find(_sl.SalesId);
                tcustTable = CustTable::find(_sth.CustAccount);
                if(tcustTable.InventSiteId != "")
                {
                    inventDim.InventSiteId = tcustTable.InventSiteId;
                }
                else
                {
                    //info(strfmt("@RGD472",tcustTable.AccountNum,int2str(_countLine)));//Ryan modify 20111014 begin
                    info(tcustTable.AccountNum + "客户的站点不存在!");                           //Ryan modify 20111014 end
                    retRun = true;
                    continue;
                }
                if(tcustTable.InventLocation != "")
                {
                    inventDim.InventLocationId = tcustTable.InventLocation;
                }
                else
                {
                    //info(strfmt("@RGD475",tcustTable.AccountNum,int2str(_countLine)));//Ryan modify 20111014 begin
                    info(tcustTable.AccountNum+"客户的仓库不存在!");                      //Ryan modify 20111014 end
                    retRun = true;
                    continue;
                }
                inventDim = InventDim::findOrCreate(inventDim);
                _sl.InventDimId = inventDim.inventDimId;
                test = this.getValue(sysExcelCellsLine.item(_countLine,7).value());
                if(this.getValue(sysExcelCellsLine.item(_countLine,7).value()) == "1")
                {
                    _sl.RGD_SalesType = RGD_SalesType::replaceSales;//Ryan modify 1,2 Correspond RGD_SalesType
                }
                else
                {
                    _sl.RGD_SalesType = RGD_SalesType::BagSlaes;
                }
                shipTo = this.getValue(sysExcelCellsLine.item(_countLine,8).value());
                select firstonly * from taddress
                    where taddress.Name         == shipTo
                    &&    taddress.AddrTableId  == tcustTable.TableId
                    &&    taddress.AddrRecId    == tcustTable.RecId
                    &&    taddress.type            == AddressType::Delivery;
    
                if(taddress)
                {
                    _sl.DeliveryName = taddress.Name;
                }
                else
                {
    
                    info(strfmt("@RGD487",tcustTable.AccountNum,shipTo,int2str(_countLine)));
                    retRun = true;
    
                    continue;
                }
    
               salesPriceDiscCustAccount = RGD_SalesPriceDiscCalc::CalcSODisc(inventTable.ItemGroupId,tcustTable.AccountNum,SystemDateGet(),tcustTable.CustGroup);
    
                _sl.RGD_SalesPriceAct = inventTable.RGD_CoverPrice * ((100- salesPriceDiscCustAccount) / 100);
                _sl.ShippingDateRequested = str2date(this.getValue(sysExcelCellsLine.item(_countLine,6).value()),321);
                //_sl.ReceiptDateRequested = datenull(); //Ryan Remark 20110905
                _sl.createLine(true,
                   false,
                   false,
                   true,
                   true,
                   _sl.salesPrice ? false : true,
                   _stl.Reservation==ItemReservation::Automatic,
                   true);
               salesUpd = SalesLine::findRecId(_sl.RecId,true);
               if(salesUpd.RecId)
               {
                   salesUpd.ShippingDateRequested =  str2date(this.getValue(sysExcelCellsLine.item(_countLine,6).value()),321);
                   //salesUpd.ReceiptDateRequested = datenull();                    //Ryan modify 20110905 begin
                   salesUpd.ReceiptDateRequested = salesUpd.ShippingDateRequested;//Ryan modify 20110905 end
                   salesUpd.SalesPrice = inventTable.RGD_CoverPrice;
                   salesUpd.LinePercent =   salesPriceDiscCustAccount;
                   salesUpd.LineAmount = _sl.SalesQty * _sl.RGD_SalesPriceAct;
                   salesUpd.DeliveryName = shipTo;
                   salesUpd.RGD_ImportBatchId = importBatchId;
                   salesUpd.Dimension[2] = inventTable.Dimension[2];
                   salesUpd.Dimension[5] = inventTable.Dimension[5];
                   salesUpd.doUpdate();
               }
    
            } while(insertSalesLineFlg);
    
            if(retRun)
            {
                throw error("@RGD477");
            }
            ttscommit;
        }
        catch (Exception::Error)
        {
            if(excelApp)
                excelApp.quit();
        }
    
        if(excelApp)
            excelApp.quit();
        else
        {
            if(excelApp)
                excelApp.quit();
        }
        if(fds)
        {
            fds.reread();
            fds.refresh();
        }
    
        delete_from _salesTableHelper
            where _salesTableHelper.UseridTime == useridTime;
    }
    
    void RGD_importHistoryData()//add by sherry
    {
        SysExcelApplication             excelApp;
        SysExcelWorkbooks               sysExcelWorkbooks;
        SysExcelWorkbook                sysExcelWorkbook;
        SysExcelWorksheets              sysExcelWorksheets;
        SysExcelWorksheet               sysExcelWorksheet;
        SysExcelWorksheet               sysExcelWorksheetLine;
        SysExcelCells                   sysExcelCells;
        SysExcelCells                   sysExcelCellsLine;
        SysExcelCell                    sysExcelCell;
        SysExcelCell                    sysExcelCellLine;
    
    
        SalesTable                      newSalesTable ; //add by sherry
        SalesLine                       newSalesLine ;
    
        SalesLine                       salesline;
        SalesTable                      _stl;
        SalesLine                       _sl;
        SalesLine                       salesUpd;
        InventDim                       inventDim;
        InventTable                     inventTable;
        CustTable                       tcustTable;
        real                            salesPriceDiscCustAccount;
        RGD_ImportBatchId               importBatchId;
        PriceDiscTable                  priceDiscTable;
        Address                         taddress;
        SalesId                         _sid;
        SalesId                         _sidLine;
        RGD_SalesorderNum               _excelOrderNum;
        AccountNum                      _accountNum;
        RGD_SalesTableHelper            _salesTableHelper;
        SalesTable                      _sth;
    
        str 100                         sheetname;
        int                             _count = 1;
        int                             _countLine = 1;
    
        Str                             unitid;
        Str                             InventLocationId;
        boolean                         canInsertflag;
        SalesPrice                      _SalesPrice;
        TaxItemGroup                    _taxItemGroup;
        boolean                         ifemptyBreak;
        boolean                         insertFlg;
        name                            shipTo;
        NumberSeq                       num;
        NumberSeq                       numBatchCode;
        boolean                         insertSalesTableFlg = true;
        boolean                         insertSalesLineFlg = true;
        Str 30                          custSearchName;
        CustTable                       _custTable;
        DirPartyTable                   dirPartTable;
        str                             test;
        boolean                         retRun;
        ;
        useridTime  = curuserid()+int2str(timenow());
        insertFlg   = true;
        sheetname = "Header";
        if( filename == "" )
            return;
    
        excelApp = SysExcelApplication::construct();
        excelApp.displayAlerts(false);
        if (excelApp.workbooks().count())
        {
            excelApp.workbooks().close();
        }
        sysExcelWorkbooks   = excelApp.workbooks();
        sysExcelWorkbooks.open(filenameAll);
        excelApp.displayAlerts(true);
        sysExcelWorkbook  = sysExcelWorkbooks.item(1);
        sysExcelWorksheets = sysExcelWorkbook.worksheets();
        sysExcelWorksheet  = sysExcelWorksheets.itemFromName(sheetname);
        sysExcelWorksheetLine  = sysExcelWorksheets.itemFromName("Line");
        if (!sysExcelWorksheet)
        {
            throw error("@RGD116");
        }
        sysExcelCells      = sysExcelWorksheet.cells();
        sysExcelCellsLine  = sysExcelWorksheetLine.cells();
        retRun = false;
        numBatchCode = NumberSeq::newGetNum(SalesParameters::RGD_ImportBatchId());
        importBatchId = numBatchCode.num();
    
    
        try
        {
            ttsbegin;
    
            _salesTableHelper.clear();
    
    
            //insert salesTable
            do
            {
                _count++;
                _salesTableHelper.RGD_SalesorderNum = this.getValue(sysExcelCells.item(_count,1).value());
                if(!_salesTableHelper.RGD_SalesorderNum)
                {
                    insertSalesTableFlg = false;
                    continue;
                }
                select firstonly * from _custTable
                    where _custTable.AccountNum == this.getValue(sysExcelCells.item(_count,3).value());
                if(!_custTable)
                {
                    info(strfmt("@RGD171",this.getValue(sysExcelCells.item(_count,3).value()),int2str(_count)));
                    retRun = true;
                    continue;
                }
    
                newSalesTable.SalesId               = this.getValue(sysExcelCells.item(_count,1).value());
                newSalesTable.RGD_SalesorderSourse  = RGD_SalesorderSourse::NRR;
                newSalesTable.CustAccount           = this.getValue(sysExcelCells.item(_count,3).value());
                newSalesTable.InvoiceAccount        = this.getValue(sysExcelCells.item(_count,3).value());
                newSalesTable.RGD_SalesRemark       = this.getValue(sysExcelCells.item(_count,5).value());
                newSalesTable.RGD_ImportBatchId     = importBatchId;
                newSalesTable.CurrencyCode          = companyinfo::find().CurrencyCode;
                newSalesTable.SalesType             = SalesType::Sales;
                newSalesTable.RGD_OrderDate         = str2date(this.getValue(sysExcelCells.item(_count,4).value()),321);
                newSalesTable.initValue();
                newSalesTable.initFromCustTable();
                newSalesTable.initInvoiceAccount();
                newSalesTable.insert();
    
            } while(insertSalesTableFlg);
    
    
            do
            {
                _countLine++;
                _excelOrderNum = this.getValue(sysExcelCellsLine.item(_countLine,1).value());
                if(!_excelOrderNum)
                {
                    insertSalesLineFlg = false;
                    continue;
                }
                select firstonly * from _salesTableHelper
                    where _salesTableHelper.RGD_SalesorderNum == _excelOrderNum
                       && _salesTableHelper.UseridTime  == useridTime;
    
                if(!_salesTableHelper.RGD_SalesorderNum)
                {
                    info(strfmt("@RGD169",this.getValue(sysExcelCellsLine.item(_countLine,1).value()),int2str(_countLine)));
                    retRun = true;
                    continue;
                }
                newSalesLine.clear();
                newSalesLine.SalesId = this.getValue(sysExcelCellsLine.item(_countLine,1).value()) ;
                newSalesLine.ItemId = this.getValue(sysExcelCellsLine.item(_countLine,2).value());
                newSalesLine.initValue();
                newSalesLine.SalesPrice = inventTable.RGD_CoverPrice;
                newSalesLine.initFromSalesTable(SalesTable::find(_salesTableHelper.Salesid));
                newSalesLine.initFromInventTable(inventTable::find(_sl.ItemId));
                newSalesLine.SalesQty = str2num(this.getValue(sysExcelCellsLine.item(_countLine,3).value()));
                newSalesLine.RGD_GrossPrice = Str2num(this.getValue(sysExcelCellsLine.item(_countLine,4).value()));
    
    
    
                // CUS-Add by sherr on 2011-09-08 Begin
    
                newSalesLine.HD_VendAccount        = this.getValue(sysExcelCellsLine.item(_countLine,9).value()) ;
                newSalesLine.HD_PurchId            = this.getValue(sysExcelCellsLine.item(_countLine,10).value()) ;
                newSalesLine.HD_LinePercent        = Str2num(this.getValue(sysExcelCellsLine.item(_countLine,11).value())) ;
                newSalesLine.HD_PurchVatCode       = this.getValue(sysExcelCellsLine.item(_countLine,12).value()) ;
                newSalesLine.HD_SalesPackingSlipId = this.getValue(sysExcelCellsLine.item(_countLine,13).value()) ;
                newSalesLine.HD_PurchPackingSlipId = this.getValue(sysExcelCellsLine.item(_countLine,14).value()) ;
    
               // CUS-Add by sherr on 2011-09-08 End
                newSalesLine.createLine();
    
    
    
                test = this.getValue(sysExcelCellsLine.item(_countLine,7).value());
                if(this.getValue(sysExcelCellsLine.item(_countLine,7).value()) == "1")
                {
                    _sl.RGD_SalesType = RGD_SalesType::replaceSales;//Ryan modify 1,2 Correspond RGD_SalesType
                }
                else
                {
                    _sl.RGD_SalesType = RGD_SalesType::BagSlaes;
                }
                shipTo = this.getValue(sysExcelCellsLine.item(_countLine,8).value());
                select firstonly * from taddress
                    where taddress.Name         == shipTo
                    &&    taddress.AddrTableId  == tcustTable.TableId
                    &&    taddress.AddrRecId    == tcustTable.RecId
                    && taddress.type            == AddressType::Delivery;
    
                if(taddress)
                {
                    _sl.DeliveryName = taddress.Name;
                }
                else
                {
    
                    info(strfmt("@RGD487",tcustTable.AccountNum,shipTo,int2str(_countLine)));
                    retRun = true;
    
                    continue;
                }
    
               salesPriceDiscCustAccount = RGD_SalesPriceDiscCalc::CalcSODisc(inventTable.ItemGroupId,tcustTable.AccountNum,SystemDateGet(),tcustTable.CustGroup);
    
                _sl.RGD_SalesPriceAct = inventTable.RGD_CoverPrice * ((100- salesPriceDiscCustAccount) / 100);
                _sl.ShippingDateRequested = str2date(this.getValue(sysExcelCellsLine.item(_countLine,6).value()),321);
                //_sl.ReceiptDateRequested = datenull(); //Ryan Remark 20110905
                _sl.createLine(true,
                   false,
                   false,
                   true,
                   true,
                   _sl.salesPrice ? false : true,
                   _stl.Reservation==ItemReservation::Automatic,
                   true);
               salesUpd = SalesLine::findRecId(_sl.RecId,true);
               if(salesUpd.RecId)
               {
                   salesUpd.ShippingDateRequested =  str2date(this.getValue(sysExcelCellsLine.item(_countLine,6).value()),321);
                   //salesUpd.ReceiptDateRequested = datenull();                    //Ryan modify 20110905 begin
                   salesUpd.ReceiptDateRequested = salesUpd.ShippingDateRequested;//Ryan modify 20110905 end
                   salesUpd.SalesPrice = inventTable.RGD_CoverPrice;
                   salesUpd.LinePercent =   salesPriceDiscCustAccount;
                   salesUpd.LineAmount = _sl.SalesQty * _sl.RGD_SalesPriceAct;
                   salesUpd.DeliveryName = shipTo;
                   salesUpd.RGD_ImportBatchId = importBatchId;
                   salesUpd.Dimension[2] = inventTable.Dimension[2];
                   salesUpd.Dimension[5] = inventTable.Dimension[5];
                   salesUpd.doUpdate();
               }
    
            } while(insertSalesLineFlg);
    
            if(retRun)
            {
                throw error("@RGD477");
            }
            ttscommit;
        }
        catch (Exception::Error)
        {
            if(excelApp)
                excelApp.quit();
        }
    
        if(excelApp)
            excelApp.quit();
        else
        {
            if(excelApp)
                excelApp.quit();
        }
        if(fds)
        {
            fds.reread();
            fds.refresh();
        }
    
        delete_from _salesTableHelper
            where _salesTableHelper.UseridTime == useridTime;
    }
    

      

    void runTmpSalesTable()
    {
        SysExcelApplication                     excApp;
        SysExcelWorkbooks                       excBooks;
        SysExcelWorkbook                        excBook;
        SysExcelWorksheets                      excSheets;
        SysExcelWorksheet                       excSheet;
        SysExcelWorksheet                       excSheetLine;
        SysExcelCells                           excCells;
        SysExcelCells                           excCellsLine;
        SysExcelCell                            excCell;
        SysExcelCell                            excCellLine;
        SysExcelStyles                          excStyles;
        SysExcelStyle                           ExcelStyle;
        SysExcelFont                            ExcelFont;
        SysExcelRange                           excRange;
        boolean                                 retl;
        COM                                     cell;
        com                                     columns;
        com                                     Rows;
        COM                                     xslInterior;
        ;
        try
        {
            excApp = SysExcelApplication::construct();
            excBooks = excApp.workbooks();
            excBook = excBooks.add();
            excStyles = excBook.styles();
            ExcelStyle = excStyles.add("bold");
            ExcelFont = ExcelStyle.font();
            ExcelFont.bold(true);
            ExcelFont.italic(true);
            excSheets = excBook.worksheets();
            excSheet = excSheets.itemFromNum(1);
            excSheet.name("Header");
            excCells = excSheet.cells();
            excCells.item(1,1).value("Sales Order Number");
            excCells.item(1,1).comObject().ColumnWidth(25);
            excCells.item(1,2).value("Sales Order Type");
            excCells.item(1,2).comObject().ColumnWidth(25);
            excCells.item(1,3).value("Wholessalor");
            excCells.item(1,3).comObject().ColumnWidth(18);
            excCells.item(1,4).value("Order Date");
            excCells.item(1,4).comObject().ColumnWidth(18);
            excCells.item(1,5).value("Order Reference");
            excCells.item(1,5).comObject().ColumnWidth(25);
            //excCells.item(1,6).value("Order Remark");//Ryan Add 20110823 begin
            //excCells.item(1,6).comObject().ColumnWidth(60);
            excSheet.cells().range('A1:E1').style('bold');
            excSheet.cells().range('A1:E1').horizontalAlignment(3);//Ryan Add 20110823 begin
            excSheetLine = excSheets.itemFromNum(2);
            excSheetLine.name("Line");
            excCellsLine  = excSheetLine.cells();
            excCellsLine.item(1,1).value("Sales Order Number");
            excCellsLine.item(1,1).comObject().ColumnWidth(25);
            excCellsLine.item(1,2).value("Edition");
            excCellsLine.item(1,2).comObject().ColumnWidth(10);
            excCellsLine.item(1,3).value("QTY");
            excCellsLine.item(1,3).comObject().ColumnWidth(8);
            excCellsLine.item(1,4).value("Gross Price");
            excCellsLine.item(1,4).comObject().ColumnWidth(15);
            excCellsLine.item(1,5).value("Discount");
            excCellsLine.item(1,5).comObject().ColumnWidth(15);
            excCellsLine.item(1,6).value("DELDATE");
            excCellsLine.item(1,6).comObject().ColumnWidth(15);
            excCellsLine.item(1,7).value("SalesType");
            excCellsLine.item(1,7).comObject().ColumnWidth(15);
            excCellsLine.item(1,8).value("Ship-to");
            excCellsLine.item(1,8).comObject().ColumnWidth(12);
            excSheetLine.cells().range('A1:H1').style('bold');
            excSheetLine.cells().range('A1:H1').horizontalAlignment(3);
            retl = this.getFromDialog();
            excBook.saveAs(fileNameOut);
            if(showTemplate)
            {
                excApp.visible(true);
            }
            else
            {
                excApp.visible(false);
            }
        }
        catch(exception::Error)
        {
            if(!excApp)
                excApp.quit();
        }
    }
    

      

     

      

     

  • 相关阅读:
    ANSI、UNICODE、UTF8、GB2312、GBK、DBCS、UCS
    javascript实用脚本收藏
    野指针(转载)
    C#将byte[]转换为string (oracle)
    程序员从初级到中级10个秘诀
    js 中 时间戳转换为时间
    prependTo 移动元素内到最前段
    统计json数组元素个数的函数
    setTimeout和setInterval的使用
    js 过滤html
  • 原文地址:https://www.cnblogs.com/dingkui/p/2599395.html
Copyright © 2011-2022 走看看