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

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.ArrayList;
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 jp.co.sint.basic.SICust;
import jp.co.sint.basic.SIDeliveryTime;
import jp.co.sint.basic.SILogin;
import jp.co.sint.basic.SIMallShop;
import jp.co.sint.basic.SIOrder;
import jp.co.sint.basic.SIOrderDelivery;
import jp.co.sint.basic.SIOrderDetail;
import jp.co.sint.basic.SIPDFUtil;
import jp.co.sint.basic.SIPayMethod;
import jp.co.sint.basic.SIPayeeInfo;
import jp.co.sint.basic.SIPayment;
import jp.co.sint.basic.SIPointMan;
import jp.co.sint.basic.SITax;
import jp.co.sint.beans.mallmgr.UICustPointListCond;
import jp.co.sint.beans.mallmgr.UIPayListCond;
import jp.co.sint.beans.mallmgr.UIRegOrder;
import jp.co.sint.beans.mallmgr.UIRegOrderDelivery;
import jp.co.sint.beans.mallmgr.UIRegOrderDetail;
import jp.co.sint.beans.mallmgr.UIShippmentListCond;
import jp.co.sint.beans.mallmgr.UIStockHistory;
import jp.co.sint.config.SICSVConf;
import jp.co.sint.config.SIConfig;
import jp.co.sint.config.SIDBMultiConf;
import jp.co.sint.config.SIExcelConf;
import jp.co.sint.config.SIFlagConf;
import jp.co.sint.config.SIPDFConf;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.database.SIDatabaseConnection;
import jp.co.sint.database.SIDateTimeType;
import jp.co.sint.database.SIDateType;
import jp.co.sint.database.SIDuplicateKeyException;
import jp.co.sint.database.SIDeleteRec;
import jp.co.sint.database.SIModifyRec;
import jp.co.sint.database.SIInsertRec;
import jp.co.sint.database.SISpcType;
import jp.co.sint.database.SITableCondition;
import jp.co.sint.docs.SIExcelRWrite;
import jp.co.sint.mail.SISendMail;
import jp.co.sint.servlet.SIServlet;
import jp.co.sint.tools.SIBGUtil;
import jp.co.sint.tools.SICSVWrite;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIErrorFactory;
import jp.co.sint.tools.SIFatalException;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIURLParameter;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;

import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Image;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfWriter;

/**
 * @version $Id: SIRegShippmentSrv.java,v 1.0 2003/09/19 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>
 * asakura 2003/09/19 12:20:42 Original
 */
public class SIRegShippmentSrv extends SIServlet {
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  // 7.2.0 ST1034 追加 ここから
  private boolean pdfTitlePrintFlg = true;
  
  private String formerOrderCode = "";
  
  // 7.2.0 ST1034 追加 ここまで
  
  /**
   * <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);
    SIRegMngAccesslogSrv siRegMngAccesslogSrv = new SIRegMngAccesslogSrv();
    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);// 7.1.1 ST0236 追加
    
    try {
      
      String actionName = this.getActionName(urlParam);// 画面からのアクション //7.1.1 ST0236 修正
      String editMode = this.getEditMode(urlParam); // DBへの編集モード //7.1.1 ST0236 修正
      
      // boolean isUpdateDB=(SIConfig.SIACTION_MODIFY).equalsIgnoreCase(actionName);
      
      SILogin lLogin = SIHTMLUtil.getLogin(request);
      if (SIConfig.SIACTION_PDF.equalsIgnoreCase(actionName)) {// PDFファイルへの出力
        UIShippmentListCond listCond = new UIShippmentListCond();
        // 削除するPKデータの取得
        listCond = new UIShippmentListCond();
        listCond.init(request, urlParam);// 7.2.0 ST1034 追加
        listCond.initShippment(request, urlParam);// 7.1.1 ST0236 修正
        if (listCond.validatePDF(request)&&listCond.validatePDF2(request,databaseConnection.getConnection())) {
          // PDFデータの対象するレコード関連のチェック
          if (listCond.getPdfType().equals(SIPDFConf.SIPDF_TYPE_ORDER) || listCond.getPdfType().equals(SIPDFConf.SIPDF_TYPE_SHIPPMENT)) {// 7.2.0 ST1034 修正
            try {
              this.producePDFFileForOrder(request, response, databaseConnection.getConnection(), lLogin, listCond);
              try {
                databaseConnection.getConnection().commit();
              } catch (SQLException sqle) {}
              if (!response.isCommitted()) {
                forwardKey(request, response, "webshop.jsp.manager.shippment.list");
              }
            } catch (Exception e) {
              try {
                databaseConnection.getConnection().rollback();
              } catch (SQLException ee) {}
              e.printStackTrace();
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.execute.error"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
              forwardKey(request, response, "webshop.jsp.manager.shippment.list");
            }
          } else if (listCond.getPdfType().equals(SIPDFConf.SIPDF_TYPE_DELIVERY)) {
            this.producePDFFileForDelivery(response, databaseConnection.getConnection(), listCond);
          }
        } else {
          forwardKey(request, response, "webshop.jsp.manager.shippment.list");
        }
      } else if (SIConfig.SIACTION_CSV.equalsIgnoreCase(actionName)) {// CSVファイルへの出力
        UIShippmentListCond listCond = new UIShippmentListCond();
        // 取得するCSVデータの取得
        listCond = (UIShippmentListCond) session.getAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME);
        if (listCond == null) listCond = new UIShippmentListCond();
        //listCond.init(request, urlParam);// 7.1.1 ST0236 修正
        this.produceCSVFile(request, response, databaseConnection.getConnection(), listCond);
        if (!response.isCommitted()) {
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("database.query.notexist", "CSVデータ"));
          forwardKey(request, response, "webshop.jsp.manager.shippment.list");
          // 7.3.0 ST2023 追加 ここから 管理ログ出力
        } else {
          try {
            siRegMngAccesslogSrv.insertTableData(databaseConnection.getConnection(), request, "9", null);
          } catch (SIDBAccessException e) {
            e.printStackTrace();
          }
          // 7.3.0 ST2023 追加 ここまで
        }
      } else if (SIConfig.SIACTION_CSV2.equalsIgnoreCase(actionName)) {// 売上伝票
        UIShippmentListCond listCond = new UIShippmentListCond();
        listCond = new UIShippmentListCond();
        listCond.init(request, urlParam);
        listCond.initShippment(request, urlParam);
        if (listCond.validatePDF(request, true)) {// 返品・キャンセル可能
          this.printSalesBill(response, databaseConnection.getConnection(), listCond, lLogin);
          if (!response.isCommitted()) {// 出力失敗
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("database.query.notexist", "発行データ"));
            forwardKey(request, response, "webshop.jsp.manager.shippment.list");
          }
        } else {
          forwardKey(request, response, "webshop.jsp.manager.shippment.list");
        }
      } else if (SIConfig.SIACTION_CSV3.equalsIgnoreCase(actionName)) {// 物品受領書
        UIShippmentListCond listCond = new UIShippmentListCond();
        listCond = new UIShippmentListCond();
        listCond.init(request, urlParam);
        listCond.initShippment(request, urlParam);
        if (listCond.validatePDF(request)&&listCond.validatePDF2(request,databaseConnection.getConnection())) {
          this.printCmdtyBill(response, databaseConnection.getConnection(), listCond, lLogin);
          if (!response.isCommitted()) {// 出力失敗
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("database.query.notexist", "発行データ"));
            forwardKey(request, response, "webshop.jsp.manager.shippment.list");
          }
        } else {
          forwardKey(request, response, "webshop.jsp.manager.shippment.list");
        }
      } else if (SIConfig.SIACTION_LIST.equalsIgnoreCase(actionName)) {// 一覧と検索などの画面のレコードの表示
        UIShippmentListCond listCond = new UIShippmentListCond();
        // データの取得
        listCond = new UIShippmentListCond(request, urlParam);// 7.1.1 ST0236 修正
        // データのチェック
        if (!listCond.validate(request)) {// エラーがあれば
          session.setAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME, listCond);
        } else {
          listCond.setBelongingBranchCode(listCond.getBranchCode());
          if (listCond.getBranchFlgCbo().equals("2")) listCond.setBranchListEnable(true);
          else listCond.setBranchListEnable(false);
          if (listCond.getChargeFlgCbo().equals("2")) listCond.setChargeListEnable(true);
          else listCond.setChargeListEnable(false);
          session.setAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME, listCond);
        }
        session.setAttribute(SIConfig.SISESSION_MAN_NAVIGATER_LIST_NAME, SIConfig.SINAVI_SHIPPMENT_LIST);
        forwardKey(request, response, "webshop.jsp.manager.shippment.list");
      } else if (SIConfig.SIACTION_REFRESH.equalsIgnoreCase(actionName)) {
        UIShippmentListCond listCond = new UIShippmentListCond();
        // データの取得
        listCond = new UIShippmentListCond(request, urlParam);
        // データのチェック
        if (!listCond.validate(request)) {// エラーがあれば
          session.setAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME, listCond);
        } else {
          listCond.setBelongingBranchCode(listCond.getBranchCode());
          if (listCond.getBranchFlgCbo().equals("2")) listCond.setBranchListEnable(true);
          else listCond.setBranchListEnable(false);
          if (listCond.getChargeFlgCbo().equals("2")) listCond.setChargeListEnable(true);
          else listCond.setChargeListEnable(false);
          listCond.setChargeCode("");
          session.setAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME, listCond);
        }
        forwardKey(request, response, "webshop.jsp.manager.shippment.list");
      } else if (SIConfig.SIACTION_MODIFY.equalsIgnoreCase(actionName)) {// レコードの編集画面へ
        refreshOrder(request, databaseConnection.getConnection(), urlParam);// 7.1.1 ST0236 修正
        session.removeAttribute(SIConfig.SISESSION_MAN_ORDER_COMMON_NAME);
        if (session.getAttribute(SIConfig.SISESSION_MAN_ORDER_EDIT_NAME) == null) {
          forwardKey(request, response, "webshop.jsp.manager.shippment.list");
        } else if (SIUtil.notMatch(SIConfig.SIADMIN_MS, lLogin.getAdminType())) {
          forwardKey(request, response, "webshop.jsp.manager.shippment.edit");// 7.2.0 ST1035 修正
        } else {
          forwardKey(request, response, "webshop.jsp.manager.order.shop.edit");
        }
      } else if (SIConfig.SIACTION_UPDATE.equalsIgnoreCase(actionName)) {// 出荷日の設定
        UIShippmentListCond listCond = (UIShippmentListCond) session.getAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME);
        if (listCond == null) listCond = new UIShippmentListCond();
        // 出荷日を設定するPKを設定
        listCond.initShippment(request, urlParam);// 7.1.1 ST0236 修正
        session.setAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME, listCond);
        // 出荷日を設定するレコード関連のチェック
        if (listCond.getUpdateType().equals("0")) {
          if (listCond.validateShippment(request, databaseConnection.getConnection())) {// 問題がなければ
            try {
              updateShippmentDate(request, databaseConnection.getConnection(), listCond);
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.modify"));
              try {
                databaseConnection.getConnection().commit();
              } catch (SQLException sqle) {}
            } catch (SIDBAccessException sqle) {
              try {
                databaseConnection.getConnection().rollback();
              } catch (SQLException ee) {}
              sqle.printStackTrace();
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.execute.error"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
            }
          }
        } else if (listCond.getUpdateType().equals("1")) {
          if (listCond.validateArrivalPlan(request, databaseConnection.getConnection())) {// 問題がなければ
            try {
              updateArrivalPlan(databaseConnection.getConnection(), listCond);
              // 7.1.1 ST0187 削除 ここから
              // request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("manager.message.success.modify"));
              // 7.1.1 ST0187 削除 ここまで
              try {
                databaseConnection.getConnection().commit();
              } catch (SQLException sqle) {}
            } catch (SIDBAccessException sqle) {
              try {
                databaseConnection.getConnection().rollback();
              } catch (SQLException ee) {}
              request.removeAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME);// 7.1.1 ST0187 追加
              sqle.printStackTrace();
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.execute.error"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
            }
          }
        }
        forwardKey(request, response, "webshop.jsp.manager.shippment.list");
      } else if (SIConfig.SIACTION_BACK.equalsIgnoreCase(actionName)) {
        forwardKey(request, response, "webshop.jsp.manager.shippment.list");
      } else if (SIConfig.SIACTION_MAIL.equalsIgnoreCase(actionName)) {// 出荷報告メール
        // 7.1.1 ST0158 修正 ここから
        UIShippmentListCond listCond = (UIShippmentListCond) session.getAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME);
        if (listCond == null) listCond = new UIShippmentListCond();
        // 7.1.1 ST0158 修正 ここまで
        listCond.initShippment(request, urlParam);// 7.1.1 ST0236 修正
        session.setAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME, listCond);
        try {
          if (listCond.validateMail(request, databaseConnection.getConnection())) {
            if (this.sendMail(request, databaseConnection.getConnection(), listCond)) {
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.mail"));
            } else {
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.failure.mail"));
            }
          }
        } catch (SIDBAccessException e) {
          try {
            databaseConnection.getConnection().rollback();
          } catch (SQLException ee) {}
          e.printStackTrace();
          SICustomErrors errors = new SICustomErrors();
          errors.addError(new SICustomError("database.execute.error"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
        } catch (SIDuplicateKeyException e) {
          try {
            databaseConnection.getConnection().rollback();
          } catch (SQLException ee) {}
          e.printStackTrace();
          SICustomErrors errors = new SICustomErrors();
          errors.addError(new SICustomError("database.execute.error"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
        } catch (SQLException e) {
          try {
            databaseConnection.getConnection().rollback();
          } catch (SQLException ee) {}
          e.printStackTrace();
          SICustomErrors errors = new SICustomErrors();
          errors.addError(new SICustomError("database.execute.error"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
        }
        forwardKey(request, response, "webshop.jsp.manager.shippment.list");
      } else if (SIConfig.SIACTION_MAIL2.equalsIgnoreCase(actionName)) {// 出荷確定メール
        UIShippmentListCond listCond = (UIShippmentListCond) session.getAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME);
        if (listCond == null) listCond = new UIShippmentListCond();
        listCond.initShippment(request, urlParam);
        SIDateTime date = new SIDateTime();
        listCond.setShippmentDateYearCbo(date.getYearStr());
        listCond.setShippmentDateMonthCbo(date.getMonthStr());
        listCond.setShippmentDateDayCbo(date.getDayStr());
        session.setAttribute(SIConfig.SISESSION_MAN_SHIPPMENT_LIST_NAME, listCond);
        try {
          if (listCond.validateMail2(request, databaseConnection.getConnection()) && listCond.validateShippment(request, databaseConnection.getConnection())) {
            updateShippmentDate(request, databaseConnection.getConnection(), listCond);
            String fromMail = SIDBUtil.getFirstData(databaseConnection.getConnection(), "SELECT email FROM chargetbl WHERE chargecode=" + SIDBUtil.SQL2Str(manLogin.getUserCode()));
            if (this.sendShippmentRegistMail(request, databaseConnection.getConnection(), listCond, fromMail)) {
              if ("0".equals(manLogin.getUserType())){
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.modify.mail"));
              }else{
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.freeword","出荷消込を行いました"));
              }
            } else {
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.modify.mail2"));
            }
          }
        } catch (SIDBAccessException e) {
          try {
            databaseConnection.getConnection().rollback();
          } catch (SQLException ee) {}
          e.printStackTrace();
          SICustomErrors errors = new SICustomErrors();
          errors.addError(new SICustomError("database.execute.error"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
        } catch (SQLException e) {
          try {
            databaseConnection.getConnection().rollback();
          } catch (SQLException ee) {}
          e.printStackTrace();
          SICustomErrors errors = new SICustomErrors();
          errors.addError(new SICustomError("database.execute.error"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
        }
        forwardKey(request, response, "webshop.jsp.manager.shippment.list");
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new ServletException();
    } catch (NamingException e) {
      e.printStackTrace();
      throw new ServletException();
    } finally {
      databaseConnection.close();
    }
  }
  
  /**
   * <b>updateShippmentDate</b> データベースのレコードを更新します。
   * 
   * @param lConnection DBへのコネクション
   * @param lListCond 更新するデータ
   * @return なし
   * @throws SIDBAccessException
   */
  private void updateShippmentDate(HttpServletRequest lRequest, Connection lConnection, UIShippmentListCond lListCond) throws SIDBAccessException {
    if (lListCond.getCheck() == null) return;
    
    // String lOrderCode="";
    // String lDeliveryCode="";
    try {
      for (int i = 0; i < lListCond.getCheck().length; i++) {
        int count = Integer.parseInt(lListCond.getCheck()[i]);
        updateShippmentDate(lRequest, lConnection, lListCond.getOrderCodeHid()[count], lListCond.getDeliveryCodeHid()[count], lListCond.getDetailCodeHid()[count], lListCond.getShippmentDate());
      }
    } catch (SIDuplicateKeyException e) {
      throw new SIDBAccessException(e);
    } catch (SIDBAccessException e) {
      throw new SIDBAccessException(e);
    } catch (SQLException e) {
      throw new SIDBAccessException(e);
    }
  }
  
  public static void updateShippmentDate(HttpServletRequest lRequest, Connection lConnection, String OrderCond, String DeliveryCode, String DetailCode, String ShippmentDate)
      throws SIDuplicateKeyException, SIDBAccessException, SQLException {
    SIDateTime lDateTime = new SIDateTime();
    
    StringBuffer lStr = new StringBuffer();
    lStr.append("SELECT * FROM orderdetailtbl ");
    lStr.append("WHERE OrderCode=").append(OrderCond);
    lStr.append(" AND DeliveryCode=").append(DeliveryCode);
    lStr.append(" AND DetailCode=").append(DetailCode);
    lStr.append(" FOR UPDATE");
    
    SIDBUtil.hasData(lConnection, lStr.toString());//レコードロック
    
    StringBuffer lStr2 = new StringBuffer();
    lStr2.append("SELECT to_char(shippmentdate,'yyyy/mm/dd') FROM orderdetaillatestvw ");
    lStr2.append("WHERE ordercode=").append(OrderCond);
    lStr2.append(" AND deliverycode=").append(DeliveryCode);
    lStr2.append(" AND detailcode=").append(DetailCode);
    String lShippmentOld = SIDBUtil.getFirstData(lConnection, lStr2.toString());
    
    if (SIUtil.isNotNull(ShippmentDate)&&ShippmentDate.equals(lShippmentOld)) return;
    
    SIModifyRec lRec1 = new SIModifyRec(SIConfig.SITABLE_ORDER_DETAIL_NAME); // 7.2.0 ST1030
    lRec1.addCondition("OrderCode", OrderCond);// 受注番号
    lRec1.addCondition("DeliveryCode", DeliveryCode);// 受注配送先項番
    lRec1.addCondition("DetailCode", DetailCode);// 受注明細番号
    // 出荷日の設定
    if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
      lRec1.add("ShippmentDate", ShippmentDate);// 出荷日
    } else {
      lRec1.add("ShippmentDate", new SIDateType(ShippmentDate));// 出荷日
    }
    
    // 出荷日を設定するときに到着予定日をクリアする
    lRec1.add("ArrivalPlanDate", "");// 到着予定日
    // lRec.add("ArrivalPlanTimeFrom","");//到着予定時間From
    // lRec.add("ArrivalPlanTimeTo","");//到着予定時間To
    // 受注配送先レコードの更新
    lRec1.execute(lConnection);
    
    if (SIUtil.isNotNull(lShippmentOld)) {
      // 出庫取消データの作成
      Collection deleteShipColl = UIShippmentListCond.getShipDeleteColl(lConnection, OrderCond, DeliveryCode, DetailCode);
      Iterator deleteShipIte = deleteShipColl.iterator();
      while (deleteShipIte.hasNext()) {
        UIStockHistory lStock1 = (UIStockHistory) deleteShipIte.next();
        String individualTail = lStock1.getIndividualCode().substring(7, 8);
        if (!individualTail.equalsIgnoreCase("D") && !individualTail.equalsIgnoreCase("I")) {
          SIInsertRec lRec2 = new SIInsertRec("shiphistorytbl");
          lRec2.add("cmdtycode", lStock1.getCmdtyCode());
          lRec2.add("individualcode", lStock1.getIndividualCode());
          lRec2.add("shipnumber", lStock1.getNewShipNumber(lConnection));
          lRec2.add("shipbranch", lStock1.getNewBranch());
          lRec2.add("shipcharge", lStock1.getNewCharge());
          lRec2.add("amount", lStock1.getNewAmount());
          lRec2.add("purchaseprice", lStock1.getPurchasePrice());
          lRec2.add("processingexpence", lStock1.getProcessingExpence());
          lRec2.add("shiptype", "0");
          lRec2.add("comment", "出荷日再設定により出庫" + lStock1.getDeleteNo() + "取消");
          lRec2.add("ordercode", OrderCond);
          lRec2.add("delflg", "3");
          lRec2.add("initdatetime", lStock1.getInitDateTime());
          lRec2.add("calcdatetime", lDateTime.getFullDateTime());
          lRec2.execute(lConnection);
          lDateTime.addSecond(1);
          
          boolean allocation = SIDBUtil.hasData(lConnection, "SELECT * FROM orderallocationinfotbl WHERE cmdtycode='" + lStock1.getCmdtyCode() + "' AND individualcode='"
              + lStock1.getIndividualCode() + "' AND ordercode='" + OrderCond + "'");
          if (allocation) {
            // 原価再計算（出荷日取消の場合）
            //if (SIUtil.isNull(ShippmentDate)) 
            //SIBGUtil.costCalculationAdd(lConnection, lStock1.getCmdtyCode(), lStock1.getIndividualCode(), lStock1.getPurchasePrice(), lStock1.getProcessingExpence(), lStock1.getNewAmount(), true);
            // 原価再計算（出荷日上書きの場合）
            //else 
            //SIBGUtil.costCalculationAdd(lConnection, lStock1.getCmdtyCode(), lStock1.getIndividualCode(), lStock1.getPurchasePrice(), lStock1.getProcessingExpence(), lStock1.getNewAmount(), false);
          } else {
            // 入庫削除データの作成
            Collection deleteStoreColl = UIShippmentListCond.getStoreDeleteColl(lConnection, OrderCond, DeliveryCode, DetailCode);
            Iterator deleteStoreIte = deleteStoreColl.iterator();
            while (deleteStoreIte.hasNext()) {
              UIStockHistory lStock2 = (UIStockHistory) deleteStoreIte.next();
              SIInsertRec lRec3 = new SIInsertRec("storehistorytbl");
              lRec3.add("cmdtycode", lStock2.getCmdtyCode());
              lRec3.add("individualcode", lStock2.getIndividualCode());
              lRec3.add("storenumber", lStock2.getNewStoreNumber(lConnection));
              lRec3.add("storebranch", lStock2.getNewBranch());
              lRec3.add("storecharge", lStock2.getNewCharge());
              lRec3.add("amount", lStock2.getNewAmount());
              lRec3.add("purchaseprice", lStock2.getPurchasePrice());
              lRec3.add("processingexpence", lStock2.getProcessingExpence());
              lRec3.add("storetype", "0");
              lRec3.add("comment", "出荷日再設定により入庫" + lStock2.getDeleteNo() + "取消");
              lRec3.add("ordercode", OrderCond);
              lRec3.add("delflg", "3");
              lRec2.add("initdatetime", lStock2.getInitDateTime());
              lRec3.add("calcdatetime", lDateTime.getFullDateTime());
              
              StringBuffer lSql = new StringBuffer();
              lSql.append("SELECT a.hacchucode  ");
              lSql.append("FROM hacchutbl a,hacchudetailtbl b ");
              lSql.append("WHERE a.hacchucode=b.hacchucode AND a.layercode=b.layercode AND a.enabledflg=1 AND a.status=1 AND b.shipflg=0 ");
              lSql.append("AND a.ordercode=").append(SIDBUtil.SQL2Str(OrderCond," "));
              lSql.append("AND b.individualcode=").append(SIDBUtil.SQL2Str(lStock2.getIndividualCode()," "));
              
              if (!SIDBUtil.hasData(lConnection, lSql.toString())) {
                lRec3.execute(lConnection);
                lDateTime.addSecond(1);
                
                SIModifyRec lRec4 = new SIModifyRec("storehistorytbl");
                lRec4.addCondition("cmdtycode", lStock2.getCmdtyCode());
                lRec4.addCondition("individualcode", lStock2.getIndividualCode());
                lRec4.addCondition("storenumber", lStock2.getDeleteNo());
                lRec4.add("delflg", "2");
                lRec4.execute(lConnection);
              }
            }
          }
          SIModifyRec lRec5 = new SIModifyRec("shiphistorytbl");
          lRec5.addCondition("cmdtycode", lStock1.getCmdtyCode());
          lRec5.addCondition("individualcode", lStock1.getIndividualCode());
          lRec5.addCondition("shipnumber", lStock1.getDeleteNo());
          lRec5.add("delflg", "2");
          lRec5.execute(lConnection);
        }
      }
    }
    if (SIUtil.isNotNull(ShippmentDate)) {
      // 出庫データの作成
      Collection allocateColl = UIShippmentListCond.getShipHistoryColl(lConnection, OrderCond, DeliveryCode, DetailCode);
      Iterator allocateIte = allocateColl.iterator();
      String lCmdtyCode = "";
      String lIndividualCode = "";
      while (allocateIte.hasNext()) {
        UIStockHistory lStock = (UIStockHistory) allocateIte.next();
        String individualTail = lStock.getIndividualCode().substring(7, 8);
        if (!individualTail.equalsIgnoreCase("D") && !individualTail.equalsIgnoreCase("I")) {
          SIInsertRec lRec6 = new SIInsertRec("shiphistorytbl");
          if (lStock.getType().equals("1")) {// 引当情報のある商品の出庫データ作成
            lRec6.add("cmdtycode", lStock.getCmdtyCode());
            lRec6.add("individualcode", lStock.getIndividualCode());
            lRec6.add("shipnumber", lStock.getNewShipNumber(lConnection));
            lRec6.add("shipbranch", lStock.getNewBranch());
            lRec6.add("shipcharge", lStock.getNewCharge());
            lRec6.add("amount", lStock.getNewAmount());
            lRec6.add("purchaseprice", SIUtil.multi(lStock.getPurchasePrice(), lStock.getNewAmount()));
            lRec6.add("processingexpence", SIUtil.multi(lStock.getProcessingExpence(), lStock.getNewAmount()));
            lRec6.add("shiptype", "0");
            lRec6.add("comment", "受注" + OrderCond + "-" + DeliveryCode + "-" + DetailCode);
            lRec6.add("ordercode", OrderCond);
            lRec6.add("delflg", "1");
            lRec6.add("initdatetime", new SIDateType(ShippmentDate));
            lRec6.add("calcdatetime", lDateTime.getFullDateTime());
            lRec6.execute(lConnection);
            lDateTime.addSecond(1);
          } else {// 引当情報のない商品の入出庫データ作成
            String branch = SIDBUtil.getFirstData(lConnection, "SELECT branchcode FROM orderlatestvw WHERE ordercode='" + OrderCond + "'");
            String amount = SIDBUtil.getFirstData(lConnection, "SELECT amount FROM orderdetaillatestvw WHERE ordercode='" + OrderCond + "' AND deliverycode='" + DeliveryCode
                + "' AND detailcode='" + DetailCode + "'");
            if (SIUtil.isNull(branch)) branch = "999";
            if (SIUtil.isNull(amount)) amount = "0";
            
            lRec6.add("cmdtycode", lStock.getCmdtyCode());
            lRec6.add("individualcode", lStock.getIndividualCode());
            lRec6.add("shipnumber", lStock.getNewShipNumber(lConnection));
            lRec6.add("shipbranch", branch);
            lRec6.add("shipcharge", lStock.getNewCharge());
            lRec6.add("amount", amount);
            lRec6.add("purchaseprice", SIUtil.multi(lStock.getPurchasePrice(), amount));
            lRec6.add("processingexpence", SIUtil.multi(lStock.getProcessingExpence(), amount));
            lRec6.add("shiptype", "0");
            lRec6.add("comment", "受注" + OrderCond + "-" + DeliveryCode + "-" + DetailCode);
            lRec6.add("ordercode", OrderCond);
            lRec6.add("delflg", "1");
            lRec6.add("initdatetime", new SIDateType(ShippmentDate));
            lRec6.add("calcdatetime", lDateTime.getFullDateTime());
            lRec6.execute(lConnection);
            lDateTime.addSecond(1);
            /*
            SIInsertRec lRec7 = new SIInsertRec("storehistorytbl");
            lRec7.add("cmdtycode", lStock.getCmdtyCode());
            lRec7.add("individualcode", lStock.getIndividualCode());
            lRec7.add("storenumber", lStock.getNewStoreNumber(lConnection));
            lRec7.add("storebranch", branch);
            lRec7.add("storecharge", lStock.getNewCharge());
            lRec7.add("amount", amount);
            lRec7.add("purchaseprice", SIUtil.multi(lStock.getPurchasePrice(), amount));
            lRec7.add("processingexpence", SIUtil.multi(lStock.getProcessingExpence(), amount));
            lRec7.add("storetype", "0");
            lRec7.add("comment", "受注" + OrderCond + "-" + DeliveryCode + "-" + DetailCode);
            lRec7.add("ordercode", OrderCond);
            lRec7.add("delflg", "1");
            lRec7.add("initdatetime", new SIDateType(ShippmentDate));
            lRec7.add("calcdatetime", lDateTime.getFullDateTime());
            
            StringBuffer lSql = new StringBuffer();
            lSql.append("SELECT a.hacchucode  ");
            lSql.append("FROM hacchutbl a,hacchudetailtbl b ");
            lSql.append("WHERE a.hacchucode=b.hacchucode AND a.layercode=b.layercode AND a.enabledflg=1 AND a.status=1 AND b.shipflg=0 ");
            lSql.append("AND a.ordercode=").append(SIDBUtil.SQL2Str(OrderCond," "));
            lSql.append("AND b.individualcode=").append(SIDBUtil.SQL2Str(lStock.getIndividualCode()," "));
            if (!SIDBUtil.hasData(lConnection, lSql.toString())) lRec7.execute(lConnection);
            
            lDateTime.addSecond(1);
            */
          }
          SIModifyRec lRec8 = new SIModifyRec("orderdetailtbl");
          lRec8.addCondition("ordercode", OrderCond);
          lRec8.addCondition("deliverycode", DeliveryCode);
          lRec8.addCondition("detailcode", DetailCode);
          lRec8.add("purchaseprice", lStock.getPurchasePrice());
          lRec8.add("processingexpence", lStock.getProcessingExpence());
          lRec8.execute(lConnection);
          
          lCmdtyCode = lStock.getCmdtyCode();
          lIndividualCode = lStock.getIndividualCode();
        }
      }
      // 訂正データをクリアする
      SIDeleteRec delRec = new SIDeleteRec("orderdetailcosttbl");
      delRec.addCondition("ordercode", OrderCond);
      delRec.addCondition("cmdtycode", lCmdtyCode);
      delRec.addCondition("individualcode", lIndividualCode);
      if (SIUtil.isNotNull(lCmdtyCode) && SIUtil.isNotNull(lIndividualCode)) {
        delRec.execute(lConnection);
      }
    }
    // ポイントを使用できるかどうか
    SILogin lLogin = SIHTMLUtil.getLogin(lRequest);
    String pointEnableFlg = SIDBUtil.getPointEnableFlg(lLogin.getMallShopCode(), lConnection);
    SIModifyRec lRec9 = new SIModifyRec("ordertbl"); // 7.2.0 ST1030
    lRec9.addCondition("OrderCode", OrderCond);// 受注番号
    lRec9.addCondition("pointEnableFlg", "2");
    lRec9.add("pointEnableFlg", "1");// 出荷日
    lRec9.execute(lConnection);
    
    // ポイント使用区分の変更
    SIPointMan.changeEnableFlg(lConnection, OrderCond);
    
    StringBuffer lSqlBuf = new StringBuffer("SELECT bb.CustCode,aa.DeliveryAddressee,aa.DeliveryName ");
    // 7.2.0 ST1030 修正 ここから
    lSqlBuf.append("FROM ");
    lSqlBuf.append(SIConfig.SIVIEW_ORDER_DELIVERY_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("aa, ");
    lSqlBuf.append("CustAddressTbl").append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb, ");
    lSqlBuf.append(SIConfig.SIVIEW_ORDER_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("cc ");
    // lSqlBuf.append("FROM OrderDeliveryTbl aa,CustAddressTbl bb,OrderTbl cc ");
    // 7.2.0 ST1030 修正 ここまで
    lSqlBuf.append("WHERE aa.OrderCode=cc.OrderCode AND bb.CustCode=cc.CustCode ");
    lSqlBuf.append("AND aa.DeliveryAddressee=bb.DeliveryAddressee AND bb.DeliveryName=bb.DeliveryName ");
    lSqlBuf.append("AND aa.OrderCode=").append(SIDBUtil.SQL2Str(OrderCond, " "));
    lSqlBuf.append("AND aa.DeliveryCode=").append(SIDBUtil.SQL2Str(DeliveryCode));
    log.debug("updateShippmentDate:lSqlBuf1=" + lSqlBuf.toString());
    
    HashMap lResMap = SIDBUtil.getOneRowData(lConnection, lSqlBuf.toString());
    if (!lResMap.isEmpty()) {
      // 7.2.0 ST1030 修正 ここから
      lSqlBuf = new StringBuffer("(SELECT MAX(aa.ShippmentDate) FROM ");
      lSqlBuf.append(SIConfig.SIVIEW_ORDER_DELIVERY_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("aa, ");
      lSqlBuf.append(SIConfig.SIVIEW_ORDER_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb ");
      // lSqlBuf=new StringBuffer("(SELECT MAX(aa.ShippmentDate) FROM OrderDeliveryTbl aa,OrderTbl bb ");
      // 7.2.0 ST1030 修正 ここまで
      lSqlBuf.append("WHERE aa.OrderCode=bb.OrderCode ");
      lSqlBuf.append("AND bb.CustCode=").append(SIDBUtil.SQL2Str((String) lResMap.get("custcode"), " "));
      lSqlBuf.append("AND aa.DeliveryAddressee=").append(SIDBUtil.SQL2Str((String) lResMap.get("deliveryaddressee"), " "));
      lSqlBuf.append("AND aa.DeliveryName=").append(SIDBUtil.SQL2Str((String) lResMap.get("deliveryname"), ")"));
      log.debug("updateShippmentDate:lSqlBuf2=" + lSqlBuf.toString());
      
      SISpcType lSpc = new SISpcType(lSqlBuf.toString());
      
      SIModifyRec rec = new SIModifyRec("CustAddressTbl");
      rec.addCondition("CustCode", (String) lResMap.get("custcode"));// 顧客コード
      rec.addCondition("DeliveryAddressee", (String) lResMap.get("deliveryaddressee"));// 配送先名
      rec.addCondition("DeliveryName", (String) lResMap.get("deliveryname"));// 配送先名
      
      if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
        rec.add("LastDeliveryDate", lSpc);// 出荷日
        rec.add("UpdateDateTime", (new SIDateTime()).getFullDateTime());// 更新日
      } else {
        String lNow = (new SIDateTime()).getFullDateTime();
        rec.add("LastDeliveryDate", lSpc);// 出荷日
        rec.add("UpdateDateTime", new SIDateTimeType(lNow));// 更新日
      }
      rec.execute(lConnection);
    }
  }
  
  /**
   * <b>updateShippmentDate</b> データベースのレコードを更新します。
   * 
   * @param lConnection DBへのコネクション
   * @param lListCond 更新するデータ
   * @return なし
   * @throws SIDBAccessException
   */
  private void updateArrivalPlan(Connection lConnection, UIShippmentListCond lListCond) throws SIDBAccessException {
    if (lListCond.getCheck() == null) return;
    
    // String lOrderCode="";
    // String lDeliveryCode="";
    // 7.1.1 ST0187 追加 ここから
    SITableCondition lTableCondition = new SITableCondition();
    lTableCondition.setItemName("ShippmentDate");
    lTableCondition.setCompareType(SIConfig.SICONDITION_TYPE_IS_NOT_NULL);
    // 7.1.1 ST0187 追加 ここまで
    try {
      for (int i = 0; i < lListCond.getCheck().length; i++) {
        int count = Integer.parseInt(lListCond.getCheck()[i]);
        SIModifyRec lRec = new SIModifyRec(SIConfig.SITABLE_ORDER_DELIVERY_NAME);// 7.2.0 ST1030 修正
        
        lRec.addCondition("OrderCode", lListCond.getOrderCodeHid()[count]);// 受注番号
        lRec.addCondition("DeliveryCode", lListCond.getDeliveryCodeHid()[count]);// 受注配送先項番
        lRec.addCondition(lTableCondition);// 受注配送先項番//7.1.1 ST0187 追加
        // 出荷日の設定
        if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
          lRec.add("ArrivalPlanDate", lListCond.getArrivalPlanDate()[count]);// 到着予定日
        } else {
          lRec.add("ArrivalPlanDate", new SIDateType(lListCond.getArrivalPlanDate()[count]));// 到着予定日
        }
        SIDeliveryTime lDeliveryTime = new SIDeliveryTime();
        lDeliveryTime.setDeliveryTime(lListCond.getArrivalPlanTime()[count]);
        lRec.add("ArrivalPlanTimeFrom", lDeliveryTime.getDeliveryTimeFrom());// 到着予定時刻From
        lRec.add("ArrivalPlanTimeTo", lDeliveryTime.getDeliveryTimeTo());// 到着予定時刻To
        
        // 受注配送先レコードの更新
        lRec.execute(lConnection);
      }
    } catch (SIDuplicateKeyException e) {
      throw new SIDBAccessException(e);
    } catch (SIDBAccessException e) {
      throw new SIDBAccessException(e);
    }
  }
  
  private void refreshOrder(HttpServletRequest lRequest, Connection lConnection, SIURLParameter lUrlParam) {// 7.1.1 ST0236 修正
    SILogin lLogin = SIHTMLUtil.getLogin(lRequest);
    
    HttpSession session = lRequest.getSession(true);// セッションの取得
    
    // 再リセット
    UIRegOrder refreshRegOrder = new UIRegOrder();
    refreshRegOrder.init(lRequest, lUrlParam);// 7.1.1 ST0236 修正
    if (lLogin.isShop()) {
      // 7.2.0 ST1030 修正 ここから
      StringBuffer lSqlBuf = new StringBuffer("SELECT OrderCode FROM ").append(SIConfig.SIVIEW_ORDER_DETAIL_LATEST_NAME).append(" WHERE OrderCode=");
      // StringBuffer lSqlBuf=new StringBuffer("SELECT OrderCode FROM OrderDetailTbl WHERE OrderCode=");
      // 7.2.0 ST1030 修正 ここまで
      lSqlBuf.append(SIDBUtil.SQL2Str(refreshRegOrder.getOrderCode())).append(" AND ShopCode=");
      lSqlBuf.append(SIDBUtil.SQL2Str(lLogin.getMallShopCode()));
      // 7.2.0 ST1035 追加ここから
      if (refreshRegOrder.getSelectedDeliveryCode().length() > 0) {
        lSqlBuf.append(" AND DELIVERYCODE=");
        lSqlBuf.append(SIDBUtil.SQL2Str(refreshRegOrder.getSelectedDeliveryCode()));
      }
      // 7.2.0 ST1035 追加ここまで
      try {
        if (SIDBUtil.hasData(lConnection, lSqlBuf.toString())) {
          refreshRegOrder.reset(lRequest, lConnection);
          session.setAttribute(SIConfig.SISESSION_MAN_ORDER_EDIT_NAME, refreshRegOrder);
        } else {
          session.removeAttribute(SIConfig.SISESSION_MAN_ORDER_EDIT_NAME);
        }
      } catch (SIDBAccessException e) {
        e.printStackTrace();
        session.removeAttribute(SIConfig.SISESSION_MAN_ORDER_EDIT_NAME);
      }
    } else if (lLogin.isMall()) {
      refreshRegOrder.reset(lRequest, lConnection);
      session.setAttribute(SIConfig.SISESSION_MAN_ORDER_EDIT_NAME, refreshRegOrder);
    }
  }
  
  private boolean sendMail(HttpServletRequest lRequest, Connection lConnection, UIShippmentListCond listCond) throws SIDuplicateKeyException, SIDBAccessException, SQLException {
    boolean lRes = true;
    // ログイン情報取得
    // SILogin manLogin=SIHTMLUtil.getLogin(lRequest);
    for (int i = 0; i < listCond.getCheck().length; i++) {
      int count = Integer.parseInt(listCond.getCheck()[i]);
      boolean sendflg = true;
      // 受注ヘッダ情報を取得
      SIOrder order = new SIOrder(listCond.getOrderCodeHid()[count]);
      order.reset(lConnection);
      // 受注配送先情報を取得
      SIOrderDelivery delivery = new SIOrderDelivery(listCond.getOrderCodeHid()[count], listCond.getDeliveryCodeHid()[count]);
      delivery.reset(lConnection);
      
      // 出荷日を設定
      if (SIUtil.isNotNull(listCond.getShippmentDate()) && SIUtil.isNull(delivery.getShippmentDate())) {
        updateShippmentDate(lRequest, lConnection, listCond.getOrderCodeHid()[count], listCond.getDeliveryCodeHid()[count], listCond.getDetailCodeHid()[count], listCond.getShippmentDate());
        delivery.setShippmentDate(listCond.getShippmentDate());
      }
      
      // 1.メールテンプレートを取得
      SISendMail lSendMail = new SISendMail();
      try {
        lSendMail.setMailTemp(lConnection, delivery.getMailShopCode(lConnection, listCond.getOrderCodeHid()[count], listCond.getDeliveryCodeHid()[count]),
            SIConfig.SIMAIL_TEMPLATE_SHIPPMENT_REQUEST);
      } catch (SIFatalException e2) {
        e2.printStackTrace();
      }
      
      // 2.メールの本文の作成(受注ヘッダー)
      StringBuffer lMailBuf = new StringBuffer();
      lMailBuf.append("\n-------------");
      lMailBuf.append("\n受注番号:").append(order.getOrderCode());
      lMailBuf.append("\n");
      lMailBuf.append("\nお客さま情報");
      lMailBuf.append("\n氏名:").append(order.getCustName());
      lMailBuf.append("\n住所:〒").append(order.getPostCode()).append(" ");
      lMailBuf.append(order.getAddress());
      lMailBuf.append("\nTEL:").append(order.getTel());
      lMailBuf.append("\nE-Mail:").append(order.getEmail());
      lMailBuf.append("\n受注日時:").append(order.getInitDateTime());
      lMailBuf.append("\n-------------");
      lMailBuf.append("\n");
      
      lSendMail.appendContent1(lMailBuf.toString());
      
      // 3.メールの本文の作成(配送先情報)
      lMailBuf = new StringBuffer();
      lMailBuf.append("\n-------------");
      lMailBuf.append("\nお届け先情報");
      lMailBuf.append("\n宛名:").append(delivery.getDeliveryAddressee());
      lMailBuf.append("\n住所:〒").append(delivery.getPostCode()).append(" ");
      lMailBuf.append(delivery.getAddress());
      lMailBuf.append("\nTEL:").append(delivery.getTel());
      lMailBuf.append("\n配送方法:").append(delivery.getDeliveryTypeName());
      if (SIUtil.isNotNull(delivery.getDeliveryDate())) {
        lMailBuf.append("\n配送希望日時:").append(delivery.getDeliveryDate());// 7.2.0 ST1077 修正
      }
      if (SIUtil.isNotNull(delivery.getDeliveryTimeFrom()) && SIUtil.isNotNull(delivery.getDeliveryTimeTo())) {
        lMailBuf.append("  " + delivery.getDeliveryTimeFrom()).append("-").append(delivery.getDeliveryTimeTo()).append("時ごろ");
      }
      
      Collection lOrderDetailColl = delivery.getDetailCollection(lConnection);
      Iterator lOrderDetailIta = lOrderDetailColl.iterator();
      
      while (lOrderDetailIta.hasNext()) {
        UIRegOrderDetail lRegOrderDetail = (UIRegOrderDetail) lOrderDetailIta.next();
        
        // 6.メールの本文の作成(受注明細の内容)
        lMailBuf.append("\n==============");
        lMailBuf.append("\n商品名:").append(lRegOrderDetail.getCartCmdtyName());// 7.2.0 ST0334 修正
        lMailBuf.append("\n数量:").append(NumberFormat.getNumberInstance().format(new Long(lRegOrderDetail.getAmount())));
        if (SIUtil.isNull(lRegOrderDetail.getWrappingName())) lMailBuf.append("\nギフト包装:なし");
        else lMailBuf.append("\nギフト包装:").append(lRegOrderDetail.getWrappingName());
      }
      lMailBuf.append("\n==============");
      
      lMailBuf.append("\n");
      lMailBuf.append("\n").append(delivery.getShippmentDate()).append(" に出荷いたしました。");
      if (SIUtil.isNotNull(delivery.getArrivalPlanDate()) && SIUtil.isNotNull(delivery.getArrivalPlanTime())) {
        lMailBuf.append("\n").append(delivery.getArrivalPlanDate());
        lMailBuf.append(" " + delivery.getArrivalPlanTime()).append("時ごろ");
        lMailBuf.append(" に到着予定です。");
      }
      if (SIUtil.isNotNull(delivery.getArrivalPlanDate()) && SIUtil.isNull(delivery.getArrivalPlanTime())) {
        lMailBuf.append("\n").append(delivery.getArrivalPlanDate());
        lMailBuf.append(" に到着予定です。");
      }
      if (SIUtil.isNull(delivery.getArrivalPlanDate()) && SIUtil.isNotNull(delivery.getArrivalPlanTime())) {
        lMailBuf.append("\n到着予定時刻は " + delivery.getArrivalPlanTime()).append("時ごろ").append(" になります。");
      }
      if (SIUtil.isNotNull(order.getMemo())) {
        lMailBuf.append("\n").append(order.getMemo());
      }
      lMailBuf.append("\n-------------");
      lMailBuf.append("\n");
      lSendMail.appendContent2(lMailBuf.toString());
      
      // 5.出荷メールフラグを更新
      SIModifyRec lRec = new SIModifyRec(SIConfig.SITABLE_ORDER_DELIVERY_NAME);// 7.2.0 ST1030 修正
      lRec.addCondition("orderCode", listCond.getOrderCodeHid()[count]);
      lRec.addCondition("deliveryCode", listCond.getDeliveryCodeHid()[count]);
      lRec.add("shippmentMailFlg", "1");
      lRec.execute(lConnection);
      
      // 4.送信開始
      try {
        lSendMail.setToMailAddress(order.getCurrentEmail());// 7.2.0 ST1018 修正
        sendflg = lSendMail.execute();
        lRes = sendflg && lRes;
      } catch (SIFatalException e) {
        lRes = false;
        e.printStackTrace();
      }
      
      // メールはロールバックできないので１件コミット
      if (sendflg) {
        try {
          lConnection.commit();
        } catch (SQLException sqle) {
          throw new SIDBAccessException(sqle);
        }
      } else {
        try {
          lConnection.rollback();
        } catch (SQLException sqle) {
          throw new SIDBAccessException(sqle);
        }
      }
    }
    return lRes;
  }
  
  /**
   * <b>producePDFFileForOrder</b> 選択した受注コードリストのPDFファイルを一括に作成します。
   * 
   * @param lLogin ログイン情報
   * @param lConnection DBへのコネクション
   * @param lOrderList 選択した受注コードリスト
   * @return なし
   * @throws なし
   */
  private void producePDFFileForOrder(HttpServletRequest lRequest, HttpServletResponse response, Connection lConnection, SILogin lLogin, UIShippmentListCond lOrderList)
      throws SIDuplicateKeyException, SIDBAccessException, SQLException {
    String lOrderCode = "";
    String lDeliveryCode = "";
    String lDetailCode = "";
    String lShippmentDate = "";
    int inx = SIConfig.SIPAGE_SIZE_LIST[SIConfig.SIPAGE_SIZE_LIST.length - 1];
    String[] codeShippment = new String[inx];
    boolean duplicateflg = true;
    String lHomeFlg = "0";
    HashMap lReportMap = new HashMap();
    String lReportType = "";
    StringBuffer lSqlBuf = new StringBuffer();
    boolean lResult = false;
    pdfTitlePrintFlg = true;// 7.2.0 ST1034 追加
    formerOrderCode = ""; // 7.2.0 ST1034 追加
    
    File lOrderTempDir = (File) this.getServletContext().getAttribute("javax.servlet.context.tempdir");
    File lOrderTempFile = new File("");
    try {
      lOrderTempFile = File.createTempFile("order_", ".pdf", lOrderTempDir);
    } catch (IOException e1) {
      e1.printStackTrace();
    }
    String lFileName = lOrderTempFile.getAbsolutePath();
    
    Document document = new Document();
    
    try {
      PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(lFileName));
      
      HeaderFooter footer = new HeaderFooter(new Phrase("- "), new Phrase(" -"));
      footer.setAlignment(Element.ALIGN_RIGHT);
      footer.setBorder(Rectangle.NO_BORDER);
      document.setFooter(footer);
      
      document.open();
      
      if (lOrderList.getCheck() == null) {
        log.warn("not init ");
        return;
      }
      String[] codeList = new String[lOrderList.getCheck().length];
      for (int h = 0; h < lOrderList.getCheck().length; h++) {
        int check = Integer.parseInt(lOrderList.getCheck()[h]);
        codeList[h] = lOrderList.getOrderCodeHid()[check] + "-" + lOrderList.getDeliveryCodeHid()[check] + "-" + lOrderList.getDetailCodeHid()[check];
      }
      
      for (int i = 0; i < lOrderList.getCheck().length; i++) {
        int check = Integer.parseInt(lOrderList.getCheck()[i]);
        lOrderCode = lOrderList.getOrderCodeHid()[check];
        lDeliveryCode = lOrderList.getDeliveryCodeHid()[check];
        lDetailCode = lOrderList.getDetailCodeHid()[check];
        lShippmentDate = lOrderList.getShippmentDateHid()[check];
        codeShippment[i] = lOrderCode + lShippmentDate;
        duplicateflg = true;
        // if(SIUtil.isNull(lShippmentDate)){
        // duplicateflg=false;
        // }else{
        for (int j = 0; j < i; j++) {
          if (codeShippment[j].equals(codeShippment[i])) duplicateflg = false;
        }
        // }
        lHomeFlg = lOrderList.getHomeFlgHid()[check];
        
        lReportType = (String) lReportMap.get(lOrderCode);
        if (lReportType == null) {
          lSqlBuf = new StringBuffer();
          lSqlBuf.append("SELECT CASE WHEN (min(homeFlg)=max(homeFlg) AND max(homeFlg)=0) THEN  ").append(SIConfig.SIORDER_PDF_MULTI_EXC_HOME);
          // 7.2.0 ST1030 修正 ここから
          lSqlBuf.append("   WHEN (min(homeFlg)=max(homeFlg) AND max(homeFlg)=1) THEN ").append(SIConfig.SIORDER_PDF_ONLY_HOME);
          lSqlBuf.append("   ELSE ").append(SIConfig.SIORDER_PDF_MULTI_INC_HOME).append(" END ");
          lSqlBuf.append(" FROM ").append(SIConfig.SIVIEW_ORDER_DELIVERY_LATEST_NAME);
          lSqlBuf.append(" WHERE ordercode=").append(SIDBUtil.SQL2Str(lOrderCode));
          // lSqlBuf.append(" FROM orderdeliverytbl where ordercode=").append(SIDBUtil.SQL2Str(lOrderCode));
          // 7.2.0 ST1030 修正 ここまで
          
          log.debug("producePDFFileForOrder:lSqlBuf=" + lSqlBuf.toString());
          
          try {
            lReportType = SIDBUtil.getFirstData(lConnection, lSqlBuf.toString());
          } catch (SIDBAccessException e2) {
            e2.printStackTrace();
            lReportType = "0";
          }
          lReportMap.put(lOrderCode, lReportType);
        }
        
        // 出荷日を設定
        SIOrderDelivery delivery = new SIOrderDelivery(lOrderList.getOrderCodeHid()[check], lOrderList.getDeliveryCodeHid()[check]);
        delivery.reset(lConnection);
        if (SIUtil.isNotNull(lOrderList.getShippmentCheck()) && SIUtil.isNotNull(lOrderList.getShippmentDate()) && SIUtil.isNull(delivery.getShippmentDate())) {
          updateShippmentDate(lRequest, lConnection, lOrderList.getOrderCodeHid()[check], lOrderList.getDeliveryCodeHid()[check], lOrderList.getDetailCodeHid()[check],lOrderList.getShippmentDate());
        }
        
        if (duplicateflg) {
          if (producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, lDeliveryCode, lReportType, lHomeFlg, lOrderList.getDeliveryOutputType(), lShippmentDate, codeList, lOrderList.getStatementBranch())) {
            // 5.納品書出力フラグを更新
            if (!lOrderList.getPdfType().equals(SIPDFConf.SIPDF_TYPE_SHIPPMENT)) {// 7.2.0 ST1034 追加
              SIModifyRec lRec = new SIModifyRec(SIConfig.SITABLE_ORDER_DELIVERY_NAME);// 7.2.0 ST1030
              lRec.addCondition("orderCode", lOrderList.getOrderCodeHid()[check]);
              lRec.addCondition("deliveryCode", lOrderList.getDeliveryCodeHid()[check]);
              lRec.add("deliveryOutputFlg", lOrderList.getDeliveryOutputType());
              lRec.execute(lConnection);
            }
            lResult = true;
          }
        }
      }
      
      if (lOrderList.getCheck().length > 0 && lResult) {
        document.close();
        String lOutputFileName = SIPDFConf.SIPDF_PREFIX_ORDER_FILE_NAME + (new SIDateTime().getDateTimeString()) + "." + SIPDFConf.SIPDF_EXTENSION_NAME;
        SIPDFUtil lPdfUtil = new SIPDFUtil();
        lPdfUtil.execute(response, lFileName, lOutputFileName);
        writer.close();
      }
    } catch (NumberFormatException e) {
      e.printStackTrace();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (DocumentException e) {
      e.printStackTrace();
    } finally {
      // 臨時ファイルの削除
      lOrderTempFile.delete();
    }
  }
  
  /**
   * <b>producePDFFileForOrder</b> ある受注コードの全て種類【納品書(注文主用)と納品書(配送先用)と納品書兼請求書と納品書兼領収書】 のPDFファイルを作成します。
   * 
   * @param lLogin ログイン情報
   * @param lConnection DBへのコネクション
   * @param lOrderCode 出力する受注コード
   * @return なし
   * @throws なし
   */
  private boolean producePDFFileForOrder(Connection lConnection, SILogin lLogin, Document document, String lOrderCode, String lDeliveryCode, String lReportType, String lHomeFlg,
      String outputType, String lShippmentDate, String[] codeList, String branch) {
    boolean lResult = true;
    SIOrder lOrder = new SIOrder(lOrderCode);
    lOrder.reset(lConnection);
    boolean lPayBefore = lOrder.getPaymentFlg().equals(SIFlagConf.SIFLAG_PAYMENTFLG_BEFORE) || lOrder.getPaymentFlg().equals(SIFlagConf.SIFLAG_PAYMENTFLG_CARD);
    
    log.debug("producePDFFileForOrder:lOrderCode=" + lOrderCode + ",lDeliveryCode=" + lDeliveryCode + ",lShippmentDate=" + lShippmentDate + ",lReportType=" + lReportType
        + ",lHomeFlg=" + lHomeFlg + ",lOrder.getPaymentFlg()=" + lOrder.getPaymentFlg());
    if (outputType.equals("0")) {
      // 自宅のみに配送、自宅宛に送付
      if (lReportType.equals(SIConfig.SIORDER_PDF_ONLY_HOME)) {
        // モール一括
        if (SIConfig.SIRUNNING_MODE_CURRENT == SIConfig.SIRUNNING_MODE_TOGETHER) {
          // モール管理者
          if (lLogin.isMall()) {
            lResult = false;
            // ショップ管理者
          } else {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_DELIVERY_INX, lDeliveryCode, lShippmentDate);
          }
          // ショップ個別
        } else {
          if (lOrder.getPaymentFlg().equals(SIFlagConf.SIFLAG_PAYMENTFLG_POINT)) {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_ORDER_INX, lDeliveryCode, lShippmentDate);
          } else if (lOrder.getPaymentFlg().equals(SIFlagConf.SIFLAG_PAYMENTFLG_AFTER)) {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_BILL_INX, lDeliveryCode, lShippmentDate);
          } else if (lOrder.getPaymentFlg().equals(SIFlagConf.SIFLAG_PAYMENTFLG_CASH)) {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_BILL_INX, lDeliveryCode, lShippmentDate);
          } else if (lPayBefore) {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_RECEPT_INX, lDeliveryCode, lShippmentDate);
          } else lResult = false;
        }
        // 自宅含複数配送、自宅宛に送付
      } else if (lReportType.equals(SIConfig.SIORDER_PDF_MULTI_INC_HOME) && lHomeFlg.equals("1")) {
        // モール一括
        if (SIConfig.SIRUNNING_MODE_CURRENT == SIConfig.SIRUNNING_MODE_TOGETHER) {
          // モール管理者
          if (lLogin.isMall()) {
            lResult = false;
            // ショップ管理者
          } else {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_DELIVERY_INX, lDeliveryCode, lShippmentDate);
          }
          // ショップ個別
        } else {
          if (lOrder.getPaymentFlg().equals(SIFlagConf.SIFLAG_PAYMENTFLG_POINT)) {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_ORDER_INX, lDeliveryCode, lShippmentDate);
          } else if (lOrder.getPaymentFlg().equals(SIFlagConf.SIFLAG_PAYMENTFLG_AFTER)) {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_BILL_INX, lDeliveryCode, lShippmentDate);
          } else if (lPayBefore) {
            producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_RECEPT_INX, lDeliveryCode, lShippmentDate);
          } else lResult = false;
        }
        // 自宅含複数配送、配送先に送付
      } else if (lReportType.equals(SIConfig.SIORDER_PDF_MULTI_INC_HOME) && lHomeFlg.equals("0")) {
        // モール一括、モール管理者
        if (SIConfig.SIRUNNING_MODE_CURRENT == SIConfig.SIRUNNING_MODE_TOGETHER && lLogin.isMall()) {
          lResult = false;
          // その他
        } else {
          producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_DELIVERY_INX, lDeliveryCode, lShippmentDate);
        }
        // 自宅除単一配送、配送先に送付||自宅除複数配送、配送先に送付
      } else if (SIUtil.isNull(lReportType) || lReportType.equals(SIConfig.SIORDER_PDF_MULTI_EXC_HOME)) {
        // モール一括、モール管理者
        if (SIConfig.SIRUNNING_MODE_CURRENT == SIConfig.SIRUNNING_MODE_TOGETHER && lLogin.isMall()) {
          lResult = false;
          // その他
        } else {
          producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_DELIVERY_INX, lDeliveryCode, lShippmentDate);
        }
      } else lResult = false;
    } else if (outputType.equals("1")) {
      producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_ORDER_INX, lDeliveryCode, lShippmentDate,codeList,branch);
    } else if (outputType.equals("2")) {
      producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_DELIVERY_INX, lDeliveryCode, lShippmentDate);
    } else if (outputType.equals("3")) {
      producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_BILL_INX, lDeliveryCode, lShippmentDate);
    } else if (outputType.equals("4")) {
      producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_RECEPT_INX, lDeliveryCode, lShippmentDate);
      // 7.2.0 ST1034 追加 ここから
    } else if (outputType.equals("5")) {
      producePDFFileForOrder(lConnection, lLogin, document, lOrderCode, SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX, lDeliveryCode, lShippmentDate);
      // 7.2.0 ST1034 追加 ここまで
    } else {
      lResult = false;
    }
    return lResult;
  }
  
  /**
   * <b>producePDFFileForOrder</b> ある受注コードのある種類のPDFファイルを作成します。
   * 
   * @param lLogin ログイン情報
   * @param lConnection DBへのコネクション
   * @param lOrderCode 出力する受注コード
   * @param lReportType 出力する種類タイプ
   * @param lDeliveryCode 出力するある配送先コード
   * @param lDetailCode 出力する明細コード
   * @return なし
   * @throws なし
   */
  private void producePDFFileForOrder(Connection lConnection, SILogin lLogin, Document document, String lOrderCode, int lReportType, String lDeliveryCode, String lShippmentDate) {
    producePDFFileForOrder(lConnection,lLogin,document,lOrderCode,lReportType,lDeliveryCode,lShippmentDate,null,"");
  }
  
  private void producePDFFileForOrder(Connection lConnection, SILogin lLogin, Document document, String lOrderCode, int lReportType, String lDeliveryCode, String lShippmentDate, String[] codeList,String branch) {
    UIRegOrder lRegOrder = new UIRegOrder(lOrderCode);
    UICustPointListCond lcustPoint = new UICustPointListCond();
    boolean eyelashgarageFlg = false;
    boolean towatechFlg = false;
    boolean priceFlg = false;
    
    if (!lRegOrder.reset(lConnection)) {
      log.debug("not find order record for ordercode " + lOrderCode);
      return;
    }
    String totalOfEffective = new String("0");
    SICust customer = new SICust(lRegOrder.getCustCode());
    try {
      customer.reset(lConnection);
      totalOfEffective = lcustPoint.getCustPoint(lConnection, lLogin, lRegOrder.getCustCode());
      // String addition = SIDBUtil.getFirstData(lConnection, "SELECT pointofissue FROM pointmanmtbl WHERE issueflg=0 AND enableflg=2 AND ordercode=" + lOrderCode);
      // if (SIUtil.isNotNull(addition)) totalOfEffective = SIUtil.add(totalOfEffective, addition);
    } catch (SIDBAccessException e1) {
      e1.printStackTrace();
    }
    
    eyelashgarageFlg = lRegOrder.getCompanyCode().equals("17");
    towatechFlg = customer.getDeliveryDocument().equals("10");
    priceFlg = customer.getDeliveryDocument().equals("1");
    SIDateTime lDateTime = new SIDateTime();
    
    String priceOfCmdty = "0";// 商品自身の価格
    String totalPrice = "0";// 総合計
    boolean nextpage1 = false;// 改ページフラグ
    boolean nextpage2 = false;
    
    int offset = 10;
    
    Cell lCell;
    try {
      String MallShopCode = "";
      // ショップ個別の時は受注伝票の持ち主
      if (SIConfig.SIRUNNING_MODE_CURRENT == SIConfig.SIRUNNING_MODE_INDIVIDUAL) {
        MallShopCode = (new SIOrder()).getMailShopCode(lConnection, lOrderCode);
        // モール一括の時は出力したショップ
      } else {
        MallShopCode = lLogin.getMallShopCode();
      }
      
      Collection lOrderDetailColl = new ArrayList();
      UIRegOrderDetail lRegOrderDetail[] = new UIRegOrderDetail[0];
      UIRegOrderDelivery lOrderDelivery = new UIRegOrderDelivery();
      UIRegOrderDetail lOrderDetail = new UIRegOrderDetail();
      Collection lOrderDeliveryColl = new ArrayList();
      
      lOrderDelivery = new UIRegOrderDelivery(lOrderCode, lDeliveryCode);
      lOrderDelivery.reset(lConnection);
      if (SIUtil.isNotNull(lShippmentDate)) lOrderDelivery.setShippmentDate("20" + lShippmentDate);
      lOrderDeliveryColl.add(lOrderDelivery);
      
      // 1.発行日など
      
      Table lPdfTbl = new Table(1);
      if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX || pdfTitlePrintFlg) {// 7.2.0 ST1034 追加
        lPdfTbl.setAlignment(Element.ALIGN_RIGHT);
        lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_HEADER);
        lPdfTbl.setPadding(1);
        lPdfTbl.setBorder(Rectangle.NO_BORDER);
        
        // 7.2.0 ST1034 追加・修正 ここから
        // 出荷指示のときは発効日のみ表示
        if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {
          String pdfFile = (String) getServletContext().getRealPath("image/logo/BG_Logo_Big.gif");
          if (towatechFlg) pdfFile = (String) getServletContext().getRealPath("image/logo/Towatech_Logo.gif");
          else if (eyelashgarageFlg) pdfFile = (String) getServletContext().getRealPath("image/logo/EG_Logo_Big.gif");
          Image logo = Image.getInstance(pdfFile);
          logo.scaleAbsolute(144, 48);
          logo.setAbsolutePosition(30, 760);
          document.add(logo);
          
          lCell = new Cell(new Paragraph("発行日:" + lDateTime.getFullDate(), SIPDFConf.SIFONT_GOTHIC7N));
          lCell.setBorder(Rectangle.BOTTOM);
          lPdfTbl.addCell(lCell);
          lCell = new Cell(new Paragraph("注文日:" + lRegOrder.getInitDateTime(), SIPDFConf.SIFONT_GOTHIC7N));
          lCell.setBorder(Rectangle.BOTTOM);
          lPdfTbl.addCell(lCell);
          lCell = new Cell(new Paragraph("ご注文No:" + lOrderCode, SIPDFConf.SIFONT_GOTHIC7N));
          lCell.setBorder(Rectangle.BOTTOM);
          lPdfTbl.addCell(lCell);
          lCell = new Cell(new Paragraph("出荷日:" + lOrderDelivery.getShippmentDate(), SIPDFConf.SIFONT_GOTHIC7N));
          lCell.setBorder(Rectangle.BOTTOM);
          lPdfTbl.addCell(lCell);
        } else {
          lCell = new Cell(new Paragraph("発行日:" + lDateTime.getFullDate(), SIPDFConf.SIFONT_GOTHIC7N));
          lCell.setBorder(Rectangle.BOTTOM);
          lPdfTbl.addCell(lCell);
        }
        // 7.2.0 ST1034 追加・修正 ここまで
        document.add(lPdfTbl);
        
        // 7.3.0 new title
        if (towatechFlg) {
          lPdfTbl = new Table(1);
          lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
          lPdfTbl.setAlignment(Element.ALIGN_LEFT);
          lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
          lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
          lPdfTbl.setPadding(3);
          lPdfTbl.setOffset(8);
          lPdfTbl.setBorder(Rectangle.NO_BORDER);
        }else{
          lPdfTbl = new Table(3);
          lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
          float title[] = { 1, 98, 1 };
          lPdfTbl.setWidths(title);
          lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_RIGHT);
          lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_BOTTOM);
          lPdfTbl.setAlignment(Element.ALIGN_CENTER);
          lPdfTbl.setPadding(0);
          lPdfTbl.setOffset(0);
          lPdfTbl.setBorder(Rectangle.NO_BORDER);
        }
        
        lCell = new Cell(new Paragraph(" ", SIPDFConf.SIFONT_GOTHIC20B));
        lCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        
        lCell = new Cell(new Paragraph("納品書", SIPDFConf.SIFONT_GOTHIC20B));
        lCell.setHorizontalAlignment(Element.ALIGN_CENTER);
        lCell.setBorder(Rectangle.NO_BORDER);
        if (!towatechFlg) lPdfTbl.addCell(lCell);
        
        lCell = new Cell(new Paragraph(" ", SIPDFConf.SIFONT_GOTHIC20B));
        lCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
        lCell.setBorder(Rectangle.NO_BORDER);
        if (!towatechFlg) lPdfTbl.addCell(lCell);
        
        document.add(lPdfTbl);
        // 7.3.0 new title
        
        // 2.タイトル(固定1)
        // lPdfTbl = new Table(1);
        // lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
        // lPdfTbl.setAlignment(Element.ALIGN_LEFT);
        // lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_CENTER );
        // lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE );
        // lPdfTbl.setPadding(2);
        // lPdfTbl.setBorder(Rectangle.NO_BORDER);
        
        // lCell=new Cell(new Phrase(SIPDFConf.SIREPORT_PDF_ORDER_TITLE[lReportType],SIPDFConf.SIFONT_GOTHIC20B));
        // lCell.add(new Paragraph(SIPDFConf.SIREPORT_PDF_ORDER_SUBTITLE[lReportType],SIPDFConf.SIFONT_GOTHIC11N));
        // lCell.setBorder(Rectangle.NO_BORDER);
        // lPdfTbl.addCell(lCell);
        // lPdfTbl.setOffset(6);
        // document.add(lPdfTbl);
      }
      
      // 7.2.0 ST1034 追加 ここから
      // 出荷指示書のときで、前の受注番号と違うときだけスペースを入れる
      if (lReportType == SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX && !formerOrderCode.equalsIgnoreCase(lOrderDelivery.getOrderCode())) {
        lPdfTbl = new Table(1);
        lPdfTbl.setOffset(8);
        lPdfTbl.setBorder(Rectangle.NO_BORDER);
        
        lCell = new Cell(new Paragraph(SIPDFConf.SIORDER_MIDDLE_TITLE_NAME[lReportType], SIPDFConf.SIFONT_GOTHIC10B));
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        
        document.add(lPdfTbl);
      }
      // 7.2.0 ST1034 追加 ここまで
      
      // 出荷指示書のときは、前の受注番号と違うときだけ表示させる
      if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX || !formerOrderCode.equalsIgnoreCase(lOrderDelivery.getOrderCode()) || formerOrderCode.equals("")) {// 7.2.0 ST1034 追加
        // 3.注文主氏名
        lPdfTbl = new Table(3);// 7.2.0 ST1034 修正
        lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
        // 7.2.0 ST1034 追加 ここから
        if (lReportType == SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {
          lPdfTbl.setWidths(SIPDFConf.SIORDER_TABLE_WIDTHS_ORDERHEADER);
        }
        // 7.2.0 ST1034 追加 ここまで
        lPdfTbl.setAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
        lPdfTbl.setPadding(3);
        lPdfTbl.setOffset(8);
        
        // 7.2.0 ST1034 追加 ここから
        if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {
          lCell = new Cell(new Paragraph("ご注文主: " + lRegOrder.getCustName() + "  " + SIPDFConf.SICUST_TITLE_NAME[Integer.parseInt(lRegOrder.getCustCompanyFlg())],
              SIPDFConf.SIFONT_GOTHIC9N));
          lCell.setColspan(3);
          lPdfTbl.addCell(lCell);
        } else {
          lCell = new Cell(new Paragraph("注文日:" + lRegOrder.getInitDateTime(), SIPDFConf.SIFONT_GOTHIC7N));
          lPdfTbl.addCell(lCell);
          lCell = new Cell(new Paragraph("注文No." + lOrderCode, SIPDFConf.SIFONT_GOTHIC7N));
          lPdfTbl.addCell(lCell);
          lCell = new Cell(new Paragraph("ご注文主: " + lRegOrder.getCustName() + "  " + SIPDFConf.SICUST_TITLE_NAME[Integer.parseInt(lRegOrder.getCustCompanyFlg())],
              SIPDFConf.SIFONT_GOTHIC9N));
          lPdfTbl.addCell(lCell);
        }
        // 7.2.0 ST1034 追加 ここまで
        
        lCell = new Cell(new Paragraph("住所: 〒" + lRegOrder.getPostCode(), SIPDFConf.SIFONT_GOTHIC9N));
        lCell.add(new Paragraph(lRegOrder.getAddress(), SIPDFConf.SIFONT_GOTHIC9N));
        lCell.setColspan(3);// 7.2.0 ST1034 追加
        lPdfTbl.addCell(lCell);
        document.add(lPdfTbl);
      }
      
      UIRegOrderDelivery[] lRegOrderDelivery = (UIRegOrderDelivery[]) lOrderDeliveryColl.toArray(new UIRegOrderDelivery[0]);
      for (int ii = 0; ii < lRegOrderDelivery.length; ii++) {
        // 6.宛先氏名
        lPdfTbl = new Table(4);// 7.2.0 ST1034 修正
        lPdfTbl.setTableFitsPage(true);
        // 7.2.0 ST1034 追加・修正 ここから
        if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {
          lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
        } else {
          lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_SUB);
        }
        // 7.2.0 ST1034 追加・修正 ここから
        lPdfTbl.setWidths(SIPDFConf.SIORDER_TABLE_WIDTHS_ADDRESSEE);
        lPdfTbl.setAlignment(Element.ALIGN_RIGHT);// 7.2.0 ST1034 修正
        lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
        lPdfTbl.setBorderWidth(1);
        lPdfTbl.setPadding(4);
        lPdfTbl.setOffset(8);
        lPdfTbl.setTableFitsPage(true);
        
        // 7.2.0 ST1034 追加・修正 ここから
        if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {
          lOrderDelivery = lRegOrderDelivery[ii];
          lCell = new Cell(new Phrase("納品先宛名: ", SIPDFConf.SIFONT_GOTHIC9N));// 配送先用
          lCell.add(new Paragraph(lOrderDelivery.getDeliveryAddressee() + "  " + SIPDFConf.SICUST_TITLE_NAME[Integer.parseInt(lOrderDelivery.getCustCompanyFlg())],
              SIPDFConf.SIFONT_GOTHIC9N));
          lCell.add(new Paragraph("納品先サロン名: " + lOrderDelivery.getCompanyName(), SIPDFConf.SIFONT_GOTHIC9N));
          lCell.setColspan(4);
          lPdfTbl.addCell(lCell);
        } else {
          lCell = new Cell(new Phrase("配送NO: ", SIPDFConf.SIFONT_GOTHIC7N));
          lCell.add(new Paragraph(lOrderCode + "-" + lDeliveryCode, SIPDFConf.SIFONT_GOTHIC7N));
          lPdfTbl.addCell(lCell);
          lOrderDelivery = lRegOrderDelivery[ii];
          lCell = new Cell(new Phrase("宛先: ", SIPDFConf.SIFONT_GOTHIC9N));// 配送先用
          lCell.add(new Paragraph(lOrderDelivery.getDeliveryAddressee() + "  " + SIPDFConf.SICUST_TITLE_NAME[Integer.parseInt(lOrderDelivery.getCustCompanyFlg())],
              SIPDFConf.SIFONT_GOTHIC9N));
          lPdfTbl.addCell(lCell);
        }
        // 7.2.0 ST1034 追加・修正 ここまで
        /*
         * if (lReportType!=SIPDFConf.SIREPORT_PDF_DELIVERY_INX){ lCell=new Cell(new Paragraph("送料種別: "+lOrderDelivery.getDeliveryTypeName(),SIPDFConf.SIFONT_GOTHIC9N));
         * lCell.setHeader(true); lPdfTbl.addCell(lCell); }
         */
        
        lCell = new Cell(new Paragraph("納品先御住所: 〒" + lOrderDelivery.getPostCode(), SIPDFConf.SIFONT_GOTHIC9N));
        lCell.add(new Paragraph(lOrderDelivery.getAddress(), SIPDFConf.SIFONT_GOTHIC9N));
        lCell.setColspan(4);// 7.2.0 ST1034 修正
        lPdfTbl.addCell(lCell);
        
        document.add(lPdfTbl);
        
        // 6.5 中見出し2
        lPdfTbl = new Table(1);
        lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
        lPdfTbl.setAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
        lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
        lPdfTbl.setPadding(3);
        lPdfTbl.setOffset(8);
        lPdfTbl.setBorder(Rectangle.NO_BORDER);
        
        lCell = new Cell(new Paragraph(SIPDFConf.SIORDER_MIDDLE_TITLE_NAME2[lReportType], SIPDFConf.SIFONT_GOTHIC10B));
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        
        document.add(lPdfTbl);
        
        lOrderDetailColl = lOrderDelivery.getOrderCollection(lConnection);
        lRegOrderDetail = (UIRegOrderDetail[]) lOrderDetailColl.toArray(new UIRegOrderDetail[0]);
        float[] detailWidths = SIPDFConf.SIORDER_DETAIL_WIDTHS[lReportType];
        String[] detailTitle = SIPDFConf.SIORDER_DETAIL_TITLE_NAME[lReportType];
        if (priceFlg) {
          detailWidths = new float[]{9,63,4,8,8,8};
          detailTitle =  new String[]{"　在庫コード","商品名　(色・状態)","数量","単価","合計","保証期間　"};
        }
        
        lPdfTbl = new Table(detailWidths.length);
        lPdfTbl.setTableFitsPage(true);
        // 7.2.0 ST1034 追加・修正 ここから
        if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {
          lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
        } else {
          lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_SUB_SUB);
        }
        // 7.2.0 ST1034 追加・修正 ここまで
        lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_RIGHT);
        lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
        
        lPdfTbl.setWidths(detailWidths);
        lPdfTbl.setBorderWidth(1);
        lPdfTbl.setPadding(0);
        lPdfTbl.setOffset(4);
        log.debug("SIPDFConf.SIORDER_DETAIL_TITLE_COUNT[" + lReportType + "]=" + SIPDFConf.SIORDER_DETAIL_TITLE_COUNT[lReportType]);
        
        // 7.商品明細
        for (int jj = 0; jj < detailTitle.length; jj++) {
          lCell = new Cell(new Paragraph(detailTitle[jj], SIPDFConf.SIFONT_GOTHIC7B));
          lCell.setHeader(true);
          lCell.setBorderWidth(0.5f);
          lCell.setBorder(Rectangle.NO_BORDER);
          if (jj >= 2) lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
          else lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
          lPdfTbl.addCell(lCell);
        }
        lCell = new Cell(new Paragraph("　", new Font(SIPDFConf.getGothic(), 3)));
        lCell.setBorder(Rectangle.BOTTOM);
        lCell.setColspan(detailTitle.length);
        lPdfTbl.addCell(lCell);
        
        String guaranteedTerm = "";
        int count = 0;
        for (int k = 0; k < lRegOrderDetail.length; k++) {
          lOrderDetail = lRegOrderDetail[k];
          if (codeList!=null && codeList.length>0) {
            boolean skipFlg = true;
            for (int l = 0; l < codeList.length; l++) {
              String code = lOrderDetail.getOrderCode() + "-" + lOrderDetail.getDeliveryCode() + "-" + lOrderDetail.getDetailCode();
              if (code.equals(codeList[l])) skipFlg = false;
            }
            if (skipFlg) continue;
          }
          
          if (SIUtil.isNotNull(branch)){
            StringBuffer str = new StringBuffer();
            str.append("SELECT orderallocationnumber FROM orderallocationinfotbl WHERE ordercode=").append(SIDBUtil.SQL2Str(lOrderCode," "));
            str.append("AND individualcode=").append(SIDBUtil.SQL2Str(lOrderDetail.getIndividualCode()," "));
            str.append("AND branchcode=").append(SIDBUtil.SQL2Str(branch));
            str.append(" AND detailcode=").append(SIDBUtil.SQL2Str(lOrderDetail.getDetailCode())); // EDBTG003-00 elecs-matsushima add
            String number = SIDBUtil.getFirstData(lConnection, str.toString());
            if(SIUtil.isNotNull(number)) lOrderDetail.setAmount(number);
          }
          
          if (lReportType == SIPDFConf.SIREPORT_PDF_ORDER_INX) {
            // lCell = new Cell(new Paragraph(lOrderDetail.getCmdtyCode(), SIPDFConf.SIFONT_GOTHIC7N));
            // lCell.setBorder(Rectangle.NO_BORDER);
            // lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
            // lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("　" +lOrderDetail.getIndividualCode(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
            lCell.setVerticalAlignment(Element.ALIGN_TOP);
            lPdfTbl.addCell(lCell);
            
            // EDBTG003-00 elecs-tani mod start
            // 添付品なら頭に添付品の文言を付ける
            String cmdtyName = SIBGUtil.getCmdtyFullName(lConnection, lOrderDetail.getCmdtyCode(), lOrderDetail.getIndividualCode());
            if (lOrderDetail.getSetDetailFlg().equals(SIConfig.SET_DETAIL_FLG_APPENDED) ) {
              cmdtyName = SIConfig.SET_APPEND_NAME_PDF + cmdtyName;
            }
//            lCell = new Cell(new Paragraph(SIBGUtil.getCmdtyFullName(lConnection, lOrderDetail.getCmdtyCode(), lOrderDetail.getIndividualCode()), SIPDFConf.SIFONT_GOTHIC7N));
            lCell = new Cell(new Paragraph(cmdtyName, SIPDFConf.SIFONT_GOTHIC7N));
            // EDBTG003-00 elecs-tani mod start
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
            lCell.setVerticalAlignment(Element.ALIGN_TOP);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph(lOrderDetail.getAmount(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
            lCell.setVerticalAlignment(Element.ALIGN_TOP);
            lPdfTbl.addCell(lCell);
            
            if (priceFlg) {
              priceOfCmdty = SIUtil.multi_LL(lOrderDetail.getAmount(), lOrderDetail.getPriceIncTax());
              totalPrice = SIUtil.add_LL(totalPrice, priceOfCmdty);
              
              lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(lOrderDetail.getPriceIncTax())) + "円",SIPDFConf.SIFONT_GOTHIC7N));
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
              
              lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(priceOfCmdty)) + "円", SIPDFConf.SIFONT_GOTHIC7N));
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
            }
            
            guaranteedTerm = SIDBUtil.getFirstData(lConnection, "SELECT guaranteedTerm FROM individualtbl WHERE cmdtycode='" + lOrderDetail.getCmdtyCode()
                + "' AND individualcode='" + lOrderDetail.getIndividualCode() + "'");
            
            if (SIUtil.isNull(guaranteedTerm)||"0".equals(guaranteedTerm)) guaranteedTerm = "−";
            else guaranteedTerm = SIDateTime.getMonthToYear(Integer.parseInt(guaranteedTerm));
            
            lCell = new Cell(new Paragraph(guaranteedTerm + "　", SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
            lPdfTbl.addCell(lCell);
          } else {
            if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {// 7.2.0 ST1034 追加
              lCell = new Cell(new Paragraph(lOrderDetail.getShopName(), SIPDFConf.SIFONT_GOTHIC7N));
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
              lPdfTbl.addCell(lCell);
            }
            
            lCell = new Cell(new Paragraph(lOrderDetail.getCmdtyCode(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
            lPdfTbl.addCell(lCell);
            
            // EDBTG003-00 elecs-tani mod start
            // 添付品なら頭に添付品の文言を付ける
            String cmdtyName = lOrderDetail.getCartCmdtyName();
            if (lOrderDetail.getSetDetailFlg().equals(SIConfig.SET_DETAIL_FLG_APPENDED) ) {
              cmdtyName = SIConfig.SET_APPEND_NAME_PDF + cmdtyName;
            }
//            lCell = new Cell(new Paragraph(lOrderDetail.getCartCmdtyName(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell = new Cell(new Paragraph(cmdtyName, SIPDFConf.SIFONT_GOTHIC7N));
            // EDBTG003-00 elecs-tani mod start
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph(lOrderDetail.getAmount(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
            lPdfTbl.addCell(lCell);
            
            if (lReportType != SIPDFConf.SIREPORT_PDF_DELIVERY_INX) {
              priceOfCmdty = SIUtil.multi_LL(lOrderDetail.getAmount(), lOrderDetail.getPriceIncTax());
              
              lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(lOrderDetail.getPriceIncTax())) + "円" + lOrderDetail.getTaxFlgName(),
                  SIPDFConf.SIFONT_GOTHIC7N));
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
              
              lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(priceOfCmdty)) + "円", SIPDFConf.SIFONT_GOTHIC7N));
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
              
              if (SIUtil.isNull(lOrderDetail.getWrappingName())) {
                lCell = new Cell(new Paragraph("なし", SIPDFConf.SIFONT_GOTHIC7N));
              } else {
                lCell = new Cell(new Paragraph(lOrderDetail.getWrappingName(), SIPDFConf.SIFONT_GOTHIC7N));
              }
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
              
              if (SIUtil.isNull(lOrderDetail.getWrappingName())) {
                lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(lOrderDetail.getWrappingPriceOfTotal())) + "円", SIPDFConf.SIFONT_GOTHIC7N));// 7.2.0
                // ST0304
                // 修正
              } else {
                lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(lOrderDetail.getWrappingPriceOfTotal())) + "円(" + lOrderDetail.getWrappingTaxName()
                    + ")", SIPDFConf.SIFONT_GOTHIC7N));// 7.2.0 ST0304 修正
              }
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
              
              lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(SIUtil.add_LL(priceOfCmdty, lOrderDetail.getWrappingPriceOfTotal()))) + "円",
                  SIPDFConf.SIFONT_GOTHIC7N));// 7.2.0 ST0304 修正
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
            }
            if (lReportType == SIPDFConf.SIREPORT_PDF_DELIVERY_INX) {
              lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC7N));
              lCell.setBorder(Rectangle.NO_BORDER);
              lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
              lPdfTbl.addCell(lCell);
            }
          }
          if (count == 13) {
            nextpage2 = true;
          }
          if (count == 31) {
            nextpage2 = false;
            nextpage1 = true;
          }
          count++;
        }
        lCell = new Cell(new Paragraph("　", new Font(SIPDFConf.getGothic(), 3)));
        lCell.setBorder(Rectangle.NO_BORDER);
        lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
        lCell.setVerticalAlignment(Element.ALIGN_TOP);
        lCell.setColspan(4);
        lPdfTbl.addCell(lCell);
      }
      document.add(lPdfTbl);
      if (nextpage1) document.newPage();
      
      if (towatechFlg) {
        document.newPage();
        return;
      }
      
      // 8.連絡事項
      /*
      if (lReportType != SIPDFConf.SIREPORT_PDF_DELIVERY_INX && lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX && SIUtil.isNotNull(lRegOrder.getContactMsg())) {// 7.2.0 ST1034 修正
        lPdfTbl = new Table(1);
        lPdfTbl = new Table(3);
        lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
        lPdfTbl.setWidths(SIPDFConf.SISTOCK_TABLE_WIDTHS_TOTAL);
        lPdfTbl.setAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
        lPdfTbl.setPadding(2);
        lPdfTbl.setTableFitsPage(true);
        lPdfTbl.setOffset(12);
        
        lCell = new Cell(new Paragraph("ご連絡事項: ", SIPDFConf.SIFONT_GOTHIC9N));
        lCell.add(new Paragraph(lRegOrder.getContactMsg(), SIPDFConf.SIFONT_GOTHIC9N));
        lPdfTbl.addCell(lCell);
        
        // lCell = new Cell(new Paragraph("商品合計: ", SIPDFConf.SIFONT_GOTHIC9B));
        // lCell.add(new Paragraph("ポイント累積: ", SIPDFConf.SIFONT_GOTHIC9B));
        // lCell.add(new Paragraph(" ", SIPDFConf.SIFONT_GOTHIC9B));
        
        if (!customer.getNoPointFlg().equals("1")) {
        lCell = new Cell(new Paragraph("ポイント累積: ", SIPDFConf.SIFONT_GOTHIC9B));
        
        /*
         * lCell.add(new Paragraph("送料合計(B): ", SIPDFConf.SIFONT_GOTHIC9B)); lCell.add(new Paragraph("手数料(C): ", SIPDFConf.SIFONT_GOTHIC9B));
         * if(lRegOrder.getPointEnableFlg().equals("1")){ lCell.add(new Paragraph("小計(D=A+B+C): ", SIPDFConf.SIFONT_GOTHIC9B)); lCell.add(new Paragraph("ポイント使用額(E): ",
         * SIPDFConf.SIFONT_GOTHIC9B)); if (SIUtil.isNotNull(lRegOrder.getSumOfDiscount())&&Long.parseLong(lRegOrder.getSumOfDiscount())>0){ lCell.add(new Paragraph("値引金額(G): ",
         * SIPDFConf.SIFONT_GOTHIC9B)); lCell.add(new Paragraph("お支払い合計額(F=D-G-E): ", SIPDFConf.SIFONT_GOTHIC9B)); }else{ lCell.add(new Paragraph("お支払い合計額(F=D-E): ",
         * SIPDFConf.SIFONT_GOTHIC9B)); } }else{ if (SIUtil.isNotNull(lRegOrder.getSumOfDiscount())&&Long.parseLong(lRegOrder.getSumOfDiscount())>0){ lCell.add(new
         * Paragraph("小計(D=A+B+C): ", SIPDFConf.SIFONT_GOTHIC9B)); lCell.add(new Paragraph("値引金額(G): ", SIPDFConf.SIFONT_GOTHIC9B)); lCell.add(new Paragraph("お支払い合計額(F=D-G): ",
         * SIPDFConf.SIFONT_GOTHIC9B)); }else{ lCell.add(new Paragraph("お支払い合計額(D=A+B+C): ", SIPDFConf.SIFONT_GOTHIC9B)); } }
         * /// 7.3.0 PI-NES0501 削除
        lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        
        // String sumOfD = SIUtil.add_LLL(lRegOrder.getTotalOfPrice(), lRegOrder.getTotalOfDeliveryFee(), lRegOrder.getFeeIncTax());
        // String sumOfF = SIUtil.sub_LL(SIUtil.sub_LL(sumOfD, lRegOrder.getSumByPoint()), lRegOrder.getSumOfDiscount());
        // lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(totalPrice)) + "円(税込)", SIPDFConf.SIFONT_GOTHIC9N));
        // lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(totalOfEffective)) + "p", SIPDFConf.SIFONT_GOTHIC9B));
        // lCell.add(new Paragraph("※ポイントの有効期限は最終購入日より２週間です。 ", SIPDFConf.SIFONT_GOTHIC7B));
        
        lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(totalOfEffective)) + "p", SIPDFConf.SIFONT_GOTHIC9B));
        /*
         * lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(lRegOrder.getTotalOfDeliveryFee()))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N)); lCell.add(new
         * Paragraph(NumberFormat.getNumberInstance().format(new Long(lRegOrder.getFeeIncTax()))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N));
         * if(lRegOrder.getPointEnableFlg().equals("1")){ lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(sumOfD))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N));
         * lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(lRegOrder.getSumByPoint()))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N)); if
         * (SIUtil.isNotNull(lRegOrder.getSumOfDiscount())&&Long.parseLong(lRegOrder.getSumOfDiscount())>0){ lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new
         * Long(lRegOrder.getSumOfDiscount()))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N)); lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(sumOfF))+"円(税込)",
         * SIPDFConf.SIFONT_GOTHIC9N)); }else{ lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(sumOfF))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N)); } }else{ if
         * (SIUtil.isNotNull(lRegOrder.getSumOfDiscount())&&Long.parseLong(lRegOrder.getSumOfDiscount())>0){ lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new
         * Long(sumOfD))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N)); lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(lRegOrder.getSumOfDiscount()))+"円(税込)",
         * SIPDFConf.SIFONT_GOTHIC9N)); lCell.add(new Paragraph(NumberFormat.getNumberInstance().format(new Long(sumOfF))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N)); }else{ lCell.add(new
         * Paragraph(NumberFormat.getNumberInstance().format(new Long(sumOfD))+"円(税込)", SIPDFConf.SIFONT_GOTHIC9N)); } }
         * /// 7.3.0 PI-NES0501 削除
        lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        }
        document.add(lPdfTbl);
      }
      
      if (lReportType != SIPDFConf.SIREPORT_PDF_DELIVERY_INX && lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {// 7.2.0 ST1034 修正
        lPdfTbl = new Table(1);
        lPdfTbl.setAlignment(Element.ALIGN_RIGHT);
        lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_RIGHT);
        lPdfTbl.setBorder(Rectangle.NO_BORDER);
        String pointNotice = "※ポイントの有効期限は最終購入日より1年間です。";
        if (customer.getNoPointFlg().equals("1")) pointNotice = "　";
        lCell = new Cell(new Paragraph(pointNotice, SIPDFConf.SIFONT_GOTHIC7B));
        lCell.add(new Paragraph("　", new Font(SIPDFConf.getGothic(), 2)));
        lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        document.add(lPdfTbl);
      }
      */
      lPdfTbl = new Table(1);
      lPdfTbl.setBorder(Rectangle.NO_BORDER);
      lCell = new Cell(new Paragraph("　", SIPDFConf.SIFONT_GOTHIC7B));
      lCell.setBorder(Rectangle.NO_BORDER);
      lPdfTbl.addCell(lCell);
      document.add(lPdfTbl);
      
      // 9.フリースペース
      lPdfTbl = new Table(5);
      lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
      lPdfTbl.setWidths(new float[] {5,30,35,15,10});
      lPdfTbl.setAlignment(Element.ALIGN_LEFT);
      lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
      lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
      lPdfTbl.setPadding(2);
      
      if (lReportType == SIPDFConf.SIREPORT_PDF_BILL_INX) {
        lCell = new Cell(new Phrase("支払方法: ", SIPDFConf.SIFONT_GOTHIC9N));
        lCell.add(new Paragraph(lRegOrder.getPayMethodName(), SIPDFConf.SIFONT_GOTHIC9N));
        lCell.setBorder(Rectangle.NO_BORDER);
        lCell.setColspan(5);
        lPdfTbl.addCell(lCell);
        
        SIPayMethod lPayMethod = new SIPayMethod();
        lPayMethod.setEncode(SIConfig.SIENCODE_NONE);
        lPayMethod.setMallShopCode(MallShopCode);
        lPayMethod.setPayMethodName(lRegOrder.getPayMethodName());
        Collection payeeInfoColl = lPayMethod.getCollection(lConnection);
        Iterator payeeInfoIte = payeeInfoColl.iterator();
        if (payeeInfoIte.hasNext()) {
          lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC1N));
          lCell.setBorder(Rectangle.NO_BORDER);
          lCell.setColspan(5);
          lPdfTbl.addCell(lCell);
          while (payeeInfoIte.hasNext()) {
            SIPayeeInfo payeeInfo = (SIPayeeInfo) payeeInfoIte.next();
            
            lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph(payeeInfo.getBankName(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.TOP);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph(payeeInfo.getBankNameKana(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.TOP);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("コード:" + payeeInfo.getBankCode(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.TOP);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph(payeeInfo.getSubBankName(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph(payeeInfo.getSubBankNameKana(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("コード:" + payeeInfo.getSubBankCode(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            String Account = "";
            if (SIUtil.isNotNull(payeeInfo.getAccountType())) {
              Account = SIFlagConf.SIFLAG_ACCOUNT_TYPE_NAME[Integer.parseInt(payeeInfo.getAccountType())][0];
            }
            lCell = new Cell(new Paragraph(Account, SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.BOTTOM);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph(payeeInfo.getAccountName(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.BOTTOM);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("口座番号:" + payeeInfo.getAccountNo(), SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.BOTTOM);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC7N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lPdfTbl.addCell(lCell);
            
            lCell = new Cell(new Paragraph("", SIPDFConf.SIFONT_GOTHIC1N));
            lCell.setBorder(Rectangle.NO_BORDER);
            lCell.setColspan(5);
            lPdfTbl.addCell(lCell);
          }
        }
      }
      
      if (lReportType == SIPDFConf.SIREPORT_PDF_RECEPT_INX) {
        lCell = new Cell(new Paragraph("上記料金を領収いたしました。", SIPDFConf.SIFONT_GOTHIC9N));
        lCell.setColspan(5);
        lPdfTbl.addCell(lCell);
      }
      
      lCell = new Cell(new Paragraph(SIPDFConf.SIORDER_COMMENT2[lReportType], SIPDFConf.SIFONT_GOTHIC9N));
      lCell.setColspan(5);
      lPdfTbl.addCell(lCell);
      
      SIMallShop mallshop = new SIMallShop(MallShopCode);
      mallshop.reset(lConnection);
      if (lReportType != SIPDFConf.SIREPORT_PDF_SHIPPMENT_INX) {// 7.2.0 ST1034 追加
        String shopName = "株式会社ビューティガレージ";
        String telNumber = "0120 - 974 - 554";
        if (eyelashgarageFlg) {
          shopName = "株式会社アイラッシュガレージ";
          telNumber = "0800 - 111 - 4231";
        }
        lCell = new Cell(new Paragraph("連絡先: " + shopName, SIPDFConf.SIFONT_GOTHIC9N));
        lCell.add(new Paragraph("電話番号: " + telNumber, SIPDFConf.SIFONT_GOTHIC9N));
        if (customer.getNoPointFlg().equals("1")) {
          lCell.setColspan(5);
        } else {
          lCell.setRowspan(2);
          lCell.setColspan(3);
        }
        lPdfTbl.addCell(lCell);
        
        if (customer.getNoPointFlg().equals("0")) {
          lCell = new Cell(new Paragraph("ポイント累積:", SIPDFConf.SIFONT_GOTHIC7B));
          lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
          lCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
          lCell.setBorder(Rectangle.NO_BORDER);
          lPdfTbl.addCell(lCell);
          
          lCell = new Cell(new Paragraph(NumberFormat.getNumberInstance().format(new Long(totalOfEffective)) + "p ", SIPDFConf.SIFONT_GOTHIC7B));
          lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
          lCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
          lCell.setBorder(Rectangle.NO_BORDER);
          lPdfTbl.addCell(lCell);
          
          lCell = new Cell(new Paragraph("＊ポイントの有効期限は最終購入日より1年間です。", SIPDFConf.SIFONT_GOTHIC5B));
          lCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
          lCell.setVerticalAlignment(Element.ALIGN_BOTTOM);
          lCell.setBorder(Rectangle.NO_BORDER);
          lCell.setColspan(2);
          lPdfTbl.addCell(lCell);
        }
        document.add(lPdfTbl);
        
        if (nextpage2) document.newPage();
        
        // 7.3.0 保証
        lPdfTbl = new Table(3);
        lPdfTbl.setWidth(SIPDFConf.SIORDER_TABLE_WIDTH_NOR);
        float widths[] = { 98, 1, 1 };
        lPdfTbl.setWidths(widths);
        lPdfTbl.setAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
        lPdfTbl.setDefaultVerticalAlignment(Element.ALIGN_TOP);
        lPdfTbl.setPadding(1);
        lPdfTbl.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.setOffset(5);
        
        // 左側セル
        lCell = new Cell(new Paragraph("<商品到着時のお願い>", SIPDFConf.SIFONT_GOTHIC7B));
        lCell.add(new Paragraph("商品到着後、ただちに商品内容や状態、動作等をご確認下さい。梱包方法には万全を期しておりますが、運送中の事故などにより万が一商品到着時に破損・故障がある場合は、修理または同一程度商品による交換、場合によっては全額返金という形で対応させていただきます。", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.add(new Paragraph("※ 商品到着後、7日間を経過した場合は保証できかねますので、予めご了承下さい。", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.add(new Paragraph("　", SIPDFConf.SIFONT_GOTHIC5N));
        lCell.add(new Paragraph("＜お客様都合による返品について＞", SIPDFConf.SIFONT_GOTHIC7B));
        lCell.add(new Paragraph("商品到着後、7日間以内であれば、お客様のご都合による返品であっても承ります。ただし、その場合は下記の条件に則り対応させていただきます。", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.add(new Paragraph("以下に該当する場合は、ご返品をお受けできかねます。予めご了承下さい。", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.add(new Paragraph("1. 化粧品・消耗品類・ジャンク品・受注発注の商品の場合、2. 納品後1週間が経過した場合、3. パッケージを開いた場合や、既にご使用になられた場合", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.add(new Paragraph("※ご返品時の注意事項", SIPDFConf.SIFONT_GOTHIC6U));
        lCell.add(new Paragraph("1. 返品商品の返送にかかる費用につきましては、お客様のご負担とさせていただいております。", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.add(new Paragraph("2. 代金を返金させていただくこととなった場合は、商品代金から手数料5％を差し引き、銀行振込にて返金させていただきます。", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.add(new Paragraph("なお、商品発送時にかかった送料については、お戻しできません。手数料は、梱包や出荷関連の諸費用や返金時の入金手数料等のことです。", SIPDFConf.SIFONT_GOTHIC6N));
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        // 中央セル
        lCell = new Cell(new Paragraph(" ", SIPDFConf.SIFONT_GOTHIC5N));
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        
        // 右側セル
        lCell = new Cell(new Paragraph(" ", SIPDFConf.SIFONT_GOTHIC5N));
        lCell.setHorizontalAlignment(Element.ALIGN_LEFT);
        lCell.setBorder(Rectangle.NO_BORDER);
        lPdfTbl.addCell(lCell);
        document.add(lPdfTbl);
        
        document.resetPageCount();
        document.newPage();
      } else {
        // 7.2.0 ST1034 追加 ここから
        pdfTitlePrintFlg = false; // 2回目以降はタイトルは印刷しない
        formerOrderCode = lOrderDelivery.getOrderCode();// 比較のため受注番号を保持
        // 7.2.0 ST1034 追加 ここまで
      }
    } catch (Exception e) {
      System.err.println(e.getMessage());
    }
  }
  
  private void producePDFFileForDelivery(HttpServletResponse response, Connection lConnection, UIShippmentListCond lOrderList) {
    String lOrderCode = "";
    String lDeliveryCode = "";
    
    File lOrderTempDir = (File) this.getServletContext().getAttribute("javax.servlet.context.tempdir");
    File lOrderTempFile = new File("");
    try {
      lOrderTempFile = File.createTempFile("order_", ".pdf", lOrderTempDir);
    } catch (IOException e1) {
      e1.printStackTrace();
    }
    String lFileName = lOrderTempFile.getAbsolutePath();
    // Document document = new Document(new Rectangle(480,260));
    Document document = null;
    if (lOrderList.getDeliType().equals("0")) {
      document = new Document(new Rectangle(1080, 288));// 15*4
    } else {
      document = new Document(new Rectangle(1080, 324));// 15*4.5
    }
    try {
      PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(lFileName));
      document.open();
      
      if (lOrderList.getCheck() == null) {
        log.warn("not init ");
        return;
      }
      
      for (int i = 0; i < lOrderList.getCheck().length; i++) {
        int check = Integer.parseInt(lOrderList.getCheck()[i]);
        lOrderCode = lOrderList.getOrderCodeHid()[check];
        lDeliveryCode = lOrderList.getDeliveryCodeHid()[check];
        
        producePDFFileForDelivery(lConnection, document, writer, lOrderCode, lDeliveryCode, lOrderList.getDeliType());
      }
      
      if (lOrderList.getCheck().length > 0) {
        document.close();
        String lOutputFileName = SIPDFConf.SIPDF_PREFIX_DELIVERY_FILE_NAME + (new SIDateTime().getDateTimeString()) + "." + SIPDFConf.SIPDF_EXTENSION_NAME;
        SIPDFUtil lPdfUtil = new SIPDFUtil();
        lPdfUtil.execute(response, lFileName, lOutputFileName);
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (DocumentException e) {
      e.printStackTrace();
    } finally {
      // 臨時ファイルの削除
      lOrderTempFile.delete();
    }
  }
  
  private void producePDFFileForDelivery(Connection lConnection, Document document, PdfWriter writer, String lOrderCode, String lDeliveryCode, String lDeliType) {
    SIOrder lOrder = new SIOrder(lOrderCode);
    lOrder.reset(lConnection);
    SIOrderDelivery lOrderDelivery = new SIOrderDelivery(lOrderCode, lDeliveryCode);
    lOrderDelivery.reset(lConnection);
    SIOrderDetail lOrderDetail = new SIOrderDetail();
    // ショップコードの取得
    lOrderDetail.setShopCode(lConnection, lOrderCode, lDeliveryCode);
    SIMallShop lShop = new SIMallShop();
    lShop.setMallShopCode(lOrderDetail.getShopCode());
    lShop.reset(lConnection);
    
    if (lDeliType.equals(SIConfig.SIDELIVERY_PDF_TYPE_SAGAWA_MOTO)) {
      this.producePDFFileForDelivery_SAGAWA_MOTO(document, writer, lShop, lOrderDelivery);
    } else if (lDeliType.equals(SIConfig.SIDELIVERY_PDF_TYPE_YAMATO_HATU)) {
      this.producePDFFileForDelivery_YAMATO_HATU(document, writer, lShop, lOrderDelivery);
    } else if (lDeliType.equals(SIConfig.SIDELIVERY_PDF_TYPE_YAMATO_TYAKU)) {
      this.producePDFFileForDelivery_YAMATO_TYAKU(document, writer, lShop, lOrderDelivery);
    }
  }
  
  private void producePDFFileForDelivery_SAGAWA_MOTO(Document document, PdfWriter writer, SIMallShop lShop, SIOrderDelivery lOrderDelivery) {
    // Cell lCell;
    
    try {
      document.newPage();
      
      PdfContentByte cb = writer.getDirectContent();
      
      cb.beginText();
      
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所１
          , lShop.getAddress1(), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS + 25, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 5, 0);
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC8B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC8B.size());
      if (lShop.getAddress2().length() <= 25) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所2(２６文字未満）
            , lShop.getAddress2(), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 1 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT, 0);
      } else {
        cb.showTextAligned(
            PdfContentByte.ALIGN_LEFT // 依頼人の住所2(２６文字以上）１行目
            , lShop.getAddress2().substring(0, 25), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 1 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT,
            0);
        cb.showTextAligned(
            PdfContentByte.ALIGN_LEFT // 依頼人の住所2(２６文字以上）２行目
            , lShop.getAddress2().substring(25), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS,
            SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 1 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT - 8, 0);
      }
      
      if (lShop.getAddress3().length() <= 25) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所3(２６字未満）
            , lShop.getAddress3(), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 2 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT, 0);
      } else {
        cb.showTextAligned(
            PdfContentByte.ALIGN_LEFT // 依頼人の住所3(２６字以上）１行目
            , lShop.getAddress3().substring(0, 25), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 2 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT,
            0);
        
        cb.showTextAligned(
            PdfContentByte.ALIGN_LEFT // 依頼人の住所3(２６字以上）２行目
            , lShop.getAddress3().substring(25), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS,
            SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 2 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT - 8, 0);
      }
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC15B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人
          , lShop.getFrontShopName(), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 3 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT - 8, 0);
      
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      String deliveryaddress = lOrderDelivery.getAddress1() + lOrderDelivery.getAddress2() + lOrderDelivery.getAddress3();
      
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC8B.size());
      if (deliveryaddress.length() <= 26) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所（〜26字）
            , deliveryaddress, SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 5, 0);
      } else if (deliveryaddress.length() > 26 && deliveryaddress.length() <= 52) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(〜26字）
            , deliveryaddress.substring(0, 26), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 5, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(26〜52字）
            , deliveryaddress.substring(26), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS + 25, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 13, 0);
      } else if (deliveryaddress.length() > 52 && deliveryaddress.length() <= 78) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(〜26字）
            , deliveryaddress.substring(0, 26), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 5, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(26〜52字）
            , deliveryaddress.substring(26, 52), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 13, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(52〜78字）
            , deliveryaddress.substring(52), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 21, 0);
      } else {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(〜26字）
            , deliveryaddress.substring(0, 26), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 5, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(26〜52字）
            , deliveryaddress.substring(26, 52), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 13, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(52〜78字）
            , deliveryaddress.substring(52, 78), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 21, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の住所(52〜78字）
            , deliveryaddress.substring(78), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 29, 0);
      }
      
      if (lOrderDelivery.getCompanyName().length() <= 25) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の会社(〜25字）
            , lOrderDelivery.getCompanyName(), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 37, 0);
      } else {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の会社(〜25字）
            , lOrderDelivery.getCompanyName().substring(0, 25), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 37, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先の会社(25〜50字）
            , lOrderDelivery.getCompanyName().substring(25), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 45, 0);
      }
      
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC15B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC10B.size());
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 配送先
          , lOrderDelivery.getDeliveryAddressee(), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS, SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 3 * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT
              - 10, 0);
      
      cb.endText();
      
      writeTel_SAGAWA(writer, lShop.getTel(), SIPDFConf.SIDELIVERY_SAGAWA_LEFT_START_POS + 8);// 依頼人の電話
      writeTel_SAGAWA(writer, lOrderDelivery.getTel(), SIPDFConf.SIDELIVERY_SAGAWA_RIGHT_START_POS + 19);// 配送先の電話
      
      document.newPage();
    } catch (BadElementException e1) {
      e1.printStackTrace();
    } catch (DocumentException e1) {
      e1.printStackTrace();
    }
  }
  
  private void producePDFFileForDelivery_YAMATO_HATU(Document document, PdfWriter writer, SIMallShop lShop, SIOrderDelivery lOrderDelivery) {
    // Cell lCell;
    try {
      document.newPage();
      
      PdfContentByte cb = writer.getDirectContent();
      
      cb.beginText();
      
      // ------------お届け先------------//
      // 配送先の郵便番号
      writePost_YAMATO(cb, lOrderDelivery.getPostCode1(), lOrderDelivery.getPostCode2(), 0);
      
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      // 配送先の電話
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lOrderDelivery.getTel(), SIPDFConf.SIDELIVERY_YAMATO_TEL_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
          - (1 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1), 0);
      String deliveryaddress = lOrderDelivery.getAddress1() + lOrderDelivery.getAddress2() + lOrderDelivery.getAddress3();
      // 配送先の住所
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC9B.size());
      if (deliveryaddress.length() <= 26) {// 26字以下
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress, SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1), 0);
      } else if (deliveryaddress.length() > 26 && deliveryaddress.length() <= 52) {// 26〜52字
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(0, 26), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1), 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(26), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 9, 0);
      } else if (deliveryaddress.length() > 52 && deliveryaddress.length() <= 78) {// 52〜78字
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(0, 26), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1), 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(26, 52), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 9, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(52), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 18, 0);
      } else if (deliveryaddress.length() > 52 && deliveryaddress.length() <= 78) {// 52〜78字
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(0, 26), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1), 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(26, 52), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 9, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(52, 78), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 18, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(78), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 27, 0);
      } else if (deliveryaddress.length() > 78 && deliveryaddress.length() <= 104) {// 52〜78字
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(0, 26), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1), 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(26, 52), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 9, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(52, 78), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 18, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, deliveryaddress.substring(78), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 27, 0);
      }
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC10B.size());
      if (lOrderDelivery.getCompanyName().length() <= 25) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lOrderDelivery.getCompanyName(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
            - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 39, 0);
      } else {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lOrderDelivery.getCompanyName().substring(0, 25), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS,
            SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 39, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lOrderDelivery.getCompanyName().substring(25), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS,
            SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1) - 49, 0);
      }
      
      // 配送先
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lOrderDelivery.getDeliveryAddressee(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
          - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 3 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2), 0);
      // ------------ご依頼主------------//
      // 依頼人の郵便番号
      writePost_YAMATO(cb, lShop.getPostCode1(), lShop.getPostCode2(), 1);
      // 依頼人の電話
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lShop.getTel(), SIPDFConf.SIDELIVERY_YAMATO_TEL_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
          - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 5 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2), 0);
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC8B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC8B.size());
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所１
          , lShop.getAddress1(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS + 16, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
              - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 6 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2 - 8), 0);
      if (lShop.getAddress2().length() <= 25) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所２(26字未満）
            , lShop.getAddress2(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
                - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 6 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2), 0);
      } else {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所２(26字以上）：１行目
            , lShop.getAddress2().substring(0, 25), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
                - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 6 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2), 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所２(26字以上）：２行目
            , lShop.getAddress2().substring(25), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
                - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 6 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2 + 8), 0);
      }
      
      if (lShop.getAddress3().length() <= 25) {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所３（２６字未満）
            , lShop.getAddress3(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
                - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 7 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2 - 8), 0);
      } else {
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所３（２６字未満）１行目
            , lShop.getAddress3().substring(0, 25), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
                - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 7 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2 - 8), 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT // 依頼人の住所３（２６字未満）2行目
            , lShop.getAddress3().substring(25), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
                - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 7 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2), 0);
      }
      // 依頼人
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lShop.getFrontShopName(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS + 8, SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS
          - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 8 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2), 0);
      
      // ------------日付など------------//
      // お届け希望日
      if (SIUtil.isNotNull(lOrderDelivery.getDeliveryDate())) {
        SIDateTime date = new SIDateTime(lOrderDelivery.getDeliveryDate(), "yyyy/MM/dd");
        int height = SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS - 35;
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, date.getMonthStr(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS + 310, height, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_LEFT, date.getDayStr(), SIPDFConf.SIDELIVERY_YAMATO_LEFT_START_POS + 355, height, 0);
      }
      cb.endText();
      document.newPage();
      
    } catch (BadElementException e1) {
      e1.printStackTrace();
    } catch (DocumentException e1) {
      e1.printStackTrace();
    } catch (ParseException e) {
      e.printStackTrace();
    }
  }
  
  private void producePDFFileForDelivery_YAMATO_TYAKU(Document document, PdfWriter writer, SIMallShop lShop, SIOrderDelivery lOrderDelivery) {
    this.producePDFFileForDelivery_YAMATO_HATU(document, writer, lShop, lOrderDelivery);
  }
  
  public void writeTel_SAGAWA(PdfWriter writer, String lTel, int lLeft) {
    if (SIUtil.isNull(lTel)) lTel = "";
    
    PdfContentByte cb = writer.getDirectContent();
    cb.beginText();
    cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
    for (int ii = 0; ii < lTel.length(); ii++) {// 電話
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lTel.substring(ii, ii + 1), lLeft + (ii * SIPDFConf.SIDELIVERY_SAGAWA_TEL_INC), SIPDFConf.SIDELIVERY_SAGAWA_TOP_START_POS - 4
          * SIPDFConf.SIDELIVERY_SAGAWA_HEIGHT - 11, 0);
    }
    cb.endText();
  }
  
  public void writePost_YAMATO(PdfContentByte cb, String lPost1, String lPost2, int Type) {
    if (SIUtil.isNull(lPost1)) lPost1 = "";
    if (SIUtil.isNull(lPost2)) lPost2 = "";
    
    int height = 0;
    if (Type == 0) {
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      height = SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS;
    } else if (Type == 1) {
      cb.setFontAndSize(SIPDFConf.SIFONT_GOTHIC11B.getBaseFont(), SIPDFConf.SIFONT_GOTHIC11B.size());
      height = SIPDFConf.SIDELIVERY_YAMATO_TOP_START_POS - (2 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT1 + 4 * SIPDFConf.SIDELIVERY_YAMATO_HEIGHT2);
    }
    
    // 郵便番号１
    for (int ii = 0; ii < lPost1.length(); ii++) {
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lPost1.substring(ii, ii + 1), SIPDFConf.SIDELIVERY_YAMATO_POST1_POS + (ii * SIPDFConf.SIDELIVERY_YAMATO_POST_INC), height, 0);
    }
    // 郵便番号２
    for (int ii = 0; ii < lPost2.length(); ii++) {
      cb.showTextAligned(PdfContentByte.ALIGN_LEFT, lPost2.substring(ii, ii + 1), SIPDFConf.SIDELIVERY_YAMATO_POST2_POS + (ii * SIPDFConf.SIDELIVERY_YAMATO_POST_INC), height, 0);
    }
  }
  
  // 売上伝票
  private void printSalesBill(HttpServletResponse response, Connection lConnection, UIShippmentListCond lOrderList, SILogin lLogin) {
    String template = (String) this.getServletContext().getRealPath("/docs/sales_bill.xls");
    SIExcelRWrite lWrite = new SIExcelRWrite(SIExcelConf.SIEXCEL_SALES_BILL_INX, template);
    lWrite.makeSheet(0, SIExcelConf.getTitleName(SIExcelConf.SIEXCEL_SALES_BILL_INX), 0, false);
    SIDateTime lDateTime = new SIDateTime();
    String date = lDateTime.getFullDate2();
    int pageLineNumber = 74;
    // int detailMaxCount = 25;
    // int detailSumCount = 0;
    String totalPaymentPrice = "0";
    SIOrder lOrder = null;
    SIOrderDelivery lOrderDelivery = null;
    SIOrderDetail lOrderDetail = null;
    UIPayListCond payList = new UIPayListCond();
    
    String lOrderCode = new String();
    String oldOrderCode = new String();
    String lDeliveryCode = new String();
    String oldDeliveryCode = new String();
    String lDetailCode = new String();
    String oldDetailCode = new String();
    Iterator detailIt = null;
    Collection lOrderDetailColl = null;
    Collection payColl = null;
    // EDBTG003-00 elecs-tani add start
    // セット値引き金額出力のための変数
    String code = ""; // キープ番号が入る
    String setIndividualCode = "";
    String setCode = "";
    // EDBTG003-00 elecs-tani add end
    int detailNo = 0;
    int pageNo = 1;
    int pageSum = 1;
    // EDBTG003-00 elecs-tani add start
    try {
    // EDBTG003-00 elecs-tani add end
    for (int i = 0; i < lOrderList.getCheck().length; i++) {
      int check = Integer.parseInt(lOrderList.getCheck()[i]);
      lOrderCode = lOrderList.getOrderCodeHid()[check];
      lDeliveryCode = lOrderList.getDeliveryCodeHid()[check];
      lDetailCode = lOrderList.getDetailCodeHid()[check];
      if (detailNo == 25) {// 25行で改ページ
        lWrite.makeSalesBillPage(pageSum, pageLineNumber);
        pageNo = pageNo + 1;
        pageSum = pageSum + 1;
        detailNo = 0;
        printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
      }
      if (!oldOrderCode.equals(lOrderCode)) {
        if (SIUtil.isNotNull(oldOrderCode)) {
          lWrite.makeSalesBillPage(pageSum, pageLineNumber);
          pageNo = 1;
          pageSum = pageSum + 1;
        }
        detailNo = 0;
        oldOrderCode = lOrderCode;
        oldDeliveryCode = lDeliveryCode;
        oldDetailCode = lDetailCode;
        lOrder = new SIOrder(lOrderCode);
        lOrder.reset(lConnection);
        payColl = payList.getTenCollection(lConnection, lOrderCode);
        lOrderDelivery = new SIOrderDelivery(lOrderCode, lDeliveryCode);
        lOrderDelivery.reset(lConnection);
        lOrderDetailColl = lOrderDelivery.getDetailCmdtyCollection(lConnection, lDetailCode);
        totalPaymentPrice = lOrder.getTotalPaymentPrice(lConnection);
        printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
        detailIt = lOrderDetailColl.iterator();
        while (detailIt.hasNext()) {
          // EDBTG003-00 elecs-matsushima add start
          if (detailNo == 25){
            lWrite.makeSalesBillPage(pageSum, pageLineNumber);
            pageNo = pageNo + 1;
            pageSum = pageSum + 1;
            detailNo = 0;
            printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
          }
          // EDBTG003-00 elecs-matsushima add end
          lOrderDetail = (SIOrderDetail) detailIt.next();
          // EDBTG003-00 elecs-tani mod start
//          this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo);
          detailNo = this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13, detailNo, code, setIndividualCode, setCode, lConnection);
          // EDBTG003-00 elecs-tani mod end
          // EDBTG003-00 elecs-matsushima add start
          if (detailNo == 25){
            lWrite.makeSalesBillPage(pageSum, pageLineNumber);
            pageNo = pageNo + 1;
            pageSum = pageSum + 1;
            detailNo = 0;
            printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
          }
          // EDBTG003-00 elecs-matsushima add end
          // EDBTG003-00 elecs-tani add start
          code = lOrderDetail.getOrderCode();
          setIndividualCode = lOrderDetail.getSetIndividualCode();
          setCode = lOrderDetail.getSetCode();
          // EDBTG003-00 elecs-tani add end
          detailNo = detailNo + 1;
        }
      } else {
        if (!lDeliveryCode.equals(oldDeliveryCode)) {
          oldDeliveryCode = lDeliveryCode;
          oldDetailCode = lDetailCode;
          lOrderDelivery = new SIOrderDelivery(lOrderCode, lDeliveryCode);
          lOrderDelivery.reset(lConnection);
          lOrderDetailColl = lOrderDelivery.getDetailCmdtyCollection(lConnection, lDetailCode);
          detailIt = lOrderDetailColl.iterator();
          while (detailIt.hasNext()) {
            lOrderDetail = (SIOrderDetail) detailIt.next();
            // EDBTG003-00 elecs-matsushima add start
            if (detailNo == 25){
              lWrite.makeSalesBillPage(pageSum, pageLineNumber);
              pageNo = pageNo + 1;
              pageSum = pageSum + 1;
              detailNo = 0;
              printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
            }
            // EDBTG003-00 elecs-matsushima add end
            // EDBTG003-00 elecs-tani mod start
            //this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo);
            detailNo = this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13, detailNo, code, setIndividualCode, setCode, lConnection);
            // EDBTG003-00 elecs-tani mod end
            // EDBTG003-00 cmt-okuda add start
            if (detailNo == 26){
              lWrite.makeSalesBillPage(pageSum, pageLineNumber);
              pageNo = pageNo + 1;
              pageSum = pageSum + 1;
              detailNo = 0;
              printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
              detailNo = this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13, detailNo, code, setIndividualCode, setCode, lConnection);
            }
            // EDBTG003-00 cmt-okuda add end
            // EDBTG003-00 elecs-matsushima add start
            if (detailNo == 25){
              lWrite.makeSalesBillPage(pageSum, pageLineNumber);
              pageNo = pageNo + 1;
              pageSum = pageSum + 1;
              detailNo = 0;
              printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
            }
            // EDBTG003-00 elecs-matsushima add end
            // EDBTG003-00 elecs-tani add start
            code = lOrderDetail.getOrderCode();
            setIndividualCode = lOrderDetail.getSetIndividualCode();
            setCode = lOrderDetail.getSetCode();
            // EDBTG003-00 elecs-tani add end
            detailNo = detailNo + 1;
          }
        } else {
          if (!lDetailCode.equals(oldDetailCode)) {
            oldDetailCode = lDetailCode;
            lOrderDetailColl = lOrderDelivery.getDetailCmdtyCollection(lConnection, lDetailCode);
            detailIt = lOrderDetailColl.iterator();
            while (detailIt.hasNext()) {
              lOrderDetail = (SIOrderDetail) detailIt.next();
              // EDBTG003-00 elecs-matsushima add start
              if (detailNo == 25){
                lWrite.makeSalesBillPage(pageSum, pageLineNumber);
                pageNo = pageNo + 1;
                pageSum = pageSum + 1;
                detailNo = 0;
                printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
              }
              // EDBTG003-00 elecs-matsushima add end
              // EDBTG003-00 elecs-tani mod start
//              this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo);
              detailNo = this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13, detailNo, code, setIndividualCode, setCode, lConnection);
              // EDBTG003-00 elecs-tani mod end
              // EDBTG003-00 cmt-okuda add start
              if (detailNo == 26){
                lWrite.makeSalesBillPage(pageSum, pageLineNumber);
                pageNo = pageNo + 1;
                pageSum = pageSum + 1;
                detailNo = 0;
                printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
                detailNo = this.printSalesBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 13, detailNo, code, setIndividualCode, setCode, lConnection);
              }
              // EDBTG003-00 cmt-okuda add end
              
              // EDBTG003-00 elecs-matsushima add start
              if (detailNo == 25){
                lWrite.makeSalesBillPage(pageSum, pageLineNumber);
                pageNo = pageNo + 1;
                pageSum = pageSum + 1;
                detailNo = 0;
                printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
              }
              // EDBTG003-00 elecs-matsushima add end
              // EDBTG003-00 elecs-tani add start
              code = lOrderDetail.getOrderCode();
              setIndividualCode = lOrderDetail.getSetIndividualCode();
              setCode = lOrderDetail.getSetCode();
              // EDBTG003-00 elecs-tani add end
              // EDBTG003-00 elecs-tani add start
              code = lOrderDetail.getOrderCode();
              setIndividualCode = lOrderDetail.getSetIndividualCode();
              setCode = lOrderDetail.getSetCode();
              // EDBTG003-00 elecs-tani add end
              detailNo = detailNo + 1;
            }
          }
        }
      }
      // EDBTG003-00 elecs-tani add start
      // 最終行がセット商品だった場合用
      if (SIUtil.isNotNull(setIndividualCode)) {
        // キープセット品テーブルor受注セット品テーブルからセット値引きと数量を取得
        StringBuffer setDiscountSql = new StringBuffer();
        setDiscountSql.append("SELECT setdiscount, setamount ");
        setDiscountSql.append("FROM ordersetcmdtytbl ");
        setDiscountSql.append("WHERE orderCode = ").append(SIDBUtil.SQL2Str(code," "));
        setDiscountSql.append("AND setindividualcode = ").append(SIDBUtil.SQL2Str(setIndividualCode," "));
        setDiscountSql.append("AND setcode = ").append(SIDBUtil.SQL2Str(setCode));
        HashMap lResMap = new HashMap();
        lResMap = SIDBUtil.getOneRowData(lConnection, setDiscountSql.toString());
        
        int setdiscount = 0;
        if (SIUtil.isNotNull((String) lResMap.get("setdiscount"))) {
          setdiscount = Integer.parseInt((String) lResMap.get("setdiscount"));
          setdiscount = -setdiscount;
          
          if (setdiscount != 0) { // セット値引きが0でなければ出力
            // EDBTG003-00 elecs-matsushima add start
            if (detailNo == 25){
              lWrite.makeSalesBillPage(pageSum, pageLineNumber);
              pageNo = pageNo + 1;
              pageSum = pageSum + 1;
              detailNo = 0;
              printSalesBillMain(lConnection, lWrite, lOrder, lOrderDelivery, payColl, date, totalPaymentPrice, pageSum, pageNo);
            }
            // EDBTG003-00 elecs-matsushima add end
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 1, "", SIExcelConf.FIELD_STRING_TYPE, false);// 受注番号
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 5, "", SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 9, SIConfig.SET_DISCOUNT_NAME_PDF, SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 19, Integer.toString(setdiscount), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 単価
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 24, (String) lResMap.get("setamount"), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 個数
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 26, Integer.toString(setdiscount * Integer.parseInt((String) lResMap.get("setamount"))), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 金額
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 31, "", SIExcelConf.FIELD_STRING_TYPE, false);// 出荷地
            lWrite.writeDetailItem((pageSum - 1) * (pageLineNumber - 1) + 13 + detailNo, 35, "", SIExcelConf.FIELD_STRING_TYPE, false);// 保証
          }
        }
      }
      // EDBTG003-00 elecs-tani add end
    }
    
    lWrite.makePage(pageSum * (pageLineNumber - 1) - 1);
    
    // EDBTG003-00 elecs-tani add start
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    // EDBTG003-00 elecs-tani add end
    try {
      lWrite.close(response);
    } catch (IOException e) {
      // e.printStackTrace();
    }
  }
  
  private void printSalesBillMain(Connection lConnection, SIExcelRWrite lWrite, SIOrder lRegOrder, SIOrderDelivery lOrderDelivery, Collection payColl, String date,
      String totalPaymentPrice, int pageSum, int pageCount) {
    int pageLineNumber = 74;
    int startLine = (pageSum - 1) * (pageLineNumber - 1);
    String orderDate = new String();
    Iterator payIt = null;
    SIPayment payment = null;
    
    try {
      orderDate = new SIDateTime(lRegOrder.getInitDateTime(), SIConfig.SIDATE_FORMAT0).getFullDate();
    } catch (ParseException e2) {
      e2.printStackTrace();
    }
    
    // ページ関連タイトル
    lWrite.writeDetailItem(0 + startLine, 1, "売上伝票", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(2 + startLine, 19, "【納品先】", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(0 + startLine, 34, "PAGE", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(1 + startLine, 34, "発行日", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(3 + startLine, 34, "伝票No.", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(4 + startLine, 34, "受注日", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(5 + startLine, 34, "売上日", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(42 + startLine, 1, "御注文金額", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(42 + startLine, 6, "内消費税額", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(42 + startLine, 11, "送　　料", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(42 + startLine, 16, "手 数 料", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(42 + startLine, 21, "ﾎﾟｲﾝﾄ使用額", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(42 + startLine, 26, "御入金額", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(42 + startLine, 36, "未入金残高", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(12 + startLine, 1, "受注番号", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 5, "商品コード", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 9, "商　品　名", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 19, "単価（税込）", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 24, "数量", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 26, "金額（税込）", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 31, "出荷地", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 35, "保証期間", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(12 + startLine, 39, "備　　考", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(39 + startLine, 1, "ご注文方法", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(39 + startLine, 19, "売上金額合計", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(39 + startLine, 32, "内消費税額", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(46 + startLine, 1, "入 金 日", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(46 + startLine, 6, "入 金 種 別", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(46 + startLine, 15, "入 金 額", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(46 + startLine, 23, "入 金 日", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(46 + startLine, 28, "入 金 種 別", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(46 + startLine, 37, "入 金 額", SIExcelConf.FIELD_STRING_TYPE, false);
    
    // ヘッダ情報
    lWrite.writeDetailItem(0 + startLine, 39, String.valueOf(pageCount), SIExcelConf.FIELD_STRING_TYPE, false);// PAGE
    lWrite.writeDetailItem(1 + startLine, 39, date, SIExcelConf.FIELD_STRING_TYPE, false);// 発行日
    
    lWrite.writeDetailItem(3 + startLine, 39, lRegOrder.getOrderCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 伝票番号
    lWrite.writeDetailItem(4 + startLine, 39, orderDate, SIExcelConf.FIELD_STRING_TYPE, false);// 受注日
    lWrite.writeDetailItem(5 + startLine, 39, lRegOrder.getShippmentDate(lConnection), SIExcelConf.FIELD_STRING_TYPE, false);// 最終出荷日
    
    // 売上先
    lWrite.writeDetailItem(3 + startLine, 1, "〒" + lRegOrder.getPostCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 郵便番号
    lWrite.writeDetailItem(4 + startLine, 1, lRegOrder.getAddress1() + lRegOrder.getAddress2(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    lWrite.writeDetailItem(5 + startLine, 1, lRegOrder.getAddress3(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    if (SIUtil.isNotNull(lRegOrder.getCompanyName())) {
      lWrite.writeDetailItem(7 + startLine, 1, lRegOrder.getCompanyName() + "　様", SIExcelConf.FIELD_STRING_TYPE, false);// 会社名
    }
    
    lWrite.writeDetailItem(8 + startLine, 1, lRegOrder.getCustName() + "　様", SIExcelConf.FIELD_STRING_TYPE, false);// お名前
    lWrite.writeDetailItem(9 + startLine, 1, "(" + lRegOrder.getCustCode() + ")", SIExcelConf.FIELD_STRING_TYPE, false);// 顧客番号
    
    // 配送先
    lWrite.writeDetailItem(3 + startLine, 19, "〒" + lOrderDelivery.getPostCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 郵便番号
    lWrite.writeDetailItem(4 + startLine, 19, lOrderDelivery.getAddress1() + lOrderDelivery.getAddress2(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    lWrite.writeDetailItem(5 + startLine, 19, lOrderDelivery.getAddress3(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    if (SIUtil.isNotNull(lOrderDelivery.getCompanyName())) {
      lWrite.writeDetailItem(7 + startLine, 19, lOrderDelivery.getCompanyName() + "　様", SIExcelConf.FIELD_STRING_TYPE, false);// 会社名
    }
    
    // 請求金額
    // EDBTG003-00 cmt-okuda mod start
    lWrite.writeDetailItem(43 + startLine, 1, lRegOrder.getTotalOfPrice(), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 御注文金額
    // EDBTG003-00 cmt-okuda mod end
    
    lWrite.writeDetailItem(43 + startLine, 6, lRegOrder.getTaxOfPrice(), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 内消費税額
    lWrite.writeDetailItem(43 + startLine, 11, SIUtil.add(lRegOrder.getTotalOfDeliveryFee(), lRegOrder.getDiscountDeliveryFee()), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 送料
    lWrite.writeDetailItem(43 + startLine, 16, SIUtil.add(lRegOrder.getFee(), lRegOrder.getDiscountFee()), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 手数料
    lWrite.writeDetailItem(43 + startLine, 21, lRegOrder.getSumByPoint(), SIExcelConf.FIELD_NUMERIC_TYPE, false);// ﾎﾟｲﾝﾄ使用額
    lWrite.writeDetailItem(43 + startLine, 26, totalPaymentPrice, SIExcelConf.FIELD_NUMERIC_TYPE, false);// 御入金額
    if (SIUtil.isNotNull(SIUtil.add(lRegOrder.getSumOfDiscount(), lRegOrder.getSumOfSetDiscount())) && !SIUtil.add(lRegOrder.getSumOfDiscount(), lRegOrder.getSumOfSetDiscount()).equals("0")) {
      lWrite.writeDetailItem(42 + startLine, 31, "御値引き", SIExcelConf.FIELD_STRING_TYPE, false);// 御値引き
      lWrite.writeDetailItem(43 + startLine, 31, SIUtil.add(lRegOrder.getSumOfDiscount(), lRegOrder.getSumOfSetDiscount()), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 御値引き
    }
    // EDBTG003-00 elecs-tani mod start
//    lWrite.writeDetailItem(43 + startLine, 36, SIUtil.sub(SIUtil.sub(SIUtil.sub(SIUtil.add(lRegOrder.getTotalOfPrice(), SIUtil.add(lRegOrder.getTotalOfDeliveryFee(), lRegOrder
//        .getDiscountDeliveryFee()), SIUtil.add(lRegOrder.getFee(), lRegOrder.getDiscountFee())), lRegOrder.getSumByPoint()), lRegOrder.getSumOfDiscount()), totalPaymentPrice),
//        SIExcelConf.FIELD_NUMERIC_TYPE, false);// 入金残高
    // EDBTG003-00 cmt-okuda mod start
//    lWrite.writeDetailItem(43 + startLine, 36, SIUtil.sub(SIUtil.sub(SIUtil.sub(SIUtil.sub(SIUtil.add(lRegOrder.getTotalOfPrice(), SIUtil.add(lRegOrder.getTotalOfDeliveryFee(), lRegOrder
//            .getDiscountDeliveryFee()), SIUtil.add(lRegOrder.getFee(), lRegOrder.getDiscountFee())), lRegOrder.getSumByPoint()), lRegOrder.getSumOfDiscount()), "0"), totalPaymentPrice),
//            SIExcelConf.FIELD_NUMERIC_TYPE, false);// 入金残高
    lWrite.writeDetailItem(43 + startLine, 36, SIUtil.sub(SIUtil.sub(SIUtil.sub(SIUtil.sub(SIUtil.add(SIUtil.sub(lRegOrder.getTotalOfPrice(), lRegOrder.getSumOfSetDiscount()), SIUtil.add(lRegOrder.getTotalOfDeliveryFee(), lRegOrder
            .getDiscountDeliveryFee()), SIUtil.add(lRegOrder.getFee(), lRegOrder.getDiscountFee())), lRegOrder.getSumByPoint()), lRegOrder.getSumOfDiscount()), "0"), totalPaymentPrice),
            SIExcelConf.FIELD_NUMERIC_TYPE, false);// 入金残高
    // EDBTG003-00 cmt-okuda mod end
    // EDBTG003-00 elecs-tani mod end
    
    // ご注文方法
    lWrite.writeDetailItem(39 + startLine, 6, lRegOrder.getPayMethodName(), SIExcelConf.FIELD_STRING_TYPE, false);
    // 売上金額合計
    lWrite.writeFooterFomulaItem2(39 + startLine, 26, 13 + startLine, 37 + startLine);
    // 消費税
    String taxRate = String.valueOf(Float.parseFloat(SITax.getTaxRate(lConnection)) / 100);
    if (taxRate.equals("0")) {
      lWrite.writeDetailItem(39 + startLine, 38, "0", SIExcelConf.FIELD_STRING_TYPE, false);
    } else {
      lWrite.writeFooterFomulaTaxItem(39 + startLine, 38, 26, taxRate);
    }
    // 入金明細
    int payLineNo = 0;
    int payColunmNo = 0;
    payIt = payColl.iterator();
    while (payIt.hasNext()) {
      payment = (SIPayment) payIt.next();
      if (payLineNo == 5) {
        payColunmNo = 22;
        payLineNo = 0;
      }
      lWrite.writeDetailItem(startLine + 47 + payLineNo, 1 + payColunmNo, payment.getPaymentDate(), SIExcelConf.FIELD_STRING_TYPE, false);// 入金日
      lWrite.writeDetailItem(startLine + 47 + payLineNo, 6 + payColunmNo, payment.getPaymnetType(), SIExcelConf.FIELD_STRING_TYPE, false);// 入金種別
      lWrite.writeDetailItem(startLine + 47 + payLineNo, 15 + payColunmNo, payment.getPaymentPrice(), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 入金額
      payLineNo = payLineNo + 1;
    }
  }
  
  // EDBTG003-00 elecs-tani mod start
  //private void printSalesBillDetail(SIExcelRWrite lWrite, SIOrderDetail lOrderDetail, int startLine) {
  private int printSalesBillDetail(SIExcelRWrite lWrite, SIOrderDetail lOrderDetail, int startLine, int detailNo,
      String orderCode, String setIndividualCode, String setCode, Connection conn) throws SIDBAccessException {
    
    if (SIUtil.isNull(setIndividualCode)) setIndividualCode = "";
    // EDBTG003-00 cmt-okuda add start
    if (!lOrderDetail.getSetDetailFlg().equals(SIConfig.SET_DETAIL_FLG_NORMAL)
        && !setIndividualCode.equals(lOrderDetail.getSetIndividualCode())) { // 通常品でないかつ同じセット商品の中で初出力の場合
      if (detailNo == 24) {
        return 26;
      }
    }
    // EDBTG003-00 cmt-okuda add end
    
    // 受注コードが同じかつセットコードが異なる場合、セット値引き出力チェックを行う
    if (SIUtil.isNotNull(orderCode) && orderCode.equals(lOrderDetail.getOrderCode())
        && !setIndividualCode.equals(lOrderDetail.getSetIndividualCode())) {
      // 受注セット品テーブルからセット値引きと数量を取得
      StringBuffer setDiscountSql = new StringBuffer();
      setDiscountSql.append("SELECT setdiscount, setamount ");
      setDiscountSql.append("FROM ordersetcmdtytbl ");
      setDiscountSql.append("WHERE orderCode = ").append(SIDBUtil.SQL2Str(orderCode," "));
      setDiscountSql.append("AND setindividualcode = ").append(SIDBUtil.SQL2Str(setIndividualCode," "));
      setDiscountSql.append("AND setcode = ").append(SIDBUtil.SQL2Str(setCode));
      HashMap lResMap = new HashMap();
      lResMap = SIDBUtil.getOneRowData(conn, setDiscountSql.toString());
      
      int setdiscount = 0;
      if (SIUtil.isNotNull((String) lResMap.get("setdiscount"))) {
        setdiscount = Integer.parseInt((String) lResMap.get("setdiscount"));
        setdiscount = -setdiscount;
        
        if (setdiscount != 0) { // セット値引きが0でなければ出力
          lWrite.writeDetailItem(startLine + detailNo, 1, "", SIExcelConf.FIELD_STRING_TYPE, false);// 受注番号
          lWrite.writeDetailItem(startLine + detailNo, 5, "", SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
          lWrite.writeDetailItem(startLine + detailNo, 9, SIConfig.SET_DISCOUNT_NAME_PDF, SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
          lWrite.writeDetailItem(startLine + detailNo, 19, Integer.toString(setdiscount), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 単価
          lWrite.writeDetailItem(startLine + detailNo, 24, (String) lResMap.get("setamount"), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 個数
          lWrite.writeDetailItem(startLine + detailNo, 26, Integer.toString(setdiscount * Integer.parseInt((String) lResMap.get("setamount"))), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 金額
          lWrite.writeDetailItem(startLine + detailNo, 31, "", SIExcelConf.FIELD_STRING_TYPE, false);// 出荷地
          lWrite.writeDetailItem(startLine + detailNo, 35, "", SIExcelConf.FIELD_STRING_TYPE, false);// 保証
          
          detailNo++;
        }
      }
    }
    
//      lWrite.writeDetailItem(startLine, 1, lOrderDetail.getOrderCode() + "-" + lOrderDetail.getDeliveryCode() + "-" + lOrderDetail.getDetailCode(), SIExcelConf.FIELD_STRING_TYPE,
//            false);// 受注番号
//      lWrite.writeDetailItem(startLine, 5, lOrderDetail.getIndividualCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
//      lWrite.writeDetailItem(startLine, 9, lOrderDetail.getCmdtyName(), SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
    
    // 添付品の場合テキストを設定
    String appendTxt = "";
    if (lOrderDetail.getSetDetailFlg().equals(SIConfig.SET_DETAIL_FLG_APPENDED)) {
      appendTxt = SIConfig.SET_APPEND_NAME_PDF;
    }
    
    if (!lOrderDetail.getSetDetailFlg().equals(SIConfig.SET_DETAIL_FLG_NORMAL)
        && !setIndividualCode.equals(lOrderDetail.getSetIndividualCode())) { // 通常品でないかつ同じセット商品の中で初出力の場合
      // まずセット品(親)を出力
      StringBuffer setNameSql = new StringBuffer();
      setNameSql.append("SELECT cmdtyname ");
      setNameSql.append("FROM ordersetcmdtytbl ");
      setNameSql.append("WHERE orderCode = ").append(SIDBUtil.SQL2Str(lOrderDetail.getOrderCode()," "));
      setNameSql.append("AND setCode = ").append(SIDBUtil.SQL2Str(lOrderDetail.getSetCode()," "));
      setNameSql.append("AND setindividualcode = ").append(SIDBUtil.SQL2Str(lOrderDetail.getSetIndividualCode()));
      String setCmdtyName = SIDBUtil.getFirstData(conn, setNameSql.toString());
      
      lWrite.writeDetailItem(startLine + detailNo, 1, lOrderDetail.getOrderCode() + "-" + lOrderDetail.getDeliveryCode() + "-" + lOrderDetail.getDetailCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 受注番号
      lWrite.writeDetailItem(startLine + detailNo, 5, lOrderDetail.getSetIndividualCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
      lWrite.writeDetailItem(startLine + detailNo, 9, setCmdtyName, SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
      
      detailNo++;
      
      String cmdtyName = "(" + lOrderDetail.getIndividualCode() + ")" + appendTxt + lOrderDetail.getCmdtyName();
      lWrite.writeDetailItem(startLine + detailNo, 1, "", SIExcelConf.FIELD_STRING_TYPE, false);// 受注番号
      lWrite.writeDetailItem(startLine + detailNo, 5, "", SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
      lWrite.writeDetailItem(startLine + detailNo, 9, cmdtyName, SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
      
    } else if (!lOrderDetail.getSetDetailFlg().equals(SIConfig.SET_DETAIL_FLG_NORMAL)) { // 通常品でない場合
      String cmdtyName = "(" + lOrderDetail.getIndividualCode() + ")" + appendTxt + lOrderDetail.getCmdtyName();
      lWrite.writeDetailItem(startLine + detailNo, 1, "", SIExcelConf.FIELD_STRING_TYPE, false);// 受注番号
      lWrite.writeDetailItem(startLine + detailNo, 5, "", SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
      lWrite.writeDetailItem(startLine + detailNo, 9, cmdtyName, SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
      
    } else { // 通常品の場合
      lWrite.writeDetailItem(startLine + detailNo, 1, lOrderDetail.getOrderCode() + "-" + lOrderDetail.getDeliveryCode() + "-" + lOrderDetail.getDetailCode(), SIExcelConf.FIELD_STRING_TYPE,
          false);// 受注番号
      lWrite.writeDetailItem(startLine + detailNo, 5, lOrderDetail.getIndividualCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
      lWrite.writeDetailItem(startLine + detailNo, 9, lOrderDetail.getCmdtyName(), SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
    }
    // EDBTG003-00 elecs-tani mod end
    
    lWrite.writeDetailItem(startLine + detailNo, 19, lOrderDetail.getPrice(), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 単価
    lWrite.writeDetailItem(startLine + detailNo, 24, lOrderDetail.getAmount(), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 個数
    lWrite.writeDetailItem(startLine + detailNo, 26, SIUtil.multi(lOrderDetail.getPrice(), lOrderDetail.getAmount()), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 金額
    lWrite.writeDetailItem(startLine + detailNo, 31, lOrderDetail.getBranchCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 出荷地
    if (SIUtil.isNotNull(lOrderDetail.getGuaranteedTerm())) {
      // EDBTG003-00 elecs-tani mod start
//      lWrite.writeDetailItem(startLine, 35, SIDateTime.getMonthToYear(Integer.parseInt(lOrderDetail.getGuaranteedTerm())), SIExcelConf.FIELD_STRING_TYPE, false);// 保証
      lWrite.writeDetailItem(startLine + detailNo, 35, SIDateTime.getMonthToYear(Integer.parseInt(lOrderDetail.getGuaranteedTerm())), SIExcelConf.FIELD_STRING_TYPE, false);// 保証
      // EDBTG003-00 elecs-tani mod end
    }
    return detailNo; // EDBTG003-00 elecs-tani add
  }
  
  // 売上伝票
  private void printCmdtyBill(HttpServletResponse response, Connection lConnection, UIShippmentListCond lOrderList, SILogin lLogin) {
    String template = (String) this.getServletContext().getRealPath("/docs/cmdty_bill.xls");
    SIExcelRWrite lWrite = new SIExcelRWrite(SIExcelConf.SIEXCEL_CMDTY_BILL_INX, template);
    lWrite.makeSheet(0, SIExcelConf.getTitleName(SIExcelConf.SIEXCEL_CMDTY_BILL_INX), 0, false);
    SIDateTime lDateTime = new SIDateTime();
    String date = lDateTime.getFullDate2();
    int pageLineNumber = 68;
    // int detailMaxCount = 25;
    // int detailSumCount = 0;
    SIOrder lOrder = null;
    SIOrderDelivery lOrderDelivery = null;
    SIOrderDetail lOrderDetail = null;
    String statementBranch = lOrderList.getStatementBranch();
    
    String lOrderCode = new String();
    String oldOrderCode = new String();
    String lDeliveryCode = new String();
    String oldDeliveryCode = new String();
    String lDetailCode = new String();
    String oldDetailCode = new String();
    Iterator detailIt = null;
    Collection lOrderDetailColl = null;
    int detailNo = 0;
    int pageNo = 1;
    int pageSum = 1;
    for (int i = 0; i < lOrderList.getCheck().length; i++) {
      int check = Integer.parseInt(lOrderList.getCheck()[i]);
      lOrderCode = lOrderList.getOrderCodeHid()[check];
      lDeliveryCode = lOrderList.getDeliveryCodeHid()[check];
      lDetailCode = lOrderList.getDetailCodeHid()[check];
      if (detailNo == 25) {// 25行で改ページ
        lWrite.makeCmdtyBillPage(pageSum, pageLineNumber);
        pageNo = pageNo + 1;
        pageSum = pageSum + 1;
        detailNo = 0;
        printCmdtyBillMain(lConnection, lWrite, lOrder, lOrderDelivery, date, pageSum, pageNo);
      }
      if (!oldOrderCode.equals(lOrderCode)) {
        if (SIUtil.isNotNull(oldOrderCode)) {
          lWrite.makeCmdtyBillPage(pageSum, pageLineNumber);
          pageNo = 1;
          pageSum = pageSum + 1;
        }
        detailNo = 0;
        oldOrderCode = lOrderCode;
        oldDeliveryCode = lDeliveryCode;
        oldDetailCode = lDetailCode;
        lOrder = new SIOrder(lOrderCode);
        lOrder.reset(lConnection);
        lOrderDelivery = new SIOrderDelivery(lOrderCode, lDeliveryCode);
        lOrderDelivery.reset(lConnection);
        lOrderDetailColl = lOrderDelivery.getDetailCollection(lConnection, lDetailCode);
        printCmdtyBillMain(lConnection, lWrite, lOrder, lOrderDelivery, date, pageSum, pageNo);
        detailIt = lOrderDetailColl.iterator();
        while (detailIt.hasNext()) {
          lOrderDetail = (SIOrderDetail) detailIt.next();
          if (SIUtil.isNotNull(statementBranch)) {
            String amount = "";
            StringBuffer sql = new StringBuffer();
            sql.append("SELECT orderallocationnumber FROM orderallocationinfotbl");
            sql.append(" WHERE ordercode=").append(SIDBUtil.SQL2Str(lOrderCode));
            sql.append(" AND individualcode=").append(SIDBUtil.SQL2Str(lOrderDetail.getIndividualCode()));
            sql.append(" AND branchcode=").append(SIDBUtil.SQL2Str(statementBranch));
            try{amount = SIDBUtil.getFirstData(lConnection, sql.toString());}catch(Exception e){}
            if (SIUtil.isNotNull(amount)) lOrderDetail.setAmount(amount);
          }
          this.printCmdtyBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 12 + detailNo);
          detailNo = detailNo + 1;
        }
      } else {
        if (!lDeliveryCode.equals(oldDeliveryCode)) {
          oldDeliveryCode = lDeliveryCode;
          oldDetailCode = lDetailCode;
          lOrderDelivery = new SIOrderDelivery(lOrderCode, lDeliveryCode);
          lOrderDelivery.reset(lConnection);
          lOrderDetailColl = lOrderDelivery.getDetailCollection(lConnection, lDetailCode);
          detailIt = lOrderDetailColl.iterator();
          while (detailIt.hasNext()) {
            lOrderDetail = (SIOrderDetail) detailIt.next();
            if (SIUtil.isNotNull(statementBranch)) {
              String amount = "";
              StringBuffer sql = new StringBuffer();
              sql.append("SELECT orderallocationnumber FROM orderallocationinfotbl");
              sql.append(" WHERE ordercode=").append(SIDBUtil.SQL2Str(lOrderCode));
              sql.append(" AND individualcode=").append(SIDBUtil.SQL2Str(lOrderDetail.getIndividualCode()));
              sql.append(" AND branchcode=").append(SIDBUtil.SQL2Str(statementBranch));
              try{amount = SIDBUtil.getFirstData(lConnection, sql.toString());}catch(Exception e){}
              if (SIUtil.isNotNull(amount)) lOrderDetail.setAmount(amount);
            }
            this.printCmdtyBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 12 + detailNo);
            detailNo = detailNo + 1;
          }
        } else {
          if (!lDetailCode.equals(oldDetailCode)) {
            oldDetailCode = lDetailCode;
            lOrderDetailColl = lOrderDelivery.getDetailCollection(lConnection, lDetailCode);
            detailIt = lOrderDetailColl.iterator();
            while (detailIt.hasNext()) {
              lOrderDetail = (SIOrderDetail) detailIt.next();
              if (SIUtil.isNotNull(statementBranch)) {
                String amount = "";
                StringBuffer sql = new StringBuffer();
                sql.append("SELECT orderallocationnumber FROM orderallocationinfotbl");
                sql.append(" WHERE ordercode=").append(SIDBUtil.SQL2Str(lOrderCode));
                sql.append(" AND individualcode=").append(SIDBUtil.SQL2Str(lOrderDetail.getIndividualCode()));
                sql.append(" AND branchcode=").append(SIDBUtil.SQL2Str(statementBranch));
                try{amount = SIDBUtil.getFirstData(lConnection, sql.toString());}catch(Exception e){}
                if (SIUtil.isNotNull(amount)) lOrderDetail.setAmount(amount);
              }
              this.printCmdtyBillDetail(lWrite, lOrderDetail, (pageSum - 1) * (pageLineNumber - 1) + 12 + detailNo);
              detailNo = detailNo + 1;
            }
          }
        }
      }
    }
    
    lWrite.makePage(pageSum * (pageLineNumber - 1) - 1);
    
    try {
      lWrite.close(response);
    } catch (IOException e) {
      // e.printStackTrace();
    }
  }
  
  private void printCmdtyBillMain(Connection lConnection, SIExcelRWrite lWrite, SIOrder lRegOrder, SIOrderDelivery lOrderDelivery, String date, int pageSum, int pageCount) {
    int pageLineNumber = 68;
    int startLine = (pageSum - 1) * (pageLineNumber - 1);
    String orderDate = new String();
    // Iterator payIt = null;
    // SIPayment payment = null;
    
    try {
      orderDate = new SIDateTime(lRegOrder.getInitDateTime(), SIConfig.SIDATE_FORMAT0).getFullDate();
    } catch (ParseException e2) {
      e2.printStackTrace();
    }
    
    // ページ関連タイトル
    lWrite.writeDetailItem(0 + startLine, 1, "物品受領書", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(2 + startLine, 19, "【納品先】", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(0 + startLine, 34, "PAGE", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(1 + startLine, 34, "発行日", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(3 + startLine, 34, "伝票No.", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(4 + startLine, 34, "受注日", SIExcelConf.FIELD_STRING_TYPE, false);
    
    lWrite.writeDetailItem(11 + startLine, 1, "商品コード", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(11 + startLine, 5, "商　品　名", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(11 + startLine, 24, "数量", SIExcelConf.FIELD_STRING_TYPE, false);
    lWrite.writeDetailItem(11 + startLine, 30, "備　　考", SIExcelConf.FIELD_STRING_TYPE, false);
    
    // ヘッダ情報
    lWrite.writeDetailItem(0 + startLine, 39, String.valueOf(pageCount), SIExcelConf.FIELD_STRING_TYPE, false);// PAGE
    lWrite.writeDetailItem(1 + startLine, 39, date, SIExcelConf.FIELD_STRING_TYPE, false);// 発行日
    
    lWrite.writeDetailItem(3 + startLine, 39, lRegOrder.getOrderCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 伝票番号
    lWrite.writeDetailItem(4 + startLine, 39, orderDate, SIExcelConf.FIELD_STRING_TYPE, false);// 受注日
    
    // 売上先
    lWrite.writeDetailItem(3 + startLine, 1, "〒" + lRegOrder.getPostCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 郵便番号
    lWrite.writeDetailItem(4 + startLine, 1, lRegOrder.getAddress1() + lRegOrder.getAddress2(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    lWrite.writeDetailItem(5 + startLine, 1, lRegOrder.getAddress3(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    if (SIUtil.isNotNull(lRegOrder.getCompanyName())) {
      lWrite.writeDetailItem(7 + startLine, 1, lRegOrder.getCompanyName() + "　様", SIExcelConf.FIELD_STRING_TYPE, false);// 会社名
    }
    
    lWrite.writeDetailItem(8 + startLine, 1, lRegOrder.getCustName() + "　様", SIExcelConf.FIELD_STRING_TYPE, false);// お名前
    lWrite.writeDetailItem(9 + startLine, 1, "(" + lRegOrder.getCustCode() + ")", SIExcelConf.FIELD_STRING_TYPE, false);// 顧客番号
    
    // 配送先
    lWrite.writeDetailItem(3 + startLine, 19, "〒" + lOrderDelivery.getPostCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 郵便番号
    lWrite.writeDetailItem(4 + startLine, 19, lOrderDelivery.getAddress1() + lOrderDelivery.getAddress2(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    lWrite.writeDetailItem(5 + startLine, 19, lOrderDelivery.getAddress3(), SIExcelConf.FIELD_STRING_TYPE, false);// ご住所
    if (SIUtil.isNotNull(lOrderDelivery.getCompanyName())) {
      lWrite.writeDetailItem(7 + startLine, 19, lOrderDelivery.getCompanyName() + "　様", SIExcelConf.FIELD_STRING_TYPE, false);// 会社名
    }
  }
  
  private void printCmdtyBillDetail(SIExcelRWrite lWrite, SIOrderDetail lOrderDetail, int startLine) {
    lWrite.writeDetailItem(startLine, 1, lOrderDetail.getIndividualCode(), SIExcelConf.FIELD_STRING_TYPE, false);// 在庫コード
    // EDBTG003-00 elecs-tani add start
    // 添付品の場合頭に文言を付ける
    String cmdtyName = lOrderDetail.getCmdtyName();
    if (lOrderDetail.getSetDetailFlg().equals(SIConfig.SET_DETAIL_FLG_APPENDED)) {
      cmdtyName = SIConfig.SET_APPEND_NAME_PDF + cmdtyName;
    }
    // EDBTG003-00 elecs-tani add end
    // EDBTG003-00 elecs-tani mod start
    //lWrite.writeDetailItem(startLine, 5, lOrderDetail.getCmdtyName(), SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
    lWrite.writeDetailItem(startLine, 5, cmdtyName, SIExcelConf.FIELD_STRING_TYPE, false);// 商品名
    // EDBTG003-00 elecs-tani mod end
    lWrite.writeDetailItem(startLine, 24, lOrderDetail.getAmount(), SIExcelConf.FIELD_NUMERIC_TYPE, false);// 個数
  }
  
  public void destroy() {}
  
  private boolean sendShippmentRegistMail(HttpServletRequest lRequest,Connection lConnection, UIShippmentListCond lListCond, String fromMail) throws SIDBAccessException, SQLException {
    boolean lRes = true;
    SIDateTime lDateTime = new SIDateTime();
    for (int i = 0; i < lListCond.getCheck().length; i++) {
      SISendMail lSendMail = new SISendMail();
      StringBuffer sendListStr = new StringBuffer();
      boolean sendFlg = true;
      
      try {
        lSendMail.setMailTemp(lConnection, "0", SIConfig.SIMAIL_TEMPLATE_SHIPPMENT_REGIST);
      } catch (SIFatalException e2) {
        e2.printStackTrace();
      }
      StringBuffer lMailBuf = new StringBuffer();
      
      Statement lStatement1 = null;
      ResultSet lResultSet1 = null;
      Statement lStatement2 = null;
      ResultSet lResultSet2 = null;
      int checkNum = Integer.parseInt(lListCond.getCheck()[i]);
      String orderCode = lListCond.getOrderCodeHid()[checkNum];
      String deliveryCode = lListCond.getDeliveryCodeHid()[checkNum];
      String detailCode = lListCond.getDetailCodeHid()[checkNum];
      
      String reservemsg = "";
      if (SIBGUtil.isOrderReserve(lConnection, orderCode)) reservemsg = "※予約商品含む";
      if (SIDBUtil.hasData(lConnection, "SELECT * FROM orderdetaillatestvw WHERE ordercode='" + orderCode + "' AND deliverycode='" + deliveryCode + "' AND detailcode='"
          + detailCode + "' AND registmaildate IS NOT NULL")) {
        lSendMail.appendMailTitle("【再送】", "【受注番号：" + orderCode + "-" + deliveryCode + "-" + detailCode + "】" + reservemsg);
      } else {
        lSendMail.appendMailTitle("", "【受注番号：" + orderCode + "-" + deliveryCode + "-" + detailCode + "】" + reservemsg);
      }
      StringBuffer lSqlBuf1 = new StringBuffer();
      lSqlBuf1.append("SELECT b.branchname,c.chargename,c.email,o.paymethodname ");
      lSqlBuf1.append("FROM orderlatestvw o ");
      lSqlBuf1.append("LEFT OUTER JOIN (SELECT chargecode,chargename,email FROM chargetbl) c ");
      lSqlBuf1.append("ON (o.chargecode=c.chargecode) ");
      lSqlBuf1.append("LEFT OUTER JOIN (SELECT branchcode,branchname FROM branchtbl) b ");
      lSqlBuf1.append("ON (o.branchcode=b.branchcode) ");
      lSqlBuf1.append("WHERE o.ordercode='").append(orderCode).append("'");
      
      lStatement1 = lConnection.createStatement();
      lResultSet1 = lStatement1.executeQuery(lSqlBuf1.toString());
      
      String allocate = "";
      String branch = "";
      String charge = "";
      
      while (lResultSet1.next()) {
        if (lListCond.isCashFlg() && SIUtil.isNotNull(lResultSet1.getString("paymethodname")) && lResultSet1.getString("paymethodname").equals("代金引換")){
          lMailBuf.append("\n●代金引換処理済");
          //未入金の場合は入金データを作成
          if (!SIDBUtil.hasData(lConnection, "SELECT * FROM paymenttbl WHERE status=0 AND ordercode="+SIDBUtil.SQL2Str(orderCode))) {
            String paymentPrice = "0";
            StringBuffer paytotalStr = new StringBuffer();
            paytotalStr.append("SELECT totalofprice+totaloffee+coalesce(discountfee,0)");
            paytotalStr.append("+totalofdeliveryfee+coalesce(discountdeliveryfee,0)");
            paytotalStr.append("-sumofdiscount-sumbypoint ");
            paytotalStr.append("FROM ordersumvw ");
            paytotalStr.append("WHERE ordercode=").append(SIDBUtil.SQL2Str(orderCode));
            paymentPrice = SIDBUtil.getFirstData(lConnection, paytotalStr.toString());
            
            String paymentNumber = SIDBUtil.getFirstData(lConnection, "SELECT coalesce(maxpaymentnumber,0)+1 FROM paymentheadertbl WHERE ordercode="+SIDBUtil.SQL2Str(orderCode));
            SIInsertRec IRec = new SIInsertRec("paymenttbl");
            IRec.add("orderCode", orderCode);
            IRec.add("paymentNumber", paymentNumber);
            IRec.add("paymentPrice", paymentPrice);//金額
            IRec.add("paymentFee", "0");
            IRec.add("paymentType", "代金引換");
            IRec.add("expectedPaymentDate", lDateTime.getFullDate());
            IRec.add("paymentDate", lDateTime.getFullDate());
            IRec.add("status", "0");
            
            SIModifyRec lRec = new SIModifyRec();
            lRec = new SIModifyRec("ordertbl");
            lRec.addCondition("OrderCode", orderCode);
            lRec.add("ReceiptDate", lDateTime.getFullDate());
            
            try{
              IRec.execute(lConnection);
              lRec.execute(lConnection);
              SIPointMan.changeEnableFlg(lConnection, orderCode);
            }catch(Exception e){e.printStackTrace();}
          }
        }
        lMailBuf.append("\n-------------");
        lMailBuf.append("\n受注番号:").append(orderCode + "-" + deliveryCode + "-" + detailCode);
        if (SIUtil.isNull(lResultSet1.getString("branchname"))) branch = "なし";
        else branch = lResultSet1.getString("branchname") + "支店";
        lMailBuf.append("\n担当支店:").append(branch);
        if (SIUtil.isNull(lResultSet1.getString("chargename"))) charge = "なし";
        else charge = lResultSet1.getString("chargename");
        lMailBuf.append("　担当者:").append(charge);
        if (SIUtil.isNotNull(lListCond.getAgentName())) lMailBuf.append("\n運送会社:").append(lListCond.getAgentName());
        if (SIUtil.isNotNull(lListCond.getDeliveryNumber())) lMailBuf.append("\n送り状問合せNo\n").append(lListCond.getDeliveryNumber());
        if (SIUtil.isNotNull(lResultSet1.getString("email"))) {
          if (sendListStr.length() != 0) sendListStr.append(",");
          sendListStr.append(lResultSet1.getString("email"));
        }
      }
      
      StringBuffer lSqlBuf2 = new StringBuffer();
      // 20121229 EDBTG003-00 y.maruyama mod start
//      lSqlBuf2.append("SELECT od.cmdtyname,od.individualcode,coalesce(oa.orderallocationnumber,od.amount) AS amount ");
      lSqlBuf2.append("SELECT od.cmdtyname,od.individualcode,od.setindividualcode,coalesce(oa.orderallocationnumber,od.amount) AS amount ");
      // 20121229 EDBTG003-00 y.maruyama mod end
      lSqlBuf2.append(",db.email,db.branchname,oa.cmdtycode,oa.branchcode,co.colorname ");
      lSqlBuf2.append("FROM orderdetaillatestvw od ");
      lSqlBuf2.append("LEFT OUTER JOIN (SELECT ordercode,branchcode,cmdtycode,individualcode,orderallocationnumber FROM orderallocationinfotbl) oa ");
      lSqlBuf2.append("ON (od.ordercode=oa.ordercode AND od.cmdtycode=oa.cmdtycode AND od.individualcode=oa.individualcode) ");
      lSqlBuf2.append("LEFT OUTER JOIN (SELECT branchcode,branchname,email FROM branchtbl) db ");
      lSqlBuf2.append("ON (oa.branchcode=db.branchcode) ");
      lSqlBuf2.append(",colortbl co,cmdtymtbl cm ");
      lSqlBuf2.append("WHERE od.ordercode='" + orderCode + "' ");
      lSqlBuf2.append("AND od.deliverycode='" + deliveryCode + "' ");
      lSqlBuf2.append("AND od.detailcode='" + detailCode + "' ");
      lSqlBuf2.append("AND od.cmdtycode = cm.cmdtycode ");
      lSqlBuf2.append("AND co.colorcode = cm.colorcode ");
      lSqlBuf2.append("ORDER BY db.branchcode ");
      
      lStatement2 = lConnection.createStatement();
      lResultSet2 = lStatement2.executeQuery(lSqlBuf2.toString());
      
      while (lResultSet2.next()) {
        lMailBuf.append("\n-------------");
        // 20121229 EDBTG003-00 y.maruyama mod start
//        lMailBuf.append("\n商品名:").append(lResultSet2.getString("cmdtyname") + " 【" + lResultSet2.getString("individualcode") + "】");
        if (SIUtil.isNull(lResultSet2.getString("setindividualcode"))) {
          lMailBuf.append("\n商品名:").append(lResultSet2.getString("cmdtyname") + " 【" + lResultSet2.getString("individualcode") + "】");
        } else {
          lMailBuf.append("\n商品名:").append(lResultSet2.getString("cmdtyname") + " 【" + lResultSet2.getString("setindividualcode") + "(" + lResultSet2.getString("individualcode") + ")】");
        }
        // 20121229 EDBTG003-00 y.maruyama mod end
        if (SIBGUtil.isOrderReserve(lConnection, orderCode, lResultSet2.getString("cmdtycode"), lResultSet2.getString("individualcode"), lResultSet2.getString("branchcode"))) {
          lMailBuf.append("  【予約商品】");
          lMailBuf.append("\n予約番号:").append(
              SIBGUtil.getReserveCode(lConnection, orderCode, lResultSet2.getString("cmdtycode"), lResultSet2.getString("individualcode"), lResultSet2.getString("branchcode")));
        }
        if (SIUtil.isNull(lResultSet2.getString("branchname"))) allocate = "在庫管理なし";
        else allocate = lResultSet2.getString("branchname");
        lMailBuf.append("\nカラー:").append(lResultSet2.getString("colorname"));
        lMailBuf.append("\n出荷店舗:").append(allocate);
        lMailBuf.append("\n出荷数量:").append(lResultSet2.getString("amount"));
        lMailBuf.append("\n");
        if (SIUtil.isNotNull(lResultSet2.getString("email"))) {
          if (sendListStr.length() != 0) sendListStr.append(",");
          sendListStr.append(lResultSet2.getString("email"));
        }
      }
      lMailBuf.append("\n-------------");
      lMailBuf.append("\n");
      lSendMail.appendContent1(lMailBuf.toString());
      
      try {
        lSendMail.setFromMailAddress(fromMail);
        lSendMail.setToMailAddress(sendListStr.toString().split(","));
        
        sendFlg = lSendMail.execute();
        lRes = sendFlg && lRes;
        lStatement1.close();
        lResultSet1.close();
        lStatement2.close();
        lResultSet2.close();
        
        lDateTime = new SIDateTime();
        SIModifyRec lRec = new SIModifyRec("orderdetailtbl");
        lRec.addCondition("ordercode", orderCode);
        lRec.addCondition("deliverycode", deliveryCode);
        lRec.addCondition("detailcode", detailCode);
        lRec.add("registmaildate", lDateTime.getFullDateTime());// 現在時刻
        lRec.execute(lConnection);
        
        // メールはロールバックできないので１件コミット
        if (sendFlg) {
          try {
            lConnection.commit();
          } catch (SQLException sqle) {
            throw new SIDBAccessException(sqle);
          }
        } else {
          try {
            lConnection.rollback();
          } catch (SQLException sqle) {
            throw new SIDBAccessException(sqle);
          }
        }
      } catch (SIFatalException e) {
        e.printStackTrace();
        lRes = false;
      } catch (SIDuplicateKeyException e) {
        e.printStackTrace();
      }
    }
    return lRes;
  }
  
  private boolean produceCSVFile(HttpServletRequest request, HttpServletResponse response, Connection lConnection, UIShippmentListCond listCond) {
    // CSVファイル名の作成
    String lCsvFileName = SICSVConf.getCsvFileName(SICSVConf.SICSV_SHIPPMENT_LIST_INX);
    SICSVWrite lCsv = new SICSVWrite(lCsvFileName);
    
    // SQL文の作成
    StringBuffer lSqlBuf = new StringBuffer();
    lSqlBuf.append("SELECT aa.ordercode||'-'||bb.deliverycode||'-'||bb.detailcode AS ordercode, ");
    lSqlBuf.append("aa.custname,cc.deliveryaddressee,aa.branchcode,aa.chargecode, ");
    lSqlBuf.append("aa.initdatetime,CASE aa.status WHEN '0' THEN 'キャンセル' WHEN '2' THEN '返品' ELSE '通常' END AS status, ");
    lSqlBuf.append("aa.receiptdate,bb.deliverydate,bb.shippmentdate, ");
    lSqlBuf.append("bb.cmdtyname,bb.individualcode,bb.amount,ee.orderallocationnumber,ee.branchname AS shipbranch ");
    
    lSqlBuf.append("FROM orderlatestvw aa,orderdetaillatestvw bb ");
    if (SIUtil.isNotNull(listCond.getOrderCodeTxt())) {
      lSqlBuf.append("LEFT OUTER JOIN (SELECT ordercode,individualcode,outputordercode FROM shippmentrequesttbl  ");
      lSqlBuf.append("WHERE enabledflg=1 AND checkflg=1) req ");
      lSqlBuf.append("ON (bb.ordercode = req.ordercode AND bb.individualcode = req.individualcode) ");
    }
    lSqlBuf.append("LEFT OUTER JOIN (SELECT a.ordercode,a.individualcode,a.branchcode,b.branchname,a.orderallocationnumber FROM orderallocationinfotbl a,branchtbl b WHERE a.branchcode=b.branchcode) ee ");
    lSqlBuf.append("ON (bb.ordercode = ee.ordercode AND bb.individualcode = ee.individualcode), ");
    lSqlBuf.append("individualtbl dd,custtbl cust, ");
    lSqlBuf.append("orderdeliverylatestvw cc ");
    lSqlBuf.append("WHERE bb.ordercode=cc.ordercode AND aa.ordercode=bb.ordercode AND bb.deliverycode=cc.deliverycode ");
    lSqlBuf.append("AND bb.individualcode=dd.individualcode AND aa.custcode=cust.custcode ");
    lSqlBuf.append(listCond.getConditionSQL());
    lSqlBuf.append(SICSVConf.getOrderBySQL(SICSVConf.SICSV_SHIPPMENT_LIST_INX));
    
    // SQL文の設定
    lCsv.setSqlStatement(lSqlBuf.toString());
    // タイトルとFieldの設定
    lCsv.setCsvTitleAndField(SICSVConf.getTitleAndFieldName(SICSVConf.SICSV_SHIPPMENT_LIST_INX));
    // CSVファイルの出力
    lCsv.execute(lConnection, response);
    return true;
  }
}
