using customTypes;
|
using HotelPms.Client.Blazor.Models;
|
using HotelPms.Client.Blazor.Pages.UseDetail;
|
using HotelPms.Client.Blazor.Shared;
|
using HotelPms.Client.Blazor.Util;
|
using HotelPms.Data.Common;
|
using HotelPms.Data.UseInfo;
|
using HotelPms.DataAccessGrpc.Client;
|
using HotelPms.Share.IO;
|
using HotelPms.Share.Util;
|
using Microsoft.JSInterop;
|
using System.ComponentModel;
|
using System.Text;
|
using System.Text.Json;
|
using static HotelPms.Client.Blazor.Util.SystemEnum;
|
|
namespace HotelPms.Client.Blazor.ViewModel;
|
|
/// <summary>
|
/// 利用情報詳細入力画面用
|
/// </summary>
|
public class UseInput : ValidModelEx
|
{
|
public enum GroupKey : int
|
{
|
[Description("予約情報")]
|
Resv = 0,
|
[Description("個人情報")]
|
Person,
|
[Description("会社情報")]
|
Company,
|
[Description("その他")]
|
Other,
|
[Description("予約追加情報")]
|
ResvAdd,
|
[Description("個人追加情報")]
|
PersonAdd,
|
[Description("会社追加情報")]
|
CompanyAdd,
|
[Description("顧客追加情報")]
|
CustomerAdd,
|
}
|
|
/// <summary>
|
/// 利用情報
|
/// </summary>
|
public Data.UseInfo.Use Use { get; set; }
|
|
/// <summary>
|
/// 現在選択されている利用明細
|
/// </summary>
|
public Data.UseInfo.UseDetail UseDetail { get; set; }
|
|
/// <summary>
|
/// 現在の伝票表示区分
|
/// </summary>
|
public ESaleDispType SaleDispType { get; set; } = ESaleDispType.Normal;
|
|
/// <summary>
|
/// 現在選択されている利用日
|
/// yyyy/MM/dd
|
/// </summary>
|
public string UseDate { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 現在選択されている利用日の泊数
|
/// </summary>
|
public int CurrentStay { get; set; } = 1;
|
|
/// <summary>
|
/// 部屋タイプ情報入力
|
/// </summary>
|
public IEnumerable<RoomTypeInputRow> RoomTypeList { get; set; } = new List<RoomTypeInputRow>();
|
|
private UseRoomRow m_SelUseRoomRow = null;
|
|
/// <summary>
|
/// 選択されている利用部屋
|
/// </summary>
|
public UseRoomRow SelUseRoomRow
|
{
|
get { return m_SelUseRoomRow; }
|
set
|
{
|
m_SelUseRoomRow = value;
|
EnvironmentSetting.Debug($"Change:{m_SelUseRoomRow.RoomID}");
|
}
|
}
|
|
/// <summary>
|
/// 利用部屋一覧
|
/// </summary>
|
public IEnumerable<UseRoomRow> UseRoomList { get; set; } = new List<UseRoomRow>();
|
|
/// <summary>
|
/// 伝票一覧
|
/// </summary>
|
public IEnumerable<SaleInputRow> SaleList { get; set; } = new List<SaleInputRow>();
|
|
/// <summary>
|
/// 入金一覧
|
/// </summary>
|
public IEnumerable<string> PayList { get; set; } = new List<string>();
|
|
/// <summary>
|
/// グループ毎返す
|
/// </summary>
|
/// <param name="key"></param>
|
/// <returns></returns>
|
public List<ValidField> GetGroup(GroupKey key)
|
{
|
List<ValidField> list = new List<ValidField>();
|
if (key == GroupKey.Resv) { for (int i = 0; i <= 11; i++) { list.Add(Fields[i]); } }
|
else if (key == GroupKey.Person) { for (int i = 12; i <= 19; i++) { list.Add(Fields[i]); } }
|
else if (key == GroupKey.Company) { for (int i = 20; i <= 25; i++) { list.Add(Fields[i]); } }
|
else if (key == GroupKey.Other) { for (int i = 26; i <= 32; i++) { list.Add(Fields[i]); } }
|
return list;
|
}
|
|
/// <summary>
|
/// 初期化
|
/// </summary>
|
public UseInput(IJSRuntime js) : base(js)
|
{
|
// 0 ~ 10
|
Add(new ValidField() { Name = "ResvNo", Caption = "予約番号", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "ResvType", Caption = "予約区分", Required = true, MaxLenth = 2, InputChar = EInputChar.Num, DispNameEnabled = true, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 6 });
|
Add(new ValidField() { Name = "GroupType", Caption = "団体区分", Required = true, MaxLenth = 2, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispNameEnabled = true, DispWidthUnit = 6 });
|
Add(new ValidField() { Name = "RoomID", Caption = "部屋No", MaxLenth = 7, InputChar = EInputChar.Num, WidthUnit = 5 });
|
Add(new ValidField() { Name = "SalesLoginID", Caption = "営業", MaxLenth = 7, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, WidthUnit = 7, DispNameEnabled = true, DispWidthUnit = 8 });
|
Add(new ValidField() { Name = "CinDate", Caption = "チェックイン日", MaxLenth = 10, InputChar = EInputChar.Num | EInputChar.Slash, InputStyle = EInputStyle.Date });
|
Add(new ValidField() { Name = "CinTime", Caption = "到着時間", MaxLenth = 5, InputChar = EInputChar.Num | EInputChar.Colon, InputStyle = EInputStyle.Time });
|
Add(new ValidField() { Name = "Stay", Caption = "泊数", MaxLenth = 3, InputChar = EInputChar.Num, WidthUnit = 6, NewLine = true });
|
Add(new ValidField() { Name = "CoutDate", Caption = "チェックアウト日", MaxLenth = 10, InputChar = EInputChar.Num | EInputChar.Slash, InputStyle = EInputStyle.Date });
|
Add(new ValidField() { Name = "CoutTime", Caption = "出発時間", MaxLenth = 5, InputChar = EInputChar.Num | EInputChar.Colon, InputStyle = EInputStyle.Time });
|
Add(new ValidField() { Name = "GroupName", Caption = "団体名称", MaxLenth = 50 });
|
Add(new ValidField() { Name = "GroupKana", Caption = "団体カナ", MaxLenth = 50 });
|
|
// 11 ~ 18
|
Add(new ValidField() { Name = "MemberNo", Caption = "会員番号", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "Tel", Caption = "電話番号", MaxLenth = 50, InputChar = EInputChar.Num | EInputChar.Subtract, WidthUnit = 8 });
|
Add(new ValidField() { Name = "TelKind", Caption = "区分", Required = true, MaxLenth = 50, ShowStyle = EShowStyle.ShowList, ReadOnly = true, WidthUnit = 4 });
|
Add(new ValidField() { Name = "Name", Required = true, Caption = "氏名", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "Kana", Required = true, Caption = "カナ", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "ResvName", Caption = "予約者名", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "ResvKana", Caption = "カナ", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "ResvTel", Caption = "電話番号", InputChar = EInputChar.Num | EInputChar.Subtract, MaxLenth = 50, WidthUnit = 12 });
|
|
// 19 ~ 24
|
Add(new ValidField() { Name = "CorpID", Caption = "法人顧客", MaxLenth = 7, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, WidthUnit = 12 });
|
Add(new ValidField() { Name = "CorpName", Caption = "会社名", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "CorpKana", Caption = "カナ", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "CorpTel", Caption = "会社電話", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "CorpFax", Caption = "会社FAX", MaxLenth = 50, WidthUnit = 12 });
|
Add(new ValidField() { Name = "ReceiptName", Caption = "宛名", MaxLenth = 50, InputChar = EInputChar.None, WidthUnit = 12 });
|
|
// 25 ~ 31
|
Add(new ValidField() { Name = "AreaID", Caption = "地域", MaxLenth = 7, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 8, DispNameEnabled = true, WidthUnit = 12 });
|
Add(new ValidField() { Name = "CharacterType", Caption = "人物フラグ", MaxLenth = 7, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 8, DispNameEnabled = true, WidthUnit = 12 });
|
Add(new ValidField() { Name = "CustomerRig", Caption = "顧客登録", MaxLenth = 1, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 8, DispNameEnabled = true, WidthUnit = 12 });
|
Add(new ValidField() { Name = "AgentID", Caption = "エージェント", MaxLenth = 7, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 8, DispNameEnabled = true, WidthUnit = 12 });
|
Add(new ValidField() { Name = "AgentBranchID", Caption = "支店", MaxLenth = 7, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 8, DispNameEnabled = true, WidthUnit = 12 });
|
Add(new ValidField() { Name = "PlanID", Caption = "プラン", MaxLenth = 7, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 8, DispNameEnabled = true, WidthUnit = 12 });
|
Add(new ValidField() { Name = "RoomAssign", Caption = "部屋指定", MaxLenth = 1, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList, DispWidthUnit = 8, DispNameEnabled = true, WidthUnit = 12 });
|
|
// 予約追加情報(自由集計)
|
|
// 個人追加情報
|
Add(new ValidField() { Name = "ZipCode", Caption = "郵便番号", MaxLenth = 50, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "Prefecture", Caption = "都道府県", MaxLenth = 20, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "Address2", Caption = "市区町村", MaxLenth = 50, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "Address3", Caption = "町域", MaxLenth = 50, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "Address4", Caption = "番地", MaxLenth = 100, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "Mail", Caption = "メール", MaxLenth = 100, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "PassportNo", Caption = "パスポート", MaxLenth = 50, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "Sex", Caption = "性別", MaxLenth = 2, InputChar = EInputChar.Num });
|
Add(new ValidField() { Name = "BirthDay", Caption = "誕生日", MaxLenth = 10, InputChar = EInputChar.Num | EInputChar.Slash, InputStyle = EInputStyle.Date });
|
Add(new ValidField() { Name = "Anniversary", Caption = "記念日", MaxLenth = 10, InputChar = EInputChar.Num | EInputChar.Slash, InputStyle = EInputStyle.Date });
|
|
// 会社追加情報
|
//Add(new ValidField() { Name = "ResvTel", Caption = "所属", MaxLenth = 50 });
|
//Add(new ValidField() { Name = "ResvTel", Caption = "役職", MaxLenth = 50 });
|
Add(new ValidField() { Name = "CorpZipCode", Caption = "法人郵便番号", MaxLenth = 50, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "CorpPrefecture", Caption = "都道府県", MaxLenth = 20, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "CorpAddress2", Caption = "市区町村", MaxLenth = 50, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "CorpAddress3", Caption = "町域", MaxLenth = 50, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "CorpAddress4", Caption = "番地", MaxLenth = 100, InputChar = EInputChar.None });
|
Add(new ValidField() { Name = "CorpMemo", Caption = "法人備考", MaxLenth = 500, InputChar = EInputChar.None });
|
|
// 顧客追加情報 (顧客自由集計 GroupID使用)
|
|
|
//追加電話番号はGridリストへ
|
|
// 複数想定(リスト)
|
Add(new ValidField() { Name = "Memo", Caption = "メモ", MaxLenth = 1000 });
|
Add(new ValidField() { Name = "Remark", Caption = "備考", MaxLenth = 1000 });
|
}
|
|
/// <summary>
|
/// 画面初期化
|
/// </summary>
|
public void InitGrid()
|
{
|
InitRoomTypeInput();
|
}
|
|
public async void InitRoomTypeInput()
|
{
|
List<RoomTypeInputRow> list = RoomTypeList as List<RoomTypeInputRow>;
|
List<UseRoomRow> roomList = UseRoomList as List<UseRoomRow>;
|
|
SortedDictionary<int, RoomTypeInputRow> typeDt = new SortedDictionary<int, RoomTypeInputRow>(); //まとめる
|
//UseRoomより取得する
|
List<Data.UseInfo.UseRoom> useRoomList = Use.GetUseRoomList(UseDate);
|
foreach (var item in useRoomList)
|
{
|
RoomTypeInputRow row;
|
if (!typeDt.TryGetValue(item.RoomTypeID, out row))
|
{
|
row = new();
|
row.SetCellText((int)RoomTypeInputRow.ColType.ID, item.RoomTypeID.ToString());
|
row.SetCellText((int)RoomTypeInputRow.ColType.Name, await MasterCore.GetRoomTypeName(item.RoomTypeID));
|
row.SetCellText((int)RoomTypeInputRow.ColType.Count, "0");
|
typeDt.Add(item.RoomTypeID, row);
|
}
|
row.SetCellText((int)RoomTypeInputRow.ColType.Count, CConvert.ToString(CConvert.ToInt(row.GetCellText((int)RoomTypeInputRow.ColType.Count)) + 1));
|
row.DataList.Add(item);
|
|
//部屋一覧
|
UseRoomRow roomRow = new UseRoomRow
|
{
|
RoomID = item.RoomID.ToString(),
|
Name = item.UseAlloList.Count == 0 ? string.Empty : item.UseAlloList[0].Person?.Name,
|
Representative = true,
|
UseStatus = (item.Parent as Data.UseInfo.UseDetail).UseStatus.ToString(),
|
};
|
roomRow.UseRoom = item;
|
roomList.Add(roomRow);
|
}
|
|
//常に空行追加
|
list.Add(new());
|
|
//部屋一覧初期選択データ
|
if (roomList.Count > 0)
|
{
|
if (roomList.Count > 1)
|
{
|
UseRoomRow roomRow = new UseRoomRow
|
{
|
RoomID = "",
|
Name = "(一括)",
|
Representative = false,
|
UseStatus = "",
|
};
|
roomRow.UseRoom = roomList[0].UseRoom;
|
roomList.Insert(0, roomRow);
|
}
|
|
SelUseRoomRow = roomList[0];
|
}
|
}
|
|
/// <summary>
|
/// 入力項目→Data
|
/// </summary>
|
/// <param name="field"></param>
|
public void SetDataField(ValidField field)
|
{
|
#region 利用情報
|
|
if (field.Name == "ResvType")
|
{
|
Use.ResvType = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "GroupType")
|
{
|
Use.GroupType = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "GroupName")
|
{
|
Use.GroupName = field.Text;
|
}
|
else if (field.Name == "GroupKana")
|
{
|
Use.GroupKana = field.Text;
|
}
|
|
#endregion
|
|
#region 利用明細情報
|
|
if (UseDetail != null)
|
{
|
if (field.Name == "ResvNo")
|
{
|
UseDetail.ResvNo = field.Text;
|
}
|
else if (field.Name == "SalesLoginID")
|
{
|
UseDetail.SalesLoginID = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "CinDate")
|
{
|
UseDetail.CinDate = new customTypes.Date(field.Text);
|
}
|
else if (field.Name == "CinTime")
|
{
|
UseDetail.CinTime = CConvert.ToInt(field.Text.Replace(":", string.Empty));
|
}
|
else if (field.Name == "Stay")
|
{
|
UseDetail.Stay = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "CoutDate")
|
{
|
UseDetail.CoutDate = new customTypes.Date(field.Text);
|
}
|
else if (field.Name == "CoutTime")
|
{
|
UseDetail.CoutTime = CConvert.ToInt(field.Text.Replace(":", string.Empty));
|
}
|
}
|
|
#endregion
|
|
if (field.Name == "MemberNo")
|
{
|
//Use.MemberNo = field.Text;
|
}
|
else if (field.Name == "Tel")
|
{
|
//Use.Tel = field.Text;
|
}
|
else if (field.Name == "TelKind")
|
{
|
//Use.TelKind = field.Text;
|
}
|
else if (field.Name == "Name")
|
{
|
//Use.Name = field.Text;
|
}
|
else if (field.Name == "Kana")
|
{
|
//Use.Kana = field.Text;
|
}
|
else if (field.Name == "ResvName")
|
{
|
//Use.ResvName = field.Text;
|
}
|
else if (field.Name == "ResvKana")
|
{
|
//Use.ResvKana = field.Text;
|
}
|
else if (field.Name == "ResvTel")
|
{
|
//Use.ResvTel = field.Text;
|
}
|
else if (field.Name == "CorpID")
|
{
|
//Use.CorpID = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "CorpName")
|
{
|
//Use.CorpName = field.Text;
|
}
|
else if (field.Name == "CorpKana")
|
{
|
//Use.CorpKana = field.Text;
|
}
|
else if (field.Name == "CorpTel")
|
{
|
//Use.CorpTel = field.Text;
|
}
|
else if (field.Name == "CorpFax")
|
{
|
//Use.CorpFax = field.Text;
|
}
|
else if (field.Name == "ReceiptName")
|
{
|
//Use.ReceiptName = field.Text;
|
}
|
else if (field.Name == "AreaID")
|
{
|
//Use.AreaID = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "CharacterType")
|
{
|
//Use.CharacterType = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "CustomerRig")
|
{
|
//Use.CustomerRig = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "AgentID")
|
{
|
//Use.AgentID = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "AgentBranchID")
|
{
|
//Use.AgentBranchID = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "PlanID")
|
{
|
//Use.PlanID = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "RoomAssign")
|
{
|
//Use.RoomAssign = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "ZipCode")
|
{
|
//Use.ZipCode = field.Text;
|
}
|
else if (field.Name == "Prefecture")
|
{
|
//Use.Prefecture = field.Text;
|
}
|
else if (field.Name == "Address2")
|
{
|
//Use.Address2 = field.Text;
|
}
|
else if (field.Name == "Address3")
|
{
|
//Use.Address3 = field.Text;
|
}
|
else if (field.Name == "Address4")
|
{
|
//Use.Address4 = field.Text;
|
}
|
else if (field.Name == "Mail")
|
{
|
//Use.Mail = field.Text;
|
}
|
else if (field.Name == "PassportNo")
|
{
|
//Use.PassportNo = field.Text;
|
}
|
else if (field.Name == "Sex")
|
{
|
//Use.Sex = CConvert.ToInt(field.Text);
|
}
|
else if (field.Name == "BirthDay")
|
{
|
//Use.BirthDay = field.Text;
|
}
|
else if (field.Name == "Anniversary")
|
{
|
//Use.Anniversary = field.Text;
|
}
|
else if (field.Name == "CorpZipCode")
|
{
|
//Use.CorpZipCode = field.Text;
|
}
|
else if (field.Name == "CorpPrefecture")
|
{
|
//Use.CorpPrefecture = field.Text;
|
}
|
else if (field.Name == "CorpAddress2")
|
{
|
//Use.CorpAddress2 = field.Text;
|
}
|
else if (field.Name == "CorpAddress3")
|
{
|
//Use.CorpAddress3 = field.Text;
|
}
|
else if (field.Name == "CorpAddress4")
|
{
|
//Use.CorpAddress4 = field.Text;
|
}
|
else if (field.Name == "CorpMemo")
|
{
|
//Use.CorpMemo = field.Text;
|
}
|
else if (field.Name == "Memo")
|
{
|
//Use.Memo = field.Text;
|
}
|
else if (field.Name == "Remark")
|
{
|
//Use.Remark = field.Text;
|
}
|
}
|
|
/// <summary>
|
/// 現在表示されている利用明細を画面へ表示する
|
/// </summary>
|
public void SetUseDetailToForm()
|
{
|
//利用情報
|
SetField("ResvType", Use.ResvType.ToString(), CConvert.GetEnumDescription<EResvType>(Use.ResvType));
|
SetField("GroupType", Use.GroupType.ToString(), CConvert.GetEnumDescription<EGroupType>(Use.GroupType));
|
SetField("GroupName", Use.GroupName);
|
SetField("GroupKana", Use.GroupKana);
|
|
//利用明細
|
SetField("ResvNo", UseDetail.ResvNo.ToString());
|
SetField("SalesLoginID", UseDetail.SalesLoginID.ToString(), string.Empty);
|
SetField("CinDate", UseDetail.CinDate.ToText());
|
SetField("CinTime", CConvert.ToTime(UseDetail.CinTime));
|
SetField("Stay", UseDetail.Stay.ToString());
|
SetField("CoutDate", UseDetail.CoutDate.ToText());
|
SetField("CoutTime", CConvert.ToTime(UseDetail.CoutTime));
|
|
if (UseDetail.UseRoomList.Count > 0)
|
{
|
HotelPms.Data.UseInfo.UseRoom useRoom = UseDetail.UseRoomList[0];
|
SetField("RoomID", useRoom.RoomID.ToString());
|
|
//利用者特定
|
if (useRoom.UseAlloList.Count > 0 && useRoom.UseAlloList[0].Person != null)
|
{
|
HotelPms.Data.UseInfo.UsePerson usePerson = useRoom.UseAlloList[0].Person;
|
SetField("MemberNo", usePerson.MemberNo);
|
SetField("Name", usePerson.Name);
|
SetField("Kana", usePerson.Kana);
|
SetField("ReceiptName", usePerson.ReceiptName);
|
SetField("CorpID", usePerson.CorpID.ToString());
|
SetField("CorpName", usePerson.CorpName);
|
SetField("CorpKana", usePerson.CorpKana);
|
|
string tel = string.Empty;
|
int telKind = 0;
|
string corpTel = string.Empty;
|
string corpFax = string.Empty;
|
if (usePerson.TelList.Count > 0)
|
{
|
foreach (HotelPms.Data.UseInfo.UsePersonTel personTel in usePerson.TelList)
|
{
|
if ((personTel.Kind == (int)ETelKind.Tel || personTel.Kind == (int)ETelKind.Mobile) && tel.Length == 0)
|
{
|
tel = personTel.Tel;
|
telKind = personTel.Kind;
|
}
|
else if (personTel.Kind == (int)ETelKind.CorpTel && corpTel.Length == 0)
|
{
|
corpTel = personTel.Tel;
|
}
|
else if (personTel.Kind == (int)ETelKind.CorpFax && corpFax.Length == 0)
|
{
|
corpFax = personTel.Tel;
|
}
|
}
|
}
|
|
SetField("Tel", tel);
|
if (tel.Length == 0)
|
{
|
SetField("TelKind", string.Empty, string.Empty);
|
}
|
else
|
{
|
SetField("TelKind", telKind.ToString(), ((ETelKind)telKind).ToDescription());
|
}
|
SetField("CorpTel", corpTel);
|
SetField("CorpFax", corpFax);
|
}
|
}
|
|
//予約者情報
|
if (UseDetail.ResvPerson != null)
|
{
|
SetField("ResvName", UseDetail.ResvPerson.Name.ToString());
|
SetField("ResvKana", UseDetail.ResvPerson.Kana.ToString());
|
if (UseDetail.ResvPerson.TelList.Count > 0)
|
{
|
SetField("ResvTel", UseDetail.ResvPerson.TelList[0].Tel.ToString());
|
}
|
else
|
{
|
SetField("ResvTel", string.Empty);
|
}
|
}
|
}
|
|
/// <summary>
|
/// 自動ソースコード生成
|
/// </summary>
|
/// <returns></returns>
|
public string GetAutoCode()
|
{
|
StringBuilder text = new StringBuilder();
|
foreach (ViewModel.ValidField item in Fields)
|
{
|
if (item.Index > 0) { text.Append("else "); }
|
text.AppendLine($"if (sender.Name == \"{item.Name}\")");
|
text.AppendLine("{");
|
if (item.InputChar == EInputChar.Num)
|
{
|
text.AppendLine($" //Use.{item.Name} = CConvert.ToInt(sender.Text);");
|
}
|
else
|
{
|
text.AppendLine($" //Use.{item.Name} = sender.Text;");
|
}
|
text.AppendLine("}");
|
}
|
return text.ToString();
|
}
|
|
/// <summary>
|
/// 利用情報新規作成
|
/// </summary>
|
/// <returns></returns>
|
public async Task<bool> CreateDefault(Date cinDate, int stay)
|
{
|
try
|
{
|
Use = new()
|
{
|
ID = await EnvironmentSetting.GetSeq(ESeqType.Use),
|
ResvType = (int)EResvType.Reserve,
|
GroupType = (int)EGroupType.Person,
|
ReceiptPrtWay = 0,
|
PayWay = 1,
|
//CreateDate = CConvert.ToTimestamp(DateTime.Now.Date),
|
//CreateLoginID = 1,
|
//CreatePcName = Environment.MachineName,
|
//CreateClass = 1,
|
//UpdateDate = CConvert.ToTimestamp(DateTime.Now),
|
//UpdateLoginID = 789,
|
//UpdatePcName = Environment.MachineName,
|
//UpdateClass = 2
|
};
|
|
#region 代表利用明細
|
|
Data.UseInfo.UseDetail useDetail = new()
|
{
|
ID = Use.ID,
|
DetailID = await EnvironmentSetting.GetSeq(ESeqType.UseDetail),
|
UseStatus = (int)EUseStatus.Resv,
|
SubStatus = 0,
|
ExtenStatus = 0,
|
CinDate = cinDate,
|
CinTime = 1500,
|
Stay = stay,
|
CoutDate = cinDate.Add(stay),
|
CoutTime = 1000,
|
ResvType = Use.ResvType,
|
//CreateDate = Use.CreateDate,
|
//CreateLoginID = Use.CreateLoginID,
|
//CreatePcName = Use.CreatePcName,
|
//CreateClass = Use.CreateClass,
|
//UpdateDate = Use.UpdateDate,
|
//UpdateLoginID = Use.UpdateLoginID,
|
//UpdatePcName = Use.UpdatePcName,
|
//UpdateClass = Use.UpdateClass
|
};
|
Use.DetailList.Add(useDetail);
|
UseDetail = useDetail; //現在選択されている利用明細
|
|
#endregion
|
|
return true;
|
}
|
catch (Exception ex)
|
{
|
OperationLog.Instance.WriteLog($"CreateDefault:{ex.Message}");
|
return false;
|
}
|
}
|
|
public void RemoveUseRoom(List<Data.UseInfo.UseRoom> list, int count)
|
{
|
try
|
{
|
//Parentが必要!!
|
int i = 0;
|
List<Data.UseInfo.UseRoom> delList = new List<Data.UseInfo.UseRoom>();
|
foreach(var item in list)
|
{
|
delList.Add(item);
|
i++;
|
if (i == count) { break; }
|
}
|
|
foreach(var item in delList)
|
{
|
(item.Parent as Data.UseInfo.UseDetail).UseRoomList.Remove(item);
|
list.Remove(item);
|
}
|
}
|
catch (Exception ex)
|
{
|
OperationLog.Instance.WriteLog($"RemoveUseRoom:{ex.Message}");
|
}
|
}
|
|
/// <summary>
|
/// 部屋を作成する
|
/// </summary>
|
/// <param name="typeID"></param>
|
/// <param name="kind"></param>
|
/// <returns></returns>
|
public async Task<Data.UseInfo.UseRoom> CreateUseRoom(int typeID, int kind)
|
{
|
try
|
{
|
Data.UseInfo.UseDetail detail = Use.GetDetailWithoutUseRoom(UseDate);
|
if (detail == null)
|
{
|
detail = new()
|
{
|
ID = Use.ID,
|
DetailID = await EnvironmentSetting.GetSeq(ESeqType.UseDetail),
|
UseStatus = (int)EUseStatus.Resv,
|
SubStatus = 0,
|
ExtenStatus = 0,
|
CinDate = new(UseDate),
|
CinTime = 1500,
|
Stay = 1,
|
CoutDate = new customTypes.Date(UseDate).Add(1),
|
CoutTime = 1000,
|
ResvType = Use.ResvType,
|
};
|
Use.DetailList.Add(detail);
|
}
|
else
|
{
|
detail.SetUseRange(UseDate); // 利用期間以外だったら、伸びる
|
}
|
|
//UseRoom作成
|
Data.UseInfo.UseRoom useRoom = new()
|
{
|
ID = Use.ID,
|
DetailID = detail.DetailID,
|
UseDate = new(UseDate),
|
RoomTypeID = typeID,
|
RoomKind = kind,
|
};
|
detail.UseRoomList.Add(useRoom);
|
useRoom.Parent = detail;
|
|
//基本伝票(部屋料金)作成
|
HotelPms.Data.Master.Item item = await MasterCore.GetBaseItem(useRoom.RoomTypeID, 0, UseDate);
|
int saleID = await EnvironmentSetting.GetSeq(ESeqType.Sale);
|
int taxRate = await EnvironmentSetting.GetTaxRate(useRoom.UseDate.ToText(), item.TaxType);
|
var saleItem = useRoom.AddSaleByItem(saleID, taxRate, item);
|
|
//料金の画面表示
|
SaleInputRow saleRow = new();
|
await saleRow.Add(saleItem);
|
(SaleList as List<SaleInputRow>).Add(saleRow);
|
return useRoom;
|
}
|
catch (Exception ex)
|
{
|
OperationLog.Instance.WriteLog($"CreateUseRoom:{ex.Message}");
|
return null;
|
}
|
}
|
}
|