/**
 * Copyright (c) 2003-2006 System Integrator Corporation.
 *                 All Rights Reserved.
 */
package jp.co.sint.servlet.mallmgr;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;

import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.log4j.Category;
import jp.co.sint.basic.SILogin;
import jp.co.sint.beans.mallmgr.UIInventory;
import jp.co.sint.beans.mallmgr.UIInventoryDifference;
import jp.co.sint.beans.mallmgr.UIInventoryListCond;
import jp.co.sint.config.SIConfig;
import jp.co.sint.config.SIExcelConf;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.database.SIDatabaseConnection;
import jp.co.sint.database.SIDeleteRec;
import jp.co.sint.database.SIDuplicateKeyException;
import jp.co.sint.database.SIInsertRec;
import jp.co.sint.database.SIModifyRec;
import jp.co.sint.docs.SIExcelRWrite;
import jp.co.sint.docs.SIExcelRead;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIErrorException;
import jp.co.sint.tools.SIErrorFactory;
import jp.co.sint.tools.SIFileExistException;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIURLParameter;
import jp.co.sint.tools.SIUtil;
import jp.co.sint.upload.SIUploadSrv;

/**
 * @version $Id: SIIOExcelSrv.java,v 1.0 2006/04/24 Exp $
 * @author  帳票出力を処理します。
 * <br>Description:
 * <p>History</p>
 * <p>Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reason</p>
 *  ============&nbsp;&nbsp;&nbsp;==========&nbsp;&nbsp;===========================<br>
 * Hong.M.J        2006/04/24 12:20:42  Original
 */
public class SIInventoryExcelSrv extends SIUploadSrv {
//  ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  private boolean statusFlg = true;//棚卸差異があるかどうか判断する

  /**
   * <b>doUpdate</b>
   * HTTP リクエストの処理
   * @param  request　リクエスト
   * @param  response
   * @return なし
   * @throws ServletException
   * @throws IOException
   */
  public void doUpdate(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    SILogin manLogin=SIHTMLUtil.getLogin(request);
    if (!manLogin.isLogin()){
      forwardKey(request,response,"webshop.jsp.manager.login");
      return;
    }

    HttpSession session=request.getSession(true);//セッションの取得
    SIDatabaseConnection databaseConnection=new SIDatabaseConnection();//DBへのコネクションの作成
    SIURLParameter urlParam = new SIURLParameter(request);

    try{
      Connection conn = databaseConnection.getConnection();
      String actionName=this.getActionName(urlParam);//画面からのアクション //7.1.1 ST0236 修正
      String editMode = this.getEditMode(urlParam); //DBへの編集モード //7.1.1 ST0236 修正
      log.debug("actionName="+actionName+",editMode="+editMode);
      if(this.getServletPath(request).equals("/mallmgr/InventoryOutputSrv")){
        if(SIConfig.SIACTION_NEXT.equalsIgnoreCase(actionName)){//棚卸管理画面から棚卸登録画面に遷移
          session.removeAttribute(SIConfig.SISESSION_INVENTORY_LIST_NAME);
          session.removeAttribute(SIConfig.SISESSION_INVENTORY_EXCEL_NAME);
          forwardKey(request, response, "webshop.jsp.manager.cmdty.inventory.excel");
        }else if(SIConfig.SIACTION_LIST.equalsIgnoreCase(actionName)){//棚卸登録一覧画面
          UIInventoryListCond inventoryList = new UIInventoryListCond(request,urlParam);
          inventoryList.validate(request);
          session.setAttribute(SIConfig.SISESSION_INVENTORY_LIST_NAME,inventoryList);
          forwardKey(request, response, "webshop.jsp.manager.cmdty.inventory.excel");
        }else if(SIConfig.SIACTION_BACK.equalsIgnoreCase(actionName)){//棚卸差異一覧画面に戻る
          forwardKey(request, response, "webshop.jsp.manager.cmdty.inventory.list");
        }else if(SIConfig.SIACTION_DELETE.equalsIgnoreCase(actionName)){//棚卸削除
          UIInventoryListCond inventoryList = new UIInventoryListCond();
          inventoryList.deleteinit(request,urlParam);
          try{
            deleteTableData(conn,inventoryList);
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.delete"));
            try{conn.commit();}catch(SQLException sqle){sqle.printStackTrace();}
          }catch(SIDuplicateKeyException e1){
            try {conn.rollback();}catch(SQLException ee){ee.printStackTrace();}
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.insert.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            e1.printStackTrace();
          }catch(SIDBAccessException e1){
            try{conn.rollback();}catch(SQLException ee){ee.printStackTrace();}
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK,errors);
            e1.printStackTrace();
          }
          forwardKey(request, response, "webshop.jsp.manager.cmdty.inventory.excel");
        }else if (SIConfig.SIACTION_INVENTORY_EXCEL.equalsIgnoreCase(actionName)){//帳票出力
          UIInventoryListCond inventoryList = new UIInventoryListCond();
          inventoryList.printinit(request,urlParam);
          try{
            printInventory(response,conn,inventoryList);
          }catch(SIDBAccessException e1){
            e1.printStackTrace();
          }
          if(!response.isCommitted()){//帳票出力失敗
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("database.query.notexist","帳票データ"));
            forwardKey(request, response, "webshop.jsp.manager.cmdty.inventory.excel");
          }else{
            //帳票出力成功時の処理を追加する
            //例えば、請求書発行時、DBに日付をアップデートする。
          }
        }
      }else if(this.getServletPath(request).equals("/mallmgr/InventoryInputSrv")){//EXCEL取込
        File lCsvTempDir=(File)this.getServletContext().getAttribute("javax.servlet.context.tempdir");
        File lCsvTempFile=new File("");
        SIExcelRead lRead=null;
        UIInventory inventory = new UIInventory();
        statusFlg = true;
        boolean errorFlg = true;
        try{
          lCsvTempFile = File.createTempFile("read_excel_",".xls",lCsvTempDir);
        }catch(IOException ioe){
          ioe.printStackTrace();
        }
        HashMap lCsvMap=new HashMap();
        lCsvMap.put("destFile",lCsvTempFile.getAbsolutePath());
        try{
          super.doUpload(request,response,lCsvMap);
          //ファイルをアップロードする時に、設定されるエラーメッセージを取得します。
          String lRes=(String)request.getAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME);

          if (SIUtil.isNull(lRes)){//エラーメッセージがあれば、Excelファイルのアップロード不成功
            inventory.setBranchCode(this.getMultiParameter(request,"updatebranchCode"));
            inventory.setSeasonYearCbo(this.getMultiParameter(request,"updateseasonYearCbo"));
            inventory.setSeasonMonthCbo(this.getMultiParameter(request,"updateseasonMonthCbo"));
            inventory.setUpdateUser(manLogin.getUserCode());
            if(inventory.validate(request,conn)){//対象年月・支店
              try{
                lRead=new SIExcelRead(SIExcelConf.SIEXCEL_INVENTORYSTOCK_INX,lCsvTempFile.getAbsolutePath());
                lRes=readInventory(request,response,conn,lRead,inventory);
                try{conn.commit();}catch(SQLException e1){e1.printStackTrace();}
              }catch(SIDuplicateKeyException e2){
                try {conn.rollback();}catch(SQLException ee){ee.printStackTrace();}
                errorFlg = false;
                e2.printStackTrace();
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("database.insert.duplicate"));
              }catch(SIDBAccessException e2){
                try {conn.rollback();}catch(SQLException ee){ee.printStackTrace();}
                errorFlg = false;
                e2.printStackTrace();
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("database.execute.error"));
              }catch(SIErrorException e){//データチェックエラー
                try{conn.rollback();}catch(SQLException ee){ee.printStackTrace();}
                errorFlg = false;
              }
            }else{
              errorFlg = false;
            }
          }
          //exceptionが存在している
          if(request.getAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME)!=null){
            errorFlg = false;
          }
          //メッセージの出力
          if (SIUtil.isNotNull(lRes)){
            try{conn.rollback();}catch (SQLException e1){e1.printStackTrace();}
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,lRes);
          }else{
            if(errorFlg){
              try{
                //問題なければ棚卸ヘッダ登録
                updateinvntoryDataTblData(conn,inventory);
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.insert"));
                try {conn.commit();} catch (SQLException e1){e1.printStackTrace();}
              }catch(SIDuplicateKeyException e2){
                try {conn.rollback();}catch(SQLException ee){ee.printStackTrace();}
                e2.printStackTrace();
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("database.insert.duplicate"));
              }catch (SIDBAccessException e2){
                try {conn.rollback();}catch(SQLException ee){ee.printStackTrace();}
                e2.printStackTrace();
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("database.execute.error"));
              }
            }
          }
        }catch(SIFileExistException e1){
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,e1.toString());
          log.warn(e1);
        }catch(FileNotFoundException e1){
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("manager.message.failure.exist","ファイル"));
          log.warn(e1);
        }catch(FileUploadException e1){
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("manager.message.failure.upload"));
          log.warn(e1);
        }finally{
          lCsvTempFile.delete();
          session.setAttribute(SIConfig.SISESSION_INVENTORY_EXCEL_NAME,inventory);
        }
        forwardKey(request, response, "webshop.jsp.manager.cmdty.inventory.excel");
      }
    }catch(SQLException e){
      e.printStackTrace();
      throw new ServletException();
    }catch(NamingException e){
      e.printStackTrace();
      throw new ServletException();
    }finally{
      databaseConnection.close();
    }
  }

  private void printInventory(HttpServletResponse response,Connection lConnection,UIInventoryListCond inventoryList) throws SIDBAccessException{
    String template = (String) this.getServletContext().getRealPath("/docs/inventorystock.xls");
    SIExcelRWrite lWrite = new SIExcelRWrite(SIExcelConf.SIEXCEL_INVENTORYSTOCK_INX,template);
    lWrite.setFileName(inventoryList.getSeasonCbo(),inventoryList.getBranchCode());
    String inventorySum = "0";
    for(int i = 0; i<SIConfig.CATEGORY.length ;i++){
      lWrite.makeSheet(i,SIConfig.CATEGORY[i][0],1);
      lWrite.writeHeaderItem(1,1,inventoryList.getSeasonCboSH(),SIExcelConf.FIELD_STRING_TYPE);
      lWrite.writeHeaderItem(2,1,inventoryList.getBranchName(lConnection),SIExcelConf.FIELD_STRING_TYPE);
      lWrite.writeHeaderItem(3,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//出力対象    
      lWrite.writeHeaderItem(4,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//ｶﾃｺﾞﾘ     
      lWrite.writeHeaderItem(5,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//在庫管理
      lWrite.writeHeaderItem(6,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//在庫コード
      inventorySum = "0";
      Collection inventoryColl = inventoryList.getPrintCollection(lConnection,SIConfig.CATEGORY[i][1]);
      Iterator it = inventoryColl.iterator();
      int lineNo = 0;
      //明細を作成する
      while(it.hasNext()){
        UIInventory inventory = (UIInventory)it.next();
        lWrite.makeLine(lineNo);
        lWrite.writeDetailItem(0,inventory.getBranchName(),SIExcelConf.FIELD_STRING_TYPE);
        lWrite.writeDetailItem(1,inventory.getIndividualCode(),SIExcelConf.FIELD_STRING_TYPE);
        lWrite.writeDetailItem(2,inventory.getCmdtyName(),SIExcelConf.FIELD_STRING_TYPE);
        lWrite.writeDetailItem(3,inventory.getAmount(),SIExcelConf.FIELD_NUMERIC_TYPE);
        //データがなくても必ずセルは作っておいて下さい。
        lWrite.writeDetailItem(4);
        lWrite.writeDetailFomulaItem(5,3,4);
        lWrite.writeDetailItem(6);
        lWrite.writeDetailItem(7);
        lWrite.writeDetailItem(8);
        lWrite.writeDetailItem(9);
        //在庫数の合計を求める
        inventorySum= SIUtil.add(inventorySum,inventory.getAmount());
        lineNo = lineNo + 1;
      }
      //フッターを作成する
      lineNo = 0;
      lWrite.makeFooterLine(1,lineNo); 
      lWrite.writeFooterItem(0,lineNo,0,true); 
      lWrite.writeFooterItem(3,inventorySum,SIExcelConf.FIELD_NUMERIC_TYPE);
      lWrite.writeFooterFomulaItem(4);
      lWrite.writeFooterFomulaItem(5,3,4);
      lWrite.makePage();
    }

    //その他の商品
    lWrite.makeSheet(12,SIConfig.OTHERCATEGORYCODE,1);
    lWrite.writeHeaderItem(1,1,inventoryList.getSeasonCboSH(),SIExcelConf.FIELD_STRING_TYPE);
    lWrite.writeHeaderItem(2,1,inventoryList.getBranchName(lConnection),SIExcelConf.FIELD_STRING_TYPE);
    lWrite.writeHeaderItem(3,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//出力対象
    lWrite.writeHeaderItem(4,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//ｶﾃｺﾞﾘ
    lWrite.writeHeaderItem(5,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//在庫管理
    lWrite.writeHeaderItem(6,1,"全選択",SIExcelConf.FIELD_STRING_TYPE);//在庫コード
    inventorySum = "0";
    Collection inventoryColl = inventoryList.getPrintCollection(lConnection,SIConfig.OTHERCATEGORYCODE);
    Iterator it = inventoryColl.iterator();
    int lineNo = 0;
    //明細を作成する
    while(it.hasNext()){
      UIInventory inventory = (UIInventory)it.next();
      lWrite.makeLine(lineNo);
      lWrite.writeDetailItem(0,inventory.getBranchName(),SIExcelConf.FIELD_STRING_TYPE);
      lWrite.writeDetailItem(1,inventory.getIndividualCode(),SIExcelConf.FIELD_STRING_TYPE);
      lWrite.writeDetailItem(2,inventory.getCmdtyName(),SIExcelConf.FIELD_STRING_TYPE);
      lWrite.writeDetailItem(3,inventory.getAmount(),SIExcelConf.FIELD_NUMERIC_TYPE);
      //データがなくても必ずセルは作っておいて下さい。
      lWrite.writeDetailItem(4);
      lWrite.writeDetailFomulaItem(5,3,4);
      lWrite.writeDetailItem(6);
      lWrite.writeDetailItem(7);
      lWrite.writeDetailItem(8);
      lWrite.writeDetailItem(9);
      //在庫数の合計を求める
      inventorySum= SIUtil.add(inventorySum,inventory.getAmount());
      lineNo = lineNo + 1;
    }

    //フッターを作成する
    lineNo = 0;
    lWrite.makeFooterLine(1,lineNo); 
    lWrite.writeFooterItem(0,lineNo,0,true); 
    lWrite.writeFooterItem(3,inventorySum,SIExcelConf.FIELD_NUMERIC_TYPE);
    lWrite.writeFooterFomulaItem(4);
    lWrite.writeFooterFomulaItem(5,3,4);
    lWrite.makePage();
    try{
      lWrite.close(response);
    }catch(IOException e){
      //e.printStackTrace();
    }
  }
  /**
   * <b>deletePointTableData</b>
   * データベースに使用ポイントのレコードを作成します。
   * @param lRequest
   * @param lConnection
   * @param lPointManCode
   * @throws SIDBAccessException
   * @throws SIDuplicateKeyException
   * @throws SIDuplicateKeyException
   * @throws SIDBAccessException
   */
  private void deleteTableData(Connection lConnection, UIInventoryListCond inventory) throws SIDuplicateKeyException, SIDBAccessException{
    SIModifyRec lRec = null;
    SIDateTime lDateTime=new SIDateTime();
    //棚卸ヘッダ（更新）status=0 登録日時ブランク
    lRec = new SIModifyRec(SIConfig.SITABLE_INVENTORYTBL_NAME);
    lRec.addCondition("branchCode", inventory.getBranchCode());
    lRec.addCondition("season", inventory.getSeason());
    lRec.add("status","0");
    lRec.add("initdatetime",lDateTime.getFullDate());
    lRec.execute(lConnection);

    //棚卸在庫（更新）画面の支店、年をキーに検索して対象月のデータを0にする
    lRec = new SIModifyRec(SIConfig.SITABLE_INVENTORYSTOCKTBL_NAME);
    lRec.addCondition("branchCode", inventory.getBranchCode());
    lRec.addCondition("inventoryyear", inventory.getSeasonYearCbo());
    lRec.add(SIUtil.getAmountName(inventory.getSeason()), "0");
    lRec.execute(lConnection);

    //棚卸差異データ削除
    SIDeleteRec lDeleteRec = new SIDeleteRec(SIConfig.SITABLE_INVENTORYDIFFERENCETBL_NAME);
    lDeleteRec.addCondition("branchcode", inventory.getBranchCode());
    lDeleteRec.addCondition("season", inventory.getSeason());
    lDeleteRec.execute(lConnection);
  }

  /**
   * <b>readStock</b>
   * excelファイルから棚卸し関連データを取り込んでテーブルに登録する
   * @param  request リクエスト
   * @param  response
   * @param  lConnection DBへのコネクション
   * @param  lItemList  データリスト
   * @return エラーメッセージ
   * @throws SIDBAccessException
   * @throws SIDuplicateKeyException
   * @throws SIErrorException
   * @throws なし
   */
  private String readInventory(HttpServletRequest request,HttpServletResponse response,Connection lConnection,SIExcelRead lRead,UIInventory inventory) throws SIDuplicateKeyException, SIDBAccessException, SIErrorException{
    SICustomErrors errors=new SICustomErrors();
    StringBuffer lResBuf=new StringBuffer();
    int lineNo = 0;
    for(int j = 0; j<SIConfig.CATEGORY.length ;j++){
      lRead.makeSheet(j);
      inventory.setBranchName(lRead.readHeaderItem(2,1));
      if(!inventory.filevalidate(request,lConnection,lRead.readHeaderItem(1,1),lRead.readHeaderItem(2,1)))throw new SIErrorException();//データチェックエラー
      for(int i = 0;i<lRead.size();i++){
        errors=new SICustomErrors();
        lRead.readLine(i);
        if(lRead.isEnd(lRead.readDetailItem(0))) break;
        lineNo = i+1;
        inventory.setBranchName(lRead.readDetailItem(0));
        inventory.setIndividualCode(lRead.readDetailItem(1));
        inventory.setCmdtyName(lRead.readDetailItem(2));
        inventory.setAmount(lRead.readDetailItem(4));
        if(inventory.updatevalidate(request,lConnection)){
          insertinvntoryDataTblData(lConnection,inventory);//データ更新
        }else{
          throw new SIErrorException();//データチェックエラー
        }
        if(SIUtil.isNotNull(errors.getErrorMsg())){
          lResBuf.append("<br>Line[").append(String.valueOf(lineNo)).append("]:エラー");
          lResBuf.append(errors.getErrorMsg());
        }
        request.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
      }
    }
    return lResBuf.toString();
  }

  /**
   * <b>insertinvntoryTblData</b>
   * データベースにレコードを新規登録します。
   * @param lConnection DBへのコネクション
   * @param lListCond 削除するデータ
   * @param stockFlg true:入庫 false:出庫
   * @return なし
   * @throws SIDBAccessException
   * @throws SIDuplicateKeyException
   */
  private void insertinvntoryDataTblData(Connection lConnection,UIInventory inventory) throws SIDuplicateKeyException, SIDBAccessException{
    //棚卸在庫
    SIModifyRec lRec = new SIModifyRec(SIConfig.SITABLE_INVENTORYSTOCKTBL_NAME);
    lRec.addCondition("cmdtyCode", inventory.getCmdtyCode());
    lRec.addCondition("individualCode", inventory.getIndividualCode());
    lRec.addCondition("branchCode", inventory.getBranchCode());
    lRec.addCondition("inventoryYear", inventory.getSeasonYearCbo());
    lRec.add(SIUtil.getAmountName(inventory.getSeasonCbo()), inventory.getAmount());//在庫数量
    lRec.execute(lConnection);

    //在庫差異を登録する
    String stockAmount = inventory.getStockAmount(lConnection);
    String differenceAmount = "0";
    differenceAmount =SIUtil.sub(inventory.getAmount(),stockAmount);
    if(!differenceAmount.equals("0")){//差異が存在したら登録する
      SIInsertRec insertRec = new SIInsertRec(SIConfig.SITABLE_INVENTORYDIFFERENCETBL_NAME);
      insertRec.add("cmdtycode", inventory.getCmdtyCode());
      insertRec.add("individualCode", inventory.getIndividualCode());
      insertRec.add("branchCode", inventory.getBranchCode());
      insertRec.add("season", inventory.getSeasonCbo());
      insertRec.add("amount",differenceAmount);
      insertRec.execute(lConnection);
      statusFlg = false;
    }
  }

  /**
   * <b>insertinvntoryTblData</b>
   * データベースにレコードを新規登録します。
   * @param lConnection DBへのコネクション
   * @param lListCond 削除するデータ
   * @param stockFlg true:入庫 false:出庫
   * @return なし
   * @throws SIDBAccessException
   * @throws SIDuplicateKeyException
   */
  private void updateinvntoryDataTblData(Connection lConnection,UIInventory inventory) throws SIDuplicateKeyException, SIDBAccessException{
    SIDateTime lDateTime=new SIDateTime();
    SIModifyRec lRec = new SIModifyRec(SIConfig.SITABLE_INVENTORYTBL_NAME);
    lRec.addCondition("branchCode", inventory.getBranchCode());
    lRec.addCondition("season", inventory.getSeasonCbo());
    if(statusFlg){//差異がなかったら
      lRec.add("status", "2");
    }else{
      lRec.add("status", "1");
    }
    lRec.add("initdatetime",lDateTime.getFullDate());
    lRec.execute(lConnection);
  }
}
