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;
///
/// 利用情報詳細入力画面用
///
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,
}
///
/// 利用情報
///
public Data.UseInfo.Use Use { get; set; }
///
/// 現在選択されている利用明細
///
public Data.UseInfo.UseDetail UseDetail { get; set; }
///
/// 現在の伝票表示区分
///
public ESaleDispType SaleDispType { get; set; } = ESaleDispType.Normal;
///
/// 現在選択されている利用日
/// yyyy/MM/dd
///
public string UseDate { get; set; } = string.Empty;
///
/// 現在選択されている利用日の泊数
///
public int CurrentStay { get; set; } = 1;
///
/// 部屋タイプ情報入力
///
public IEnumerable RoomTypeList { get; set; } = new List();
private UseRoomRow m_SelUseRoomRow = null;
///
/// 選択されている利用部屋
///
public UseRoomRow SelUseRoomRow
{
get { return m_SelUseRoomRow; }
set
{
m_SelUseRoomRow = value;
EnvironmentSetting.Debug($"Change:{m_SelUseRoomRow.RoomID}");
}
}
///
/// 利用部屋一覧
///
public IEnumerable UseRoomList { get; set; } = new List();
///
/// 伝票一覧
///
public IEnumerable SaleList { get; set; } = new List();
///
/// 入金一覧
///
public IEnumerable PayList { get; set; } = new List();
///
/// グループ毎返す
///
///
///
public List GetGroup(GroupKey key)
{
List list = new List();
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;
}
///
/// 初期化
///
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 });
}
///
/// 画面初期化
///
public void InitGrid()
{
InitRoomTypeInput();
}
public async void InitRoomTypeInput()
{
List list = RoomTypeList as List;
List roomList = UseRoomList as List;
SortedDictionary typeDt = new SortedDictionary(); //まとめる
//UseRoomより取得する
List 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];
}
}
///
/// 入力項目→Data
///
///
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;
}
}
///
/// 現在表示されている利用明細を画面へ表示する
///
public void SetUseDetailToForm()
{
//利用情報
SetField("ResvType", Use.ResvType.ToString(), CConvert.GetEnumDescription(Use.ResvType));
SetField("GroupType", Use.GroupType.ToString(), CConvert.GetEnumDescription(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);
}
}
}
///
/// 自動ソースコード生成
///
///
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();
}
///
/// 利用情報新規作成
///
///
public async Task 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 list, int count)
{
try
{
//Parentが必要!!
int i = 0;
List delList = new List();
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}");
}
}
///
/// 部屋を作成する
///
///
///
///
public async Task 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).Add(saleRow);
return useRoom;
}
catch (Exception ex)
{
OperationLog.Instance.WriteLog($"CreateUseRoom:{ex.Message}");
return null;
}
}
}