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 ★★★★★
|
|
/// <summary>
|
/// 通常売上伝票の削除
|
/// ※手配、備品の関連売上伝票除外
|
/// ※パックの場合、子伝票も削除する
|
/// </summary>
|
/// <returns></returns>
|
public bool RemoveSale(Sale item)
|
{
|
try
|
{
|
if (item.Pack)
|
{
|
List<Sale> childList = new List<Sale>();
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 部屋に売上伝票を追加
|
/// </summary>
|
/// <param name="item"></param>
|
public void AddSale(Sale item)
|
{
|
item.Parent = this;
|
SaleList.Add(item);
|
}
|
|
/// <summary>
|
/// 科目より売上伝票を作成する
|
/// 完全新規
|
/// </summary>
|
/// <param name="item"></param>
|
/// <returns></returns>
|
public Sale AddSaleByItem(int saleID, int taxRate, HotelPms.Data.Master.Item item)
|
{
|
return AddSaleByItem(saleID, taxRate, item, null);
|
}
|
|
/// <summary>
|
/// 科目より売上伝票を作成する
|
/// </summary>
|
/// <param name="item"></param>
|
/// <param name="orgSale"></param>
|
/// <returns></returns>
|
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
|
}
|