Beispiel #1
0
        public ResponseDTO GetMovimiento(double transactionId)
        {
            MovimientoDTO res  = new MovimientoDTO();
            Hashtable     data = _service.Get(string.Format("mscuentatransaccion/api/movimientos/transaccion/{0}", transactionId));

            return(Mapper.MapResponse(res, data));
        }
Beispiel #2
0
        private bool RegistrarListadoArticulos()
        {
            if (!VerificarDatosObligatorios())
            {
                MessageBox.Show(@"Por favor ingrese los campos Obligatorios.", @"Atención", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return(false);
            }
            /////////////////
            ///COMPROBANTE///
            /////////////////
            ///
            long clienteId   = _clienteServicio.ObtenerClientePorDni("99999999").Id;
            long proveedorId = _proveedorServicio.ObtenerRazonSocial(txtRazonSocial.Text).Id;

            ComprobanteCompraDTO comprobante = new ComprobanteCompraDTO
            {
                Fecha       = DateTime.Now,
                ProveedorId = proveedorId,
                UsuarioId   = DatosSistema.UsuarioId,
                ClienteId   = clienteId,
                Descuento   = nudDescuento.Value,

                Items = detalles.Values.ToList()
            };

            long comprobante_id;

            comprobante_id = _comprobanteServicio.GenerarComprobanteCompra(comprobante);

            DetalleCajaDTO detalleCaja = new DetalleCajaDTO
            {
                CajaId   = DatosSistema.CajaId,
                Monto    = comprobante.Total,
                TipoPago = TipoPago.Efectivo
            };

            _detalleCajaServicio.Generar(detalleCaja);

            //////////////
            //Movimiento//
            //////////////
            MovimientoDTO movimiento = new MovimientoDTO
            {
                CajaID        = DatosSistema.CajaId,
                ComprobanteID = comprobante_id,
                Tipo          = TipoMovimiento.Egreso,
                UsuarioID     = DatosSistema.UsuarioId,
                Monto         = comprobante.Total,
                Fecha         = DateTime.Now,
            };

            _movimientoServicio.GenerarMovimiento(movimiento);


            Close();

            return(true);
        }
        public IList <MovimientoDTO> UltimosMovimientos(string pDni)
        {
            string url = "https://my-json-server.typicode.com/utn-frcu-isi-tdp/tas-db/account-movements?id=" + pDni;
            IList <MovimientoDTO> movimientos = new List <MovimientoDTO>();

            // Empezar el timer para saber cuánto tiempo llevó la operación
            Stopwatch timer = new Stopwatch();

            timer.Start();

            // Indicador que pasará a verdadero si ocurre un error
            bool fallida = false;

            try
            {
                dynamic response = ObtenerRespuesta(url);

                if (response.Count >= 1)
                {
                    for (int i = 0; i < response[0].response.movements.Count; i++)
                    {
                        MovimientoDTO mov = new MovimientoDTO();
                        mov.Fecha = response[0].response.movements[i].date;
                        mov.Monto = response[0].response.movements[i].ammount;

                        movimientos.Add(mov);
                    }
                    Console.WriteLine("Item completo -> {0}", response[0].response);
                }
                return(movimientos);
            }
            catch
            {
                fallida = true;

                // Devolver la misma excepción para que sea tratada por el nivel anterior
                throw;
            }
            finally
            {
                RegistrarOperacion(pDni, "Últimos movimientos", timer, fallida);
            }
        }
        public void GenerarMovimiento(MovimientoDTO dto)
        {
            using (var baseDatos = new ModeloXCommerceContainer())
            {
                var nuevoMovimiento = new AccesoDatos.Movimiento
                {
                    CajaId        = dto.CajaID,
                    ComprobanteId = dto.ComprobanteID,
                    TipoMovimento = dto.Tipo,
                    UsuarioId     = dto.UsuarioID,
                    Monto         = dto.Monto,
                    Fecha         = dto.Fecha,
                    Descripcion   = dto.Descripcion
                };

                baseDatos.Movimientos.Add(nuevoMovimiento);

                baseDatos.SaveChanges();
            }
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            string                  salida     = string.Empty;
            long                    terminalID = int.Parse(eCatConfig.GetValue("TerminalID"));
            ResponseDTO             transactionaCoreResponse = new ResponseDTO();
            BusinessActivityService _service = new BusinessActivityService(Convert.ToString(terminalID), ref transactionaCoreResponse);

            Console.WriteLine("\n");
            if (!_service.Available())
            {
                Console.WriteLine("Servicio no disponible.");
                Console.WriteLine("-> Verificar la configuración en EmuladorCajero.exe.Config");
                Console.ReadLine();
                return;
            }
            while (!salida.Equals("exit"))
            {
                int    dni;
                double saldoInicial = -1;
                double saldoPostDeb = -1;
                double saldoPostRev = -1;
                Console.Write("-> Ingrese DNI: ");
                while (!int.TryParse(Console.ReadLine(), out dni))
                {
                    Console.Write("Ingrese un DNI válido: ");
                }

                Console.Write("-> Ingrese Token: ");
                int token;
                while (!int.TryParse(Console.ReadLine(), out token))
                {
                    Console.Write("Ingrese un token numérico: ");
                }


                ResponseDTO response = _service.GetToken(dni, token);
                if (!response.status)
                {
                    Console.WriteLine(string.Format("{0} [{1}]", response.description, response.message));
                    Console.WriteLine("-> Tipee \"exit\" para salir, o cualquier otro caracter para continuar...");
                    salida = Console.ReadLine();
                    continue;
                }
                RespuestaTokenDTO respuestaToken = (RespuestaTokenDTO)response.responseData;
                Console.WriteLine("");
                Console.WriteLine("Usuario: " + respuestaToken.clienteDTO.alias);
                foreach (CuentaDTO cuenta in respuestaToken.cuentas)
                {
                    Console.WriteLine("Cuenta: " + cuenta.numero);
                    string tipoDeCuenta = string.Empty;
                    switch (cuenta.tipoCuentaId)
                    {
                    case 19:
                        tipoDeCuenta = "Pesos";
                        break;

                    case 20:
                        tipoDeCuenta = "Temporal";
                        break;

                    case 46:
                        tipoDeCuenta = "Cuenta Prestamos";
                        break;

                    default:
                        tipoDeCuenta = cuenta.tipoCuentaId.ToString();
                        break;
                    }

                    Console.WriteLine("Tipo de cuenta: " + tipoDeCuenta);
                    Console.WriteLine("Saldo total: " + cuenta.saldo);
                    saldoInicial = (double)cuenta.saldo;
                }
                Console.WriteLine("Saldo del token: " + respuestaToken.tokenCheckDTO.saldoToken);
                Console.WriteLine("Estado del token: " + respuestaToken.tokenCheckDTO.respuesta);
                Console.WriteLine("\n");
                if (respuestaToken.tokenCheckDTO.estadoToken.Equals("USADO"))
                {
                    Console.WriteLine("-> Tipee \"exit\" para salir, o cualquier otro caracter para continuar...");
                    salida = Console.ReadLine();
                    continue;
                }
                Console.Write("-> Ingrese el importe que desea extraer: ");
                int importe;
                while (!int.TryParse(Console.ReadLine(), out importe))
                {
                    Console.Write("Sólo números: ");
                }
                TransactionDTO debitDTO = new TransactionDTO()
                {
                    dniOrigen  = Convert.ToString(dni),
                    dniDestino = Convert.ToString(dni),
                    terminal   = Convert.ToString(terminalID),
                    importe    = importe,
                    idUsuario  = respuestaToken.tokenCheckDTO.idUsuario,
                    tokenId    = respuestaToken.tokenCheckDTO.tokenId
                };
                ResponseDTO responseDebito = _service.Debit(debitDTO);
                if (responseDebito.status)
                {
                    double costoOperacion = 0;
                    List <ResponseTransactionDTO> resList = new List <ResponseTransactionDTO>((IEnumerable <ResponseTransactionDTO>)responseDebito.responseData);
                    long idTransaccion = (long)resList[0].id;
                    foreach (ResponseTransactionDTO res in resList)
                    {
                        ResponseDTO   responseMovimiento = _service.GetMovimiento(res.id);
                        MovimientoDTO mov = (MovimientoDTO)responseMovimiento.responseData;
                        Console.WriteLine("\n");
                        Console.WriteLine(responseDebito.description);

                        DateTime fecha = Convert.ToDateTime(res.fecha);
                        Console.WriteLine("\nRedATM");
                        Console.WriteLine("Fecha: " + fecha.Date.ToShortDateString());
                        Console.WriteLine("Hora: " + fecha.TimeOfDay);
                        Console.WriteLine("Terminal: " + res.terminal);
                        //Console.WriteLine("Número de cuenta: " + );
                        Console.WriteLine("Número de transacción: " + res.codigo);
                        Console.WriteLine("Transacción: " + res.detalle);
                        Console.WriteLine("Importe: $" + (mov.importeOrigen - mov.transaccion.costoOperacion).ToString());;
                        Console.WriteLine("Costo de la transacción: $" + mov.transaccion.costoOperacion.ToString());
                        Console.WriteLine("Su saldo es (S.E.U.O): $" + mov.saldo);
                        costoOperacion += mov.transaccion.costoOperacion;
                        saldoPostDeb    = mov.saldo;
                        Console.WriteLine("\n");
                    }
                    Console.WriteLine("¿Desea simular una reversa?");
                    Console.Write("-> Tipee \"yes\" para confirmar, o cualquier otro caracter para continuar: ");
                    if (Console.ReadLine().Equals("yes"))
                    {
                        TransactionDTO creditDTO = new TransactionDTO()
                        {
                            dniOrigen  = Convert.ToString(dni),
                            dniDestino = Convert.ToString(dni),
                            terminal   = Convert.ToString(terminalID),
                            importe    = importe,
                            comision   = costoOperacion,
                            idUsuario  = respuestaToken.tokenCheckDTO.idUsuario,
                            tokenId    = respuestaToken.tokenCheckDTO.tokenId,
                            idAsociadoALaTransaccion = idTransaccion
                        };
                        ResponseDTO responseCredito = _service.Debit(creditDTO, true);
                        if (responseCredito.status)
                        {
                            List <ResponseTransactionDTO> resReversaList = new List <ResponseTransactionDTO>((IEnumerable <ResponseTransactionDTO>)responseCredito.responseData);
                            foreach (ResponseTransactionDTO resReversa in resReversaList)
                            {
                                ResponseDTO   responseMovimientoReversa = _service.GetMovimiento(resReversa.id);
                                MovimientoDTO movReversa = (MovimientoDTO)responseMovimientoReversa.responseData;
                                Console.WriteLine("\n");
                                Console.WriteLine("Reversa generada correctamente");
                                Console.WriteLine(responseCredito.description);
                                DateTime fechaReversa = Convert.ToDateTime(resReversa.fecha);
                                Console.WriteLine("\nRedATM REVERSA");
                                Console.WriteLine("Fecha: " + fechaReversa.Date.ToShortDateString());
                                Console.WriteLine("Hora: " + fechaReversa.TimeOfDay);
                                Console.WriteLine("Terminal: " + resReversa.terminal);
                                //Console.WriteLine("Número de cuenta: " + );
                                Console.WriteLine("Número de transacción: " + resReversa.codigo);
                                Console.WriteLine("Transacción: " + resReversa.detalle);
                                Console.WriteLine("Importe: $" + (movReversa.importeOrigen).ToString());;
                                Console.WriteLine("Costo de la transacción: $" + movReversa.transaccion.costoOperacion.ToString());
                                Console.WriteLine("Su saldo es (S.E.U.O): $" + movReversa.saldo);
                                Console.WriteLine("\n");
                                saldoPostRev = movReversa.saldo;
                            }
                        }
                        else
                        {
                            Console.WriteLine(string.Format("{0} [{1}]\n", responseCredito.description, responseCredito.message));
                        }
                    }
                }
                else
                {
                    Console.WriteLine(string.Format("{0} [{1}]", responseDebito.description, responseDebito.message));
                    Console.WriteLine("-> Tipee \"exit\" para salir, o cualquier otro caracter para continuar...");
                    salida = Console.ReadLine();
                    continue;
                }
                if (saldoPostDeb >= 0)
                {
                    Console.WriteLine("\nSaldo inicial:      " + saldoInicial.ToString());
                    Console.WriteLine("Saldo post-debito:  " + saldoPostDeb.ToString());
                    if (saldoPostRev >= 0)
                    {
                        Console.WriteLine("Saldo post-reversa: " + saldoPostRev.ToString() + "\n");
                    }
                }
                Console.WriteLine("-> Tipee \"exit\" para salir, o cualquier otro caracter para continuar...");
                salida = Console.ReadLine();
                if (!salida.Equals("exit"))
                {
                    Console.WriteLine("--------------------------------------------------------------------------\n");
                }
            }
        }
        private void cerrarLaMesa(long mesaId, int numeroMesa)
        {
            bool desea_imprimir = true;

            if (rdbCheque.Checked)
            {
                _tfPAgo = TipoFormaPago.Cheque;
            }
            if (rdbEfectivo.Checked)
            {
                _tfPAgo = TipoFormaPago.Efectivo;
                _tPago  = TipoPago.Efectivo;
            }
            if (rdbTarjeta.Checked)
            {
                _tfPAgo = TipoFormaPago.Tarjeta;
                _tPago  = TipoPago.Tarjeta;
            }
            if (rdbCtaCte.Checked)
            {
                _tfPAgo = TipoFormaPago.CuentaCorriente;
                _tPago  = TipoPago.CtaCte;
            }

            var comprobanteMesaDto = _comprobanteSalonServicio.Obtener(mesaId);


            if (nudTotal.Value > 0)
            {
                if (_tfPAgo == TipoFormaPago.CuentaCorriente)
                {
                    bool puede_continuar = _clienteServicio.DescontarDeCuenta(idCliente, comprobanteMesaDto.Total);
                    if (!puede_continuar)
                    {
                        MessageBox.Show("La cuenta del cliente no tiene suficiente saldo");
                        return;
                    }
                }
                else
                {
                    if (_tfPAgo == TipoFormaPago.Cheque)
                    {
                        FormaPagoChequeDTO fp = new FormaPagoChequeDTO
                        {
                            TipoFormaPago = TipoFormaPago.Cheque,
                            Monto         = nudTotal.Value,
                            ComprobanteId = idComprobante,
                            BancoId       = ((BancoDTO)cbBanco.SelectedItem).Id,
                            Dias          = (int)nudDiasCheque.Value,
                            EnteEmisor    = txtEnteCheque.Text,
                            FechaEmision  = dtFechaCheque.Value,
                            Numero        = txtNumeroCheque.Text,
                        };

                        _formaPagoServicio.Generar(fp);
                    }
                    else
                    {
                        if (_tfPAgo == TipoFormaPago.Tarjeta)
                        {
                            FormaPagoTarjetaDTO fp = new FormaPagoTarjetaDTO
                            {
                                TipoFormaPago = TipoFormaPago.Tarjeta,
                                Monto         = nudTotal.Value,
                                ComprobanteId = idComprobante,
                                Numero        = txtNumeroTarjeta.Text,
                                Cupon         = "", //
                                PlanTarjetaId = ((PlanTarjetaDTO)cbPlan.SelectedItem).Id,
                                NumeroTarjeta = txtClaveTarjeta.Text
                            };

                            _formaPagoServicio.Generar(fp);
                        }
                    }
                }
                _comprobanteSalonServicio.FacturarComprobanteSalon(mesaId, comprobanteMesaDto);

                MovimientoDTO movimiento = new MovimientoDTO
                {
                    CajaID        = DatosSistema.CajaId,
                    ComprobanteID = comprobanteMesaDto.ComprobanteId,
                    Tipo          = TipoMovimiento.Ingreso,
                    UsuarioID     = DatosSistema.UsuarioId,
                    Monto         = nudTotal.Value,
                    Fecha         = DateTime.Now,
                };

                _movimientoServicio.GenerarMovimiento(movimiento);

                DetalleCajaDTO detalleCaja = new DetalleCajaDTO
                {
                    CajaId   = DatosSistema.CajaId,
                    Monto    = nudTotal.Value,
                    TipoPago = _tPago
                };
                _detalleCajaServicio.Generar(detalleCaja);
            }
            else
            {
                _comprobanteSalonServicio.Eliminar(comprobanteMesaDto.ComprobanteId);
                desea_imprimir = false;
            }

            var mesaParaCerrar = _mesaServicio.ObtenerPorId(mesaId);

            mesaParaCerrar.estadoMesa = EstadoMesa.Cerrada;
            _mesaServicio.Modificar(mesaParaCerrar);



            if (desea_imprimir)
            {
                const string message = "Desea imprimir/ver comprobante?";
                const string caption = "Comprobante";
                var          result  = MessageBox.Show(message, caption,
                                                       MessageBoxButtons.YesNo,
                                                       MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                {
                    var f = new FormularioComprobante(comprobanteMesaDto.ComprobanteId);
                    f.ShowDialog();
                }
            }
            this.Close();
        }
        private long?Facturar()
        {
            if (!VerificarDatosObligatorios())
            {
                MessageBox.Show("Error, complete los datos", "Error");
                return(null);
            }

            if (rbCtaCte.Checked)
            {
                bool puede_continuar = _clienteServicio.DescontarDeCuenta(idCliente, nudTotal.Value);
                if (!puede_continuar)
                {
                    MessageBox.Show("La cuenta del cliente no tiene suficiente saldo", "Adverencia");
                    return(null);
                }
            }

            /////////////////
            ///COMPROBANTE///
            /////////////////
            ComprobanteDTO comprobante = new ComprobanteDTO
            {
                Fecha     = DateTime.Now,
                UsuarioId = DatosSistema.UsuarioId,
                ClienteId = rbCtaCte.Checked ? idCliente : consumidorFinalId,
                Descuento = nudDescuento.Value,
                Items     = detalles.Values.ToList()
            };

            long comprobante_id;

            if (delivery)
            {
                comprobante_id = _comprobanteServicio.GenerarComprobanteDelivery(comprobante);
            }
            else
            {
                comprobante_id = _comprobanteServicio.Generar(comprobante);
            }

            ////////////////
            //Detalle Caja//
            ////////////////
            var formaDePago = TipoPago.Efectivo;

            if (rbCtaCte.Checked)
            {
                formaDePago = TipoPago.CtaCte;
            }
            if (rbTarjeta.Checked)
            {
                formaDePago = TipoPago.Tarjeta;
            }
            //Tipo pago propiedad de detalle caja no tiene cheque
            //asi que si es cheque no generamos detalle caja
            if (!rbCheque.Checked)
            {
                DetalleCajaDTO detalleCaja = new DetalleCajaDTO
                {
                    CajaId   = DatosSistema.CajaId,
                    Monto    = comprobante.Total,
                    TipoPago = formaDePago
                };
                _detalleCajaServicio.Generar(detalleCaja);
            }

            ////////////////
            ///FORMA PAGO///
            ////////////////

            if (rbEfectivo.Checked)
            {
                FormaPagoEfectivoDTO fp = new FormaPagoEfectivoDTO
                {
                    TipoFormaPago = TipoFormaPago.Efectivo,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                };
                _formaPagoServicio.Generar(fp);
            }

            if (rbCtaCte.Checked)
            {
                //parte descontar cuenta ya está al principio
                FormaPagoCtaCteDTO fp = new FormaPagoCtaCteDTO
                {
                    TipoFormaPago = TipoFormaPago.CuentaCorriente,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                    ClienteId     = idCliente,
                };
                _formaPagoServicio.Generar(fp);
            }

            if (rbCheque.Checked)
            {
                FormaPagoChequeDTO fp = new FormaPagoChequeDTO
                {
                    TipoFormaPago = TipoFormaPago.Cheque,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                    BancoId       = ((BancoDTO)cbBanco.SelectedItem).Id,
                    Dias          = (int)nudDiasCheque.Value,
                    EnteEmisor    = txtEnteCheque.Text,
                    FechaEmision  = dtFechaCheque.Value,
                    Numero        = txtNumeroCheque.Text,
                };

                _formaPagoServicio.Generar(fp);
            }

            if (rbTarjeta.Checked)
            {
                FormaPagoTarjetaDTO fp = new FormaPagoTarjetaDTO
                {
                    TipoFormaPago = TipoFormaPago.Tarjeta,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                    Numero        = txtNumeroTarjeta.Text,
                    Cupon         = "", //TODO ????
                    PlanTarjetaId = ((PlanTarjetaDTO)cbPlan.SelectedItem).Id,
                    NumeroTarjeta = txtClaveTarjeta.Text
                };

                _formaPagoServicio.Generar(fp);
            }

            //////////////
            //Movimiento//
            //////////////
            MovimientoDTO movimiento = new MovimientoDTO
            {
                CajaID        = DatosSistema.CajaId,
                ComprobanteID = comprobante_id,
                Tipo          = TipoMovimiento.Ingreso,
                UsuarioID     = DatosSistema.UsuarioId,
                Monto         = comprobante.Total,
                Fecha         = DateTime.Now,
            };

            _movimientoServicio.GenerarMovimiento(movimiento);

            foreach (var d in detalles)
            {
                //todo:producto tendria que tener si descuenta stock o no...
                _articuloServicio.DescontarStock(d.Value.ProductoId, d.Value.CantidadProducto);
            }

            MessageBox.Show("Factura exitosa.", delivery ? "Delivery" : "Kiosco");

            return((long?)comprobante_id);
            //Close();
        }