"gatewayGK/ComandosPOSBC/InitializeRequestCmd.cs" did not exist on "17d006dca5bed79897ca95635c0feca5db2d8968"
Commit 56f10e15 authored by bsarmiento31's avatar bsarmiento31
Browse files

Initial commit

parents
using System.Text.Json.Serialization;
namespace SCOGateway.POSGk
{
/// <summary>
/// Registro para solicitar autenticación a cliente Smart POS GK.
/// </summary>
record AutenticationReq
{
[JsonPropertyName("loginName")] public string LoginName { get; set; } = "";
[JsonPropertyName("password")] public string Password { get; set; } = "";
[JsonPropertyName("businessUnitId")] public string BusinessUnitId { get; set; } = "";
[JsonPropertyName("passwordRequired")] public bool PasswordRequired { get; set; } = true;
}
}
\ No newline at end of file
using System.Text.Json.Serialization;
namespace SCOGateway.POSGk
{
record AuthenticateResp
{
[JsonPropertyName("operatorID")] public string OperatorID { get; set; } = "";
[JsonPropertyName("workerID")] public string WorkerID { get; set; } = "";
[JsonPropertyName("firstName")] public string FirstName { get; set; } = "";
[JsonPropertyName("lastName")] public string LastName { get; set; } = "";
[JsonPropertyName("languageID")] public string LanguageID { get; set; } = "";
[JsonPropertyName("realmId")] public string RealmId { get; set; } = "";
[JsonPropertyName("expirationCountDays")] public int ExpirationCountDays { get; set; } = 0;
[JsonPropertyName("passwordBeforeExpiration")] public bool PasswordBeforeExpiration { get; set; } = true;
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace gatewayGK.POSGk
{
record CancelItemReq
{
[JsonPropertyName("forceQuantityInput")] public bool forceQuantityInput { get; set; } = true;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace gatewayGK.POSGk
{
record CancelItemResp
{
[JsonPropertyName("operatorID")] public string OperatorID { get; set; } = "";
}
}
namespace SCOGateway.POSGk
{
/// <summary>
/// Constantes del ambiente Gk Smart POS.
/// </summary>
public static class ConstantesGK
{
/// <summary>
/// Url base ambiente de pruebas Gk maqueta.
/// </summary>
public const string UrlBaseMaqueta = "https://julia.redsis.com/castlemock/mock/rest/project/KdLiqe/application/l4KAuU";
}
}
\ No newline at end of file
/// <summary>
/// Esta clase almacena valores requeridos
/// para la operación del SCO con la operación de la POS GK,
/// valores que deben ser compartidos entre comandos.
/// </summary>
public class EntornoGK
{
/// <summary>
/// Gk - seguridad usuario.
/// </summary>
public string RealmId { get; set; } = "";
/// <summary>
/// Gk - días expiración realmId.
/// </summary>
public int ExpirationCountDays { get; set; } = 0;
/// <summary>
/// GK Language.
/// </summary>
public string Language { get; set; } = "en";
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace gatewayGK.POSGk
{
record SubTotalResp
{
[JsonPropertyName("operatorID")] public string OperatorID { get; set; } = "";
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace gatewayGK.POSGk
{
/// <summary>
/// Registro para obtener el subtotal de una venta
/// </summary>
record SubtotalReq
{
[JsonPropertyName("forceQuantityInput")] public bool ForceQuantityInput { get; set; } = true;
[JsonPropertyName("pricePositionLimit")] public int PricePositionLimit { get; set; } = 0;
[JsonPropertyName("priceTransactionLimit")] public int PriceTransactionLimit { get; set; } = 0;
[JsonPropertyName("priceDifferencePercentPositionLimit")] public int PriceDifferencePercentPositionLimit { get; set; } = 0;
[JsonPropertyName("priceDifferenceAbsolutePositionLimit")] public int PriceDifferenceAbsolutePositionLimit { get; set; } = 0;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace gatewayGK.POSGk
{
record SuspendTransactionReq
{
[JsonPropertyName("suspendNumber")] public string SuspendNumber { get; set; } = "";
[JsonPropertyName("barCodePrefix")] public string BarCodePrefix { get; set; } = "";
[JsonPropertyName("finalizeTransaction")] public bool FinalizeTransaction { get; set; } = true;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace gatewayGK.POSGk
{
record SuspendTransactionResp
{
[JsonPropertyName("operatorID")] public string OperatorID { get; set; } = "";
}
}
using Serilog;
using Microsoft.Extensions.Configuration;
using EvaPosSCOSrv;
using EvaPosSrvAplicacionImp;
using EvaPosSrvRespImp;
/// <summary>
/// EvaPos-API : servidor api, sockets y rest.
/// Usa Serilog para bitácora.
/// </summary>
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("*** Gateway SCO ***");
// Instancia objeto de configuración, usa proveedor json y variables ambiente.
IConfigurationRoot config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.Build();
// Lee archivo de configuración.
Config? configuracion = config.GetRequiredSection("GatewayConfig").Get<Config>();
if (configuracion is null)
{
throw new ApplicationException("Error en archivo de configuración, sección 'GatewayConfig' no encontrada.");
}
// TODO Sacar la ruta de logs del objeto de configuración adecuadamente.
string? rutaLogs = config["Serilog:WriteTo:1:Args:path"];
Console.WriteLine($"Archivo de logs en {rutaLogs}");
// Instancia Serilog según parámetros en archivo de configuración.
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.CreateLogger();
Log.Information(configuracion.ToString());
// TODO - opción de incluir la activación en la cadena de configuración.
// TODO - aunque hace uso de una "invocación fluida" no parece ser el tipo de api que se beneficia de ese esquema.
ServidorSocket servidor = new ServidorSocket()
.ConIp(configuracion.IpSCO)
.EnPuerto(configuracion.PortSCO)
.AgregaDispensadorAdaptadores(IniciaDirectorioAdaptadores.Cargar().DirectorioAdaptadores)
.AgregaDirectorioCmds(DirectorioCmdsFactory.CreaDirectorio(configuracion))
.AgregaProcesadorAplicacion(new Aplicacion())
.Activa();
}
catch (Exception e)
{
Log.Error($"Excepción: {e}");
Environment.Exit(1);
}
}
}
\ No newline at end of file
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML.AddCustomer
{
/// <summary>
/// Respuesta de la petición agregar cliente
/// </summary>
public class AddCustomerResponse : Respuesta
{
public int RequestID { get; set; }
public string CustomerID { get; set; }
public string Name { get; set; }
public long YTDPoints { get; set; }
private string _xml;
public AddCustomerResponse(int sessionId,
TipoMensaje messageType,
int requestID,
string customerID,
string name,
long yTDPoints) : base(sessionId, messageType)
{
RequestID = requestID;
CustomerID = customerID;
Name = name;
YTDPoints = yTDPoints;
}
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:AddCustomerResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<AddCustomerResult>
<RequestID>{RequestID}</RequestID>
<CustomerInfo>
<CustomerID>{CustomerID}</CustomerID>
<Name>{Name}</Name>
<YTDPoints>{YTDPoints}</YTDPoints>
</CustomerInfo>
</AddCustomerResult>
</schema:AddCustomerResponse>
""";
}
}
}
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace EvaPOS_API_FRAME.RespuestasXML.AddCustomer
{
/// <summary>
/// Respuesta cuando no se encuentra un cliente
/// </summary>
public class AddCustomerResponseNoEncontrado : Respuesta
{
public int RequestID { get; set; }
public string Message { get; set; }
public string ErrorCode { get; set; }
private string _xml;
public AddCustomerResponseNoEncontrado(int sessionId,
TipoMensaje messageType,
int requestID,
string message,
string errorCode) : base(sessionId, messageType)
{
RequestID = requestID;
Message = message;
ErrorCode = errorCode;
}
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:AddCustomerResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<AddCustomerResult>
<RequestID>{RequestID}</RequestID>
<ExceptionResult>
<Message>{Message}</Message>
<ErrorCode>{ErrorCode}</ErrorCode>
</ExceptionResult>
</AddCustomerResult>
</schema:AddCustomerResponse>
""";
}
}
}
using EvaPOS_API_FRAME.DTO;
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML
{
/// <summary>
/// Respuesta a petición de agregar item - (AddItemResponse)
/// </summary>
public class AddItemResponse : Respuesta
{
public int RequestID { get; set; }
public string Description { get; set; }
public string ReturnFlag { get; set; }
public string DepositFlag { get; set; }
public string VoidFlag { get; set; }
public string ItemIdentifier { get; set; }
public string ItemEntryMethod { get; set; }
public string RegularUnitPrice { get; set; }
//Prueba en string, porque en double hay error
public string ExtendedPrice { get; set; }
public int Quantity { get; set; }
public double Weight { get; set; }
public string DealPrice { get; set; }
public int DealQuantity { get; set; }
public int DepartmentNumber { get; set; }
public int MixAndMatchPricingGroup { get; set; }
public string PriceDerivationMethod { get; set; }
public string TimeRestrictedFlag { get; set; }
public int RestrictedAge { get; set; }
public string FoodStampEligibleFlag { get; set; }
public string WICEligibleFlag { get; set; }
public string ItemRepeatAllowedFlag { get; set; }
public string TaxableFlag { get; set; }
private string _xml;
public AddItemResponse(int sessionId,
TipoMensaje messageType,
int requestID,
string description,
string returnFlag,
string depositFlag,
string voidFlag,
string itemIdentifier,
string itemEntryMethod,
string regularUnitPrice,
int quantity,
string extendedPrice,
double weight,
string dealPrice,
int dealQuantity,
int departmentNumber,
int mixAndMatchPricingGroup,
string priceDerivationMethod,
string timeRestrictedFlag,
int restrictedAge,
string foodStampEligibleFlag,
string wICEligibleFlag,
string itemRepeatAllowedFlag,
string taxableFlag) : base(sessionId, messageType)
{
RequestID = requestID;
Description = description;
ReturnFlag = returnFlag;
DepositFlag = depositFlag;
VoidFlag = voidFlag;
ItemIdentifier = itemIdentifier;
ItemEntryMethod = itemEntryMethod;
RegularUnitPrice = regularUnitPrice;
Quantity = quantity;
ExtendedPrice = extendedPrice;
Weight = weight;
DealPrice = dealPrice;
DealQuantity = dealQuantity;
DepartmentNumber = departmentNumber;
MixAndMatchPricingGroup = mixAndMatchPricingGroup;
PriceDerivationMethod = priceDerivationMethod;
TimeRestrictedFlag = timeRestrictedFlag;
RestrictedAge = restrictedAge;
FoodStampEligibleFlag = foodStampEligibleFlag;
WICEligibleFlag = wICEligibleFlag;
ItemRepeatAllowedFlag = itemRepeatAllowedFlag;
TaxableFlag = taxableFlag;
}
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:AddItemResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<AddItemResult>
<RequestID>{RequestID}</RequestID>
<LineItem>
<Description>{Description}</Description>
<ReturnFlag>{ReturnFlag}</ReturnFlag>
<DepositFlag>{DepositFlag}</DepositFlag>
<VoidFlag>{VoidFlag}</VoidFlag>
<ItemIdentifier>{ItemIdentifier}</ItemIdentifier>
<ItemEntryMethod>{ItemEntryMethod}</ItemEntryMethod>
<RegularUnitPrice>{RegularUnitPrice}</RegularUnitPrice>
<Quantity>{Quantity}</Quantity>
<ExtendedPrice>{ExtendedPrice}</ExtendedPrice>
<Weight>{Weight}</Weight>
<DealPrice>{DealPrice}</DealPrice>
<DealQuantity>{DealQuantity}</DealQuantity>
<DepartmentNumber>{DepartmentNumber}</DepartmentNumber>
<MixAndMatchPricingGroup>{MixAndMatchPricingGroup}</MixAndMatchPricingGroup>
<PriceDerivationMethod>{PriceDerivationMethod}</PriceDerivationMethod>
<TimeRestrictedFlag>{TimeRestrictedFlag}</TimeRestrictedFlag>
<RestrictedAge>{RestrictedAge}</RestrictedAge>
<FoodStampEligibleFlag>{FoodStampEligibleFlag}</FoodStampEligibleFlag>
<WICEligibleFlag>{WICEligibleFlag}</WICEligibleFlag>
<ItemRepeatAllowedFlag>{ItemRepeatAllowedFlag}</ItemRepeatAllowedFlag>
<TaxableFlag>{TaxableFlag}</TaxableFlag>
</LineItem>
</AddItemResult>
</schema:AddItemResponse>
""";
}
}
}
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML
{
/// <summary>
/// Ultima respuesta cuando se va a pagar con tarjeta de credito
/// </summary>
public class AddTenderDebitResponse : Respuesta
{
public int RequestID { get; set; }
public string ReturnFlag { get; set; }
public string DepositFlag { get; set; }
public string VoidFlag { get; set; }
public string Amount { get; set; }
public string LineItemType { get; set; }
public string BalanceDueSatisfied { get; set; }
public string MaskedAccountNumber { get; set; }
public int ResponseCode { get; set; }
public long ApprovalCode { get; set; }
public string IsDeclined { get; set; }
public string ResponseCodeDescriptor { get; set; }
public long SequenceNumber { get; set; }
public int CashBackAmount { get; set; }
public string SignatureNeeded { get; set; }
private string _xml;
public AddTenderDebitResponse(int sessionId,
TipoMensaje messageType,
int requestID,
string returnFlag,
string depositFlag,
string voidFlag,
string amount,
string lineItemType,
string balanceDueSatisfied,
string maskedAccountNumber,
int responseCode,
long approvalCode,
long sequenceNumber,
int cashBackAmount,
string isDeclined,
string responseCodeDescriptor,
string signatureNeeded) : base(sessionId, messageType)
{
RequestID = requestID;
ReturnFlag = returnFlag;
DepositFlag = depositFlag;
VoidFlag = voidFlag;
Amount = amount;
LineItemType = lineItemType;
BalanceDueSatisfied = balanceDueSatisfied;
MaskedAccountNumber = maskedAccountNumber;
ResponseCode = responseCode;
ApprovalCode = approvalCode;
IsDeclined = isDeclined;
ResponseCodeDescriptor = responseCodeDescriptor;
SequenceNumber = sequenceNumber;
CashBackAmount = cashBackAmount;
SignatureNeeded = signatureNeeded;
}
public override string TextoXML
{
//get => _xml = $"""
// <?xml version="1.0" encoding="UTF-8"?>
// <schema:AddTenderResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
// <AddTenderResult>
// <RequestID>{RequestID}</RequestID>
// <DebitInfo>
// <ReturnFlag>{ReturnFlag}</ReturnFlag>
// <DepositFlag>{DepositFlag}</DepositFlag>
// <VoidFlag>{VoidFlag}</VoidFlag>
// <Amount>{Amount}</Amount>
// <LineItemType>{LineItemType}</LineItemType>
// <BalanceDueSatisfied>{BalanceDueSatisfied}</BalanceDueSatisfied>
// <LegalText>____________________________________</LegalText>
// <LegalText>Acepto pagar el importe total arriba indicado</LegalText>
// <LegalText>según el acuerdo con el emisor de la tarjeta</LegalText>
// <ReferenceNumber></ReferenceNumber>
// <MaskedAccountNumber>************{MaskedAccountNumber}</MaskedAccountNumber>
// <ResponseCode>{ResponseCode}</ResponseCode>
// <ApprovalCode>{ApprovalCode}</ApprovalCode>
// <SequenceNumber>{SequenceNumber}</SequenceNumber>
// <CashBackAmount>{CashBackAmount}</CashBackAmount>
// <IsDeclined>{IsDeclined}</IsDeclined>
// <ResponseCodeDescriptor>00 {ResponseCodeDescriptor}</ResponseCodeDescriptor>
// </DebitInfo>
// <SignatureNeeded>{SignatureNeeded}</SignatureNeeded>
// </AddTenderResult>
// </schema:AddTenderResponse>
// """;
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:AddTenderResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<AddTenderResult>
<RequestID>{RequestID}</RequestID>
<DebitInfo>
<ReturnFlag>{ReturnFlag}</ReturnFlag>
<DepositFlag>{DepositFlag}</DepositFlag>
<VoidFlag>{VoidFlag}</VoidFlag>
<Amount>{Amount}</Amount>
<LineItemType>{LineItemType}</LineItemType>
<BalanceDueSatisfied>{BalanceDueSatisfied}</BalanceDueSatisfied>
<LegalText> ____________________________________ </LegalText>
<LegalText>I agree to pay the above total amount </LegalText>
<LegalText>according to the card issuer agreement</LegalText>
<ReferenceNumber />
<MaskedAccountNumber>************{MaskedAccountNumber}</MaskedAccountNumber>
<ResponseCode>-1</ResponseCode>
<ApprovalCode>{ApprovalCode}</ApprovalCode>
<SequenceNumber>{SequenceNumber}</SequenceNumber>
<CashBackAmount>{CashBackAmount}</CashBackAmount>
<IsDeclined>{IsDeclined}</IsDeclined>
<ResponseCodeDescriptor>00 {ResponseCodeDescriptor} </ResponseCodeDescriptor>
</DebitInfo>
<SignatureNeeded>{SignatureNeeded}</SignatureNeeded>
</AddTenderResult>
</schema:AddTenderResponse>
""";
}
}
}
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML
{
public class AddTenderResponseError : Respuesta
{
public int RequestID { get; set; }
public string Message { get; set; }
public string ErrorCode { get; set; }
private string _xml;
public AddTenderResponseError(int sessionId,
TipoMensaje messageType,
int requestID,
string message,
string errorCode) : base(sessionId, messageType)
{
RequestID = requestID;
Message = message;
ErrorCode = errorCode;
}
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:AddTenderResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<AddTenderResult>
<RequestID>{RequestID}</RequestID>
<ExceptionResult>
<Message>{Message}</Message>
<ErrorCode>{ErrorCode}</ErrorCode>
</ExceptionResult>
</AddTenderResult>
</schema:AddTenderResponse>
""";
}
}
}
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML.CancelDatafono
{
/// <summary>
/// Respuesta cuando se cancela la transaccion por datafono
/// </summary>
public class CancelActionResponse : Respuesta
{
public int RequestID { get; set; }
private string _xml;
public CancelActionResponse(int sessionId,
TipoMensaje messageType,
int requestID) : base(sessionId, messageType)
{
RequestID = requestID;
}
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:CancelActionResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<CancelActionResult>
<RequestID>{RequestID}</RequestID>
<ExceptionResult>
<Message xsi:nil="true"/>
<ErrorCode>UNSUPPORTED_OPERATION</ErrorCode>
</ExceptionResult>
</CancelActionResult>
</schema:CancelActionResponse>
""";
}
}
}
using EvaPOS_API_FRAME.DTO;
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML.CancelTransaction
{
/// <summary>
/// Respuesta a petición de cancelar transacción
/// </summary>
public class VoidTransactionResponse : Respuesta
{
public int RequestID { get; set; }
private string _xml;
public VoidTransactionResponse(int sessionId,
TipoMensaje messageType,
int requestID) : base(sessionId, messageType)
{
RequestID = requestID;
}
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:VoidTransactionResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<VoidTransactionResult>
<RequestID>{RequestID}</RequestID>
</VoidTransactionResult>
</schema:VoidTransactionResponse>
""";
}
}
}
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML
{
/// <summary>
/// Respuesta a petición de finalizar y pagar, cuarta respuesta
/// </summary>
public class GetTotalsResponse : Respuesta
{
public int RequestID { get; set; }
public string Total { get; set; }
public string SubTotal { get; set; }
public string Tax { get; set; }
public string BalanceDue { get; set; }
public string ChangeDue { get; set; }
public string FoodstampChangeDue { get; set; }
public string FoodstampTotal { get; set; }
public string FoodstampBalanceDue { get; set; }
public string CouponTotal { get; set; }
public int TotalItems { get; set; }
public int TotalCoupons { get; set; }
public string TotalSavings { get; set; }
public string TenderApplied { get; set; }
private string _xml;
public GetTotalsResponse(int sessionId,
TipoMensaje messageType,
int requestID,
string total,
string subtotal,
string tax,
string balanceDue,
string changeDue,
string foodstampChangeDue,
string foodstampTotal,
string foodstampBalanceDue,
string couponTotal,
int totalItems,
int totalCoupons,
string totalSavings,
string tenderApplied) : base(sessionId, messageType)
{
RequestID = requestID;
Total = total;
SubTotal = subtotal;
Tax = tax;
BalanceDue = balanceDue;
ChangeDue = changeDue;
FoodstampChangeDue = foodstampChangeDue;
FoodstampTotal = foodstampTotal;
FoodstampBalanceDue = foodstampBalanceDue;
CouponTotal = couponTotal;
TotalItems = totalItems;
TotalCoupons = totalCoupons;
TotalSavings = totalSavings;
TenderApplied = tenderApplied;
}
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:GetTotalsResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<GetTotalsResult>
<RequestID>{RequestID}</RequestID>
<TransactionTotals>
<Total>{Total}</Total>
<SubTotal>{SubTotal}</SubTotal>
<Tax>{Tax}</Tax>
<BalanceDue>{BalanceDue}</BalanceDue>
<ChangeDue>{ChangeDue}</ChangeDue>
<FoodstampChangeDue>{FoodstampChangeDue}</FoodstampChangeDue>
<FoodstampTotal>{FoodstampTotal}</FoodstampTotal>
<FoodstampBalanceDue>{FoodstampBalanceDue}</FoodstampBalanceDue>
<CouponTotal>{CouponTotal}</CouponTotal>
<TotalItems>{TotalItems}</TotalItems>
<TotalCoupons>{TotalCoupons}</TotalCoupons>
<TotalSavings>{TotalSavings}</TotalSavings>
<TenderApplied>{TenderApplied}</TenderApplied>
</TransactionTotals>
</GetTotalsResult>
</schema:GetTotalsResponse>
""";
//get => _xml = $"""
// <?xml version="1.0" encoding="UTF-8"?>
// <schema:GetTotalsResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
// <GetTotalsResult>
// <RequestID>104</RequestID>
// <TransactionTotals>
// <Total>3.99</Total>
// <SubTotal>3.99</SubTotal>
// <Tax>0.00</Tax>
// <BalanceDue>3.99</BalanceDue>
// <ChangeDue>0.00</ChangeDue>
// <FoodstampChangeDue>0.00</FoodstampChangeDue>
// <FoodstampTotal>0.00</FoodstampTotal>
// <FoodstampBalanceDue>0.00</FoodstampBalanceDue>
// <CouponTotal>0.00</CouponTotal>
// <TotalItems>1</TotalItems>
// <TotalCoupons>0</TotalCoupons>
// <TotalSavings>0.00</TotalSavings>
// <TenderApplied>0.00</TenderApplied>
// </TransactionTotals>
// </GetTotalsResult>
// </schema:GetTotalsResponse>
// """;
}
}
}
using EvaPosSrvDTO;
using EvaPosSrvResp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EvaPOS_API_FRAME.RespuestasXML
{
/// <summary>
/// Respuesta a petición de inicialización de POS.
/// </summary>
public class InitializeResponse : Respuesta
{
public int RequestID { get; private set; }
private string _xml;
public InitializeResponse(int sessionId,
TipoMensaje messageType,
int requestID) : base(sessionId, messageType)
{
RequestID = requestID;
}
// P2L_3_POSBCStatusEvent
public override string TextoXML
{
get => _xml = $"""
<?xml version="1.0" encoding="UTF-8"?>
<schema:InitializeResponse xmlns:schema="http://bc.si.retail.ibm.com/POSBCSchema">
<InitializeResult>
<RequestID>{RequestID}</RequestID>
</InitializeResult>
</schema:InitializeResponse>
""";
}
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment