package com.ffii.fpsms.modules.common;

public abstract class SettingNames {
  /*
   * System-wide settings
   */

  /** Define all available language names as comma separated string */
  public static final String SYS_AVAILABLE_LANGUAGES = "SYS.availableLanguages";

  /** Define all available locales as comma separated string */
  public static final String SYS_AVAILABLE_LOCALES = "SYS.availableLocales";

  /** Define the system default locale as string */
  public static final String SYS_DEFAULT_LOCALE = "SYS.defaultLocale";

  /** Define the system available currencies as comma separated string */
  public static final String SYS_CURRENCIES = "SYS.currencies";

  /** Define the system modules (authorities.module) */
  public static final String SYS_ROLE_MODULES = "SYS.modules";

  /*
   * Schedule settings
   */
  public static final String SCHEDULE_M18_PO = "SCHEDULE.m18.po";

  public static final String SCHEDULE_M18_DO1 = "SCHEDULE.m18.do1";
  /** Saturday-only DO1 time (default 03:10). Mon–Fri & Sun use [SCHEDULE_M18_DO1] time via a second trigger. */
  public static final String SCHEDULE_M18_DO1_SAT = "SCHEDULE.m18.do1.sat";
  public static final String SCHEDULE_M18_DO2 = "SCHEDULE.m18.do2";

  public static final String SCHEDULE_M18_MASTER = "SCHEDULE.m18.master";

  /** M18 unit master sync via GET /search/search?stSearch=unit (cron, e.g. "0 40 12 * * *" for 12:40 daily) */
  public static final String SCHEDULE_M18_UNITS = "SCHEDULE.m18.units";

  /**
   * After first successful full unit sync (no lastModifyDate filter), set to "true".
   * While "false", unit sync fetches all units; once "true", sync uses rolling lastModifyDate window only.
   */
  public static final String M18_UNITS_SYNC_INITIAL_FULL_SYNC_DONE = "M18.units.sync.initialFullSyncDone";

  /**
   * When "true", FPSMS may push BOM header + materials to M18 udfBomForShop.
   */
  public static final String M18_BOM_SHOP_SYNC_ENABLED = "M18.bom.shop.sync.enabled";

  /** Post completed DN and process M18 GRN (cron, e.g. "0 40 23 * * *" for 23:40 daily) */
  public static final String SCHEDULE_POST_COMPLETED_DN_GRN = "SCHEDULE.postCompletedDn.grn";

  /** Backfill M18 AN document code (grn_code) via GET /root/api/read/an (default 1:20 AM daily) */
  public static final String SCHEDULE_GRN_CODE_SYNC = "SCHEDULE.grn.grnCode.m18";
  /** Mark expired inventory lot lines as unavailable (default 00:05 daily) */
  public static final String SCHEDULE_INVENTORY_LOT_EXPIRY = "SCHEDULE.inventoryLot.expiry";

  public static final String SCHEDULE_PROD_ROUGH = "SCHEDULE.prod.rough";

  public static final String SCHEDULE_PROD_DETAILED = "SCHEDULE.prod.detailed";

  /**
   * Job order plan-start overdue batch (default 00:00:15 daily): hide or reschedule JOs whose plan day was yesterday.
   */
  public static final String SCHEDULE_JO_PLAN_START = "SCHEDULE.jo.planStart";
  /*
   * Mail settings
   */

  /** Mail - SMTP host */
  public static final String MAIL_SMTP_HOST = "MAIL.smtp.host";

  /** Mail - SMTP port */
  public static final String MAIL_SMTP_PORT = "MAIL.smtp.port";

  /** Mail - SMTP username */
  public static final String MAIL_SMTP_USERNAME = "MAIL.smtp.username";

  /** Mail - SMTP password */
  public static final String MAIL_SMTP_PASSWORD = "MAIL.smtp.password";

  public static final String MAIL_SMTP_RECIPIENTS = "MAIL.smtp.recipients";

  public static final String MAIL_SMTP_AUTH = "MAIL.smtp.auth";
  
  public static final String JS_VERSION = "JS.version";

  public static final String REPORT_DAILYMAINT_RECIPIENTS_MECH = "REPORT.dailyMaint.recipients.mech";
  public static final String REPORT_DAILYMAINT_RECIPIENTS_VOGUE = "REPORT.dailyMaint.recipients.vogue";
  public static final String REPORT_DAILYMAINT_RECIPIENTS_VOGUE_CC = "REPORT.dailyMaint.recipients.vogue.cc";

  public static final String SYS_PASSWORD_RULE_MIN = "SYS.password.rule.length.min";
  public static final String SYS_PASSWORD_RULE_MAX = "SYS.password.rule.length.max";
  public static final String SYS_PASSWORD_RULE_NUMBER = "SYS.password.rule.number";
  public static final String SYS_PASSWORD_RULE_UPPER_ENG = "SYS.password.rule.upper.eng";
  public static final String SYS_PASSWORD_RULE_LOWER_ENG = "SYS.password.rule.lower.eng";
  public static final String SYS_PASSWORD_RULE_SPECIAL = "SYS.password.rule.special";

  public static final String AUTO_SCHEDULE_MAX_SCHEDULE_DATE = "AUTO_SCHEDULE.maxScheduleDate";

  /** PM_CHECKLIST - vogue's signature */
  public static final String PM_CHECKLIST_USER_SIGN_ID = "PM_CHECKLIST.vogueSign";

  public static final String LCTS_FLOOR = "LCTS.floor";

  /** Laser marking (Bag2.py TCP protocol): host for GET/POST defaults */
  public static final String LASER_PRINT_HOST = "LASER_PRINT.host";

  /** Laser marking TCP port (default 45678) */
  public static final String LASER_PRINT_PORT = "LASER_PRINT.port";

  /** Comma-separated BOM item codes shown on /laserPrint job list (e.g. PP1175); blank = no filter (all packaging JOs) */
  public static final String LASER_PRINT_ITEM_CODES = "LASER_PRINT.itemCodes";

  /** JSON: last laser TCP send where printer returned receive (job order no., lot, itemId/stockInLineId, etc.) */
  public static final String LASER_PRINT_LAST_RECEIVE_SUCCESS = "LASER_PRINT.lastReceiveSuccess";

}
