spc-kiosk-pb/Service/BsvAdmin/EtcReceipt.cs
2019-06-16 14:12:09 +09:00

131 lines
5.2 KiB
C#

using System;
using System.Collections;
using System.Data;
using Cosmos.ServiceProvider;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 간이영수증 출력
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public class EtcReceipt : IDataServiceUs
{
private StateServer StateObject = (StateServer)StateServer.GetInstance(); //StateObject:StateServer Object(객체)
private SManager sManager = new SManager(); //이 객체를 통해 업무 Service 호출
private TranStatus m_cTrnStatus = new TranStatus(); //거래정보 참조
private IDataProcessUs m_cDataService = null;
private IDataCommonUs cDataCommon = null;
private ISaleCompleteUs m_cSaleComplete = null; // 거래완료처리
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
/// <summary>
/// 생성자
/// </summary>
public EtcReceipt()
{
m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);
cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
}
/// <summary>
/// 간이영수증 출력
/// </summary>
/// <param name="oParam"></param>
/// <returns></returns>
public string SetData(object oParam)
{
string sRet = UserCom.RST_ERR;
double dTaxPluRate = 0; //TakeOut 부가세 율
DataTable aParam = (DataTable)oParam;
// 아이템 정보에 쌓는다.
ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // 상품 아이템
Column.TR_PLU.DATA cSaleItem = new Column.TR_PLU.DATA();
if (aParam != null)
{
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.DELIMITER;
double dTotAmount = 0;
foreach (DataRow dr in aParam.Rows)
{
cSaleItem = new Column.TR_PLU.DATA();
// 상품 내역
cSaleItem.ITEM_BAR_CD = dr["PLU"].ToString();
cSaleItem.SALE_AMT = CmUtil.DoubleParse(dr["AMOUNT"].ToString());
dTotAmount = dTotAmount + CmUtil.DoubleParse(dr["AMOUNT"].ToString());
alTrPluItem.Add(cSaleItem);
m_cTrnStatus.Head.SysYmd = dr["SALEDT"].ToString();
m_cTrnStatus.Head.TotSaleAmt = CmUtil.DoubleAdd(m_cTrnStatus.Head.TotSaleAmt, cSaleItem.SALE_AMT);
}
// 헤더 부분 소계랑.. 총 매출액 등등을 출력해주기 위한 곳
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
// 합계
m_cTrnStatus.Head.NetSaleAmt = dTotAmount;
//부가세 계산
//부가세 코드로 율 가져오기
DataTable dt = cDataCommon.SeletCommonCode(PosConst.COMMON_CODE_GROUP.M0101, "");
if (dt == null || dt.Rows.Count == 0)
{
//부가세 값 없음!!
// 부가세
//m_cTrnStatus.Head.TotVatAmt = double.Parse(CmUtil.MathAmtPercent(dTotAmount, 10).ToString());
}
else
{
DataRow[] adr = null;
adr = dt.Select(" " + PosMst.MST_COMMON.DATA.CMM_CD + " = '" + m_cPosStatus.Mst.BasicTakeOutTaxCd + "'");
if (adr.Length > 0) dTaxPluRate = CmUtil.GetDataRowDouble(adr[0], PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01);
if (dTotAmount > 0)
{
dTotAmount = dTotAmount - (dTotAmount / (1 + (dTaxPluRate / 100)));
dTotAmount = CmUtil.MathRounds(dTotAmount, m_cPosStatus.Mst.VatRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.VatRudDwLoc));
}
// 부가세
m_cTrnStatus.Head.TotVatAmt = dTotAmount;
}
// 영수증 출력
sRet = m_cSaleComplete.PosEtcReceiptExecute(aParam);
if (sRet != UserCom.RST_OK) return sRet;
}
return sRet;
}
public object GetData(string[] aParam)
{
throw new NotImplementedException();
}
public string Execute(string[] aParam)
{
throw new NotImplementedException();
}
}
}