日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

NC65销售订单功能导入

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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销售订单功能导入的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲日本激情 | 狠狠狠色 | 日韩精品国产一区 | 亚洲精品欧美专区 | 日韩一级电影在线 | 国产精品九九九九九 | 亚洲免费成人av电影 | 欧美日韩色婷婷 | 夜色在线资源 | 日韩欧美一区二区三区在线 | 欧美综合在线观看 | 久久国产亚洲视频 | 中文字幕 91 | 日韩动漫免费观看高清完整版在线观看 | 久久情网| 波多野结衣日韩 | a电影免费看 | 一级欧美日韩 | 91在线看网站| 色网免费观看 | a黄色片| 欧美日韩中文字幕视频 | 在线免费观看麻豆视频 | 丁香婷婷网| 伊人干综合| 国产精品女同一区二区三区久久夜 | 日本少妇久久久 | 国产精品初高中精品久久 | 亚洲国产精品视频 | 精品女同一区二区三区在线观看 | av中文在线 | 成人毛片一区 | 国产免费成人 | 日本爱爱免费视频 | 国产字幕av | 国际精品久久久久 | 黄色av网站在线免费观看 | 五月婷久久 | 99爱在线| 国产爽视频| 人人爽人人爽人人片av免 | 日韩欧美在线综合网 | 久草影视在线 | 中文字幕在线视频网站 | 91久久在线观看 | 国产精品美女久久久久久久久久久 | 99精品在线免费视频 | 久久综合狠狠综合久久激情 | 中文字幕一区二区三区四区在线视频 | 天堂激情网 | 黄色影院在线免费观看 | 黄色av成人在线观看 | 超碰免费97 | 国产精品久久久久久久久久久免费 | 国产大片免费久久 | 久久99精品一区二区三区三区 | a在线观看国产 | 99久久激情| 国产区精品在线 | 欧美日韩国产综合网 | 麻豆视频免费播放 | 久草在线免费新视频 | 色先锋av资源中文字幕 | 免费看片网址 | 色吧久久 | 日韩丝袜 | 久久久视频在线 | 日本成人中文字幕在线观看 | 日韩高清在线不卡 | 91亚洲精品久久久蜜桃借种 | 日韩成人在线一区二区 | 在线国产视频 | 亚洲精品视频网址 | 久久综合色天天久久综合图片 | 亚洲精品永久免费视频 | 亚洲午夜精品久久久久久久久 | 国产精品嫩草影院9 | 日韩在线电影一区二区 | 免费看黄的 | 婷婷色九月 | 99视频在线观看一区三区 | 91| 一区二区三区在线电影 | 美女在线国产 | 国产精品高潮呻吟久久久久 | 亚洲国产欧美一区二区三区丁香婷 | 亚洲成年片 | 96久久欧美麻豆网站 | 久久综合久久88 | 97成人在线免费视频 | 国产精品久久久久影视 | 中国一区二区视频 | 国产精品亚洲片夜色在线 | 日韩高清一区二区 | 在线免费观看视频一区 | 99久久精品免费看 | 在线99视频 | 日韩经典一区二区三区 | sesese图片| 黄色毛片电影 | 精品国产乱码久久久久 | 亚洲精品视频在线观看免费 | 久久人视频 | 亚洲综合欧美日韩狠狠色 | 97香蕉久久超级碰碰高清版 | 日韩免费中文字幕 | 国产一级视频在线 | 91免费观看 | 欧美最猛性xxx| 久久一区二区免费视频 | 国产麻豆电影在线观看 | 人成午夜视频 | 久久精品99国产 | 在线免费观看国产精品 | 69久久夜色精品国产69 | 国产在线播放一区二区 | 免费在线成人 | 国产精品2020 | 欧美日韩一区二区免费在线观看 | 97看片 | 夜夜夜夜操 | 在线www色 | 黄色影院在线播放 | 午夜 久久 tv | 亚洲婷久久 | a级片久久久 | 久久综合中文色婷婷 | 欧美一区二区三区激情视频 | 精品自拍sae8—视频 | 91在线精品一区二区 | 久久精品国产一区二区三区 | 免费电影一区二区三区 | 国产精品国产三级国产不产一地 | www.天天成人国产电影 | 在线视频电影 | 成人国产综合 | 8090yy亚洲精品久久 | 久久激情综合 | 日韩av看片| 日韩一级理论片 | 中文字幕在线播放一区 | 免费观看黄 | 国产精品丝袜 | 十八岁免进欧美 | 伊人永久在线 | 91网页版免费观看 | 亚洲国产精品久久久久 | 成人影片在线播放 | 一级一片免费观看 | 丁香在线观看完整电影视频 | 在线观看麻豆av | 天天干天天操天天做 | 国产精品国产三级国产 | 久久涩涩网站 | 激情av网| 久久深夜 | 中文字幕中文字幕在线中文字幕三区 | av一级免费| 久久天天躁夜夜躁狠狠85麻豆 | 五月婷婷操 | 久久久麻豆视频 | 精品一区91| 西西4444www大胆视频 | 国产一级三级 | 精品久久毛片 | 久久亚洲欧美 | 91精品综合在线观看 | 日韩和的一区二在线 | 亚洲成av | 中文字幕一区二区三区在线观看 | 日本久久电影 | 日韩,中文字幕 | 91精品在线播放 | 激情久久伊人 | 97人人模人人爽人人喊中文字 | 日韩国产欧美在线视频 | 久久久影视 | 三级在线国产 | 国产精品久久在线观看 | 亚洲资源在线 | 日韩精品中文字幕在线播放 | 久久久91精品国产一区二区三区 | 亚洲视频在线观看 | 国产精品123 | 国产最顶级的黄色片在线免费观看 | 国产成人一区二区三区电影 | 午夜婷婷在线观看 | 久久久九九 | 国产精品久久久久久久久久久久 | 日韩理论电影网 | 亚洲激精日韩激精欧美精品 | 免费看黄的视频 | 成人国产一区 | 久久久久久久久久电影 | 国产录像在线观看 | 亚洲黄色一级大片 | 国产精品av在线免费观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 麻豆影视网| 亚洲狠狠干| 91丨九色丨国产在线 | 国产成人亚洲精品自产在线 | 在线观看日本高清mv视频 | 成片免费观看视频999 | 91精品一 | 国产免费小视频 | 中文字幕在线观看网址 | 国产日韩亚洲 | 日韩精品一区二区三区中文字幕 | 中文字幕av免费 | 91精品综合在线观看 | 青春草免费在线视频 | 中文字幕在线视频免费播放 | 久久久久国产成人免费精品免费 | 色综合天天视频在线观看 | 午夜av大片 | 麻豆精品国产传媒 | 欧洲亚洲精品 | 日日躁夜夜躁aaaaxxxx | 国产又粗又猛又色又黄网站 | 91精品一区二区三区久久久久久 | 99久久久久久久 | 国产精品美女网站 | 亚洲国产片色 | 人人爽人人澡 | 黄色三级免费观看 | 天天摸天天操天天舔 | 国内精品国产三级国产aⅴ久 | 日本亚洲国产 | 人人插人人爱 | 最近日本中文字幕 | 日韩最新在线视频 | 日操操| 在线观看精品视频 | 热九九精品 | 四虎影视成人精品国库在线观看 | 久久精品一区 | 曰本免费av | 久草视频免费在线播放 | 亚洲一区二区视频在线 | 日韩一级黄色av | 99精品免费久久久久久久久 | 国产精品影音先锋 | 天天爽天天爽天天爽 | av超碰在线 | 亚洲一区二区精品视频 | 九九免费在线观看视频 | 在线免费观看视频一区二区三区 | 日韩欧美高清在线 | 伊色综合久久之综合久久 | 亚洲精品在线观看不卡 | 欧美美女一级片 | www.com久久久| 最近免费中文字幕大全高清10 | 国产视频二区三区 | 91在线看黄| 毛片一二区 | 伊人午夜视频 | 伊人国产视频 | 91av蜜桃| 91麻豆精品| av电影中文字幕在线观看 | 日韩av免费大片 | 久久精品99 | 欧美日韩精 | av电影不卡 | 国产精品网红直播 | 成人av电影免费在线观看 | 国产精品 9999 | 日韩视频欧美视频 | 色午夜影院 | 国产精品久久久久久99 | 欧洲黄色片 | 久久99电影| 欧美日本不卡 | 中文字幕在线国产精品 | 18国产精品福利片久久婷 | 美女网站色 | 日韩高清一区在线 | 国产精品不卡在线播放 | 亚洲视频久久 | 人人澡人摸人人添学生av | 9999在线 | 欧美日韩国产一区二区三区在线观看 | 在线观看深夜福利 | 97热在线观看 | 一区二区在线电影 | 九九热精品视频在线播放 | 亚洲国产精品日韩 | 99久久精品国产欧美主题曲 | 夜添久久精品亚洲国产精品 | www..com毛片| 91日本在线播放 | 免费看的黄网站软件 | 久久精品国产免费观看 | 六月丁香伊人 | 日韩高清在线观看 | 亚洲97在线 | 激情五月婷婷综合 | 国产成人精品一区二区三区网站观看 | 成人国产精品 | 精品自拍sae8—视频 | 亚洲欧美国产日韩在线观看 | 丁香婷婷综合网 | 国产精品久久99精品毛片三a | 日本久久久精品视频 | 精品在线观看一区二区 | 中文乱幕日产无线码1区 | 丝袜足交在线 | 96av在线视频 | 久久久免费观看视频 | 久久久黄视频 | 婷婷干五月 | 久久av在线播放 | 射久久 | 日韩二区三区在线 | 天天插天天狠 | 久久精品精品 | 人人爽人人搞 | jizz18欧美18| 国产免费久久 | 二区三区精品 | 久久久久久久久久久网 | 日本黄区免费视频观看 | 天天艹天天干天天 | 日本福利视频在线 | 久久99国产综合精品免费 | 色偷偷中文字幕 | 国产丝袜美腿在线 | 精品999在线 | 久草99 | 中文字幕丝袜制服 | 婷婷在线综合 | 天天插狠狠插 | 国产在线久久久 | 亚洲黄色在线播放 | 日本老少交| 成人免费看片98欧美 | 久久99精品波多结衣一区 | 国产99区| 国产福利资源 | 在线天堂中文www视软件 | 超碰午夜 | 日韩午夜高清 | 久久精品一区二区三区中文字幕 | 婷婷国产一区二区三区 | 欧美国产亚洲精品久久久8v | 2018亚洲男人天堂 | 国产一级在线视频 | 精品色综合| 日韩成人av在线 | 婷婷久久网 | 在线免费观看成人 | 婷婷在线五月 | 91av资源网| 精品国产区在线 | 日韩免费高清在线观看 | 久久97久久97精品免视看 | 亚洲在线免费视频 | 久久精品成人欧美大片古装 | 久久久午夜精品理论片中文字幕 | 欧美极品一区二区三区 | 天天干天天综合 | 久久激情婷婷 | 日韩精品一区二区三区中文字幕 | 国产精品刺激对白麻豆99 | 97在线观看| 99精品在线看 | 婷婷在线视频 | 亚洲一区网站 | 亚洲精品一区二区三区四区高清 | 国产亚洲在线视频 | 99久久精品国产亚洲 | 国产精品久久久久久婷婷天堂 | 久久国产区 | 97精品伊人| 日日夜夜免费精品 | 欧美一区在线看 | 国产精品毛片久久久久久久 | 国产中文 | 青草视频在线 | 美女黄视频免费 | av成人资源 | 国内精品久久久久影院日本资源 | 国产午夜激情视频 | 精品国内 | 国产精品伦一区二区三区视频 | 久久这里有精品 | 黄色av大片 | 99热在线国产精品 | av动态图片 | 国产精品一区二区三区电影 | 公与妇乱理三级xxx 在线观看视频在线观看 | 午夜久久视频 | 青青河边草免费直播 | 91你懂的| 日韩欧美高清在线观看 | 少妇做爰k8经典 | 黄色片免费看 | 精品二区久久 | 久久综合色影院 | 国产视频亚洲 | 毛片视频网址 | 日韩免费在线视频 | 狠狠操在线 | 免费av网站在线看 | 日本韩国欧美在线观看 | 天天av在线播放 | 国产精彩在线视频 | 国产免费黄视频在线观看 | 国产91精品久久久久 | 色综合天天天天做夜夜夜夜做 | 国产高清成人在线 | 亚洲精品视频网站在线观看 | 国产精品久久久久久爽爽爽 | 韩日av一区二区 | 玖玖精品在线 | 亚洲精品国产精品国自产 | 97视频精品| 91精品视屏 | 免费看av片网站 | 中文字幕在线观看一区 | 96视频免费在线观看 | 69av免费视频 | 国产精品福利午夜在线观看 | 天天操夜夜逼 | 免费看片黄色 | 日韩a免费 | 69国产精品视频免费观看 | 日韩在线视频一区二区三区 | 91久久国产综合精品女同国语 | 亚洲mv大片欧洲mv大片免费 | 国产视频九色蝌蚪 | 久久国产精品免费看 | 黄色精品一区 | 国产高清区 | 国内精品福利视频 | 欧美性极品xxxx娇小 | 国产高清不卡 | 色综合天天综合网国产成人网 | 中文字幕一区二区三区在线观看 | 91精品国产高清 | 国产无套精品久久久久久 | 日韩av免费一区二区 | 久久草草影视免费网 | av日韩国产| 日本久久久久久久久久 | 超黄视频网站 | 有码中文字幕在线观看 | 久久只有精品 | 天天干天天干天天干天天干天天干天天干 | 啪啪免费视频网站 | 久久国产美女视频 | 欧美大片aaa | 国产精品久久久久久久久久不蜜月 | 国产精品欧美久久久久三级 | 久久久精品福利视频 | a在线一区 | 国产韩国日本高清视频 | 免费国产在线观看 | 久久久久久国产精品久久 | 免费又黄又爽视频 | 久久久激情视频 | 亚洲最快最全在线视频 | 男女视频国产 | 国产精品久久久久永久免费观看 | 狠狠色综合欧美激情 | 国产又粗又硬又长又爽的视频 | 色偷偷88888欧美精品久久久 | 免费成人黄色片 | 国产二级视频 | 亚洲久久视频 | 天天综合视频在线观看 | 黄色一级大片在线观看 | 九九九九九精品 | a久久久久久 | 麻豆高清免费国产一区 | 99视频在线免费观看 | 亚洲精品66 | 96国产精品 | 国产成人av网 | 999视频在线播放 | 亚洲精品字幕在线 | 中文字幕高清免费日韩视频在线 | 国产精品99久久久久久小说 | 波多野结衣在线播放视频 | 天天搞夜夜骑 | 婷婷激情五月 | 美女网色 | 日韩中文字幕视频在线观看 | 亚洲欧美日韩中文在线 | 日韩欧美综合 | 日韩欧美在线观看 | 国产又粗又长又硬免费视频 | 日日干综合 | 久久免费播放 | 在线看日韩av | 亚洲视频在线视频 | 久久精品国产免费看久久精品 | 国内精品久久久久影院优 | 国产成人精品亚洲 | 国产一区成人 | 91精品国产电影 | 中中文字幕av在线 | 天天草天天干天天 | 国产精品a成v人在线播放 | 久久久久亚洲最大xxxx | 奇米影视四色8888 | 国产亚洲资源 | 欧美视频国产视频 | 国产精品一区二区三区四区在线观看 | 香蕉久久久久久久 | 国内偷拍精品视频 | 9ⅰ精品久久久久久久久中文字幕 | 国产亚洲视频在线 | 五月天堂色 | 国产又黄又硬又爽 | 狠狠干天天射 | 天天色天天搞 | 精品久久久久久综合日本 | 手机在线观看国产精品 | 久久a v视频 | 日韩精品在线免费观看 | av在线一二三区 | 欧美三人交 | 一区三区视频在线观看 | 99在线视频精品 | 免费日韩在线 | 手机看片 | 久久中文精品视频 | 日韩欧美高清视频在线观看 | 国产99免费视频 | 黄色视屏在线免费观看 | 久久久伦理 | 亚洲午夜久久久综合37日本 | 日本中文字幕免费观看 | 国产黄色片在线 | 伊人婷婷久久 | 天天干,夜夜操 | 夜色.com| 日韩午夜小视频 | 国产精品乱码一区二三区 | 亚洲一二三久久 | 免费在线观看成年人视频 | 免费在线观看av电影 | 日本99久久| 日韩v在线91成人自拍 | 91久久精品一区二区二区 | 久久a v电影 | 在线视频久久 | 伊人天天色 | 亚洲精品黄 | 国产黄a三级 | av短片在线 | 国产伦精品一区二区三区在线 | 狠狠干.com | 四虎在线视频 | 日本精品在线 | 日韩欧美一级二级 | 亚洲男男gⅴgay双龙 | 超碰官网 | 欧美一区二区免费在线观看 | 久久免费播放视频 | 最近中文字幕久久 | 亚洲欧洲av | 91综合色| 久久综合狠狠综合久久激情 | 中文字幕丝袜制服 | 国产一级大片在线观看 | 五月天综合色 | 天天天天天干 | 久久午夜影视 | 一区二区欧美日韩 | 欧美日韩在线视频观看 | www激情网 | av一级一片 | 在线观看视频免费大全 | 韩国av免费观看 | 999抗病毒口服液 | 国产精品免费视频一区二区 | 亚洲久草网 | 一本一本久久aa综合精品 | 国产麻豆传媒 | 久草免费在线观看 | 日韩精品中文字幕有码 | 亚洲精品国偷拍自产在线观看 | av中文字幕在线观看网站 | 四虎影视成人永久免费观看视频 | 亚洲天堂毛片 | 色婷婷一区 | 97超碰人人澡人人爱学生 | freejavvideo日本免费 | 久草在线视频资源 | 久草在线免费播放 | 久久精品视频国产 | 国产99久久99热这里精品5 | 日韩中文字幕在线不卡 | 国产成人免费 | 日本中文字幕视频 | 亚洲禁18久人片 | 欧美黑人巨大xxxxx | 色综合中文字幕 | 国产又粗又长的视频 | 亚洲高清资源 | 国产一级片观看 | 欧美极度另类性三渗透 | 国产精品欧美久久久久三级 | 中文字幕黄色av | 久久久久久久国产精品影院 | 欧美91视频 | 国产精品99久久久久久有的能看 | 久久久精品 一区二区三区 国产99视频在线观看 | 最近日韩免费视频 | 成人国产精品免费观看 | 国产福利91精品 | 日韩在线资源 | 国产成人久久精品一区二区三区 | 最新日韩在线观看 | 亚洲人成人在线 | 天天躁天天操 | 在线观看免费av网 | 亚洲精品国产精品国自产观看浪潮 | 天天综合色 | 国产视频精品免费 | zzijzzij日本成熟少妇 | 国产精品免费看 | 国内精品视频在线播放 | 在线免费看片 | 天天干天天搞天天射 | 日韩中文字幕免费电影 | 成 人 黄 色 免费播放 | 免费午夜视频在线观看 | 午夜精品久久久 | 国产在线a不卡 | 丁香婷婷成人 | 天天狠狠干 | 美女久久视频 | 亚洲黄色小说网 | 91黄色在线视频 | 亚洲精选视频在线 | 久草在线最新免费 | 午夜少妇av | 人人精久| 久二影院 | 精品av网站 | 国产精品美女免费看 | 黄色免费在线视频 | 天天干夜夜擦 | 黄色精品久久久 | a成人v| 欧美在线一级片 | av在线播放观看 | 日韩电影一区二区三区在线观看 | 五月亚洲 | 天天干天天操天天做 | 天天天天天操 | 久久九九视频 | av福利资源| 五月天网站在线 | 国产精品99久久久久久武松影视 | 超碰国产在线播放 | 久久99热这里只有精品国产 | 久久久午夜精品福利内容 | 麻豆成人精品视频 | 粉嫩av一区二区三区四区在线观看 | 精品视频999 | 婷香五月| 久久久综合电影 | 综合在线亚洲 | 51久久成人国产精品麻豆 | 成人91在线| 在线观看一区 | 久久手机精品视频 | 午夜资源站 | 在线小视频你懂得 | 97超碰色| 97操碰 | 欧美久久综合 | 91成人免费看片 | www天天干 | 免费日韩av片 | 狠狠干网站 | 日本精品一区二区三区在线播放视频 | 午夜在线免费观看视频 | 黄色日批网站 | 青青草在久久免费久久免费 | 久久热亚洲 | 久久久久国产精品www | 成人免费看片网址 | 亚洲一区日韩精品 | 久久激情精品 | 国产亚洲视频在线观看 | a√资源在线 | 国产爽妇网 | 精品久久久久久久久中文字幕 | 91在线播放视频 | 91精品亚洲影视在线观看 | 欧美日韩精品久久久 | 永久av免费在线观看 | 97久久精品午夜一区二区 | 亚洲精品久久久蜜臀下载官网 | 天天草天天色 | 欧美 日韩 成人 | 中文字幕 91 | 精品国产123 | 在线观看免费91 | ww亚洲ww亚在线观看 | 亚洲精品视频在线观看网站 | 免费影视大全推荐 | www.在线观看av | 国产极品尤物在线 | 欧美视频一区二 | 国产亚州精品视频 | 精品视频国产 | 99久久精品午夜一区二区小说 | 天天射天天爽 | 亚洲aaa级 | 精品久久久久久亚洲 | 97超碰人人在线 | 久久久伊人网 | 日产中文字幕 | 九九视频免费观看视频精品 | 国产精品99在线观看 | 久久国产精品色av免费看 | 操一草 | 精品资源在线 | 丁香五月亚洲综合在线 | 欧美-第1页-屁屁影院 | 国产精品久久久久一区二区三区共 | 韩日成人av | 日本久久久久久 | 日本三级不卡视频 | 国产免费嫩草影院 | 97成人精品区在线播放 | 久久成人午夜视频 | 中文字幕av一区二区三区四区 | 91黄色成人 | 亚洲免费一级电影 | 不卡的一区二区三区 | 天天操天天拍 | 菠萝菠萝在线精品视频 | 国产最新在线观看 | 日本mv大片欧洲mv大片 | 五月天电影免费在线观看一区 | 99在线看| 精品一区电影国产 | 成人一区二区三区中文字幕 | 激情丁香在线 | 色是在线视频 | 91精品在线免费视频 | 欧洲精品视频一区二区 | 天天操天天谢 | 久久综合电影 | 久久精品欧美一 | 国产精品孕妇 | 日韩电影中文字幕在线 | 欧美国产91 | 色资源在线观看 | 国产一区二区三区网站 | 日韩一级精品 | 最近中文字幕免费av | av片在线看 | 69av在线播放 | 亚洲 成人 一区 | 少妇性xxx | 亚洲激情六月 | 五月婷婷激情六月 | 五月天色中色 | 日av免费| av在线播放网址 | 亚洲天堂色婷婷 | 日本久草电影 | 天天天天天天天天操 | 天天操天天爽天天干 | 欧美性成人 | 成人av网址大全 | 视频在线播放国产 | 99综合电影在线视频 | 男女全黄一级一级高潮免费看 | 狠狠的日日 | 香蕉视频在线免费 | av专区在线| 久久夜色精品国产欧美乱极品 | 操夜夜操| 999久久久免费精品国产 | 久久久网 | 国产精品69av | 久久草在线精品 | 91色蜜桃| a级片网站 | 天天综合网~永久入口 | 国产成人av一区二区三区在线观看 | 久草在线高清视频 | 丁香六月天婷婷 | 久久在线看| 中文字幕在线观看网站 | 麻豆av电影 | 亚色视频在线观看 | 国产在线国偷精品产拍免费yy | 一区二区视频在线观看免费 | 中文字幕欧美日韩va免费视频 | 色综合咪咪久久网 | 波多野结衣动态图 | 欧美精品一区二区在线播放 | 天天操夜夜干 | 日韩精品一区二区三区丰满 | 国色天香在线观看 | 婷婷成人综合 | 久久五月婷婷综合 | 中文区中文字幕免费看 | 天天舔天天射天天操 | 五月天中文字幕 | 国产做爰视频 | 亚洲午夜精 | 在线观看中文字幕 | 中文永久字幕 | 欧美超碰在线 | 在线视频 影院 | 超碰97人人爱 | 国产一级不卡视频 | 人人澡超碰碰97碰碰碰软件 | 黄色一级大片在线免费看产 | 欧美性大战久久久久 | 免费观看91| 国产精品美女久久久久久 | 日韩中字在线 | 一区在线播放 | 黄色小网站在线观看 | 精品国产乱码久久久久久1区2匹 | 国产一区二三区好的 | 日韩av中文在线观看 | 91色九色 | 天天干天天操天天 | 成人91在线 | 国产黄色大片免费看 | 久草国产在线观看 | 99热最新网址 | 久久久久一区 | 五月婷婷网站 | 国产精品久久久电影 | 激情网站五月天 | 婷婷成人在线 | 午夜精品久久久久久久久久久 | 在线国产日本 | 久久99久久99精品免观看粉嫩 | 国产一区二区在线免费视频 | 欧美日韩国内在线 | 久久久久久毛片精品免费不卡 | 亚洲视频播放 | 美女视频a美女大全免费下载蜜臀 | 成人播放器 | 免费观看v片在线观看 | 亚洲视频免费视频 | 国产精品一区二区免费在线观看 | 97在线影院| 在线亚洲激情 | 中文字幕区 | 久久久久国产精品一区 | 亚洲精品国产第一综合99久久 | 国产精品久久精品 | 亚洲精品乱码白浆高清久久久久久 | 欧美日韩在线视频免费 | 欧美视频xxx | 午夜精品一区二区三区视频免费看 | 国产成人精品在线观看 | 国产精品白丝jk白祙 | 在线观看一区 | 麻豆91在线看 | 亚洲一区视频免费观看 | 国产高清在线永久 | 欧洲av不卡 | 日躁夜躁狠狠躁2001 | 亚洲精品乱码久久久久久 | 九九99 | 久久精品日产第一区二区三区乱码 | 国产色视频网站 | 91精品欧美一区二区三区 | 精品欧美小视频在线观看 | 97视频在线观看网址 | 日韩乱码在线 | 色婷婷成人网 | 精品国产欧美 | 444av| av一区在线播放 | 337p欧美 | 在线天堂日本 | 视色网站 | 一区二区三区中文字幕在线观看 | 中文字幕在线观看免费 | 国产高清精品在线 | 麻豆国产精品永久免费视频 | 91精品国产高清 | 99国产精品久久久久久久久久 | 天天天天天天干 | 日本精品视频一区二区 | 久草精品视频在线播放 | 99久久精品久久久久久动态片 | 中文av网站 | 日韩一区二区三区高清在线观看 | 天天干夜夜夜 | 久久久久国产一区二区三区四区 | 婷婷av电影 | 日韩在线在线 | 亚洲无人区小视频 | 欧美精品久久久久久久久久久 | 国产精品 中文在线 | 亚洲爽爽网 | www.久久99| 精品国产人成亚洲区 | 日韩中文字幕在线 | 国产福利免费在线观看 | 99视频精品全部免费 在线 | 久久久综合九色合综国产精品 | 国内精品久久久久影院日本资源 | av中文字幕在线看 | 亚洲综合色婷婷 | 日韩亚洲在线 | 麻豆免费观看视频 | 毛片随便看 | 男女靠逼app | 青草视频在线 | a视频在线 | 成人一级片在线观看 | 激情五月播播久久久精品 | 美女视频黄,久久 | 91精品欧美一区二区三区 | 欧美aaaxxxx做受视频 | 天天操综合网 | 亚洲黄电影 | www.com黄| 久久久精品日本 | 久久久www成人免费精品 | 国产一级淫片在线观看 | 久久高清免费观看 | 国模一区二区三区四区 | 丁香六月五月婷婷 | 在线观看视频黄 | 欧美日韩视频在线观看一区二区 | 亚洲性少妇性猛交wwww乱大交 | 久久国产乱 | 国产精品网址在线观看 | 夜夜操夜夜干 | 国产精品欧美日韩在线观看 | 日韩丝袜在线观看 | 摸阴视频 | 国产精品久久久久久五月尺 | a√资源在线 | 精品国产视频一区 | 亚洲三级视频 | 久久99久久99精品免费看小说 | 成人黄色片免费 | 特级a老妇做爰全过程 | 狠狠干,狠狠操 | 最新国产福利 | 色免费在线 | 久久精品一区二区三区国产主播 | av免费网| 国产综合精品久久 | 欧美日韩精品影院 | avcom在线 | www一起操| 808电影免费观看三年 | 97人人模人人爽人人喊中文字 | 欧美性色综合网站 | 精品亚洲视频在线观看 | 黄色电影网站在线观看 | 久久高清国产 | 九七视频在线 | 亚洲成人一区 | 激情中文字幕 | 国产欧美精品xxxx另类 | 亚洲精品久久久久久中文传媒 | 伊人午夜 | 日韩理论在线观看 | 激情av在线播放 | 日韩久久精品一区二区 | 久久精品综合一区 | av软件在线观看 | 中文字幕有码在线播放 | 国产又粗又猛又爽又黄的视频先 | 成年人在线看片 | av在线播放国产 | av成人亚洲 | 在线观看日韩专区 | 日韩在线免费看 | 91丨九色丨蝌蚪丨老版 | 久久夜夜爽 | 国产午夜激情视频 | 欧美日韩激情视频8区 | 日韩高清精品一区二区 | av三级在线免费观看 | 国产午夜精品一区二区三区嫩草 | 亚洲成av人电影 | 日本精品视频免费观看 | www.色午夜 | 亚洲 在线 | 国产又粗又长又硬免费视频 | 久久久精品国产一区二区 |