using MudBlazor;
using static HotelPms.Client.Blazor.Util.SystemEnum;
using System.Xml.Linq;
using System.Text.Json.Serialization;
using HotelPms.Data.UseInfo;
using HotelPms.Share.Util;
using Microsoft.JSInterop;
using HotelPms.Client.Blazor.Util;
using Microsoft.VisualBasic;
using System.Globalization;
namespace HotelPms.Client.Blazor.Models
{
///
/// 売上伝票入力情報
///
public class SaleInputRow : EditRow
{
public enum ColType : int
{
///
/// 部屋タイプ(ReadOnly 全部選択時表示・部屋選択時非表示)
///
RoomType = 0,
///
/// 部屋番号(ReadOnly 全部選択時表示・部屋選択時非表示)
///
RoomID,
///
/// 科目名称
///
ItemName,
///
/// 人数
///
PersonCount,
///
/// 内女
///
Woman,
///
/// 単価
///
UnitPrice,
///
/// 割引(Endキーより、理由や%設定)
///
DiscountSummary,
///
/// 合計金額
///
TotalSummary,
///
/// 集計日
///
SumDate,
///
/// 頁
///
Page,
///
/// 詳細(ボタン)
///
Detail,
///
/// ソートキー(非表示)
///
SortKey,
}
public SaleInputRow()
{
Cells.Add(new ViewModel.ValidField { Name = ColType.RoomType.ToString() });
Cells.Add(new ViewModel.ValidField { Name = ColType.RoomID.ToString() });
Cells.Add(new ViewModel.ValidField { Name = ColType.ItemName.ToString(), MaxLenth = 50, ShowStyle = EShowStyle.ShowList });
Cells.Add(new ViewModel.ValidField { Name = ColType.PersonCount.ToString(), MaxLenth = 3, InputChar = EInputChar.Num });
Cells.Add(new ViewModel.ValidField { Name = ColType.Woman.ToString(), MaxLenth = 3, InputChar = EInputChar.Num });
Cells.Add(new ViewModel.ValidField { Name = ColType.UnitPrice.ToString(), MaxLenth = 19, InputChar = EInputChar.Num });
Cells.Add(new ViewModel.ValidField { Name = ColType.DiscountSummary.ToString(), MaxLenth = 19, InputChar = EInputChar.Num, ShowStyle = EShowStyle.ShowList });
Cells.Add(new ViewModel.ValidField { Name = ColType.TotalSummary.ToString(), MaxLenth = 19, InputChar = EInputChar.Num });
Cells.Add(new ViewModel.ValidField { Name = ColType.SumDate.ToString(), MaxLenth = 10, InputChar = EInputChar.Num | EInputChar.Slash, ShowStyle = EShowStyle.ShowList });
Cells.Add(new ViewModel.ValidField { Name = ColType.Page.ToString(), MaxLenth = 3, InputChar = EInputChar.Num });
Cells.Add(new ViewModel.ValidField { Name = ColType.Detail.ToString(), MaxLenth = 3, InputChar = EInputChar.Num });
Cells.Add(new ViewModel.ValidField { Name = ColType.SortKey.ToString(), Disabled = true });
}
protected override void Dispose(bool disposing)
{
if (!disposing)
{
base.Dispose(false);
}
}
///
/// 関連伝票情報
///
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public List DataList { get; set; } = new List();
///
/// 一番若い伝票情報返す
///
///
public Sale GetSale()
{
if (DataList.Count == 0) { return null; }
return DataList[0];
}
///
/// 値変更あり
///
///
///
public override bool IsValueChanged(int index, string inputText)
{
if (index == (int)ColType.ItemName)
{
if (DataList.Count == 0) { return inputText.Length > 0; } //新規行の場合、入力したら、変更あり
return inputText.CompareTo(DataList[0].ItemName) != 0;
}
else
{
return false;
}
}
///
/// DOMの表示値
///
///
///
///
public async Task GetInputValue(int index, IJSRuntime JSRuntime)
{
return await Cells[index].Ref.GetInputValue(JSRuntime);
}
///
/// 表示の値の復元
///
///
public void RestoreText(SaleInputRow.ColType index)
{
SetCellText((int)index, GetDataField((int)index));
}
///
/// データの値
///
///
///
public string GetDataField(int index)
{
if (index == (int)ColType.ItemName)
{
return DataList.Count == 0 ? string.Empty : DataList[0].ItemName;
}
else
{
return string.Empty;
}
}
public void SetItem(HotelPms.Data.Master.Item item)
{
foreach (Sale sale in DataList)
{
sale.ItemID = item.ID;
sale.ItemName = item.Name;
sale.ItemKind = item.Kind;
}
}
public void SetDataField(int index, string inputText)
{
if (index == (int)ColType.ItemName)
{
foreach (Sale item in DataList)
{
item.ItemName = inputText;
}
}
else
{
}
}
///
/// 売上伝票より表示データの作成
///
///
public async Task Add(Data.UseInfo.Sale item)
{
try
{
DataList.Add(item);
SetCellText((int)ColType.RoomType, await MasterCore.GetRoomTypeName((item.Parent as Data.UseInfo.UseRoom).RoomTypeID));
SetCellText((int)ColType.RoomID, (item.Parent as Data.UseInfo.UseRoom).RoomID.ToString());
SetCellText((int)ColType.ItemName, item.ItemName);
SetCellText((int)ColType.PersonCount, item.PersonCount.ToString());
SetCellText((int)ColType.Woman, item.InFemale.ToString());
SetCellText((int)ColType.UnitPrice, item.Price.ToText("N0"));
SetCellText((int)ColType.DiscountSummary, item.DiscountSummary.ToText("N0"));
SetCellText((int)ColType.TotalSummary, item.TotalSummary.ToText("N0"));
SetCellText((int)ColType.SumDate, item.UseDate.ToText());
SetCellText((int)ColType.Page, item.ReceiptPage.ToString());
return true;
}
catch
{
return false;
}
}
}
}