日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NC65销售订单功能导入

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NC65销售订单功能导入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nc65銷售訂單導入功能開發

?

1.在銷售訂單xml重添加導入按鈕并且引用

?? ?<!-- 導入 -->
?? ?<bean id="saleOrderImportAction" class="nc.ui.so.m30.billui.action.SaleOrderImportAction">
?? ??? ?<property name="model" ref="ManageAppModel" />
?? ??? ?<property name="editor" ref="billFormEditor" />
?? ?</bean>
?2.處理類

package nc.ui.so.m30.billui.action;

import java.awt.event.ActionEvent;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import nc.bs.framework.common.NCLocator;
import nc.desktop.ui.WorkbenchEnvironment;
import nc.itf.uap.IUAPQueryBS;
import nc.itf.uap.pf.IplatFormEntry;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.UIFileChooser;
import nc.ui.pubapp.uif2app.view.BillForm;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.model.AbstractAppModel;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pub.workflownote.WorkflownoteVO;
import nc.vo.pubapp.pflow.PfUserObject;
import nc.vo.so.m30.entity.SaleOrderBVO;
import nc.vo.so.m30.entity.SaleOrderHVO;
import nc.vo.so.m30.entity.SaleOrderVO;

public class SaleOrderImportAction extends NCAction {


?? ? ?/**
?? ? *?
?? ? */
?? ?private static final long serialVersionUID = 8846790840859243861L;
?? ?//private static String home_path = RuntimeEnv.getInstance().getNCHome();
?? ?//private static final String OBJTYPE_SALESMAN = "3";
?? ?private static final String BILLTYPE_SALESORDER = "30-06";
?? ?IUAPQueryBS ?iUAPQueryBS = ?(IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());?
?? ?HashMap<String,String> currentMap = new HashMap<String,String>();
?? ?HashMap<String,String> defdocMap = new HashMap<String,String>();
?? ?HashMap<String,String> userMap = new HashMap<String,String>();
?? ?HashMap<String,String> incomeMap = new HashMap<String,String>();
?? ?HashMap<String,String> stordocMap = new HashMap<String,String>();
?? ?HashMap<String,String> measdocMap = new HashMap<String,String>();
?? ?HashMap<String,String> busitypeMap = new HashMap<String,String>();
?? ?HashMap<String,String> userCountryMap = new HashMap<String,String>();
?? ?private String nexchangerate;
?? ?private BillForm editor;
?? ?private AbstractAppModel model;
?? ?
?? ?public void setCode(String code) {
?? ??? ? ?super.setCode("saleOrderImplExcelAction");
?? ??? ? }

?? ??? ? public SaleOrderImportAction() {
?? ??? ? ?super.setCode("saleOrderImplExcelAction");
?? ??? ? ?super.setBtnName("Excel導入");
?? ??? ? }

?? ??? ??
?? ??? ? ? @Override
?? ??? ? ? public void doAction(ActionEvent e) throws Exception {
?? ??? ??? ? ? boolean isHead = false;
?? ??? ??? ? ? boolean isEnd = false;
?? ??? ??? ? ? String docFlag = "";
?? ??? ??? ? ? //銷售訂單Excel導入
?? ??? ??? ? ? try {?
?? ??? ??? ??? ? ? // String pk_UserId = ?InvocationInfoProxy.getInstance().getUserId();//獲取當前系統登錄用戶
?? ??? ??? ??? ? ? // new UFDateTime(System.currentTimeMillis());//獲取當前系統時間
?? ??? ??? ??? ? ??
?? ??? ??? ??? ? ? //構建文件選擇框對象,返回用戶選中的文件對象
?? ??? ??? ??? ? ? UIFileChooser uiFile = new UIFileChooser();
?? ??? ??? ??? ? ? uiFile.setDialogTitle("Excel數據導入");
?? ??? ??? ??? ? ? int result = uiFile.showOpenDialog(null);//打開一個對話框
?? ??? ??? ??? ? ? File file = uiFile.getSelectedFile();//獲得地址
?? ??? ??? ??? ? ??
?? ??? ??? ??? ? ? //當用戶選擇撤銷時,直接返回
?? ??? ??? ??? ? ? if(result!=0 || file==null)
?? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ? ? try {
?? ??? ??? ??? ??? ? ? //判斷選擇文件類型是否是Excel格式
?? ??? ??? ??? ??? ? ? String path=file.getPath();
?? ??? ??? ??? ??? ? ? //&& !path.endsWith(".xlsx")
?? ??? ??? ??? ??? ? ? if(!(path.endsWith(".xls")))
?? ??? ??? ??? ??? ? ? {
?? ??? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "請選擇Excel格式的文件!\n");
?? ??? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ? ??
?? ??? ??? ??? ??? ? ? //得到Excel文件對象
?? ??? ??? ??? ??? ? ? Workbook?? ?book = Workbook.getWorkbook(file);
?? ??? ??? ??? ??? ? ? Sheet seData= book.getSheet("Sheet1");
?? ??? ??? ??? ??? ? ? if(seData==null)
?? ??? ??? ??? ??? ? ? {
?? ??? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "Excel中沒有'銷售訂單'頁簽,無法完成導入,請將Excel補充完整!\n");
?? ??? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ? ? //得到Excel數據總行數 ??
?? ??? ??? ??? ??? ? ? int rownum = seData.getRows();?
?? ??? ??? ??? ??? ? ? if(rownum<=0)
?? ??? ??? ??? ??? ? ? {
?? ??? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "沒有需要導入的數據\n");
?? ??? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ? ? List<SaleOrderBVO> saleOrderBVOList = new ArrayList<SaleOrderBVO>();
?? ??? ??? ??? ??? ? ? //只有當時第一才需要給表頭賦值。
?? ??? ??? ??? ??? ? ? SaleOrderHVO saleOrderHVO = new SaleOrderHVO();
?? ??? ??? ??? ??? ? ? for(int i = 1; i<rownum;i++){
?? ??? ??? ??? ??? ??? ? ? String docFlagTemp = seData.getRow(i)[0].getContents().toString().trim();
?? ??? ??? ??? ??? ??? ? ? String newDocFlag = seData.getRow(i)[0].getContents().toString();
?? ??? ??? ??? ??? ??? ? ? String nextDocFlag = "";
?? ??? ??? ??? ??? ??? ? ? if ((i+1) != rownum) {
?? ??? ??? ??? ??? ??? ??? ? ? nextDocFlag = seData.getRow(i+1)[0].getContents().toString();
?? ??? ??? ??? ??? ??? ? ? }else{
?? ??? ??? ??? ??? ??? ??? ? ? nextDocFlag = "";
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? if (newDocFlag != null && !"".equals(newDocFlag.trim())) {
?? ??? ??? ??? ??? ??? ??? ? ? newDocFlag = docFlagTemp;
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? //只有當第一條和上一條不同的時候才表明他是新的一條單據.
?? ??? ??? ??? ??? ??? ? ? if (!docFlag.equals(newDocFlag.trim())) {
?? ??? ??? ??? ??? ??? ??? ? ? isHead = true;
?? ??? ??? ??? ??? ??? ??? ? ? docFlag = newDocFlag.trim();
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? if (!docFlag.equals(nextDocFlag.trim())) {
?? ??? ??? ??? ??? ??? ??? ? ? isEnd = true;
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? boolean verification = verification(seData.getRow(0),seData.getRow(i),i,isHead);
?? ??? ??? ??? ??? ??? ? ? if (!verification) {
?? ??? ??? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? if (isHead) {
?? ??? ??? ??? ??? ??? ??? ? ? String fullSaleOrderHVOMessage = fullSaleOrderHVO(seData.getRow(i),saleOrderHVO);
?? ??? ??? ??? ??? ??? ??? ? ? if (fullSaleOrderHVOMessage != null && !"".equals(fullSaleOrderHVOMessage)) {
?? ??? ??? ??? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "第"+(i+1)+"行:\n"+fullSaleOrderHVOMessage+"\n");
?? ??? ??? ??? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? SaleOrderBVO saleOrderBVO = new SaleOrderBVO();
?? ??? ??? ??? ??? ??? ? ? //給表體賦值.
?? ??? ??? ??? ??? ??? ? ? String fullSaleOrderBVOListMessage = fullSaleOrderBVOList(saleOrderBVO,saleOrderHVO,seData.getRow(i));
?? ??? ??? ??? ??? ??? ? ? if (fullSaleOrderBVOListMessage != null && !"".equals(fullSaleOrderBVOListMessage)) {
?? ??? ??? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "第"+(i+1)+"行:\n"+fullSaleOrderBVOListMessage+"\n");
?? ??? ??? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ? saleOrderBVOList.add(saleOrderBVO);
?? ??? ??? ??? ??? ??? ? ? if (isEnd) {
?? ??? ??? ??? ??? ??? ??? ? ? //組織生成單據需要的vo.
?? ??? ??? ??? ??? ??? ??? ? ? SaleOrderVO saleOrderVO = fullAggSaleOrderVO(saleOrderHVO,saleOrderBVOList);
?? ??? ??? ??? ??? ??? ??? ? ? //生成單據.
?? ??? ??? ??? ??? ??? ??? ? ? String createPayBillMessage = createPayBill(saleOrderVO);
?? ??? ??? ??? ??? ??? ??? ? ? if (createPayBillMessage != null && !"".equals(createPayBillMessage)) {
?? ??? ??? ??? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "第"+(i+1)+"行:\n"+createPayBillMessage+"\n");
?? ??? ??? ??? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ??? ? ? //將兩個初始化.
?? ??? ??? ??? ??? ??? ??? ? ? saleOrderBVOList.clear();
?? ??? ??? ??? ??? ??? ??? ? ? saleOrderHVO = new SaleOrderHVO();
?? ??? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ??? ? ??
?? ??? ??? ??? ??? ??? ? ? //將兩個初始化.
?? ??? ??? ??? ??? ??? ? ? isHead = false;
?? ??? ??? ??? ??? ??? ? ? isEnd = false;
?? ??? ??? ??? ??? ? ? }
?? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示","Excel導入完成!\n");?
?? ??? ??? ??? ? ? } catch (Exception e1)?
?? ??? ??? ??? ? ? {
?? ??? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "Excel導入失敗!錯誤代碼:"+e1.getMessage()+"\n");?
?? ??? ??? ??? ??? ? ? return;
?? ??? ??? ??? ? ? }
?? ??? ??? ? ? }
?? ??? ??? ? ? catch (Exception e2) {
?? ??? ??? ??? ? ? MessageDialog.showHintDlg(editor, "提示", "Excel導入失敗!錯誤代碼:"+e2.getMessage()+"\n");?
?? ??? ??? ??? ? ? return;
?? ??? ??? ? ? }
?? ??? ? ? }
?? ??? ? ??
?? ?//我的方法
?? ?/**
?? ? * 每一行報一個錯誤.
?? ? * @param row 行數據.
?? ? * @param rownum 行號.
?? ? */
?? ?public boolean verification(Cell[] head , Cell[] row , int rownum,boolean newBill){
?? ??? ?boolean result = false;
?? ??? ?StringBuilder sbMessage = new StringBuilder();
?? ??? ?//非空校驗.
?? ??? ?for (int i = newBill?0:15 ; i < row.length; i++) {
?? ??? ??? ?Cell cell = row[i];
?? ??? ??? ?String cellVlaue = cell.getContents().toString();
?? ??? ??? ?if (i == 2) {
?? ??? ??? ??? ?continue;
?? ??? ??? ?}
?? ??? ??? ?if (cellVlaue == null || "".equals(cellVlaue.trim())) {
?? ??? ??? ??? ?sbMessage.append(head[i].getContents().toString().trim()).append(":不能為空!\n");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?//字段合法性校驗. ?只有在是新的數據才需要校驗表頭.
?? ??? ?if (newBill) {
?? ??? ??? ?//表頭字段合法性校驗.
?? ??? ??? ?//單據日期
?? ??? ??? ?String dbilldate = row[3].getContents().toString().trim();
?? ??? ??? ?String dateVerification = dateVerification(head[3].getContents().toString().trim(), dbilldate);
?? ??? ??? ?sbMessage.append(dateVerification);
?? ??? ??? ?//銷售組織
?? ??? ??? ?String orgName = row[4].getContents().toString().trim();
?? ??? ??? ?String defDocOrgName = deptOrgVerification(head[4].getContents().toString().trim(), orgName);
?? ??? ??? ?sbMessage.append(defDocOrgName);
?? ??? ??? ?//訂單類型
?? ??? ??? ?String ctrantypeid = row[5].getContents().toString().trim();
?? ??? ??? ?String billTypeMessage = billTypeVerification(head[5].getContents().toString().trim(), ctrantypeid);
?? ??? ??? ?sbMessage.append(billTypeMessage);
?? ??? ??? ?//業務流程名稱
?? ??? ??? ?String busitypeName = row[6].getContents().toString().trim();
?? ??? ??? ?String busitypeNameMessage = busitypeVerification(head[6].getContents().toString().trim(), busitypeName);
?? ??? ??? ?sbMessage.append(busitypeNameMessage);
?? ??? ??? ?//類型--vdef4
?? ??? ?/*?? ?String vdef4Name = row[7].getContents().toString().trim();
?? ??? ??? ?String defDocVdef4Name = defDocVerification(head[7].getContents().toString().trim(), vdef4Name);
?? ??? ??? ?sbMessage.append(defDocVdef4Name);*/
?? ??? ??? ?//客戶
?? ??? ??? ?String ccustomerid = row[8].getContents().toString().trim();
?? ??? ??? ?String customeridMessage = customerVerification(head[8].getContents().toString().trim(), ccustomerid);
?? ??? ??? ?sbMessage.append(customeridMessage);
?? ??? ??? ?//部門
?? ??? ??? ?String cdeptvid = row[9].getContents().toString().trim();
?? ??? ??? ?String deptInfo = deptVerification(head[9].getContents().toString().trim(), cdeptvid);
?? ??? ??? ?sbMessage.append(deptInfo);
?? ??? ??? ?//業務員
?? ??? ??? ?String cemployeeid = row[10].getContents().toString().trim();
?? ??? ??? ?String cemployeeidEmassge = userCodeVerification(head[10].getContents().toString().trim(), cemployeeid);
?? ??? ??? ?sbMessage.append(cemployeeidEmassge);
?? ??? ??? ?//收款協議
?? ??? ??? ?//String cpaytermid = row[11].getContents().toString().trim();
?? ??? ??? ?//String incomeEmassge = incomeVerification(head[11].getContents().toString().trim(), cpaytermid);
?? ??? ?//?? ?sbMessage.append(incomeEmassge);
?? ??? ??? ?
?? ??? ??? ?//整單折扣
?? ??? ??? ?String ndiscountrate = row[12].getContents().toString().trim();
?? ??? ??? ?String numEmassge = numVerification(head[12].getContents().toString().trim(), ndiscountrate);
?? ??? ??? ?sbMessage.append(numEmassge);
?? ??? ??? ?//幣種?
?? ??? ??? ?String currentTypeCode = row[13].getContents().toString().trim();
?? ??? ??? ?String currencyMessage = currentTypeVerification(head[13].getContents().toString().trim(), currentTypeCode);
?? ??? ??? ?sbMessage.append(currencyMessage);
?? ??? ??? ?//折本匯率 nexchangerate
?? ??? ??? ?String exchangeRate = row[14].getContents().toString().trim();
?? ??? ??? ?String exchangeRateEmassge = numVerification(head[14].getContents().toString().trim(), exchangeRate);
?? ??? ??? ?sbMessage.append(exchangeRateEmassge);
?? ??? ?}
?? ??? ?//表體字段合法性校驗.
?? ??? ?//庫存編碼
?? ??? ?String materialCode = row[16].getContents().toString().trim();
?? ??? ?String materialEmassge = materialVerification(head[16].getContents().toString().trim(), materialCode);
?? ??? ?sbMessage.append(materialEmassge);
?? ??? ?//主單位
?? ??? ?String cunitName = row[18].getContents().toString().trim();
?? ??? ?String cunitEmassge = measdocVerification(head[18].getContents().toString().trim(), cunitName);
?? ??? ?sbMessage.append(cunitEmassge);
?? ??? ?//輔單位
?? ??? ?String castunitName = row[19].getContents().toString().trim();
?? ??? ?String castunitEmassge = measdocVerification(head[19].getContents().toString().trim(), castunitName);
?? ??? ?sbMessage.append(castunitEmassge);
?? ??? ?//主數量
?? ??? ?String nnum = row[21].getContents().toString().trim();
?? ??? ?String nnumEmassge = numVerification(head[21].getContents().toString().trim(), nnum);
?? ??? ?sbMessage.append(nnumEmassge);
?? ??? ?//輔數量
?? ??? ?String nastnum = row[22].getContents().toString().trim();
?? ??? ?String nastnumEmassge = numVerification(head[22].getContents().toString().trim(), nastnum);
?? ??? ?sbMessage.append(nastnumEmassge);
?? ??? ?//整單折扣
?? ??? ?String ndiscountrateBody = row[23].getContents().toString().trim();
?? ??? ?String ndiscountrateBodyEmassge = numVerification(head[23].getContents().toString().trim(), ndiscountrateBody);
?? ??? ?sbMessage.append(ndiscountrateBodyEmassge);
?? ??? ?//單品折扣
?? ??? ?String nitemdiscountrate = row[24].getContents().toString().trim();
?? ??? ?String nitemdiscountrateEmassge = numVerification(head[24].getContents().toString().trim(), nitemdiscountrate);
?? ??? ?sbMessage.append(nitemdiscountrateEmassge);
?? ??? ?//折扣額
?? ??? ?String norigdiscount = row[25].getContents().toString().trim();
?? ??? ?String norigdiscountEmassge = numVerification(head[25].getContents().toString().trim(), norigdiscount);
?? ??? ?sbMessage.append(norigdiscountEmassge);
?? ??? ?//稅率
?? ??? ?String ntaxrate = row[26].getContents().toString().trim();
?? ??? ?String ntaxrateEmassge = numVerification(head[26].getContents().toString().trim(), ntaxrate);
?? ??? ?sbMessage.append(ntaxrateEmassge);
?? ??? ?//主含稅單價
?? ??? ?String norigtaxprice = row[27].getContents().toString().trim();
?? ??? ?String norigtaxpriceEmassge = numVerification(head[27].getContents().toString().trim(), norigtaxprice);
?? ??? ?sbMessage.append(norigtaxpriceEmassge);
?? ??? ?//主無稅單價
?? ??? ?String nqtorigprice = row[28].getContents().toString().trim();
?? ??? ?String nqtorigpriceEmassge = numVerification(head[28].getContents().toString().trim(), nqtorigprice);
?? ??? ?sbMessage.append(nqtorigpriceEmassge);
?? ??? ?//本幣價稅合計
?? ??? ?String ntaxmny = row[29].getContents().toString().trim();
?? ??? ?String ntaxmnyEmassge = numVerification(head[29].getContents().toString().trim(), ntaxmny);
?? ??? ?sbMessage.append(ntaxmnyEmassge);
?? ??? ?//成本單價
//?? ??? ?String vdef15 = row[30].getContents().toString().trim();
//?? ??? ?String vdef15Emassge = numVerification(head[30].getContents().toString().trim(), vdef15);
//?? ??? ?sbMessage.append(vdef15Emassge);
?? ??? ?//成本金額
//?? ??? ?String vdef16 = row[31].getContents().toString().trim();
//?? ??? ?String vdef16Emassge = numVerification(head[31].getContents().toString().trim(), vdef16);
//?? ??? ?//校驗 成本金額 = 成本單價*主數量
//?? ??? ?String sumMessage = sumVerification(head[31].getContents().toString().trim(), vdef16, vdef15, nnum);
//?? ??? ?sbMessage.append(vdef16Emassge).append(sumMessage);
?? ??? ?
?? ??? ?//計劃發貨日期
?? ??? ?String dsenddate = row[32].getContents().toString().trim();
?? ??? ?String dateMessage = dateVerification(head[32].getContents().toString().trim(), dsenddate);
?? ??? ?sbMessage.append(dateMessage);
?? ??? ?//要求收貨日期
?? ??? ?String dreceivedate = row[33].getContents().toString().trim();
?? ??? ?String dreceivedateMessage = dateVerification(head[33].getContents().toString().trim(), dreceivedate);
?? ??? ?sbMessage.append(dreceivedateMessage);
?? ??? ?
?? ??? ?//發貨倉庫 ?
//?? ??? ?String csendstordocid = row[34].getContents().toString().trim();
//?? ??? ?String stordocMessage = stordocVerification(head[34].getContents().toString().trim(), csendstordocid);
//?? ??? ?sbMessage.append(stordocMessage);
?? ??? ?//發貨庫存組織
?? ??? ?String csendstockorgvid = row[35].getContents().toString().trim();
?? ??? ?String csendstockorgvidMessage = stockOrgVerification(head[35].getContents().toString().trim(), csendstockorgvid);
?? ??? ?sbMessage.append(csendstockorgvidMessage);
?? ??? ?
?? ??? ?//結算財務組織
?? ??? ?String csettleorgvid = row[36].getContents().toString().trim();
?? ??? ?String csettleorgvidMessage = financeOrgVerification(head[36].getContents().toString().trim(), csettleorgvid);
?? ??? ?sbMessage.append(csettleorgvidMessage);
?? ??? ?
?? ??? ?//批次號校驗 ?pk_batchcode 批次檔案 ? vbatchcode 批次號
?? ??? ?String vbatchcode = row[20].getContents().toString().trim();
?? ??? ?//啟用了批次管理才需要去校驗.沒有就不需要.
?? ??? ?if (wholemanaflag(getPkMateria(materialCode.trim()),getPkStockOrg(csendstockorgvid.trim()))) {
?? ??? ??? ?String vbatchcodeVidMessage = vbatchcodeVerification(head[20].getContents().toString().trim(), vbatchcode,getPkMateria(materialCode.trim()).trim());
?? ??? ??? ?sbMessage.append(vbatchcodeVidMessage);
?? ??? ?}
?? ??? ?
?? ??? ?//判斷是否有錯誤信息.
?? ??? ?String messageStr = sbMessage.toString();
?? ??? ?if (messageStr != null && !"".equals(messageStr.trim())) {
?? ??? ??? ?MessageDialog.showHintDlg(editor, "提示", "第"+(rownum+1)+"行:\n"+messageStr);?
?? ??? ?}else{
?? ??? ??? ?result = true;
?? ??? ?}
?? ??? ?
?? ??? ?return result;
?? ?}
?? ?/**
?? ? * 判斷是否是合法的數值.
?? ? * @param headName 列名.
?? ? * @param numStr 需要判斷的列值.
?? ? * @return 返回錯誤xinx.
?? ? */
?? ?public String numVerification(String headName , String numStr){
?? ??? ?if (isNum(numStr.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":請填入合法的數值!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷是否是合法的數值.
?? ? * @param headName 列名.
?? ? * @param numStr 需要判斷的列值.
?? ? * @return 返回錯誤xinx.
?? ? */
?? ?public String vbatchcodeVerification(String headName , String vbatchcode,String cmaterialoid){
?? ??? ?
?? ??? ?String pkVbatchcode = getPkVbatchcode(vbatchcode,cmaterialoid);
?? ??? ?if (pkVbatchcode != null && !"".equals(pkVbatchcode.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該物料編碼沒有對應的該批次號!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷是否需要校驗批次號是否合法 true 需要,false 不需要.
?? ? * @param headName 列名.
?? ? * @param numStr 需要判斷的列值.
?? ? * @return 返回錯誤xinx.
?? ? */
?? ?public boolean wholemanaflag(String pk_material,String pk_org){
?? ??? ?if (pk_material != null && !"".equals(pk_material.trim()) && pk_org != null && !"".equals(pk_org.trim())) {
?? ??? ??? ?String materialstockInfo = getMaterialstockInfo("wholemanaflag",pk_material,pk_org);
?? ??? ??? ?if (materialstockInfo != null && "Y".equals(materialstockInfo.trim()) && !"".equals(materialstockInfo.trim())) {
?? ??? ??? ??? ?return true;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return false;
?? ?}
?? ?/**
?? ? * 獲取批次pk
?? ? * @param vbatchcode 批次號.
?? ? * @param pk_material 物料pk
?? ? * @return
?? ? */
?? ?public String getPkVbatchcode(String vbatchcode,String pk_material){
?? ??? ?String psn_pk = "";
?? ??? ?Object obj = null;
?? ??? ?String sqlStr = "select PK_BATCHCODE from scm_batchcode where VBATCHCODE = '"+vbatchcode+"' and CMATERIALOID='"+pk_material+"' and nvl(dr,0) = 0";
?? ??? ?try {
?? ??? ??? ?obj = iUAPQueryBS.executeQuery(sqlStr, ?new ColumnProcessor());
?? ??? ?} catch (BusinessException e) {
?? ??? ??? ?// TODO 自動生成的 catch 塊
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?if (obj != null ){
?? ??? ??? ?psn_pk = obj.toString();
?? ??? ?}?
? ? ? ? return psn_pk;
?? ?}
?? ?/**
?? ? * 判斷該物料代碼是否開啟了批次管理.
?? ? * @param dbName
?? ? * @param vbatchcode
?? ? * @return ? ? ?
?? ? */ ?
?? ?public String getMaterialstockInfo(String dbName , String pk_material,String pk_org){
?? ??? ?String pkValue = "";
?? ??? ?pkValue = getPkValue("bd_materialstock", dbName, "pk_material", pk_material," pk_org = '"+pk_org+"' ",true);
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 校驗 成本金額 = 成本單價*主數量
?? ? * @param vdef16 ?成本金額
?? ? * @param vdef15 成本單價
?? ? * @param nnum 主數量
?? ? * @return
?? ? */
?? ?public String sumVerification(String headName ,String vdef16,String vdef15,String nnum){
?? ??? ?
?? ??? ?if (isNum(vdef16.trim()) && isNum(vdef15.trim()) && isNum(nnum.trim())) {
?? ??? ??? ?UFDouble vdef16Double = new UFDouble(vdef16);
?? ??? ??? ?UFDouble vdef15Double = new UFDouble(vdef15);
?? ??? ??? ?UFDouble nnumDouble = new UFDouble(nnum);
?? ??? ??? ?
?? ??? ??? ?UFDouble sum = vdef15Double.multiply(nnumDouble);
?? ??? ??? ?if (sum.setScale(2, UFDouble.ROUND_HALF_UP).equals(vdef16Double.setScale(2, UFDouble.ROUND_HALF_UP))) {
?? ??? ??? ??? ?return "";
?? ??? ??? ?}else{
?? ??? ??? ??? ?return headName+":成本金額 != 成本單價*主數量\n";
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return "";
?? ?}
?? ?/**
?? ? * 判斷幣種是否合法.
?? ? * @param headName
?? ? * @param currentType
?? ? * @return
?? ? */
?? ?public String currentTypeVerification(String headName , String currentType){
?? ??? ?String pk_currentType = "";
?? ??? ?pk_currentType = getCurrentType(currentType.trim());
?? ??? ?if (!"".equals(pk_currentType.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":填入的幣種類型不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷自定義檔案是否合法.
?? ? * @param headName
?? ? * @param currentType
?? ? * @return
?? ? */
?? ?public String defDocVerification(String headName , String defDocName){
?? ??? ?String pk_defDoc = "";
?? ??? ?pk_defDoc = getDefdoc(defDocName.trim());
?? ??? ?if (!"".equals(pk_defDoc.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":填入的類型不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 部門組織名稱是否合法.
?? ? * @param headName
?? ? * @param currentType
?? ? * @return
?? ? */
?? ?public String deptOrgVerification(String headName , String deptOrgName){
?? ??? ?String pk_deptOrg = "";
?? ??? ?pk_deptOrg = getPkDeptOrg(deptOrgName.trim());
?? ??? ?if (!"".equals(pk_deptOrg.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":填入的信息不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷訂單是否合法.
?? ? * @param headName
?? ? * @param currentType
?? ? * @return
?? ? */
?? ?public String billTypeVerification(String headName , String billTypeName){
?? ??? ?String pk_billType = "";
?? ??? ?pk_billType = getBillType(billTypeName.trim());
?? ??? ?if (!"".equals(pk_billType.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":填入的類型不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷業務流程名稱是否合法.
?? ? * @param headName
?? ? * @param busitypeName
?? ? * @return
?? ? */
?? ?public String busitypeVerification(String headName , String busitypeName){
?? ??? ?String pk_busitype = "";
?? ??? ?pk_busitype = getPkBusitype(busitypeName.trim());
?? ??? ?if (!"".equals(pk_busitype.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":填入的類型不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷業務員編碼是否合法.
?? ? * @param headName
?? ? * @param userCode
?? ? * @return
?? ? */
?? ?public String userCodeVerification(String headName , String userCode){
?? ??? ?String pk_user = "";
?? ??? ?pk_user = getPkUser(userCode.trim());
?? ??? ?if (!"".equals(pk_user.trim())) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":填入的業務員不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷日期格式是否合法.
?? ? * @param headName
?? ? * @param dateStr
?? ? * @return
?? ? */
?? ?public String dateVerification(String headName , String dateStr){
?? ??? ?if (!"".equals(isDate(dateStr.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":日期格式不對!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷客戶信息是否存在.
?? ? * @param headName
?? ? * @param customerCode 客戶編碼.
?? ? * @return?
?? ? */
?? ?public String customerVerification(String headName , String customerCode){
?? ??? ?if (!"".equals(getPkCustomer(customerCode.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":客戶不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷部門是否存在.
?? ? * @param headName 列名
?? ? * @param deptCode ?部門編碼
?? ? * @return
?? ? */
?? ?public String deptVerification(String headName , String deptCode){
?? ??? ?if (!"".equals(getPkDept(deptCode.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該部門不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷組織是否存在.
?? ? * @param headName 列名
?? ? * @param orgCode ?組織編碼
?? ? * @return
?? ? */
?? ?public String orgVerification(String headName , String orgCode){
?? ??? ?if (!"".equals(getPkOrg(orgCode.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該組織不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷組織是否存在.
?? ? * @param headName 列名
?? ? * @param orgCode ?組織編碼
?? ? * @return
?? ? */
?? ?public String financeOrgVerification(String headName , String orgCode){
?? ??? ?if (!"".equals(getPkFinanceOrg(orgCode.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該組織不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷庫存組織是否存在.
?? ? * @param headName 列名
?? ? * @param orgCode ?組織編碼
?? ? * @return
?? ? */
?? ?public String stockOrgVerification(String headName , String orgCode){
?? ??? ?if (!"".equals(getPkStockOrg(orgCode.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該庫存組織不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷發貨倉庫是否存在.
?? ? * @param headName 列名
?? ? * @param stordocName ?發貨廠庫名稱.
?? ? * @return
?? ? */
?? ?public String stordocVerification(String headName , String stordocName){
?? ??? ?if (!"".equals(getStordoc(stordocName.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該發貨倉庫不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷庫存編碼是否存在.
?? ? * @param headName 列名
?? ? * @param materialCode ?庫存編碼.
?? ? * @return
?? ? */
?? ?public String materialVerification(String headName , String materialCode){
?? ??? ?StringBuilder sb = new StringBuilder("");
?? ??? ?//校驗庫存組織 ?是否存在.
?? ??? ?if (!"".equals(getPkMateria(materialCode.trim()))) {
?? ??? ??? ?//校驗稅收國家是否存在.
?? ??? ??? ?String reptaxcountry = getCmaterialvInfo("td.reptaxcountry" , materialCode);
?? ??? ??? ?if (reptaxcountry == null || "".equals(reptaxcountry.trim())) {
?? ??? ??? ??? ?sb.append(headName+":該庫存編碼對應的報稅國家不存在!\n");
?? ??? ??? ?}
?? ??? ??? ?//校驗稅碼是否存在.
?? ??? ??? ?String pk_taxcode = getCmaterialvInfo("td.pk_taxcode" , materialCode);
?? ??? ??? ?if (pk_taxcode == null || "".equals(pk_taxcode.trim())) {
?? ??? ??? ??? ?sb.append(headName+":該庫存編碼對應的稅碼不存在!\n");
?? ??? ??? ?}
?? ??? ?}else{
?? ??? ??? ?sb.append(headName+":該庫存編碼不存在!\n");
?? ??? ?}
?? ??? ?return sb.toString();
?? ?}
?? ?/**
?? ? * 判斷單位是否存在.
?? ? * @param headName 列名
?? ? * @param measdocName ?單位名稱.
?? ? * @return
?? ? */
?? ?public String measdocVerification(String headName , String measdocName){
?? ??? ?if (!"".equals(getPkMeasdoc(measdocName.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該庫存編碼不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 判斷收款協議是否存在.
?? ? * @param headName 列名
?? ? * @param incomeCode ?收款協議編碼
?? ? * @return
?? ? */
?? ?public String incomeVerification(String headName , String incomeCode){
?? ??? ?if (!"".equals(getPkIncome(incomeCode.trim()))) {
?? ??? ??? ?return "";
?? ??? ?}else{
?? ??? ??? ?return headName+":該收款協議不存在!\n";
?? ??? ?}
?? ?}
?? ?/**
?? ? * 獲得幣種pk.
?? ? * @param currentType
?? ? * @return
?? ? */
?? ?public String getCurrentType(String currentType){
?? ??? ?String pkValue = "";
?? ??? ?if (currentMap.get(currentType) != null) {
?? ??? ??? ?return currentMap.get(currentType);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_currtype", "PK_CURRTYPE", "CODE", currentType,null,true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?currentMap.put(currentType, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得檔案pk.
?? ? * @param defdocName
?? ? * @return 返回pk值.
?? ? */
?? ?public String getDefdoc(String defdocName){
?? ??? ?String pkValue = "";
?? ??? ?if (defdocMap.get(defdocName) != null) {
?? ??? ??? ?return defdocMap.get(defdocName);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_defdoc", "PK_DEFDOC", "name", defdocName,null,true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?defdocMap.put(defdocName, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 部門組織pk.
?? ? * @param deptOrgName
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkDeptOrg(String deptOrgName){
?? ??? ?String pkValue = "";
?? ??? ?pkValue = getPkValue("org_salesorg", "PK_SALESORG", "name", deptOrgName,"ENABLESTATE = 2",true);
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得檔案中組織對應的組織pk.
?? ? * @param defdocName
?? ? * @return 返回pk值.
?? ? */
?? ?public String getDefdocPKOrg(String defdocName){
?? ??? ?String pkValue = "";
?? ??? ?pkValue = getPkValue("bd_defdoc", "PK_ORG", "name", defdocName,null,true);
?? ??? ?return pkValue == null?"":pkValue;
?? ?}?? ?
?? ?/**
?? ? * 獲得單據類型pk.
?? ? * @param defdocName
?? ? * @return 返回pk值.
?? ? */
?? ?public String getBillType(String billTypeName){
?? ??? ?String pkValue = "";
?? ??? ?pkValue = getPkValue("bd_billtype", "PK_BILLTYPEID", "BILLTYPENAME", billTypeName,null,false);
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/** 獲得單據類型編碼.
?? ? * @param defdocName
?? ? * @return 返回pk值.
?? ? */
?? ?public String getBillTypeCode(String billTypeName){
?? ??? ?String pkValue = "";
?? ??? ?pkValue = getPkValue("bd_billtype", "PK_BILLTYPECODE", "BILLTYPENAME", billTypeName,null,false);
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 得到業務流程pK.
?? ? * @param billTypeName 業務流程名稱.
?? ? * @return
?? ? */
?? ?public String getPkBusitype(String busitypeName){
?? ??? ?String pkValue = "";
?? ??? ?if (busitypeMap.get(busitypeName) != null) {
?? ??? ??? ?return busitypeMap.get(busitypeName);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_busitype", "PK_BUSITYPE", "BUSINAME", busitypeName,null,true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?busitypeMap.put(busitypeName, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得單位pk.
?? ? * @param measdocName
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkMeasdoc(String measdocName){
?? ??? ?String pkValue = "";
?? ??? ?if (measdocMap.get(measdocName) != null) {
?? ??? ??? ?return measdocMap.get(measdocName);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_measdoc", "PK_MEASDOC", "name", measdocName,null,true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?measdocMap.put(measdocName, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得發貨廠庫pk.
?? ? * @param stordocName
?? ? * @return 返回pk值.
?? ? */
?? ?public String getStordoc(String stordocName){
?? ??? ?String pkValue = "";
?? ??? ?if (stordocMap.get(stordocName) != null) {
?? ??? ??? ?return stordocMap.get(stordocName);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_stordoc", "PK_STORDOC", "name", stordocName,"ENABLESTATE = 2",true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?stordocMap.put(stordocName, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得人員pk.
?? ? * @param userCode 人員編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkUser(String userCode){
?? ??? ?String pkValue = "";
?? ??? ?if (userMap.get(userCode) != null) {
?? ??? ??? ?return userMap.get(userCode);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_psndoc", "PK_PSNDOC", "code", userCode,null,true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?userMap.put(userCode, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得收款協議pk.
?? ? * @param incomeCode 收款協議編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkIncome(String incomeCode){
?? ??? ?String pkValue = "";
?? ??? ?if (incomeMap.get(incomeCode) != null) {
?? ??? ??? ?return incomeMap.get(incomeCode);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_income", "PK_INCOME", "code", incomeCode,null,true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?incomeMap.put(incomeCode, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得客戶pk.
?? ? * @param userCode 客戶編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkCustomer(String customerCode){
?? ??? ?String pkValue = "";
?? ??? ?pkValue = getPkValue("bd_customer", "PK_CUSTOMER", "code", customerCode,"ENABLESTATE = 2",true);
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得客戶國家pk.
?? ? * @param pk_customer 客戶pk.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkcountry(String pk_customer){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?if (userCountryMap.get(pk_customer) != null) {
?? ??? ??? ?return userCountryMap.get(pk_customer);
?? ??? ?}else{
?? ??? ??? ?pkValue = getPkValue("bd_customer", "pk_country", "pk_customer", pk_customer,"ENABLESTATE = 2",true);
?? ??? ??? ?if (pkValue != null && !"".equals(pkValue.trim())) {
?? ??? ??? ??? ?userCountryMap.put(pk_customer, pkValue.trim());
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得部門pk.
?? ? * @param deptCode 部門編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkDept(String deptCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_dept", "PK_DEPT", "code", deptCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得財務部門pk.
?? ? * @param deptCode 部門編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkDept_V(String deptCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_dept", "PK_VID", "code", deptCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 根據部門編碼獲得組織pk.
?? ? * @param deptCode 部門編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkOrgByDeptCode(String deptCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_orgs", "PK_ORG", "code", deptCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 根據部門編碼獲得財務組織pk.
?? ? * @param deptCode 部門編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkOrg_VByPk_org(String pk_org){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_orgs", "PK_VID", "PK_ORG", pk_org,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 根據組織pk獲得集團pk.
?? ? * @param pk_org 組織pk.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkGroupByDeptCode(String pk_org){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_orgs", "PK_GROUP", "PK_ORG", pk_org,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得存貨編碼pk.
?? ? * @param materiaCode 存貨編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkMateria(String materiaCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("bd_material_v", "PK_MATERIAL", "code", materiaCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得結算組織信息pk.
?? ? * @param orgCode 組織編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkFinanceOrg(String financeorgOrgCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_financeorg_v", "PK_FINANCEORG", "code", financeorgOrgCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得結算組織_V信息pk.
?? ? * @param orgCode 組織編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkFinanceOrg_V(String financeorgOrgCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_financeorg_v", "PK_VID", "code", financeorgOrgCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 客戶收貨地址pk.
?? ? * @param pk_customer 客戶主鍵.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkAddressCustomer(String pk_customer){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("bd_custaddress", "pk_address", "pk_customer", pk_customer,null,true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得組織信息pk.
?? ? * @param orgCode 組織編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkOrg(String orgCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_orgs", "PK_ORG", "code", orgCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得庫存組織信息pk.
?? ? * @param orgCode 組織編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkStockOrg(String orgCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_stockorg_v", "PK_STOCKORG", "code", orgCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 獲得庫存組織_V信息pk.
?? ? * @param orgCode 組織編碼.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkStockOrg_V(String orgCode){
?? ??? ?String pkValue = "";
?? ??? ?
?? ??? ?pkValue = getPkValue("org_stockorg_v", "PK_VID", "code", orgCode,"ENABLESTATE = 2",true);
?? ??? ?
?? ??? ?return pkValue == null?"":pkValue;
?? ?}
?? ?/**
?? ? * 判斷一個字符串是否是合法的數字.
?? ? * @param str
?? ? * @return 是true,否false.
?? ? */
?? ?public boolean isNum(String str) { ?
? ? ? ? Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*.?[\\d]*$"); ?
? ? ? ? return pattern.matcher(str).matches(); ?
?? ?}
?? ?/**
?? ? * 判斷日期是否合法.
?? ? * @param dateStr 日期.
?? ? * @return 是true,否false.
?? ? */
?? ?public boolean isDate(String dateStr) {?
?? ??? ?dateStr = dateStr.replaceAll("/", "-");?
?? ??? ?SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
?? ??? ?try {
?? ??? ??? ?Date parse = sdf.parse(dateStr);?
?? ??? ?} catch (Exception e) {
?? ??? ??? ?return false;
?? ??? ?}
? ? ? ? return true; ?
?? ?}
?? ?/**
?? ? * 轉換日期類型由yyyy/mm/dd ?或者 yyyy/m/d 轉換成yyyy-mm-dd.
?? ? * @param dateStr 日期.
?? ? * @return 轉換后的日期.
?? ? */
?? ?public String tranDate(String dateStr) { ?
?? ??? ?String format = "";
?? ??? ?dateStr = dateStr.replaceAll("/", "-");
?? ??? ?SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
?? ??? ?Date parse = null;
?? ??? ?try {
?? ??? ??? ?parse = sdf.parse(dateStr);
?? ??? ?} catch (ParseException e) {
?? ??? ??? ?// TODO 自動生成的 catch 塊
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?if (parse != null) {
?? ??? ??? ?format = sdf.format(parse);
?? ??? ?}
?? ??? ?return format; ?
?? ?}
?? ?/**
?? ? * 根據查詢條件返回pk值.
?? ? * @param tableName 表名稱.
?? ? * @param pkName 主鍵表中字段名稱.
?? ? * @param dbName 名稱查詢字段對應的表中字段名稱.
?? ? * @param name 名稱value值
?? ? * @param dbCode 編碼查詢字段對應的表中字段名稱.
?? ? * @param code 編碼value值.
?? ? * @param otherWhere 其他的一些查詢條件.
?? ? * @return 返回pk值.
?? ? */
?? ?public String getPkValue(String tableName ,String pkName , String dbName , String name , String otherWhere,boolean hasDr) { ?
?? ??? ?String psn_pk = "";
?? ??? ?StringBuilder sqlsb = new StringBuilder();
?? ??? ?sqlsb.append("select ").append(pkName).append(" from ").append(tableName);
?? ??? ?if (name != null && !"".equals(name.trim())) {
?? ??? ??? ?sqlsb.append(" where ").append(dbName).append(" = '").append(name);
?? ??? ?}
?? ??? ?sqlsb.append("' ");
?? ??? ?if (otherWhere != null) {
?? ??? ??? ?sqlsb.append(" and ").append(otherWhere);
?? ??? ?}
?? ??? ?if (hasDr) {
?? ??? ??? ?sqlsb.append(" and dr = 0 ");
?? ??? ?}
?? ??? ?String sqlStr = sqlsb.toString();
?? ??? ?if (sqlStr != null && !"".equals(sqlStr.trim())) {
?? ??? ??? ?Object obj = null;
?? ??? ??? ?try {
?? ??? ??? ??? ?obj = iUAPQueryBS.executeQuery(sqlStr, ?new ColumnProcessor());
?? ??? ??? ?} catch (BusinessException e) {
?? ??? ??? ??? ?// TODO 自動生成的 catch 塊
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ??? ?if (obj != null ){
?? ??? ??? ??? ?psn_pk = obj.toString();
?? ??? ??? ?}?
?? ??? ?}
? ? ? ? return psn_pk; ?
?? ?}
?? ?/**
?? ? * 獲取中國pk.?
?? ? * @param orgName 銷售組織名稱.
?? ? * @return
?? ? */
?? ?public String getPkCountryChina(){
?? ??? ?String psn_pk = "";
?? ??? ?Object obj = null;
?? ??? ?String sqlStr = "select pk_country from bd_countryzone where code = 'CN' and nvl(dr,0) = 0";
?? ??? ?try {
?? ??? ??? ?obj = iUAPQueryBS.executeQuery(sqlStr, ?new ColumnProcessor());
?? ??? ?} catch (BusinessException e) {
?? ??? ??? ?// TODO 自動生成的 catch 塊
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?if (obj != null ){
?? ??? ??? ?psn_pk = obj.toString();
?? ??? ?}?
? ? ? ? return psn_pk;
?? ?}
?? ?/**
?? ? * 物料編碼信息.?
?? ? * @param cmaterialvCode 物料編碼.
?? ? * @return
?? ? */
?? ?public String getCmaterialvInfo(String dbName , String cmaterialvCode){
?? ??? ?String psn_pk = "";
?? ??? ?Object obj = null;
?? ??? ?String sqlStr = "SELECT "+dbName+" FROM bd_material m left join bd_mattaxes mx ON m.pk_mattaxes = mx.pk_mattaxes "+
?? ??? ??? ??? ??? ??? ?" left join bd_taxcode td ON mx.PK_MATTAXES = td.mattaxes ?left join bd_taxrate te ON td.pk_taxcode = te.pk_taxcode ? WHERE ? m.enablestate = 2 "?
?? ??? ??? ??? ??? ??? ?+" AND nvl( m.dr, 0 ) = 0 ?AND td.enablestate = 2 AND nvl( td.dr, 0 ) = 0 and m.code = '" + cmaterialvCode + "' ";
?? ??? ?try {
?? ??? ??? ?obj = iUAPQueryBS.executeQuery(sqlStr, ?new ColumnProcessor());
?? ??? ?} catch (BusinessException e) {
?? ??? ??? ?// TODO 自動生成的 catch 塊
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?if (obj != null ){
?? ??? ??? ?psn_pk = obj.toString();
?? ??? ?}?
? ? ? ? return psn_pk;
?? ?}
?? ?/**
?? ? * 填充AggregatedValueObject參數.
?? ? * @param parentVO 父類的vo.
?? ? * @param childrenVOs 子類vo的集合.
?? ? * @return AggregatedValueObject.
?? ? */
?? ?public SaleOrderVO fullAggSaleOrderVO(SaleOrderHVO saleOrderHVO , List<SaleOrderBVO> childrenVOList){
?? ??? ?SaleOrderVO saleOrderVO = new SaleOrderVO();
?? ??? ?saleOrderVO.setParent(saleOrderHVO);
?? ??? ?SaleOrderBVO [] childrenVOs = childrenVOList.toArray(new SaleOrderBVO[childrenVOList.size()]);
?? ??? ?saleOrderVO.setChildren(SaleOrderBVO.class, childrenVOs);
?? ??? ?return saleOrderVO;
?? ?}
?? ?/**
?? ? * 創建單據.
?? ? * @param aggPayBillVO 創建單據需要的聚合vo.
?? ? */
?? ?public String createPayBill(SaleOrderVO saleOrderVO){
?? ??? ?//工作項VO
?? ??? ?WorkflownoteVO worknoteVO = null;
?? ??? ?//用戶對象
?? ??? ?PfUserObject userObj = new PfUserObject();
?? ??? ?HashMap businessCheckMap = new HashMap();
?? ??? ?businessCheckMap.put("ARAP_COMMISSION_FLAG",null);
?? ??? ?userObj.setBusinessCheckMap(businessCheckMap);
?? ??? ?//環境參數
?? ??? ?HashMap<String,String> eParam = new HashMap<String,String>();
?? ??? ?eParam.put("notechecked", "notechecked"); ?//設置不需要走審批流.
?? ??? ?eParam.put("nosendmessage", "nosendmessage"); ?//設置不需要走審批流.
?? ??? ?IplatFormEntry IplatFormServer = NCLocator.getInstance().lookup(IplatFormEntry.class);
?? ??? ?try {
?? ??? ??? ?IplatFormServer.processAction("WRITE", BILLTYPE_SALESORDER, worknoteVO, saleOrderVO, userObj, eParam);
?? ??? ?} catch (BusinessException e) {?? ?
?? ??? ??? ?return e.getMessage();
?? ??? ?}
?? ??? ?return "";
?? ?}
?? ?/**
?? ? * 單據表頭賦值.?? ??? ?
?? ? * @param row 行數據.
?? ? * @param payBillVO 單據表頭vo.
?? ? * @return 錯誤信息.
?? ? */
?? ?public String fullSaleOrderHVO(Cell[] row , SaleOrderHVO saleOrderHVO){

?? ??? ?String pk_user = WorkbenchEnvironment.getInstance().getLoginUser().getCuserid();?
?? ??? ?try{
?? ??? ??? ?
?? ??? ??? ?//獲取部門和組織信息.
?? ??? ??? ?String deptCode = row[9].getContents().toString().trim();
?? ??? ??? ?String orgName = row[4].getContents().toString();
?? ??? ??? ?String pkCustomer = getPkCustomer(row[8].getContents().toString().trim());
?? ??? ??? ?String ctrantypeName = row[5].getContents().toString().trim(); ?//訂單類型名稱.
?? ??? ??? ??
?? ??? ??? ?String pk_org = getPkDeptOrg(orgName);
?? ??? ??? ?String dept_vid = getPkDept_V(deptCode);
?? ??? ??? ?String pk_dept = getPkDept(deptCode);
?? ??? ??? ?//String pk_org = getPkOrgByDeptCode(deptCode);
?? ??? ??? ?String org_vid = getPkOrg_VByPk_org(pk_org);
?? ??? ??? ?String pk_group = getPkGroupByDeptCode(pk_org);
?? ??? ??? ?String dbillDate = tranDate(row[3].getContents().toString().trim());
?? ??? ??? ?
?? ??? ??? ?//saleOrderHVO.setCbiztypeid("0001A120000000000V77"); // 業務流程.
?? ??? ??? ?saleOrderHVO.setVbillcode(row[1].getContents().toString().trim());
?? ??? ??? ?saleOrderHVO.setVcooppohcode(row[2].getContents().toString().trim());
?? ??? ??? ?saleOrderHVO.setDbilldate(new UFDate(dbillDate));
?? ??? ??? ?saleOrderHVO.setPk_org_v(org_vid);
?? ??? ??? ?saleOrderHVO.setPk_org(pk_org);
?? ??? ??? ?saleOrderHVO.setPk_group(pk_group);
?? ??? ??? ?saleOrderHVO.setCtrantypeid(getBillType(ctrantypeName)); ?//訂單類型pk
?? ??? ??? ?//saleOrderHVO.setVdef4(getDefdoc(row[7].getContents().toString().trim()));
?? ??? ??? ?saleOrderHVO.setCcustomerid(pkCustomer); ?//客戶.
?? ??? ??? ?saleOrderHVO.setCdeptvid(dept_vid);
?? ??? ??? ?saleOrderHVO.setCdeptid(pk_dept);
?? ??? ??? ?saleOrderHVO.setCemployeeid(getPkUser(row[10].getContents().toString().trim()));
?? ??? ??? ?saleOrderHVO.setCpaytermid(getPkIncome(row[11].getContents().toString().trim()));
?? ??? ??? ?saleOrderHVO.setNdiscountrate(new UFDouble(row[12].getContents().toString().trim()));
?? ??? ??? ?saleOrderHVO.setCorigcurrencyid(getCurrentType(row[13].getContents().toString().trim())); //幣種
?? ??? ??? ?nexchangerate = row[14].getContents().toString().trim();//折本匯率.
?? ??? ??? ?saleOrderHVO.setCreator(pk_user);
?? ??? ??? ?saleOrderHVO.setCreationtime(new UFDateTime());
?? ??? ??? ?
?? ??? ??? ?saleOrderHVO.setBillmaker(pk_user);
?? ??? ??? ?saleOrderHVO.setCbiztypeid(getPkBusitype(row[6].getContents().toString().trim())); ?//業務流程
?? ??? ??? ?//saleOrderHVO.setChreceiveaddid("1101A120000000002ILY");
?? ??? ??? ?saleOrderHVO.setChreceivecustid(pkCustomer); //收貨客戶
?? ??? ??? ?saleOrderHVO.setCinvoicecustid(pkCustomer); //開票客戶
?? ??? ??? ?//saleOrderHVO.setCsaleorderid("1101A91100000001HGP5"); //會自動賦值,賦值會報錯.
?? ??? ??? ?saleOrderHVO.setVtrantypecode(getBillTypeCode(ctrantypeName)); ? //訂單類型編碼.
//?? ??? ??? ?
?? ??? ?}catch(Exception e){
?? ??? ??? ?return e.getMessage();
?? ??? ?}
?? ??? ?return "";
?? ?}
?? ?/**
?? ? * 單據表體vo賦值.
?? ? * @param payBillItemVOList 表體vo集合.
?? ? * @param payBillItemVO 表體vo.
?? ? * @param row 行數據.
?? ? * @return
?? ? */
?? ?public String fullSaleOrderBVOList(SaleOrderBVO saleOrderBVO ,SaleOrderHVO saleOrderHVO, Cell[] row){
?? ??? ?try{
?? ??? ??? ?
?? ??? ??? ?String nqtorigprice = row[28].getContents().toString().trim(); //主無稅單價
?? ??? ??? ?String norigtaxprice = row[27].getContents().toString().trim(); //主含稅單價
?? ??? ??? ?String norigtaxmny = row[29].getContents().toString().trim(); //價稅合計
?? ??? ??? ?String nnum = row[21].getContents().toString().trim();//主數量
?? ??? ??? ?String vbatchcode = row[20].getContents().toString().trim(); //批次號
?? ??? ??? ?String cmaterialvid = row[16].getContents().toString().trim();//存貨編碼
?? ??? ??? ?String vchangerate = row[17].getContents().toString().trim(); //換算率
?? ??? ??? ?
?? ??? ??? ?saleOrderBVO.setCmaterialvid(getPkMateria(cmaterialvid)); ?//存貨編碼
?? ??? ??? ?saleOrderBVO.setCmaterialid(getPkMateria(cmaterialvid));?
?? ??? ??? ?saleOrderBVO.setPk_org(saleOrderHVO.getPk_org()); ?//組織
?? ??? ??? ?saleOrderBVO.setPk_group(saleOrderHVO.getPk_group()); ?//集團
?? ??? ??? ?saleOrderBVO.setVchangerate(vchangerate); ? //換算率
?? ??? ??? ?saleOrderBVO.setCunitid(getPkMeasdoc(row[18].getContents().toString().trim())); ?//主單位
?? ??? ??? ?saleOrderBVO.setCastunitid(getPkMeasdoc(row[19].getContents().toString().trim())); ?//輔單位
?? ??? ??? ?
?? ??? ??? ?saleOrderBVO.setNnum(new UFDouble(row[21].getContents().toString().trim()).setScale(2, UFDouble.ROUND_HALF_UP)); ?//主數量
?? ??? ??? ?saleOrderBVO.setNastnum(new UFDouble(row[22].getContents().toString().trim()).setScale(2, UFDouble.ROUND_HALF_UP)); ?//輔數量
?? ??? ??? ?saleOrderBVO.setNdiscountrate(new UFDouble(row[23].getContents().toString().trim()).setScale(2, UFDouble.ROUND_HALF_UP)); //整單折扣
?? ??? ??? ?saleOrderBVO.setNitemdiscountrate(new UFDouble(row[24].getContents().toString().trim()).setScale(2, UFDouble.ROUND_HALF_UP)); //單品折扣
?? ??? ??? ?saleOrderBVO.setNorigdiscount(new UFDouble(row[25].getContents().toString().trim()).setScale(2, UFDouble.ROUND_HALF_UP)); //折扣額
?? ??? ??? ?saleOrderBVO.setNtaxrate(new UFDouble(row[26].getContents().toString().trim()).setScale(2, UFDouble.ROUND_HALF_UP)); //稅率
?? ??? ??? ?saleOrderBVO.setNorigtaxprice(new UFDouble(norigtaxprice).setScale(6, UFDouble.ROUND_HALF_UP)); //主含稅單價
?? ??? ??? ?saleOrderBVO.setNqtorigprice(new UFDouble(nqtorigprice).setScale(6, UFDouble.ROUND_HALF_UP)); //無稅單價
?? ??? ??? ?saleOrderBVO.setNorigprice(new UFDouble(nqtorigprice).setScale(6, UFDouble.ROUND_HALF_UP)); //主無稅單價
?? ??? ??? ?//saleOrderBVO.setVbdef14(new UFDouble(row[30].getContents().toString().trim()).setScale(6, UFDouble.ROUND_HALF_UP).toString()); //成本單價
?? ??? ?//?? ?saleOrderBVO.setVbdef15(row[31].getContents().toString().trim()); //成本金額
?? ??? ??? ?saleOrderBVO.setDsenddate(new UFDate(tranDate(row[32].getContents().toString().trim()))); //計劃發貨日期
?? ??? ??? ?saleOrderBVO.setDreceivedate(new UFDate(tranDate(row[33].getContents().toString().trim()))); //要求收獲日期
?? ??? ?//?? ?saleOrderBVO.setCsendstordocid(getStordoc(row[34].getContents().toString().trim())); //發貨倉庫
?? ??? ??? ?saleOrderBVO.setCsendstockorgvid(getPkStockOrg_V(row[35].getContents().toString().trim())); //發貨庫存組織
?? ??? ??? ?saleOrderBVO.setCsettleorgvid(getPkFinanceOrg_V(row[36].getContents().toString().trim())); //結算財務組織
?? ??? ??? ?saleOrderBVO.setCcurrencyid(saleOrderHVO.getCorigcurrencyid());
?? ??? ??? ?saleOrderBVO.setNexchangerate(new UFDouble(nexchangerate).setScale(2, UFDouble.ROUND_HALF_UP));
?? ??? ??? ?//不需要批次管理就不賦值.
?? ??? ??? ?if (wholemanaflag(saleOrderBVO.getCmaterialvid(),getPkStockOrg(row[35].getContents().toString().trim()))) {
?? ??? ??? ??? ?saleOrderBVO.setVbatchcode(vbatchcode); //批次號
?? ??? ??? ??? ?saleOrderBVO.setPk_batchcode(getPkVbatchcode(vbatchcode,saleOrderBVO.getCmaterialvid())); // 批次檔案
?? ??? ??? ?}
?? ??? ??? ?//未找到賦值方式.項目主鍵?? ?項目主鍵?? ?carorgvid
?? ??? ??? ?saleOrderBVO.setCarorgid(getPkFinanceOrg(row[36].getContents().toString().trim())); ? //應收組織 結算財務組織
?? ??? ??? ?saleOrderBVO.setCarorgvid(getPkFinanceOrg_V(row[36].getContents().toString().trim())); //應收組織_V ?結算財務組織_V
?? ??? ??? ?saleOrderBVO.setCqtunitid(getPkMeasdoc(row[18].getContents().toString().trim()));
?? ??? ??? ?//saleOrderBVO.setCrececountryid("0001Z011000000079UJJ"); ??? ?//收貨國家
?? ??? ??? ?//saleOrderBVO.setCreceiveaddrid("1101A120000000002ILY");
?? ??? ??? ?saleOrderBVO.setCreceivecustid(saleOrderHVO.getCcustomerid());
?? ??? ??? ?//saleOrderBVO.setCsaleorderbid("1101A91100000001HGP6");
?? ??? ??? ?//saleOrderBVO.setCsaleorderid("1101A91100000001HGP5");
?? ??? ??? ?//saleOrderBVO.setCsendcountryid("0001Z011000000079UJJ");
?? ??? ??? ?saleOrderBVO.setCsendstockorgid(getPkStockOrg(row[35].getContents().toString().trim()));
?? ??? ??? ?saleOrderBVO.setCsettleorgid(getPkFinanceOrg(row[36].getContents().toString().trim()));
?? ??? ??? ?//saleOrderBVO.setCtaxcodeid("1101Z01100000003W0WX"); //稅碼
?? ??? ??? ?//saleOrderBVO.setCtaxcountryid("0001Z011000000079UJJ"); ?//報稅國家
?? ??? ??? ?saleOrderBVO.setCtrafficorgid(getPkStockOrg(row[35].getContents().toString().trim())); ?//物流組織最新版本 ? 發貨庫存組織
?? ??? ??? ?saleOrderBVO.setCtrafficorgvid(getPkStockOrg_V(row[35].getContents().toString().trim())); ?//物流組織_v ?發貨庫存組織_V
?? ??? ??? ?
?? ??? ??? ?
?? ??? ??? ?saleOrderBVO.setBbsendendflag(UFBoolean.FALSE); ?//發貨關閉
?? ??? ??? ?saleOrderBVO.setBboutendflag(UFBoolean.FALSE); ? //出庫關閉
?? ??? ??? ?saleOrderBVO.setBbinvoicendflag(UFBoolean.FALSE); ?//開票關閉
?? ??? ??? ?
?? ??? ??? ?saleOrderBVO.setNqtunitnum(new UFDouble(row[22].getContents().toString().trim()));
?? ??? ??? ?saleOrderBVO.setNqtorigtaxprice(new UFDouble(norigtaxprice).setScale(6, UFDouble.ROUND_HALF_UP)); ?//含稅單價
?? ??? ??? ?saleOrderBVO.setNqtorigtaxnetprc(new UFDouble(norigtaxprice).setScale(6, UFDouble.ROUND_HALF_UP)); //含稅凈價
?? ??? ??? ?saleOrderBVO.setNorigtaxnetprice(new UFDouble(norigtaxprice).setScale(6, UFDouble.ROUND_HALF_UP)); //主含稅凈價
?? ??? ??? ?saleOrderBVO.setNqtorignetprice(new UFDouble(nqtorigprice).setScale(6, UFDouble.ROUND_HALF_UP)); //無稅凈價
?? ??? ??? ?saleOrderBVO.setNorignetprice(new UFDouble(nqtorigprice).setScale(2, UFDouble.ROUND_HALF_UP)); //主無稅凈價
?? ??? ??? ?saleOrderBVO.setNorigmny(new UFDouble(nqtorigprice).multiply(new UFDouble(nnum)).setScale(2, UFDouble.ROUND_HALF_UP)); ?//無稅金額
?? ??? ??? ?saleOrderBVO.setNorigtaxmny(new UFDouble(norigtaxmny).setScale(2, UFDouble.ROUND_HALF_UP)); ? //價稅合計
?? ??? ??? ?saleOrderBVO.setNcaltaxmny(new UFDouble(norigtaxmny).setScale(2, UFDouble.ROUND_HALF_UP)); //計稅金額
?? ??? ??? ?saleOrderBVO.setNnetprice(new UFDouble(nqtorigprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP));//主本幣無稅凈價
?? ??? ??? ?saleOrderBVO.setNtaxprice(new UFDouble(norigtaxprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP)); // 主本幣含稅單價
?? ??? ??? ?saleOrderBVO.setNtaxnetprice(new UFDouble(norigtaxprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP)); // 主本幣含稅凈價
?? ??? ??? ?saleOrderBVO.setNprice(new UFDouble(nqtorigprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP)); // 主本幣無稅單價
?? ??? ??? ?
?? ??? ??? ?saleOrderBVO.setNtaxmny(new UFDouble(norigtaxmny).multiply(new UFDouble(nexchangerate)).setScale(2, UFDouble.ROUND_HALF_UP)); //本幣價稅合計
?? ??? ??? ?saleOrderBVO.setNmny(saleOrderBVO.getNorigmny().multiply(new UFDouble(nexchangerate)).setScale(2, UFDouble.ROUND_HALF_UP)); //本幣無稅金額
?? ??? ??? ?saleOrderBVO.setNqtprice(new UFDouble(nqtorigprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP)); //本幣無稅單價
?? ??? ??? ?saleOrderBVO.setNqtnetprice(new UFDouble(nqtorigprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP)); //本幣無稅凈價
?? ??? ??? ?saleOrderBVO.setNqttaxnetprice(new UFDouble(norigtaxprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP));//本幣含稅凈價?
?? ??? ??? ?saleOrderBVO.setNqttaxprice(new UFDouble(norigtaxprice).multiply(new UFDouble(nexchangerate)).setScale(6, UFDouble.ROUND_HALF_UP)); //本幣含稅單價
?? ??? ??? ?saleOrderBVO.setNtax(saleOrderBVO.getNtaxmny().sub(saleOrderBVO.getNmny()).setScale(2, UFDouble.ROUND_HALF_UP)); //本幣稅額
?? ??? ??? ?saleOrderBVO.setNdiscount(new UFDouble());//本幣折扣額
?? ??? ??? ?saleOrderBVO.setNaccprice(new UFDouble());//主記賬單價
?? ??? ??? ?saleOrderBVO.setFtaxtypeflag(1);// 扣稅類別(默認:應稅外加)
?? ??? ??? ?
?? ??? ??? ?saleOrderBVO.setCtaxcodeid(getCmaterialvInfo("td.pk_taxcode",cmaterialvid));// 稅碼?
?? ??? ??? ?saleOrderBVO.setFbuysellflag(new Integer(getCmaterialvInfo("td.pursaletype",cmaterialvid)));// 購銷類型
?? ??? ??? ?saleOrderBVO.setCtaxcountryid(getCmaterialvInfo("td.reptaxcountry",cmaterialvid));// 報稅國家 ?取物料編碼對應的報稅國.
?? ??? ??? ?saleOrderBVO.setCsendcountryid(getPkCountryChina());// 發貨國家 ?中國
?? ??? ??? ?saleOrderBVO.setCrececountryid(getPkcountry(saleOrderHVO.getCcustomerid()));// 收貨國家 ?客戶所在國
?? ??? ??? ?saleOrderBVO.setFlargesstypeflag(new Integer(1)); //贈品價格分攤方式
?? ??? ??? ?saleOrderBVO.setFrowstatus(1); // 行狀態
?? ??? ??? ?saleOrderBVO.setNweight(new UFDouble(0).setScale(2, UFDouble.ROUND_HALF_UP)); //重量
?? ??? ??? ?saleOrderBVO.setVqtunitrate(vchangerate); //報價換算率
?? ??? ??? ?saleOrderBVO.setCreceiveaddrid(getPkAddressCustomer(saleOrderHVO.getCcustomerid())); //客戶收貨地址 ?bd_custaddress
?? ??? ??? ?//贈品價稅合計=0 賦Y 相反賦N
?? ??? ??? ?if ((new UFDouble(0.00).setScale(2, UFDouble.ROUND_HALF_UP)).equals(saleOrderBVO.getNorigtaxmny())) { //blargessflag
?? ??? ??? ??? ?saleOrderBVO.setBlargessflag(UFBoolean.TRUE);
?? ??? ??? ?}else{
?? ??? ??? ??? ?saleOrderBVO.setBlargessflag(UFBoolean.FALSE);
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?}catch(Exception e){
?? ??? ??? ?return e.getMessage();
?? ??? ?}
?? ??? ?return "";
?? ?}?? ??? ?
?? ?//下面是導入的默認操作?? ??? ?
?? ? ?/**
?? ? ? *?
?? ? ? * @return BillForm
?? ? ? */
?? ? ?public BillForm getEditor() {
?? ? ? ?return this.editor;
?? ? ?}

?? ? ?public AbstractAppModel getModel() {
?? ? ? ?return this.model;
?? ? ?}

?? ?
?? ? ?/**
?? ? ? *?
?? ? ? * @param editor
?? ? ? */
?? ? ?public void setEditor(BillForm editor) {
?? ? ? ?this.editor = editor;
?? ? ?}

?? ?
?? ? ?public void setModel(AbstractAppModel model) {
?? ? ? ?this.model = model;
?? ? ?}
?? ?

}

3. 提供一個模板? ,根據第一列行號來區分條數

?

單據標識銷售訂單號客戶訂單號單據日期銷售組織訂單類型業務流程名稱***客戶部門業務員收款協議整單折扣幣種折本匯率行號存貨編碼換算率主單位輔單位批次號主數量輔數量整單折扣單品折扣折扣額稅率主含稅單價主無稅單價價稅合計******計劃發貨日期要求收貨日期發貨倉庫發貨庫存組織結算財務組織?????????????
1FH-0055-1905-0755?2020-2-1株洲宏達電子股份有限公司軍品期初銷售業務流程軍品期初銷售業務流程~2030546HD06LXYING~100CNY1.00?10502030201421/1千克千克999920201001000134011800~~2020/2/52020/2/5~10011001?????????????
1FH-0055-1905-0755?2020-2-1株洲宏達電子股份有限公司軍品期初銷售業務流程軍品期初銷售業務流程~2030546HD06LXYING~100CNY1.00?20502030068491/1千克千克999920020010010001340218000~~2020/2/52020/2/5~10011001?????????????

?

總結

以上是生活随笔為你收集整理的NC65销售订单功能导入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。