/*
 * Aipo is a groupware program developed by Aimluck,Inc.
 * Copyright (C) 2004-2008 Aimluck,Inc.
 * http://aipostyle.com/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.aimluck.eip.mclient;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.query.SelectQuery;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;
import com.aimluck.commons.field.ALNumberField;
import com.aimluck.commons.field.ALStringField;
import com.aimluck.eip.mclient.util.MClientUtils;
import com.aimluck.eip.cayenne.om.portlet.ImwMClient;
import com.aimluck.eip.common.ALAbstractFormData;
import com.aimluck.eip.common.ALDBErrorException;
import com.aimluck.eip.common.ALEipConstants;
import com.aimluck.eip.common.ALPageNotFoundException;
import com.aimluck.eip.fileupload.beans.FileuploadLiteBean;
import com.aimluck.eip.modules.actions.common.ALAction;
import com.aimluck.eip.orm.DatabaseOrmService;
import com.aimluck.eip.services.datasync.ALDataSyncFactoryService;
import com.aimluck.eip.util.ALEipUtils;

/**
 * 顧客のフォームデータを管理するクラスです。 <BR>
 * 
 */
public class MClientUserFormData extends ALAbstractFormData {

  /** logger */
  private static final JetspeedLogger logger = JetspeedLogFactoryService
      .getLogger(MClientUserFormData.class.getName());

  private DataContext dataContext;

  /** 顧客ID */
  private ALNumberField client_id;

  /** 顧客名 */
  private ALStringField client_name;

  /**
   * 顧客略称
   */
  private ALStringField client_names;

  /** 担当ユーザID */
  private ALNumberField user_id;

  /** 請求先コード */
  private ALNumberField demand_client_id;

  /** 支払月 */
  private ALNumberField pay_date;

  private ALNumberField pay_date_text;

  /** 支払日 */
  private ALNumberField pay_day;

  private ALNumberField pay_day_text;

  /** 支払区分 */
  private ALStringField pay_class;

  /** 支払締日 */
  private ALNumberField pay_deadline;

  private ALStringField disabled;

  /** 入金予定月 */
  private ALNumberField receipt_date;

  private ALNumberField receipt_date_text;

  /** 入金予定日 */
  private ALNumberField receipt_day;

  private ALNumberField receipt_day_text;

  /** 入金区分 */
  private ALStringField receipt_class;

  /** 入金締日 */
  private ALNumberField receipt_deadline;

  private ALNumberField receipt_deadline_text;

  private ALNumberField pay_deadline_text;

  /** 作成者ＩＤ */
  private ALNumberField create_user_id;

  /** 更新者ＩＤ */
  private ALNumberField update_user_id;

  /** 作成日 */
  private ALStringField create_date;

  /** 更新日 */
  private ALStringField update_date;

  /** 担当ユーザ */
  private ALStringField login_name;

  /** 請求先名 */
  private ALStringField demand_client_name;

  private ArrayList LoginNameList;

  private ArrayList demandClientNameList;

  private ArrayList userNameList;

  /**
   * 初期化します。
   * 
   * @param action
   * @param rundata
   * @param context
   * @see com.aimluck.eip.common.ALAbstractFormData#init(com.aimluck.eip.modules.actions.common.ALAction,
   *      org.apache.turbine.util.RunData, org.apache.velocity.context.Context)
   */
  public void init(ALAction action, RunData rundata, Context context)
      throws ALPageNotFoundException, ALDBErrorException {
    super.init(action, rundata, context);
    dataContext = DatabaseOrmService.getInstance().getDataContext();
  }

  /**
   * 各フィールドを初期化します。 <BR>
   * 
   * @see com.aimluck.eip.common.ALData#initField()
   */
  public void initField() {
    dataContext = DatabaseOrmService.getInstance().getDataContext();
    client_id = new ALNumberField();
    client_id.setFieldName("顧客ID");
    client_name = new ALStringField();
    client_name.setFieldName("顧客名");
    client_name.setTrim(true);

    client_names = new ALStringField();
    client_names.setFieldName("顧客略称");
    client_names.setTrim(true);

    login_name = new ALStringField();
    login_name.setFieldName("担当ユーザー");
    login_name.setTrim(true);

    user_id = new ALNumberField();
    user_id.setFieldName("担当ユーザID");

    demand_client_id = new ALNumberField();
    demand_client_id.setFieldName("請求先コード");

    pay_date = new ALNumberField();
    pay_date.setFieldName("支払月");
    pay_date.setValue(0);
    pay_date_text = new ALNumberField();

    pay_day = new ALNumberField();
    pay_day.setFieldName("支払日");

    pay_day_text = new ALNumberField();
    pay_day_text.setFieldName("支払日");

    pay_class = new ALStringField();
    pay_class.setFieldName("支払区分");
    pay_class.setValue("1");
    pay_class.setTrim(true);
    // 有効/無効
    disabled = new ALStringField();
    disabled.setFieldName("アカウント有効/無効");
    disabled.setTrim(true);

    pay_deadline = new ALNumberField();
    pay_deadline.setFieldName("支払締日");

    pay_deadline_text = new ALNumberField();

    receipt_date = new ALNumberField();
    receipt_date.setFieldName("入金予定月");
    receipt_date_text = new ALNumberField();
    receipt_date.setValue(0);

    receipt_day = new ALNumberField();
    receipt_day.setFieldName("入金予定日");
    receipt_day_text = new ALNumberField();

    receipt_class = new ALStringField();
    receipt_class.setFieldName("入金区分");
    receipt_class.setTrim(true);
    receipt_class.setValue("1");

    create_user_id = new ALNumberField();
    create_user_id.setFieldName("作成者ＩＤ");

    update_user_id = new ALNumberField();
    update_user_id.setFieldName("更新者ＩＤ");

    create_date = new ALStringField();
    create_date.setFieldName("作成日");
    create_date.setTrim(true);

    update_date = new ALStringField();
    update_date.setFieldName("更新日");
    update_date.setTrim(true);

    receipt_deadline = new ALNumberField();
    receipt_deadline.setFieldName("入金締日");
    receipt_deadline_text = new ALNumberField();

    demand_client_name = new ALStringField();
    demand_client_name.setFieldName("請求先名");
    demand_client_name.setTrim(true);

    LoginNameList = new ArrayList();
    demandClientNameList = new ArrayList();
    userNameList = new ArrayList();

  }

  /**
   * 各フィールドに対する制約条件を設定します。 <BR>
   * 
   * @see com.aimluck.eip.common.ALAbstractFormData#setValidator()
   */
  protected void setValidator() {
    client_name.setNotNull(true);
    client_name.limitMaxLength(32);

    client_names.setNotNull(true);
    client_names.limitMaxLength(3);
    client_names.setCharacterType(ALStringField.TYPE_ASCII);

    user_id.setNotNull(true);

  }

  /**
   * フォームに入力されたデータの妥当性検証を行います。 <BR>
   * 
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#validate(java.util.ArrayList)
   */
  protected boolean validate(ArrayList msgList) {
    // ArrayList dummy = new ArrayList();

    if (ALEipConstants.MODE_INSERT.equals(getMode())) {
      try {
        Expression exp = ExpressionFactory.matchExp(
            ImwMClient.CLIENT_NAME_PROPERTY, client_name.getValue());
        SelectQuery query = new SelectQuery(ImwMClient.class, exp);
        List ulist = dataContext.performQuery(query);
        if (ulist.size() > 0) {
          ImwMClient user = (ImwMClient) ulist.get(0);
          msgList.add("ログイン名『 <span class='em'>" + client_name
              + "</span> 』はすでに登録されています。別のログイン名で登録してください。");
        }

      } catch (Exception ex) {
        logger.error("Exception", ex);
        return false;
      }
    }
    client_name.validate(msgList);
    client_names.validate(msgList);
    user_id.validate(msgList);

    return (msgList.size() == 0);

  }

  /**
   * 『顧客』を読み込みます。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#loadFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  
  protected boolean loadFormData(RunData rundata, Context context,
      ArrayList msgList) {
    try {
      ImwMClient record = MClientUtils.getImwMClient(rundata, context);
      if (record == null)
        return false;
      // 顧客名
      client_name.setValue(record.getClientName());
      // 顧客略称
      client_names.setValue(record.getClientNames());
      // 請求先名のコンボリストを生成する

      demand_client_id.setValue(record.getDemandClientId().intValue());
      client_id.setValue(record.getClientId());
      demandClientNameList.addAll(MClientUtils.getDemandClientNameList(record
          .getClientId()));
      // 担当ユーザー
      user_id.setValue(record.getUserId());
      userNameList.addAll(MClientUtils.getUserNameList());

      // 支払区分

      pay_class.setValue(record.getPayClass());
      // 支払月

      pay_date.setValue(record.getPayDate().intValue());
      // 支払日
      pay_day.setValue(record.getPayDay().intValue());
      // 支払締日
      pay_deadline.setValue(record.getPayDeadline().intValue());
      // 入金区分
      receipt_class.setValue(record.getReceiptClass());
      // 入金予定月
      receipt_date.setValue(record.getReceiptDate().intValue());
      // 入金予定日
      receipt_day.setValue(record.getReceiptDay().intValue());
      // 入金締日
      receipt_deadline.setValue(record.getReceiptDeadline().intValue());

      return true;
    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }
  }

  /**
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#setFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean setFormData(RunData rundata, Context context,
      ArrayList msgList) throws ALPageNotFoundException, ALDBErrorException {
    boolean res = super.setFormData(rundata, context, msgList);
    if (res) {
      try {
        // WebAPIのDBへ接続できるか確認
        if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
            .checkConnect()) {
          msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
          return false;
        }
        if (dataContext == null) {
          dataContext = DatabaseOrmService.getInstance().getDataContext();
        }
        demandClientNameList.addAll(MClientUtils.getDemandClientNameList(0));
        userNameList.addAll(MClientUtils.getUserNameList());
      } catch (Exception ex) {
        logger.error("Exception", ex);
        return false;
      }

    }
    return true;
  }

  /**
   * 『顧客』を追加します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#insertFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean insertFormData(RunData rundata, Context context,
      ArrayList msgList) {

    boolean res = true;
    Date now = new Date();
    try {
      // WebAPIのDBへ接続できるか確認
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      if (dataContext == null) {
        dataContext = DatabaseOrmService.getInstance().getDataContext();
      }
      ImwMClient client = (ImwMClient) dataContext
          .createAndRegisterNewObject(ImwMClient.class);
      if (res) {

        // 顧客名
        client.setClientName(client_name.getValue());

        // 顧客略称
        client.setClientNames(client_names.getValue());
        // 担当ユーザー

        client.setUserId(Integer.valueOf(String.valueOf(user_id.getValue())));

        // 請求先名
        /* 2011/01/17 ： 王志禹 ： 請求先を指定しない場合,請求先コードに値の設定の変更   
        if (Integer.valueOf(String.valueOf(demand_client_id.getValue())) == 0) {
          client.setDemandClientId(0);
        } else {
          client.setDemandClientId(Integer.valueOf(String
              .valueOf(demand_client_id.getValue())));
        }*/
        /* Add　2011/01/17 王志禹 End--- */
        if (Integer.valueOf(String.valueOf(demand_client_id.getValue())) != 0) {
          client.setDemandClientId(Integer.valueOf(String
              .valueOf(demand_client_id.getValue())));
        }
        /* Add　2011/01/17 王志禹 End--- */
        // 支払区分
        client.setPayClass(pay_class.getValue());
        // 支払月
        if (Integer.valueOf(String.valueOf(pay_date.getValue())).intValue() != 99)
          client.setPayDate(Integer
              .valueOf(String.valueOf(pay_date.getValue())));
        else {
          client.setPayDate(Integer.valueOf(String.valueOf(pay_date_text
              .getValue())));
        }
        // 支払日
        if (Integer.valueOf(String.valueOf(pay_day.getValue())).intValue() != 99) {
          client.setPayDay(Integer.valueOf(String.valueOf(pay_day_text
              .getValue())));
        } else {
          client.setPayDay(99);
        }
        // 支払締日
        if (Integer.valueOf(String.valueOf(pay_deadline.getValue())).intValue() != 99) {
          client.setPayDeadline(Integer.valueOf(String
              .valueOf(pay_deadline_text.getValue())));

        } else {
          client.setPayDeadline(99);
        }
        // 入金区分
        client.setReceiptClass(receipt_class.getValue());
        // 入金予定月
        if (Integer.valueOf(String.valueOf(receipt_date.getValue())).intValue() != 99)
          client.setReceiptDate(Integer.valueOf(String.valueOf(receipt_date
              .getValue())));
        else {
          client.setReceiptDate(Integer.valueOf(String
              .valueOf(receipt_date_text.getValue())));
        }
        // 入金予定日
        if (Integer.valueOf(String.valueOf(receipt_day.getValue())).intValue() != 99) {
          client.setReceiptDay(Integer.valueOf(String.valueOf(receipt_day_text
              .getValue())));
        } else {
          client.setReceiptDay(99);
        }
        // 入金締日
        if (Integer.valueOf(String.valueOf(receipt_deadline.getValue()))
            .intValue() != 99) {
          client.setReceiptDeadline(Integer.valueOf(String
              .valueOf(receipt_deadline_text.getValue())));
        } else {
          client.setReceiptDeadline(99);
        }
        // 有効に設定する
        client.setDisabled("F");
        // 作成者ＩＤに設定する
        client.setCreateUserId(ALEipUtils.getUserId(rundata));
        // 更新者ＩＤに設定する
        client.setUpdateUserId(ALEipUtils.getUserId(rundata));
        // 作成日に設定する
        client.setCreateDate(now);
        // 更新日に設定する
        client.setUpdateDate(now);
        dataContext.commitChanges();
        /* Add　2011/01/17 王志禹 Start--- */
        //請求先を指定しない場合,請求先コードに自顧客コードをセットします。
        if (Integer.valueOf(String.valueOf(demand_client_id.getValue())) == 0) {
          int CLIENT_ID_new=Integer.valueOf(String
              .valueOf(dataContext.currentSnapshot(client).get("CLIENT_ID")));
          dataContext = DatabaseOrmService.getInstance().getDataContext();
          Expression exp = ExpressionFactory.matchDbExp(
              ImwMClient.CLIENT_ID_PK_COLUMN, Integer.valueOf(CLIENT_ID_new));
          SelectQuery query = new SelectQuery(ImwMClient.class, exp);
          List list = dataContext.performQuery(query);
          ImwMClient record=null;
          if (list != null || list.size() != 0) {
            record=(ImwMClient) list.get(0);
            record.setDemandClientId(CLIENT_ID_new);
            dataContext.commitChanges();
          }
        }
       /* Add　2011/01/17 王志禹 End--- */
      }
    } catch (Exception e) {
      logger.error("Exception", e);
      res = false;
    }
    return res;
  }

  /**
   * 『顧客』を更新します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#updateFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean updateFormData(RunData rundata, Context context,
      ArrayList msgList) {

    boolean res = true;
    Date now = new Date();
    try {
      if (dataContext == null) {
        dataContext = DatabaseOrmService.getInstance().getDataContext();
      }

      ImwMClient record = MClientUtils.getImwMClient(rundata, context);
      if (record == null) {
        return false;
      }
      dataContext = DatabaseOrmService.getInstance().getDataContext();
      // 顧客名
      record.setClientName(client_name.getValue());
      // 顧客略称
      record.setClientNames(client_names.getValue());

      // 支払区分

      record.setPayClass(pay_class.getValue());

      // 支払月

      if (Integer.valueOf(String.valueOf(pay_date.getValue())).intValue() != 0
          && Integer.valueOf(String.valueOf(pay_date.getValue())).intValue() != 1
          && Integer.valueOf(String.valueOf(pay_date.getValue())).intValue() != 2)

        record.setPayDate(Integer.valueOf(String.valueOf(pay_date_text
            .getValue())));
      else {
        record.setPayDate(Integer.valueOf(String.valueOf(pay_date.getValue())));
      }

      // 支払日
      if (Integer.valueOf(String.valueOf(pay_day.getValue())).intValue() != 99) {
        record.setPayDay(Integer.valueOf(String
            .valueOf(pay_day_text.getValue())));

      } else {
        record.setPayDay(99);
      }

      // 支払締日
      if (Integer.valueOf(String.valueOf(pay_deadline.getValue())).intValue() != 99) {
        record.setPayDeadline(Integer.valueOf(String.valueOf(pay_deadline_text
            .getValue())));

      } else {
        record.setPayDeadline(99);
      }
      // 入金区分
      record.setReceiptClass(receipt_class.getValue());
      // 入金予定月

      if (Integer.valueOf(String.valueOf(receipt_date.getValue())).intValue() != 99)
        record.setReceiptDate(Integer.valueOf(String.valueOf(receipt_date
            .getValue())));

      else {
        record.setReceiptDate(Integer.valueOf(String.valueOf(receipt_date_text
            .getValue())));
      }

      // 入金予定日
      if (Integer.valueOf(String.valueOf(receipt_day.getValue())).intValue() != 99) {
        record.setReceiptDay(Integer.valueOf(String.valueOf(receipt_day_text
            .getValue())));

      } else {
        record.setReceiptDay(99);
      }

      // 入金締日
      if (Integer.valueOf(String.valueOf(receipt_deadline.getValue()))
          .intValue() != 99) {
        record.setReceiptDeadline(Integer.valueOf(String
            .valueOf(receipt_deadline_text.getValue())));
      } else {
        record.setReceiptDeadline(99);
      }
      // 請求先名
      record.setDemandClientId(Integer.valueOf(String.valueOf(demand_client_id
          .getValue())));
      // 担当ユーザー
      record.setUserId(Integer.valueOf(String.valueOf(user_id.getValue())));
      // 更新者ＩＤに設定する
      record.setUpdateUserId(Integer.valueOf(String.valueOf(update_user_id
          .getValue())));
      // 更新日に設定する
      record.setUpdateDate(now);
      // 更新者ＩＤに設定する
      record.setUpdateUserId(ALEipUtils.getUserId(rundata));

      dataContext.commitChanges();
      return true;
    } catch (Exception e) {
      logger.error("Exception", e);
      res = false;
    }
    return res;
  }

  /**
   * 『顧客』を無効化します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * 
   */
  public boolean disableFormData(RunData rundata, Context context,
      ArrayList msgList) {

    try {
      // WebAPIのDBへ接続できるか確認
      logger.debug("deleteFormData");
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      logger.debug("enddeleteFormData");
      String client_name = ALEipUtils.getTemp(rundata, context,
          ALEipConstants.ENTITY_ID);

      if (client_name == null)
        return false;

      // 顧客を論理削除
      DataContext dataContext = DatabaseOrmService.getInstance()
          .getDataContext();
      ObjectId oid_user = new ObjectId("ImwMClient",
          ImwMClient.CLIENT_ID_PK_COLUMN, client_name);
      ImwMClient client = (ImwMClient) dataContext.refetchObject(oid_user);

      client.setDisabled("N");
      dataContext.commitChanges();
      return true;
    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }
  }

  /**
   * 『顧客』を有効化します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * 
   */
  public boolean enableFormData(RunData rundata, Context context,
      ArrayList msgList) {
    try {
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      logger.debug("enddeleteFormData");
      String client_name = ALEipUtils.getTemp(rundata, context,
          ALEipConstants.ENTITY_ID);

      if (client_name == null)
        return false;

      DataContext dataContext = DatabaseOrmService.getInstance()
          .getDataContext();
      SelectQuery query = new SelectQuery(ImwMClient.class);
      ObjectId oid_user = new ObjectId("ImwMClient",
          ImwMClient.CLIENT_ID_PK_COLUMN, client_name);
      ImwMClient client = (ImwMClient) dataContext.refetchObject(oid_user);
      client.setDisabled("F");
      dataContext.commitChanges();

      return true;

    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }

  }

  /**
   * 『顧客』を削除します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#deleteFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean deleteFormData(RunData rundata, Context context,
      ArrayList msgList) {
    try {
      // WebAPIのDBへ接続できるか確認
      logger.debug("deleteFormData");
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      logger.debug("enddeleteFormData");
      String client_name = ALEipUtils.getTemp(rundata, context,
          ALEipConstants.ENTITY_ID);

      if (client_name == null)
        return false;

      // 顧客を論理削除
      DataContext dataContext = DatabaseOrmService.getInstance()
          .getDataContext();
      ObjectId oid_user = new ObjectId("ImwMClient",
          ImwMClient.CLIENT_ID_PK_COLUMN, client_name);
      ImwMClient client = (ImwMClient) dataContext.refetchObject(oid_user);

      client.setDisabled("T");
      dataContext.commitChanges();
      return true;
    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }
  }

  /**
   * 有効/無効フラグを取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getDisabled() {
    return disabled;
  }

  /**
   * 顧客名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getClientName() {
    return client_name;
  }

  /**
   * * 担当ユーザーを取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getLoginName() {
    return login_name;
  }

  /**
   * 顧客略称を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getClientNames() {
    return client_names;
  }

  /**
   * 請求先名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getDemandClientName() {
    return demand_client_name;
  }

  /**
   * 支払区分を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getPayClass() {
    return pay_class;
  }

  /**
   * 支払月を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getPayDate() {
    return pay_date;
  }

  public ALNumberField getPayDateText() {
    return pay_date_text;
  }

  /**
   * 支払日を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getPayDay() {
    return pay_day;
  }

  public ALNumberField getPayDayText() {
    return pay_day_text;
  }

  /**
   * 支払締日を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getPayDeadline() {
    return pay_deadline;
  }

  public ALNumberField getPayDeadlineText() {
    return pay_deadline_text;
  }

  public ALNumberField getDemandClientId() {
    return demand_client_id;
  }

  public ALNumberField ClientId() {
    return client_id;
  }

  /**
   * 入金区分を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getReceiptClass() {
    return receipt_class;
  }

  /**
   * 入金予定月を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getReceiptDate() {
    return receipt_date;
  }

  public ALNumberField getReceiptDateText() {
    return receipt_date_text;
  }

  /**
   * 入金予定日を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getReceiptDay() {
    return receipt_day;
  }

  public ALNumberField getReceiptDayText() {
    return receipt_day_text;
  }

  /**
   * 入金締日を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getReceiptDeadline() {
    return receipt_deadline;
  }

  public ALNumberField getReceiptDeadlineText() {
    return receipt_deadline_text;
  }

  public ALNumberField getUserId() {
    return user_id;
  }

  /**
   * 請求先名を取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getDemandClientNameList() {
    return demandClientNameList;
  }

  /**
   * 担当ユーザーを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getUserNameList() {
    return userNameList;
  }

  public ArrayList getLoginNameList() {
    return LoginNameList;
  }

}
