
package jp.co.sint.basic;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SIUtil;

public class SIHacchuDetail extends SIBasic {
  
  private String hacchuCode = "";
  
  private String orderCode = "";
  
  private String hacchuIndividualCode = "";
  
  private String hacchuBranchCode = "";
  
  private String stockCode = "";
  
  private String stockName = "";
  
  private String individualCode = "";
  
  private String cmdtyName = "";
  
  private String colorName = "";
  
  private String branchCode = "";
  
  private String branchName = "";
  
  private String shipFlg = "0";
  
  private String storeNumber = "";
  
  private String amount = "";
  
  private String amountAdd = "";
  
  private String purchasePrice = "0";
  
  private String processingExpence = "0";
  
  private String deliveryFee = "0";
  
  private String importCost = "0";
  
  private String comment = "";
  
  private String arrivalPlanDate = "";
  
  private String arrivalPlanTime = "";
  
  private String shippmentDate = "";
  
  private String bgprice = "";
  
  private String[] branchCodeList;
  
  private String[] branchNameList;
  
  private String[] branchAmountList;
  
  private String[] branchAmountAddList;
  
  private String branch = "";
  
  private String charge = "";
  
  private String chargeCode = "";
  
  private String status = "";
  
  private String initDateTime = "";
  
  private String orderDateTime = "";
  
  private String custName = "";
  
  public SIHacchuDetail() {}
  
  public SIHacchuDetail(String lHacchuCode,String lHacchuIndividualCode,String lHacchuBranchCode) {
    this.setHacchuCode(lHacchuCode);
    this.setHacchuIndividualCode(lHacchuIndividualCode);
    this.setHacchuBranchCode(lHacchuBranchCode);
  }
  
  public String getAmount() {
    return amount;
  }
  
  public String getAmountAdd() {
    return amountAdd;
  }
  
  public String getAmountAddZero(){
    if(SIUtil.isNull(amountAdd)) return "0";
    else return amountAdd;
  }
  
  public String getArrivalPlanDate() {
    return arrivalPlanDate;
  }
  
  public String getArrivalPlanTime() {
    return arrivalPlanTime;
  }
  
  public String getBgprice() {
    return bgprice;
  }
  
  public String getBranch() {
    return branch;
  }
  
  public String getBranchCode() {
    return branchCode;
  }
  
  public String getBranchName() {
    return branchName;
  }
  
  public String getCharge() {
    return charge;
  }
  
  public String getChargeCode() {
    return chargeCode;
  }
  
  public String getCmdtyName() {
    return cmdtyName;
  }
  
  public String getColorName() {
    return colorName;
  }
  
  public String getComment() {
    return comment;
  }
  
  public String getCustName() {
    return custName;
  }
  
  public String getDeliveryFee() {
    return deliveryFee;
  }
  
  public String getHacchuBranchCode() {
    return hacchuBranchCode;
  }
  
  public String getHacchuCode() {
    return hacchuCode;
  }
  
  public String getHacchuIndividualCode() {
    return hacchuIndividualCode;
  }
  
  public String getImportCost() {
    return importCost;
  }
  
  public String getIndividualCode() {
    return individualCode;
  }
  
  public String getInitDateTime() {
    return initDateTime;
  }
  
  public String getOrderCode() {
    return orderCode;
  }
  
  public String getOrderDateTime() {
    return orderDateTime;
  }
  
  public String getProcessingExpence() {
    return processingExpence;
  }
  
  public String getPurchasePrice() {
    return purchasePrice;
  }
  
  public String getShipFlg() {
    return shipFlg;
  }
  
  public String getShippmentDate() {
    return shippmentDate;
  }
  
  public String getShippmentDateF(){
    if(SIUtil.isNull(shippmentDate)) return "";
    return shippmentDate.substring(0,4)+"/"+shippmentDate.substring(5,7)+"/"+shippmentDate.substring(8,10);
  }
  
  public String getStatus() {
    return status;
  }
  
  public String getStockCode() {
    return stockCode;
  }
  
  public String getStockName() {
    return stockName;
  }
  
  public String getStoreNumber() {
    return storeNumber;
  }
  
  public void setAmount(String amount) {
    if (SIUtil.isNull(amount)) amount = "";
    this.amount = amount;
  }
  
  public void setAmountAdd(String amountAdd) {
    if (SIUtil.isNull(amountAdd)) amountAdd = "";
    this.amountAdd = amountAdd;
  }
  
  public void setArrivalPlanDate(String arrivalPlanDate) {
    if (SIUtil.isNull(arrivalPlanDate)) arrivalPlanDate = "";
    this.arrivalPlanDate = arrivalPlanDate;
  }
  
  public void setArrivalPlanTime(String arrivalPlanTime) {
    if (SIUtil.isNull(arrivalPlanTime)) arrivalPlanTime = "";
    this.arrivalPlanTime = arrivalPlanTime;
  }
  
  public void setBgprice(String bgprice) {
    if (SIUtil.isNull(bgprice)) bgprice = "";
    this.bgprice = bgprice;
  }
  
  public void setBranch(String branch) {
    if (SIUtil.isNull(branch)) branch = "";
    this.branch = branch;
  }
  
  public void setBranchCode(String branchCode) {
    if (SIUtil.isNull(branchCode)) branchCode = "";
    this.branchCode = branchCode;
  }
  
  public void setBranchName(String branchName) {
    if (SIUtil.isNull(branchName)) branchName = "";
    this.branchName = branchName;
  }
  
  public void setCharge(String charge) {
    if (SIUtil.isNull(charge)) charge = "";
    this.charge = charge;
  }
  
  public void setChargeCode(String chargeCode) {
    if (SIUtil.isNull(chargeCode)) chargeCode = "";
    this.chargeCode = chargeCode;
  }
  
  public void setCmdtyName(String cmdtyName) {
    if (SIUtil.isNull(cmdtyName)) cmdtyName = "";
    this.cmdtyName = cmdtyName;
  }
  
  public void setColorName(String colorName) {
    if (SIUtil.isNull(colorName)) colorName = "";
    this.colorName = colorName;
  }
  
  public void setComment(String comment) {
    if (SIUtil.isNull(comment)) comment = "";
    this.comment = comment;
  }
  
  public void setCustName(String custName) {
    if (SIUtil.isNull(custName)) custName = "";
    this.custName = custName;
  }
  
  public void setDeliveryFee(String deliveryFee) {
    if (SIUtil.isNull(deliveryFee)) deliveryFee = "0";
    this.deliveryFee = deliveryFee;
  }
  
  public void setHacchuBranchCode(String hacchuBranchCode) {
    if (SIUtil.isNull(hacchuBranchCode)) hacchuBranchCode = "";
    this.hacchuBranchCode = hacchuBranchCode;
  }
  
  public void setHacchuCode(String hacchuCode) {
    if (SIUtil.isNull(hacchuCode)) hacchuCode = "";
    this.hacchuCode = hacchuCode;
  }
  
  public void setHacchuIndividualCode(String hacchuIndividualCode) {
    if (SIUtil.isNull(hacchuIndividualCode)) hacchuIndividualCode = "";
    this.hacchuIndividualCode = hacchuIndividualCode;
  }
  
  public void setImportCost(String importCost) {
    if (SIUtil.isNull(importCost)) importCost = "0";
    this.importCost = importCost;
  }
  
  public void setIndividualCode(String individualCode) {
    if (SIUtil.isNull(individualCode)) individualCode = "";
    this.individualCode = individualCode;
  }
  
  public void setInitDateTime(String initDateTime) {
    if (SIUtil.isNull(initDateTime)) initDateTime = "";
    this.initDateTime = initDateTime;
  }
  
  public void setOrderCode(String orderCode) {
    if (SIUtil.isNull(orderCode)) orderCode = "";
    this.orderCode = orderCode;
  }
  
  public void setOrderDateTime(String orderDateTime) {
    if (SIUtil.isNull(orderDateTime)) orderDateTime = "";
    this.orderDateTime = orderDateTime;
  }
  
  public void setProcessingExpence(String processingExpence) {
    if (SIUtil.isNull(processingExpence)) processingExpence = "0";
    this.processingExpence = processingExpence;
  }
  
  public void setPurchasePrice(String purchasePrice) {
    if (SIUtil.isNull(purchasePrice)) purchasePrice = "0";
    this.purchasePrice = purchasePrice;
  }
  
  public void setShipFlg(String shipFlg) {
    if (SIUtil.isNull(shipFlg)) shipFlg = "0";
    this.shipFlg = shipFlg;
  }
  
  public void setShippmentDate(String shippmentDate) {
    if (SIUtil.isNull(shippmentDate)) shippmentDate = "";
    this.shippmentDate = shippmentDate;
  }
  
  public void setStatus(String status) {
    if (SIUtil.isNull(status)) status = "";
    this.status = status;
  }
  
  public void setStockCode(String stockCode) {
    if (SIUtil.isNull(stockCode)) stockCode = "";
    this.stockCode = stockCode;
  }
  
  public void setStockName(String stockName) {
    if (SIUtil.isNull(stockName)) stockName = "";
    this.stockName = stockName;
  }
  
  public void setStoreNumber(String storeNumber) {
    if (SIUtil.isNull(storeNumber)) storeNumber = "";
    this.storeNumber = storeNumber;
  }
  
  public String getDispCmdtyName(){
    String str = this.cmdtyName;
    if(SIUtil.isNotNull(this.colorName)){
      str = str + "i"+ this.colorName + "j";
    }
    return str;
  }
  
  public String[] getBranchCodeList(){
    return branchCodeList;
  }
  
  public String[] getBranchNameList(){
    return branchNameList;
  }
  
  public String[] getBranchAmountList(){
    return branchAmountList;
  }
  
  public String[] getBranchAmountAddList(){
    return branchAmountAddList;
  }
  
  public String getBranchCodeListItem(int index){
    if (branchCodeList==null||branchCodeList.length<=index) return "";
    else return branchCodeList[index];
  }
  
  public String getBranchNameListItem(int index){
    if (branchNameList==null||branchNameList.length<=index) return "";
    else return branchNameList[index];
  }
  
  public String getBranchAmountListItem(int index){
    if (branchAmountList==null||branchAmountList.length<=index) return "";
    else return branchAmountList[index];
  }
  
  public String getBranchAmountAddListItem(int index){
    if (branchAmountAddList==null||branchAmountAddList.length<=index) return "";
    else return branchAmountAddList[index];
  }
  
  public void setBranchCodeList(String[] list){
    branchCodeList = list;
  }
  
  public void setBranchNameList(String[] list){
    branchNameList = list;
  }
  
  public void setBranchAmountList(String[] list){
    branchAmountList = list;
  }
  
  public void setBranchAmountAddList(String[] list){
    branchAmountAddList = list;
  }
  
  public void setBranchAmountListItem(int index,String amount){
    if (branchAmountList==null||branchAmountList.length<=index) return;
    else branchAmountList[index] = amount;
  }
  
  public void setBranchAmountAddListItem(int index,String amountAdd){
    if (branchAmountAddList==null||branchAmountAddList.length<=index) return;
    else branchAmountAddList[index] = amountAdd;
  }
  
  public String getTotalPrice() {
    String res = "0";
    try {
      res = SIUtil.add(res, SIUtil.multi(amount, purchasePrice));
      res = SIUtil.add(res, importCost);
      res = SIUtil.add(res, processingExpence);
      res = SIUtil.add(res, deliveryFee);
    }catch (Exception e){
      e.printStackTrace();
    }
    return res;
  }
  
  public void resetItem(Connection lConnection){
    if (SIUtil.isNull(this.individualCode)) return;
    Statement lStatement = null;
    ResultSet lResultSet = null;
    StringBuffer sql = new StringBuffer();
    
    sql.append("SELECT a.cmdtyname,c.colorname,b.bgprice,b.purchaseprice2 FROM cmdtymtbl a,individualtbl b,colortbl c ");
    sql.append("WHERE a.cmdtycode=b.cmdtycode AND a.colorcode=c.colorcode ");
    sql.append("AND b.individualcode = ").append(SIDBUtil.SQL2Str(this.individualCode));
    
    try{
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(sql.toString());
      
      if(lResultSet.next()){
        this.setCmdtyName(lResultSet.getString("cmdtyName"));
        this.setColorName(lResultSet.getString("colorName"));
        this.setBgprice(lResultSet.getString("bgprice"));
        this.setPurchasePrice(lResultSet.getString("purchasePrice2"));
        this.setProcessingExpence("0");
        this.setImportCost("0");
        this.setDeliveryFee("0");
        this.setAmountAdd("");
        this.setComment("");
      }
    }catch(Exception e){
      e.printStackTrace();
    }finally{
      SIDBUtil.close(lResultSet, lStatement);
    }
  }
  
  public void resetModify(Connection lConnection, String cmdtyType){
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    try {
      int index = Integer.parseInt(SIDBUtil.getFirstData(lConnection, "SELECT count(*) FROM branchtbl"));
      String[] codeStr = new String[index];
      String[] nameStr = new String[index];
      String[] amountStr = new String[index];
      String[] amountAddStr = new String[index];
      int count = 0;
      
      StringBuffer sql = new StringBuffer();
      
      sql.append("SELECT b.branchcode,b.branchname,coalesce(a.amount::text,'') AS amount,coalesce(a.amountadd::text,'') AS amountAdd ");
      sql.append("FROM branchtbl b LEFT OUTER JOIN ");
      sql.append("(SELECT a1.hacchuindividualcode,a1.branchcode,a1.amount,a1.amountadd ");
      sql.append("FROM hacchudetailtbl a1,hacchutbl a0 ");
      sql.append("WHERE a0.hacchucode=a1.hacchucode ");
      sql.append("AND a0.layercode=a1.layercode ");
      sql.append("AND a0.enabledflg=1 ");
      sql.append("AND a1.shipflg=0 ");
      sql.append("AND a1.individualcode=").append(SIDBUtil.SQL2Str(this.getIndividualCode()," "));
      sql.append("AND a1.hacchucode=").append(SIDBUtil.SQL2Str(this.getHacchuCode()," "));
      sql.append(") a ON b.branchcode=a.branchcode ");
      sql.append("ORDER BY b.branchcode");
      
      if ("0".equals(cmdtyType)) {
        sql = new StringBuffer("SELECT branchcode,branchname,''::text AS amount, ''::text AS amountadd FROM branchtbl ORDER BY branchcode");
      }
      
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(sql.toString());
      while (lResultSet.next()) {
        codeStr[count] = lResultSet.getString("branchcode");
        nameStr[count] = lResultSet.getString("branchname");
        amountStr[count] = lResultSet.getString("amount");
        amountAddStr[count] = lResultSet.getString("amountadd");
        count++;
      }
      this.setBranchCodeList(codeStr);
      this.setBranchNameList(nameStr);
      this.setBranchAmountList(amountStr);
      this.setBranchAmountAddList(amountAddStr);
    }catch(Exception e){
      e.printStackTrace();
    }finally{
      SIDBUtil.close(lResultSet, lStatement);
    }
  }
  
  public void reset(Connection lConnection) {
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    StringBuffer sql = new StringBuffer();
    sql.append("SELECT a.*,b.*,b.branchcode AS branch1,b.branchname AS branch2 ");
    sql.append("FROM hacchutbl a,hacchudetailtbl b ");
    sql.append("WHERE a.hacchucode=b.hacchucode AND b.shipflg=0 AND a.layercode=b.layercode AND a.enabledflg=1 ");
    sql.append("AND b.hacchucode=").append(SIDBUtil.SQL2Str(this.getHacchuCode()," "));
    sql.append("AND b.hacchuindividualcode=").append(SIDBUtil.SQL2Str(this.getHacchuIndividualCode()," "));
    sql.append("AND b.hacchubranchcode=").append(SIDBUtil.SQL2Str(this.getHacchuBranchCode()," "));
    
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(sql.toString());
      
      if (lResultSet.next()) {
        this.setHacchuCode(lResultSet.getString("hacchuCode"));
        this.setHacchuIndividualCode(lResultSet.getString("hacchuIndividualCode"));
        this.setHacchuBranchCode(lResultSet.getString("hacchuBranchCode"));
        this.setOrderCode(lResultSet.getString("orderCode"));
        this.setInitDateTime(SIDBUtil.getDate(lResultSet.getTimestamp("initDateTime")));
        this.setStockCode(lResultSet.getString("stockCode"));
        this.setStockName(lResultSet.getString("stockName"));
        this.setBranchCode(lResultSet.getString("branch1"));
        this.setBranchName(lResultSet.getString("branch2"));
        this.setBranch(lResultSet.getString("branchCode"));
        this.setCharge(lResultSet.getString("chargeCode"));
        this.setIndividualCode(lResultSet.getString("individualCode"));
        this.setArrivalPlanDate(lResultSet.getString("arrivalPlanDate"));
        this.setArrivalPlanTime(lResultSet.getString("arrivalPlanTime"));
        this.setCmdtyName(lResultSet.getString("cmdtyName"));
        this.setColorName(lResultSet.getString("colorName"));
        this.setPurchasePrice(lResultSet.getString("purchasePrice"));
        this.setImportCost(lResultSet.getString("importCost"));
        this.setProcessingExpence(lResultSet.getString("processingExpence"));
        this.setComment(lResultSet.getString("comment"));
        this.setDeliveryFee(lResultSet.getString("deliveryFee"));
        this.setAmount(lResultSet.getString("amount"));
        this.setAmountAdd(lResultSet.getString("amountadd"));
        this.setStatus(lResultSet.getString("status"));
        this.setStoreNumber(lResultSet.getString("storeNumber"));
        this.setShippmentDate(lResultSet.getString("shippmentDate"));
        this.setCustName(lResultSet.getString("custName"));
      }
    } catch(Exception e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(lResultSet, lStatement);
    }
  }
}