Commit 76d8455b authored by bsarmiento31's avatar bsarmiento31
Browse files

Comando - ADD ITEM Y ADD TENDER

parent 56f10e15
......@@ -5,7 +5,9 @@ using EvaPosSrvResp;
using Serilog;
using EvaPOS_API_FRAME.DTO.Intercambio;
using System.Globalization;
using SCOGateway.POSGk;
using RestSharp;
using gatewayGK.POSGk;
namespace EvaPOS_API_FRAME.Comandos
{
......@@ -23,6 +25,12 @@ namespace EvaPOS_API_FRAME.Comandos
/// <summary>
/// Procesa y responde ReportStatusEventsRequest.
/// </summary>
///
public const string UrlItem = ConstantesGK.UrlBaseMaqueta + "/com.gk_software.pos.api.service.transaction.LineItemService/createAndAddInvoicePaymentLineItem";
/// <summary>
/// Url servicio subtotal Gk.
/// </summary>
public Respuestas Ejecutar()
{
Log.Debug("Cmd AddItemRequestCmdGk ejecutado. AddItemRequest : {AddItemRequest}", Request.RequestID);
......@@ -45,11 +53,16 @@ namespace EvaPOS_API_FRAME.Comandos
else
barCode = Request.ItemIdentifier.KeyedItemID;
/*
string barcodeString = barCode.ToString();
Aqui se arma la solicitud para Smart POS, recuperando datos del Entorno.
var item = new RestClient(UrlItem);
var request = new RestRequest(UrlItem, Method.Post);
var items = new AddItemReq { ItemID = barcodeString };
request.AddJsonBody(items);
*/
// Ejecuta invocación sincrónica, deserializando respuesta según el tipo indicado en la invocación del Post<T>.
var itemlResp = item.Post<AddItemResp>(request) ?? throw new ApplicationException("Servicio POST 'AddItems' retorna nulos.");
Log.Debug($"GkPruebas: Respuesta Cliente - POST - response {itemlResp}");
string tomarNombreCorto = "";
//Valores que se mandan en chec
......@@ -59,14 +72,26 @@ namespace EvaPOS_API_FRAME.Comandos
culture.DateTimeFormat.PMDesignator = "PM";
var time = DateTime.Now.ToString("hh:mm tt", culture);
if (itemlResp != null)
{
TransactionStatusEvent transactionStatusEvent = new TransactionStatusEvent(1, TipoMensaje.Event, requestId, "TRANSACTION_START", 1, "regularSale", "sales", date, time);
POSReceiptEvent pOSReceiptEvent = new POSReceiptEvent(1, TipoMensaje.Event, requestId, "Customer", 0, "Body", requestId, 1, "center", "LineItem", "ItemSale", "1234" + " " + "Producto" + " " + "1" + " " + 3200, "Add");
POSReceiptEvent pOSReceiptEvent = new POSReceiptEvent(1, TipoMensaje.Event, requestId, "Customer", 0, "Body", requestId, 1, "center", "LineItem", "ItemSale", itemlResp.ItemID + " " + itemlResp.Name + " " + "1" + " " + itemlResp.RegularPriceAmount, "Add");
POSReceiptEventHeaderResponse posReceiptEventHeader = new POSReceiptEventHeaderResponse(1, TipoMensaje.Event, requestId);
TotalsEventResponse totalEvent = new TotalsEventResponse(1, TipoMensaje.Event, requestId, "3200", "3200", "3200", "3200", "0.00", "0.00", "0.00", "0.00", "0.00", 1, 0, "0.00", "0.00");
AddItemResponse itemResponse = new AddItemResponse(1, TipoMensaje.Resp, requestId, tomarNombreCorto, "false", "false", "true", "1234", "ScannedItemCode", "3200", 1, "3200", 0, "0.00", 0, 1, 0, "unit", "false", 0, "false", "false", "true", "true");
TotalsEventResponse totalEvent = new TotalsEventResponse(1, TipoMensaje.Event, requestId, itemlResp.RegularPriceAmount.ToString() , itemlResp.RegularPriceAmount.ToString(), "0.18", "3.67", "0.00", "0.00", "0.00", "0.00", "0.00", itemlResp.Quantity, 0, "0.00", "0.00");
AddItemResponse itemResponse = new AddItemResponse(1, TipoMensaje.Resp, requestId, itemlResp.Name, "false", "false", "true", itemlResp.ItemID, "ScannedItemCode", itemlResp.RegularPriceAmount.ToString(), itemlResp.Quantity, itemlResp.RegularPriceAmount.ToString(), 0, "0.00", 0, 1, 0, "unit", "false", 0, "false", "false", "true", "true");
respuesta = new Respuestas { transactionStatusEvent, posReceiptEventHeader, pOSReceiptEvent, totalEvent, itemResponse };
}
else
{
addItemResponseError = new AddItemResponseError(1, TipoMensaje.Resp, requestId, "Articulo no encontrado", "ITEM_NOT_FOUND");
return new Respuestas { addItemResponseError };
}
return (respuesta);
return respuesta;
}
......
using EvaPOS_API_FRAME.Comandos;
using EvaPOS_API_FRAME.DTO;
using EvaPOS_API_FRAME.RespuestasXML.Printer;
using EvaPOS_API_FRAME.RespuestasXML;
using EvaPosSrvDTO;
using EvaPosSrvResp;
using Serilog;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SCOGateway.POSGk;
using gatewayGK.POSGk;
using RestSharp;
namespace gatewayGK.ComandosGkPruebas
{
public class AddTenderCmdGk : IComando
{
public string Referencia { get; set; } = "scsns:AddTender";
/// <summary>
/// DTO con solicitud.
/// </summary>
public AddTenderRequest Request { get; private set; }
/// <summary>
/// Procesa y responde eventos del pago con tarjeta de debito
/// </summary>
public const string UrlTender = ConstantesGK.UrlBaseMaqueta + "/com.gk_software.pos.api.service.payment.PaymentService/addCashChangeAmountAlreadyPaidExtensions";
/// <summary>
/// Url servicio Tender Gk.
/// </summary>
public Respuestas Ejecutar()
{
//instanciar xml de respuestas
TransactionStatusEvent transactionStatusEvent = null;
POSReceiptEventDebit posbcEvent1 = null;
POSReceiptEvent posbcEvent3 = null;
POSReceiptEvent posbcEvent4 = null;
TotalsEventResponse totalEvent = null;
AddTenderDebitResponse addTender = null;
AddTenderResponseError cancelActionResponse = null;
POSBCStatusEventPrinterSingle posbcStatusPrinter = null;
Log.Debug("Cmd AddTenderDebitDTO ejecutado. AddTenderDebit : {AddTenderDebit}", Request.RequestID);
int requestId = Request.RequestID;
ReportStatusEventsRequestCmd reportStatusEventsRequestCmd = new ReportStatusEventsRequestCmd();
AddItemRequestCmd addItemRequestCmd = new AddItemRequestCmd();
Respuestas respuestasChec = null;
var tender = new RestClient(UrlTender);
var request = new RestRequest(UrlTender, Method.Post);
var tenders = new AddTenderReq { TenderClassCode = "012" };
request.AddJsonBody(tenders);
// Ejecuta invocación sincrónica, deserializando respuesta según el tipo indicado en la invocación del Post<T>.
var tenderResp = tender.Post<AddTenderResp>(request) ?? throw new ApplicationException("Servicio POST 'AddTenderResp' retorna nulos.");
Log.Debug($"GkPruebas: Respuesta Cliente - POST - response {tenderResp}");
var date = DateTime.Now.ToString("MM/dd/yyyy");
CultureInfo culture = new CultureInfo("en-US");
culture.DateTimeFormat.AMDesignator = "AM";
culture.DateTimeFormat.PMDesignator = "PM";
var time = DateTime.Now.ToString("hh:mm tt", culture);
if(tenderResp != null)
{
posbcEvent3 = new POSReceiptEvent(1, TipoMensaje.Event, requestId, "Customer", 0, "Trailer", requestId, 1, "center", "Trailer", "WorkstationInfo", date + time, "Add");
posbcEvent4 = new POSReceiptEvent(1, TipoMensaje.Event, requestId, "Customer", 0, "Trailer", requestId, 1, "center", "Trailer", "WorkstationInfo", date + time, "Add");
posbcEvent1 = new POSReceiptEventDebit(1, TipoMensaje.Event, requestId, date + time);
totalEvent = new TotalsEventResponse(1, TipoMensaje.Event, requestId, "3200", "3200", "3200", "3200", "0.00", "0.00", "0.00", "0.00", "0.00", 5200, 0, "0.00", "0.00");
transactionStatusEvent = new TransactionStatusEvent(1, TipoMensaje.Event, requestId, "TRANSACTION_END", 1, "regularSale", "sales", date, time);
addTender = new AddTenderDebitResponse(1, TipoMensaje.Resp, requestId, "false", "false", "false", tenderResp.PayedAmount.ToString(), "debit", "true", "9999", -1, 00350383, tenderResp.SequenceNumber, 0, tenderResp.TransactionPayed.ToString(), "approved", "false");
respuestasChec = new Respuestas { posbcEvent3, posbcEvent4, posbcEvent1, totalEvent, transactionStatusEvent, addTender };
}
else
{
cancelActionResponse = new AddTenderResponseError(1, TipoMensaje.Resp, requestId, "Cancelar", "UNSUPPORTED_OPERATION");
respuestasChec = new Respuestas { cancelActionResponse };
}
return respuestasChec;
}
public IComando CreaCopia()
{
return (AddTenderDebitCmd)this.MemberwiseClone();
}
public void CargaDTO(DTOBase AddTenderRequestDebitDTO)
{
Request = (AddTenderRequest)AddTenderRequestDebitDTO;
}
}
}
......@@ -40,7 +40,9 @@ namespace gatewayGK.ComandosGkPruebas
GetTotalsResponse getTotalsResponse = null;
POSReceiptEventResponse pOSReceiptEvent = null;
TotalsEventResponse totalEvent = null;
AddItemResponseError addItemResponseError = null;
int RequestId = Request.RequestID;
Respuestas respuesta = null;
var total = new RestClient(UrlSubtotal);
var request = new RestRequest(UrlSubtotal, Method.Post);
......@@ -51,13 +53,12 @@ namespace gatewayGK.ComandosGkPruebas
var subtotalResp = total.Post<SubTotalResp>(request) ?? throw new ApplicationException("Servicio POST 'Subtotal' retorna nulos.");
Log.Debug($"GkPruebas: Respuesta Cliente - POST - response {subtotalResp}");
pOSReceiptEvent = new POSReceiptEventResponse(1, TipoMensaje.Event, RequestId, RequestId, subtotalResp.ExtendedAmount.ToString(), subtotalResp.TotalAmount.ToString());
totalEvent = new TotalsEventResponse(1, TipoMensaje.Event, RequestId, subtotalResp.TotalAmount.ToString(), subtotalResp.ExtendedAmount.ToString(), subtotalResp.TaxAmount.ToString(), subtotalResp.TotalAmount.ToString(), "0.00", "0.00", "0.00", "0.00", "0.00" , subtotalResp.Quantity, 0, "0.00", "0.00");
getTotalsResponse = new GetTotalsResponse(1, TipoMensaje.Resp, RequestId, subtotalResp.TotalAmount.ToString(), subtotalResp.ExtendedAmount.ToString(), subtotalResp.TaxAmount.ToString(), subtotalResp.TotalAmount.ToString(), "0.00", "0.00", "0.00", "0.00", "0.00", subtotalResp.Quantity, 0, "0.00", "0.00");
pOSReceiptEvent = new POSReceiptEventResponse(1, TipoMensaje.Event, RequestId, RequestId, "3200", "3200");
totalEvent = new TotalsEventResponse(1, TipoMensaje.Event, RequestId, "3200", "3200", "3200", "3200", "0.00", "0.00", "0.00", "0.00", "0.00", 1, 0, "0.00", "0.00");
getTotalsResponse = new GetTotalsResponse(1, TipoMensaje.Resp, RequestId, "3200", "3200", "3200", "3200", "0.00", "0.00", "0.00", "0.00", "0.00", 1, 0, "0.00", "0.00");
return (new Respuestas { pOSReceiptEvent, totalEvent, getTotalsResponse });
respuesta = new Respuestas { pOSReceiptEvent, totalEvent, getTotalsResponse };
return respuesta;
}
......
......@@ -72,7 +72,7 @@ namespace EvaPOS_API_FRAME.Comandos
itemResponse = new AddItemResponse(1, TipoMensaje.Resp, requestId, tomarNombreCorto, "false", "false", "true", "1234", "ScannedItemCode", "3200", 1, "3200", 0, "0.00", 0, 1, 0, "unit", "false", 0, "false", "false", "true", "true");
respuesta = new Respuestas { transactionStatusEvent, posReceiptEventHeader, pOSReceiptEvent, totalEvent, itemResponse };
return (respuesta);
return respuesta;
}
......
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 AddItemReq
{
[JsonPropertyName("ItemID")] public string ItemID { get; set; } = "";
[JsonPropertyName("language")] public string Language { get; set; } = "";
[JsonPropertyName("currency")] public string Currency { get; set; } = "";
[JsonPropertyName("getImages")] public bool GetImages { 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 AddItemResp
{
[JsonPropertyName("name")] public string Name { get; set; } = "";
[JsonPropertyName("itemID")] public string ItemID { get; set; } = "";
[JsonPropertyName("regularPriceAmount")] public decimal RegularPriceAmount { get; set; } = 0;
[JsonPropertyName("quantity")] public int Quantity { 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 AddTenderReq
{
[JsonPropertyName("tenderClassCode")] public string TenderClassCode { get; set; } = "";
[JsonPropertyName("amount")] public string Amount { get; set; } = "";
[JsonPropertyName("forceQuantityInput")] public bool ForceQuantityInput { get; set; } = true;
[JsonPropertyName("packageID")] public string PackageID { 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
{
record AddTenderResp
{
[JsonPropertyName("operatorID")] public string OperatorID { get; set; } = "";
[JsonPropertyName("transactionPayed")] public bool TransactionPayed { get; set; } = true;
[JsonPropertyName("payedAmount")] public decimal PayedAmount { get; set; } = 0;
[JsonPropertyName("sequenceNumber")] public int SequenceNumber { get; set; } = 0;
}
}
......@@ -10,5 +10,15 @@ namespace gatewayGK.POSGk
record SubTotalResp
{
[JsonPropertyName("operatorID")] public string OperatorID { get; set; } = "";
[JsonPropertyName("extendedAmount")] public decimal ExtendedAmount { get; set; } = 0;
[JsonPropertyName("totalAmount")] public decimal TotalAmount { get; set; } = 0;
[JsonPropertyName("quantity")] public int Quantity { get; set; } = 0;
[JsonPropertyName("receiptText")] public string receiptText { get; set; } = "";
[JsonPropertyName("taxableAmount")] public decimal TaxableAmount { get; set; } = 0;
[JsonPropertyName("taxableAmount")] public decimal taxablePercent { get; set; } = 0;
[JsonPropertyName("taxPercent")] public decimal TaxPercent { get; set; } = 0;
[JsonPropertyName("taxAmount")] public decimal TaxAmount { get; set; } = 0;
[JsonPropertyName("amount")] public decimal Amount { get; set; } = 0;
}
}
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