using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Data.SqlClient; using System.Text; using HotelPms.Share.Data; using HotelPms.Share.Util; using Google.Protobuf.WellKnownTypes; using customTypes; using System.Data.Common; using HotelPms.Share.IO; using System.Reflection; using HotelPms.Data.Common; namespace HotelPms.Data.UseInfo; /// ****************************** Description ******************************* /// ◇システム名称 ///  ホテルPMS /// ◇概要 ///   /// ◇履歴 ///  2021/05/14 コード作成ツール 自動作成 /// ****************************** Declarations ****************************** public partial class UseRoom { #region ★★★★★ Property ★★★★★ #endregion #region ★★★★★ Function ★★★★★ /// /// 通常売上伝票の削除 /// ※手配、備品の関連売上伝票除外 /// ※パックの場合、子伝票も削除する /// /// public bool RemoveSale(Sale item) { try { if (item.Pack) { List childList = new List(); foreach (Sale child in SaleList) { if (child.PackSaleID == item.SaleID) { childList.Add(child); } } foreach (var child in childList) { SaleList.Remove(child); } } //売上伝票削除 SaleList.Remove(item); return true; } catch (Exception ex) { OperationLog.Instance.WriteLog($"{MethodInfo.GetCurrentMethod()}:{ex.Message}"); return false; } } /// /// 部屋に売上伝票を追加 /// /// public void AddSale(Sale item) { item.Parent = this; SaleList.Add(item); } /// /// 科目より売上伝票を作成する /// 完全新規 /// /// /// public Sale AddSaleByItem(int saleID, int taxRate, HotelPms.Data.Master.Item item) { return AddSaleByItem(saleID, taxRate, item, null); } /// /// 科目より売上伝票を作成する /// /// /// /// public Sale AddSaleByItem(int saleID, int taxRate, HotelPms.Data.Master.Item item, Sale? orgSale) { Sale sale = new() { ID = ID, DetailID = DetailID, UseDate = UseDate, SaleID = saleID, ReceiptID = 0, ItemID = item.ID, ItemName = item.Name, Price = item.Price, Amount = 1, ServiceIOType = item.ServiceIOType, //サービス料区分 ServiceRate = item.ServiceRate, TaxType = item.TaxType, //0.消費税 1.軽減税 TaxIOType = item.TaxIOType, //消費税区分 TaxRate = (decimal)taxRate, BathTaxIOType = item.BathTaxIOType, AccTaxIOType = item.AccTaxIOType, DiscountRate = item.DiscountRate, DiscountSummary = item.DiscountSummary, DiscountID = item.DiscountID, Pack = item.PackFlg, PackChild = false, PackSaleID = 0, PersonType = item.PersonType, PersonCount = item.PersonCount, InFemale = 0, UseType = item.UseType, //0.ルームチャージ 1.一人単価 BaseAmount = 1, //一人単価時の基本数量(人数連動用) PersonRef = false, //人数連動があるかどうか SrcType = 0, //生成元 0.通常 1.PBX課金 2.会場料金 3.手配 4.貸出 5.手配貸出  FixturesID = string.Empty, ItemKind = item.Kind, //科目種別 //インボイス制度:内訳計算必要??? Summary = 0, ServiceSummary = 0, TaxSummary = 0, BathTaxSummary = 0, AccTaxSummary = 0, TotalSummary = 0, }; if (sale.ItemKind == (int)EItemKind.StayBase || sale.ItemKind == (int)EItemKind.DayUseBase) { sale.BathTaxType = 0; //0.固定 1.可変(マスタ参照) sale.BathTaxUnitPrice = 0; //一人毎入湯税 } //旧情報を引き継ぐ if(orgSale == null) { sale.ReceiptItemName = item.ReceiptName; sale.ReceiptPrtType = item.ReceiptPrtType; sale.ReceiptPage = 1; } else { sale.ReceiptItemName = orgSale.ReceiptItemName; sale.ReceiptPrtType = orgSale.ReceiptPrtType; sale.ReceiptPage = orgSale.ReceiptPage; sale.FixturesID = orgSale.FixturesID; } //パックの場合、子科目の追加 if(item.PackFlg) { sale.AddChild(); } //親UseRoom sale.Parent = this; //部屋の売上一覧に追加する SaleList.Add(sale); return sale; } #endregion }