public ECaja obtenerEcaja(ETerminal terminal, EUsuario usuario, EMediosPago mediosPago, out Respuesta respuesta) { ECaja caja = null; respuesta = new Respuesta(false); RArqueo rArqueo = new RArqueo(); var arqueo = rArqueo.ObtenerArqueo(terminal.Codigo, usuario.IdUsuario); if (arqueo.IsNullOrEmptyTable()) { respuesta.Mensaje = "Codigos de Recogidas no encontrados."; respuesta.Valida = false; } else { Dictionary <EMedioPago, decimal> dictionary = new Dictionary <EMedioPago, decimal>(); foreach (DataRow dr in arqueo.Rows) { var mediopaog = (string)dr["id_medio_pago"]; dictionary.Add(mediosPago.MedioPago(mediopaog), (decimal)dr["total"]); } caja = new ECaja(dictionary); respuesta.Valida = true; } return(caja); }
public Dictionary <string, string> IdsAcumulados(EUsuario usuario, ETerminal terminal) { var repositorio = new RVenta(); DataTable registros = repositorio.IdRegistroVenta(terminal.Codigo, usuario.IdUsuario); if (registros.IsNullOrEmptyTable()) { return(null); } else { Dictionary <string, string> acumulados = new Dictionary <string, string>(); acumulados.Add("idRegistroVenta", (string)registros.Rows[0]["id_registro_venta"]); //System.Diagnostics.Debug.WriteLine(registros.Rows[0].Field<string>("id_registro_venta")); //System.Diagnostics.Debug.WriteLine(registros.Rows[0].Field<string>("id_tot_med_pago")); foreach (DataRow registro in registros.Rows) { if ((string)registro["id_medio"] != null) { System.Diagnostics.Debug.WriteLine((string)registro["id_medio"]); acumulados.Add((string)registro["id_medio"], (string)registro["id_tot_med_pago"]); } } return(acumulados); } }
public override void Ejecutar() { PVenta pventa = new PVenta(); Respuesta respuesta = new Respuesta(); EUsuario usuario = Entorno.Instancia.Usuario; ETerminal terminal = Entorno.Instancia.Terminal; string ultima = pventa.ImprimirUltima(terminal.Codigo, usuario.IdUsuario, out respuesta); if (string.IsNullOrEmpty(ultima)) { Entorno.Vista.PanelVentas.VisorMensaje = "No se pudo imprimir la última factura"; } else { // Imprimir Entorno.Instancia.Impresora.Imprimir(ultima, cortarPapel: true, abrirCajon: false); Telemetria.Instancia.AgregaMetrica(new Evento("ImprimirUltimaFactura").AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (ultima))); log.InfoFormat("[ImprimirUltima] Ultima factura impresa. Factura: {0}", ultima); } // if (Config.ViewMode == InternalSettings.ModoTouch) { Entorno.Instancia.Vista.PanelVentas.LimpiarOperacion(); } }
void Expect(ETerminal n) { if (la.kind == (int)n) { Get(); } else { SyntaxError((int)n); } }
void ExpectWeak(ETerminal n, int follow) { if (la.kind == (int)n) { Get(); } else { SyntaxError((int)n); while (!StartOf(follow)) { Get(); } } }
public static ETerminal InstanciarDesde(DataRow registro) { if (registro == null) { throw new ApplicationException("Registro nulo o contiene campos nulos."); } var a = new ETerminal( (string)registro["cod_terminal"], (string)registro["prefijo"], (long)registro["facturas_aviso"], (string)registro["nro_autorizacion"], (long)registro["ultima_factura"], (long)registro["nro_ultima_transaccion"], (DateTime)registro["fecha_autorizacion"], (int)registro["rango_alarma_nro_fac"], (long)registro["primera_factura"], (long)registro["factura_final"], new ELocalidad((string)registro["cod_localidad"], (string)registro["descrip"], (string)registro["ciudad"], (string)registro["dir1"])); return(a); }
public ETerminal BuscarTerminalPorCodigo(string cod, out Respuesta respuesta) { var repositorio = new RTerminal(); ETerminal terminal = null; respuesta = new Respuesta(false); var registro = repositorio.BuscarTerminalPorCodigo(cod); if (registro != null) { terminal = TerminalUtil.InstanciarDesde(registro); respuesta.Valida = true; } else { respuesta.Valida = false; respuesta.Mensaje = "Terminal no encontrada."; log.Info("[ETerminal]: Terminal no encontrada"); //throw new Exception("Terminal no encontrada"); } return(terminal); }
// TODO : este requiere manejo transaccional!. /// <summary> /// /// </summary> /// <param name="ajuste"></param> /// <param name="terminal"></param> /// <param name="usuario"></param> /// <param name="localidad"></param> /// <param name="numero"></param> /// <param name="tipo"></param> /// <param name="contenido"></param> /// <param name="modeloImpresora"></param> /// <param name="respuesta"></param> public void GuardarAjuste(EAjuste ajuste, ETerminal terminal, EUsuario usuario, ELocalidad localidad, ETipoAjuste tipo, string contenido, string modeloImpresora, out Respuesta respuesta) { respuesta = new Respuesta(false); //1. Creamos el encabezado de la venta. string idAjuste = Guid.NewGuid().ToString(); RAjuste rajuste = new RAjuste(); RVenta rventa = new RVenta(); try { using (TransactionScope scope = new TransactionScope()) { var reg = rajuste.GetNumeroAjuste(); // int numero = reg.Field<int>("nro_ajuste"); int numero = (int)reg["nro_ajuste"]; if (rajuste.CrearAjuste(idAjuste, tipo.CalcularCostoVenta, "00", localidad.Codigo, ajuste.Estado, localidad.Codigo, numero + 1, tipo.Signo, tipo.Id, tipo.Codigo, 0, ajuste.TotalVenta, usuario.IdUsuario, ajuste.TotalImpuesto()) == 1) { //2. Creamos cada detalle de la venta. string idAjusteDetalle = Guid.NewGuid().ToString(); var tirilla = ajuste.CopiaTirilla; foreach (EItemVenta detalle in tirilla) { respuesta.Valida = true; rajuste.CrearAjusteDetalle(idAjusteDetalle, idAjuste, detalle.Articulo.Id, detalle.Cantidad, "00", detalle.Articulo.CodigoImpresion, 0, numero + 1, detalle.Articulo.PrecioVenta1, detalle.Impuesto, detalle.Articulo.Impuesto1); idAjusteDetalle = Guid.NewGuid().ToString(); } rventa.CrearCopiaImpresion("00", terminal.Localidad.Codigo, terminal.Codigo, ((int)Enums.TipoTransaccion.Ajuste).ToString(), usuario.IdUsuario, contenido, terminal.Localidad.Codigo, modeloImpresora, 0, numero + 1, terminal.Prefijo, terminal.Codigo, ((int)Enums.TipoTransaccion.Ajuste).ToString(), usuario.IdUsuario); } else { throw new Exception("[GuardarAjuste]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (SqlException e) { if (e.Number == -2 || e.Number == 121) { respuesta.Valida = false; respuesta.Mensaje = "Se perdió la conexión con el servidor."; log.Error("[GuardarAjuste]: No pudo ser guardada la transaccion: " + e.Message); } else { respuesta.Valida = false; respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema."; log.Error("[GuardarAjuste]: No pudo ser guardada la transaccion: " + e.Message); } Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } catch (Exception ex) { respuesta.Valida = false; respuesta.Mensaje = "[GuardarAjuste]: No pudo ser guardado el ajuste."; log.Error("[GuardarAjuste]: No pudo ser guardado el ajuste: " + ex.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(ex)); } }
public void GuardarRecogida(ERecogida recogida, ref Dictionary <string, string> IdsAcumulados, string tipo, ETerminal terminal, EUsuario usuario, EMedioPago medioPago, string contenido, string modeloImpresora, out Respuesta respuesta) { //1. Creamos el encabezado de la venta. string idVenta = Guid.NewGuid().ToString(); RRecogida rRecogida = new RRecogida(); respuesta = new Respuesta(false); try { using (TransactionScope scope = new TransactionScope()) { if (rRecogida.CrearRecogida(idVenta, recogida.Valor, terminal.Codigo, tipo, 1, terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, usuario.IdUsuario) == 1) { rRecogida.CrearVentaRecogida(recogida.CodigoRecogida.Codigo, recogida.CodigoRecogida.Descripcion, idVenta); //3. Creamos totales de venta(registro_venta). if (IdsAcumulados == null) { IdsAcumulados = new Dictionary <string, string>(); IdsAcumulados.Add("idRegistroVenta", Guid.NewGuid().ToString()); //Creamos el registro venta rRecogida.CrearRegistroVenta(IdsAcumulados["idRegistroVenta"], terminal.Codigo, usuario.IdUsuario); } //Actualizo registro venta rRecogida.ActualizarRegistroVenta(IdsAcumulados["idRegistroVenta"], recogida.Valor); //4. Creamos el detalle de los medios de pago. //List<EPago> pagos = re // prestamo.Pagos; rRecogida.CrearMedioPago(medioPago.Codigo, terminal.Codigo, (long)terminal.NumeroUltimaTransaccion + 1, recogida.Valor, idVenta); //Actualizamos el terminal rRecogida.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1); rVenta.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1); rVenta.CrearCopiaImpresion("00", terminal.Localidad.Codigo, terminal.Codigo, tipo, usuario.IdUsuario, contenido, terminal.Localidad.Codigo, modeloImpresora, (long)terminal.NumeroUltimaFactura, (int)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, terminal.Codigo, tipo, usuario.IdUsuario); respuesta.Valida = true; respuesta.Mensaje = idVenta; } else { throw new Exception("[GuardarRecogida]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (SqlException e) { if (e.Number == -2 || e.Number == 121) { respuesta.Valida = false; respuesta.Mensaje = "Se perdió la conexión con el servidor."; log.Error("[GuardarRecogida]: No pudo ser guardada la transaccion: " + e.Message); } else { respuesta.Valida = false; respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema."; log.Error("[Guardarrecogida]: No pudo ser guardada la venta: " + e.Message); } Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } catch (Exception ex) { respuesta.Documentar(false, " No pudo ser guardada la recogida."); log.Error("[GuardarRecogida]: No pudo ser guardada la recogida. " + ex.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(ex)); } }
public void GuardarArqueo(ECaja caja, ref Dictionary <string, string> IdsAcumulados, ETerminal terminal, EUsuario usuario, string tipo, string contenido, string modeloImpresora, out Respuesta respuesta) { //1. Creamos el encabezado de la venta. string idArqueo = Guid.NewGuid().ToString(); RArqueo rArqueo = new RArqueo(); respuesta = new Respuesta(false); try { using (TransactionScope scope = new TransactionScope()) { if (rArqueo.CrearArquero(idArqueo, terminal.Codigo, tipo, 1, (long)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, usuario.IdUsuario) == 1) { //3. Creamos totales de venta(registro_venta). if (IdsAcumulados == null) { IdsAcumulados = new Dictionary <string, string>(); IdsAcumulados.Add("idRegistroVenta", Guid.NewGuid().ToString()); //Creamos el registro venta rArqueo.CrearRegistroVenta(IdsAcumulados["idRegistroVenta"], terminal.Codigo, usuario.IdUsuario); } //Actualizo registro venta rArqueo.ActualizarRegistroArqueo(IdsAcumulados["idRegistroVenta"]); Dictionary <EMedioPago, List <decimal> > arqueos = caja.Arqueo; foreach (var arqueo in arqueos) { rArqueo.GuardarArqueo(arqueo.Key.Codigo, (int)terminal.NumeroUltimaTransaccion + 1, arqueo.Value[1], arqueo.Value[2], arqueo.Value[0], idArqueo); } rVenta.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura + 1, (long)terminal.NumeroUltimaTransaccion + 1); //var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(contenido); //contenido = System.Convert.ToBase64String(plainTextBytes); rVenta.CrearCopiaImpresion("00", terminal.Localidad.Codigo, terminal.Codigo, tipo, usuario.IdUsuario, contenido, terminal.Localidad.Codigo, modeloImpresora, (long)terminal.NumeroUltimaFactura + 1, (int)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, terminal.Codigo, tipo, usuario.IdUsuario); respuesta.Valida = true; } else { throw new Exception("[GuardarArqueo]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (SqlException e) { if (e.Number == -2 || e.Number == 121) { respuesta.Valida = false; respuesta.Mensaje = "Se perdió la conexión con el servidor."; log.Error("[GuardarArqueo]: No pudo ser guardada la transaccion: " + e.Message); } else { respuesta.Valida = false; respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema."; log.Error("[GuardarArqueo]: No pudo ser guardada la transaccion: " + e.Message); } Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } catch (Exception ex) { respuesta.Documentar(false, "No pudo ser guardada el arqueo."); log.Error("[GuardarArqueo]: No pudo ser guardada el arqueo. " + ex.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(ex)); } }
public void GuardarVentaEspecial(EFacturaVentaEspecialSinMedioPago venta, ref Dictionary <string, string> IdsAcumulados, ETerminal terminal, EUsuario usuario, String tipo, string contenido, string modeloImpresora, bool implementaImpuestoCompuesto, out Respuesta respuesta) { //venta.DescontarCambio(); respuesta = new Respuesta(false); //1. Creamos el encabezado de la venta. string idVenta = Guid.NewGuid().ToString(); RVenta rventa = new RVenta(); RVentaEspecial rventaespecial = new RVentaEspecial(); try { using (TransactionScope scope = new TransactionScope()) { if (rventa.CrearVenta(idVenta, venta.BrutoNegativo, venta.BrutoPositivo, terminal.Codigo, tipo, 1, (long)terminal.NumeroUltimaFactura + 1, (long)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, usuario.IdUsuario, 0) == 1) { //2. Creamos cada detalle de la venta. int consecutivo = 0; var tirilla = venta.tirilla; foreach (EItemVenta detalle in tirilla) { var idVentasArticulo = Guid.NewGuid(); consecutivo += 1; rventa.CrearDetalleVenta(idVentasArticulo, detalle.Articulo.Id, detalle.Articulo.CodigoImpresion, terminal.Codigo, consecutivo, detalle.Impuesto, (long)terminal.NumeroUltimaTransaccion + 1, detalle.Articulo.Impuesto1, detalle.Peso, usuario.IdUsuario, detalle.Valor, idVenta, detalle.Cantidad, detalle.CodigoLeido); if (implementaImpuestoCompuesto) { rventa.ActualizarVentasArticulo(idVentasArticulo); foreach (KeyValuePair <EImpuestosArticulo, decimal> entry in detalle.Impuestos) { rventa.CrearVentasArticuloImpuesto(idVentasArticulo, entry.Key.Descripcion, entry.Key.Identificador, entry.Key.Porcentaje, entry.Key.Valor, entry.Key.TipoImpuesto, entry.Value, entry.Key.Id); } } } //3. Creamos totales de venta(registro_venta). if (IdsAcumulados == null) { IdsAcumulados = new Dictionary <string, string>(); IdsAcumulados.Add("idRegistroVenta", Guid.NewGuid().ToString()); //Creamos el registro venta rventa.CrearRegistroVenta(IdsAcumulados["idRegistroVenta"], terminal.Codigo, usuario.IdUsuario); } //Actualizo registro venta //rventa.ActualizarRegistroVenta(IdsAcumulados["idRegistroVenta"], venta.BrutoPositivo, venta.BrutoNegativo, venta.NumeroDeItemsVenta, venta.NumeroDeItemsNegativo, venta.TotalVenta); rventaespecial.ActualizarRegistroVentaEspecial(venta.BrutoNegativo, venta.BrutoPositivo, venta.NumeroDeItemsVenta, venta.NumeroDeItemsNegativo, 1, venta.BrutoNegativo, venta.TotalVenta, 0, 0, IdsAcumulados["idRegistroVenta"]); rventaespecial.AsociarTipoVentaConEncabezado(venta.TipoVentaEspecial.Id, idVenta); if (venta.Cliente != null) { rventa.CrearVentasCliente(venta.Cliente.Id, idVenta); } rventa.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura + 1, (long)terminal.NumeroUltimaTransaccion + 1); var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(contenido); //contenido = System.Convert.ToBase64String(plainTextBytes); rventa.CrearCopiaImpresion("00", terminal.Localidad.Codigo, terminal.Codigo, tipo, usuario.IdUsuario, contenido, terminal.Localidad.Codigo, modeloImpresora, (long)terminal.NumeroUltimaFactura + 1, (int)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, terminal.Codigo, tipo, usuario.IdUsuario); respuesta.Valida = true; } else { throw new Exception("[GuardarVenta]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (TransactionAbortedException ex) { respuesta.Valida = false; respuesta.Mensaje = "[GuardarVentaEspecial]: No pudo ser guardada la venta."; log.Error("[GuardarVentaEspecial]: No pudo ser guardada la venta. " + ex.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(ex)); } }
private bool IsDependent(IntermediateCode codei, IntermediateCode codej) { if (codei is ICAssignment && codej is ICAssignment) { ICAssignment assignmenti = (ICAssignment)codei, assignmentj = (ICAssignment)codej; if (ETerminal.IsEqual(assignmenti.result, assignmentj.result) || ETerminal.IsEqual(assignmentj.result, assignmenti.operand1) || ETerminal.IsEqual(assignmentj.result, assignmenti.operand2) || ETerminal.IsEqual(assignmenti.result, assignmentj.operand1) || ETerminal.IsEqual(assignmenti.result, assignmentj.operand2)) { return(true); } return(false); } else if (codei is ICAssignment && codej is ICWhile) { ICAssignment assignmenti = (ICAssignment)codei; ICWhile whilej = (ICWhile)codej; if (ETerminal.IsEqual(assignmenti.result, whilej.condition)) { return(true); } foreach (var entry in whilej.conditionCodes.GetCodes()) { if (IsDependent(assignmenti, entry)) { return(true); } } foreach (var entry in whilej.codes.GetCodes()) { if (IsDependent(assignmenti, entry)) { return(true); } } return(false); } else if (codei is ICWhile && codej is ICAssignment) { ICWhile whilei = (ICWhile)codei; ICAssignment assignmentj = (ICAssignment)codej; if (ETerminal.IsEqual(assignmentj.result, whilei.condition)) { return(true); } foreach (var entry in whilei.conditionCodes.GetCodes()) { if (IsDependent(entry, assignmentj)) { return(true); } } foreach (var entry in whilei.codes.GetCodes()) { if (IsDependent(entry, assignmentj)) { return(true); } } return(false); } else if (codei is ICWhile && codej is ICWhile) { ICWhile whilei = (ICWhile)codei, whilej = (ICWhile)codej; List <IntermediateCode> codesi = new List <IntermediateCode>(), codesj = new List <IntermediateCode>(); codesi.AddRange(whilei.conditionCodes.GetCodes()); codesi.AddRange(whilei.codes.GetCodes()); codesj.AddRange(whilej.conditionCodes.GetCodes()); codesj.AddRange(whilej.codes.GetCodes()); foreach (var entryi in codesi) { foreach (var entryj in codesj) { if (IsDependent(entryi, entryj)) { return(true); } } } return(false); } else if (codei is ICAssignment && codej is ICIfElse) { ICAssignment assignmenti = (ICAssignment)codei; ICIfElse ifelsej = (ICIfElse)codej; if (ETerminal.IsEqual(assignmenti.result, ifelsej.condition)) { return(true); } List <IntermediateCode> codesj = new List <IntermediateCode>(); codesj.AddRange(ifelsej.conditionCodes.GetCodes()); codesj.AddRange(ifelsej.codesIf.GetCodes()); codesj.AddRange(ifelsej.codesElse.GetCodes()); foreach (var entry in codesj) { if (IsDependent(assignmenti, entry)) { return(true); } } return(false); } else if (codei is ICIfElse && codej is ICAssignment) { ICIfElse ifelsei = (ICIfElse)codei; ICAssignment assignmentj = (ICAssignment)codej; if (ETerminal.IsEqual(assignmentj.result, ifelsei.condition)) { return(true); } List <IntermediateCode> codesi = new List <IntermediateCode>(); codesi.AddRange(ifelsei.conditionCodes.GetCodes()); codesi.AddRange(ifelsei.codesIf.GetCodes()); codesi.AddRange(ifelsei.codesElse.GetCodes()); foreach (var entry in codesi) { if (IsDependent(entry, assignmentj)) { return(true); } } return(false); } else if (codei is ICWhile && codej is ICIfElse) { ICWhile whilei = (ICWhile)codei; ICIfElse ifelsej = (ICIfElse)codej; List <IntermediateCode> codesi = new List <IntermediateCode>(), codesj = new List <IntermediateCode>(); codesi.AddRange(whilei.conditionCodes.GetCodes()); codesi.AddRange(whilei.codes.GetCodes()); codesj.AddRange(ifelsej.conditionCodes.GetCodes()); codesj.AddRange(ifelsej.codesIf.GetCodes()); codesj.AddRange(ifelsej.codesElse.GetCodes()); foreach (var entryi in codesi) { foreach (var entryj in codesj) { if (IsDependent(entryi, entryj)) { return(true); } } } return(false); } else if (codei is ICIfElse && codej is ICWhile) { ICIfElse ifelsei = (ICIfElse)codei; ICWhile whilej = (ICWhile)codej; List <IntermediateCode> codesi = new List <IntermediateCode>(), codesj = new List <IntermediateCode>(); codesi.AddRange(ifelsei.conditionCodes.GetCodes()); codesi.AddRange(ifelsei.codesIf.GetCodes()); codesi.AddRange(ifelsei.codesElse.GetCodes()); codesj.AddRange(whilej.conditionCodes.GetCodes()); codesj.AddRange(whilej.codes.GetCodes()); foreach (var entryi in codesi) { foreach (var entryj in codesj) { if (IsDependent(entryi, entryj)) { return(true); } } } return(false); } else { ICIfElse ifelsei = (ICIfElse)codei; ICIfElse ifelsej = (ICIfElse)codej; List <IntermediateCode> codesi = new List <IntermediateCode>(), codesj = new List <IntermediateCode>(); codesi.AddRange(ifelsei.conditionCodes.GetCodes()); codesi.AddRange(ifelsei.codesIf.GetCodes()); codesi.AddRange(ifelsei.codesElse.GetCodes()); codesj.AddRange(ifelsej.conditionCodes.GetCodes()); codesj.AddRange(ifelsej.codesIf.GetCodes()); codesj.AddRange(ifelsej.codesElse.GetCodes()); foreach (var entryi in codesi) { foreach (var entryj in codesj) { if (IsDependent(entryi, entryj)) { return(true); } } } return(false); } }
// TODO : este requiere manejo transaccional!. public void GuardarDevolucion(EDevolucion devolucion, ref Dictionary <string, string> IdsAcumulados, ETerminal terminal, EUsuario usuario, string tipo, string contenido, string modeloImpresora, bool implementaImpuestoCompuesto, out Respuesta respuesta) { // //devolucion.DescontarCambio(); //1. Creamos el encabezado de la venta. string idVenta = Guid.NewGuid().ToString(); RVenta rventa = new RVenta(); respuesta = new Respuesta(false); try { using (TransactionScope scope = new TransactionScope()) { if (rventa.CrearVenta(idVenta, devolucion.BrutoNegativo, devolucion.BrutoPositivo, terminal.Codigo, tipo, 1, (long)terminal.NumeroUltimaFactura + 1, (long)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, usuario.IdUsuario, 0) == 1) { //2. Creamos cada detalle de la venta. int consecutivo = 0; var tirilla = devolucion.tirilla; foreach (EItemVenta detalle in tirilla) { var idVentasArticulo = Guid.NewGuid(); consecutivo += 1; rventa.CrearDetalleVenta(idVentasArticulo, detalle.Articulo.Id, detalle.Articulo.CodigoImpresion, terminal.Codigo, consecutivo, detalle.Impuesto, (long)terminal.NumeroUltimaTransaccion + 1, detalle.Articulo.Impuesto1, detalle.Peso, usuario.IdUsuario, detalle.Valor, idVenta, detalle.Cantidad, detalle.CodigoLeido); if (implementaImpuestoCompuesto) { rventa.ActualizarVentasArticulo(idVentasArticulo); foreach (KeyValuePair <EImpuestosArticulo, decimal> entry in detalle.Impuestos) { rventa.CrearVentasArticuloImpuesto(idVentasArticulo, entry.Key.Descripcion, entry.Key.Identificador, entry.Key.Porcentaje, entry.Key.Valor, entry.Key.TipoImpuesto, entry.Value, entry.Key.Id); } } } //3. Creamos totales de venta(registro_venta). if (IdsAcumulados == null) { IdsAcumulados = new Dictionary <string, string>(); IdsAcumulados.Add("idRegistroVenta", Guid.NewGuid().ToString()); //Creamos el registro venta rventa.CrearRegistroVenta(IdsAcumulados["idRegistroVenta"], terminal.Codigo, usuario.IdUsuario); } //Actualizo registro venta rventa.ActualizarRegistroVenta(IdsAcumulados["idRegistroVenta"], devolucion.BrutoPositivo, devolucion.BrutoNegativo, devolucion.NumeroDeItemsVenta, 0, devolucion.TotalVenta, 1, devolucion.TotalVenta, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); //4. Creamos el detalle de los medios de pago. consecutivo = 1; rventa.CrearMedioPago("1", terminal.Codigo, consecutivo, (long)terminal.NumeroUltimaTransaccion + 1, devolucion.TotalVenta, idVenta, 0, "00", "00", 0); //5. Creamos totales de medios de pago por cada medio de pago. if (!IdsAcumulados.ContainsKey("1")) { IdsAcumulados.Add("1", Guid.NewGuid().ToString()); rventa.CrearTotalesMedioPago(IdsAcumulados["1"], IdsAcumulados["idRegistroVenta"], "1"); } //Actualizamos el medio de pago rventa.ActualizarTotalesMedioPago(IdsAcumulados["1"], devolucion.TotalVenta); if (devolucion.Cliente != null) { rventa.CrearVentasCliente(devolucion.Cliente.Id, idVenta); } rventa.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura + 1, (long)terminal.NumeroUltimaTransaccion + 1); //var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(contenido); //contenido = System.Convert.ToBase64String(plainTextBytes); rventa.CrearCopiaImpresion("00", terminal.Localidad.Codigo, terminal.Codigo, tipo, usuario.IdUsuario, contenido, terminal.Localidad.Codigo, modeloImpresora, (long)terminal.NumeroUltimaFactura + 1, (int)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, terminal.Codigo, tipo, usuario.IdUsuario); respuesta.Valida = true; } else { throw new Exception("[GuardarDevolucion]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (SqlException e) { if (e.Number == -2 || e.Number == 121) { respuesta.Valida = false; respuesta.Mensaje = "Se perdió la conexión con el servidor."; log.Error("[GuardarDevolucion]: No pudo ser guardada la transaccion: " + e.Message); } else { respuesta.Valida = false; respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema."; log.Error("[GuardarDevolucion]: No pudo ser guardada la transaccion: " + e.Message); } Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } catch (Exception ex) { respuesta.Documentar(false, "[GuardarDevolucion]: No pudo ser guardada la devolucion. "); log.Error("[GuardarDevolucion]: No pudo ser guardada la devolucion. " + ex.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(ex)); } }
public void GuardarIntervencion(EIntervencion intervencion, ETerminal terminal, EUsuario usuario, out Respuesta respuesta) { //1. Creamos el encabezado de la venta. string idVenta = Guid.NewGuid().ToString(); RIntervencion rCajon = new RIntervencion(); respuesta = new Respuesta(false); Dictionary <string, string> IdsAcumulados = Entorno.Instancia.IdsAcumulados; try { using (TransactionScope scope = new TransactionScope()) { //if (IdsAcumulados == null) //{ // IdsAcumulados = new Dictionary<string, string>(); // IdsAcumulados.Add("idIntervencion", Guid.NewGuid().ToString()); // //Creamos el registro venta // rCajon.CrearRegistroVenta(IdsAcumulados["idIntervencion"], terminal.Codigo, usuario.IdUsuario); //} //Actualizo registro venta //rCajon.ActualizarRegistroVenta(IdsAcumulados["idRegistroVenta"], rCajon.Valor); int resul = rCajon.CrearRegistroIntervencion(Guid.NewGuid().ToString(), intervencion.id_venta, intervencion.claveSupervisor, intervencion.motivo, terminal.Codigo, intervencion.nro_transac, usuario.IdUsuario); if (resul == 1) { //Actualizamos el terminal rCajon.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1); rVenta.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1); respuesta.Valida = true; } else { throw new Exception("[GuardarIntervencion]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (SqlException e) { if (e.Number == -2 || e.Number == 121) { respuesta.Valida = false; respuesta.Mensaje = "Se perdió la conexión con el servidor."; log.Error("[GuardarIntervencion]: No pudo ser guardada la transaccion: " + e.Message); } else { respuesta.Valida = false; respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema."; log.Error("[GuardarIntervencion]: No pudo ser guardada la intervención: " + e.Message); } // Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } catch (Exception ex) { respuesta.Documentar(false, " No pudo ser guardada la intervención."); log.Error("[GuardarIntervencion]: No pudo ser guardada la intervención. " + ex.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(ex)); } }
public void CancelarVenta(ETransaccion transaccion, ref Dictionary <string, string> IdsAcumulados, ETerminal terminal, EUsuario usuario, String tipo, out Respuesta respuesta) { respuesta = new Respuesta(true); string idVenta = Guid.NewGuid().ToString(); RVenta rventa = new RVenta(); decimal bruto = transaccion.BrutoNegativo > transaccion.BrutoPositivo ? transaccion.BrutoNegativo : transaccion.BrutoPositivo; try { using (TransactionScope scope = new TransactionScope()) { if (rventa.CrearVenta(idVenta, bruto, bruto, terminal.Codigo, tipo, 1, 00, (long)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, usuario.IdUsuario, 00) == 1) { //3. Creamos totales de venta(registro_venta). if (IdsAcumulados == null) { IdsAcumulados = new Dictionary <string, string>(); IdsAcumulados.Add("idRegistroVenta", Guid.NewGuid().ToString()); //Creamos el registro venta rventa.CrearRegistroVenta(IdsAcumulados["idRegistroVenta"], terminal.Codigo, usuario.IdUsuario); } //Actualizo registro venta rventa.ActualizarRegistroVenta(IdsAcumulados["idRegistroVenta"], bruto, bruto, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, bruto); rventa.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1); } else { throw new Exception("[CancelarVenta]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (SqlException e) { if (e.Number == -2 || e.Number == 121) { respuesta.Valida = false; respuesta.Mensaje = "Se perdió la conexión con el servidor."; log.Error("[CancelarVenta]: No pudo ser guardada la transacion: " + e.Message); } else { respuesta.Valida = false; respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema."; log.Error("[CancelarVenta]: No pudo ser guardada la venta: " + e.Message); } Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } catch (Exception e) { respuesta.Valida = false; respuesta.Mensaje = "[CancelarVenta]: No pudo ser guardada la transaccion."; log.Error("[CancelarVenta]: No pudo ser guardada la venta. " + e.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } }