Esempio n. 1
0
        // Método para imprimir un ticket de venta de una lista
        public void printList(LTL_LotteryList pNumberList, int pTicketType = 0)
        {
            // Configurar impresión para Ticket de Venta
            SaleTicket saleTicket = new SaleTicket(pTicketType);

            saleTicket.companyName = UtilityService.getCompanyName();
            // Obtener datos del punto de venta
            LPS_LotteryPointSale pointSale = UtilityService.getPointSale();

            saleTicket.pointSaleName = pointSale.LPS_DisplayName;
            // Obtener usuario vendedor
            saleTicket.userName = SystemSession.username;
            // Obtener datos del sorteo
            LotteryDrawRepository drawRepo   = new LotteryDrawRepository();
            LTD_LotteryDraw       drawObject = drawRepo.getById(pNumberList.LTD_LotteryDraw);

            saleTicket.drawDate = drawObject.LTD_CreateDate;
            // Obtener datos de tipo de sorteo
            this.drawTypeRepo = new LotteryDrawTypeRepository();
            LDT_LotteryDrawType drawType = drawTypeRepo.getById(drawObject.LDT_LotteryDrawType);

            saleTicket.drawTypeCode = drawType.LDT_Code;
            // Obtener datos de los premios
            PrizeFactorService     prizeFactorService = new PrizeFactorService();
            LPF_LotteryPrizeFactor prizeFactor        = prizeFactorService.getByGroup(drawType.LDT_Id);

            if (prizeFactor != null)
            {
                saleTicket.prizeFactorArray[0] = prizeFactor.LPF_FirtsPrizeFactor;
                saleTicket.prizeFactorArray[1] = prizeFactor.LPF_SecondPrizeFactor;
                saleTicket.prizeFactorArray[2] = prizeFactor.LPF_ThirdPrizeFactor;
            }
            // Llenar datos del número de lista
            saleTicket.createDate   = DateTime.Now;
            saleTicket.ticketId     = pNumberList.LTL_Id;
            saleTicket.globalId     = pointSale.LPS_Id + "" + saleTicket.ticketId;
            saleTicket.customerName = pNumberList.LTL_CustomerName;
            // Obtener detalle de la lista procesada
            this.listRepo = new LotteryListRepository();
            saleTicket.listNumberDetail = listRepo.getTupleListDetail(pNumberList.LTL_Id);
            // Crear instancia de impresora y asignar el ticket
            TicketPrinter ticketPrinter = new TicketPrinter();

            ticketPrinter.saleTicket = saleTicket;
            // Obtener nombre de impresora y enviar impresión
            string printerName = UtilityService.getTicketPrinterName();

            ticketPrinter.printLotterySaleTicket(printerName);
        }
Esempio n. 2
0
        public bool AddSale(string from_station, string to_station, int route_id, int traveller_id, short amount, string ticket_name)
        {
            conn.Open();

            NpgsqlTransaction transaction = conn.BeginTransaction();

            try
            {
                RouteSubrouteRepository routeSubrouteRepository = new RouteSubrouteRepository();
                List <RouteSubroute>    routeParts = routeSubrouteRepository.GetRoutePart(route_id, from_station, to_station);

                foreach (var routePart in routeParts)
                {
                    if (routePart.seats_amount <= 0)
                    {
                        throw new Exception();
                    }
                }

                int saleId = NextId();

                Sale sale = new Sale();
                sale.id             = saleId;
                sale.payment_status = true;
                sale.sale_date      = DateTime.Now;
                sale.to_station     = to_station;
                sale.from_station   = from_station;
                sale.route_id       = route_id;
                sale.traveller_id   = traveller_id;

                NpgsqlCommand addSale = new NpgsqlCommand(" insert into sale " +
                                                          "(id, payment_status, from_station, to_station, route_id, traveller_id) " +
                                                          "values(:id,:payment_status, :from_station, :to_station, :route_id, :traveller_id); ", conn);

                var id_db_sale = new NpgsqlParameter(":id", DbType.Int32);
                id_db_sale.Value = sale.id;
                addSale.Parameters.Add(id_db_sale);

                var payment_status_db = new NpgsqlParameter(":payment_status", DbType.Boolean);
                payment_status_db.Value = sale.payment_status;
                addSale.Parameters.Add(payment_status_db);

                var to_station_db = new NpgsqlParameter(":to_station", DbType.String);
                to_station_db.Value = sale.to_station;
                addSale.Parameters.Add(to_station_db);

                var from_station_db = new NpgsqlParameter(":from_station", DbType.String);
                from_station_db.Value = sale.from_station;
                addSale.Parameters.Add(from_station_db);

                var route_id_db = new NpgsqlParameter(":route_id", DbType.Int32);
                route_id_db.Value = sale.route_id;
                addSale.Parameters.Add(route_id_db);

                var traveller_id_db = new NpgsqlParameter(":traveller_id", DbType.Int32);
                traveller_id_db.Value = sale.traveller_id;
                addSale.Parameters.Add(traveller_id_db);

                addSale.Prepare();

                //throw new Exception(); <-- TEST

                NpgsqlCommand selectTicket = new NpgsqlCommand("SELECT id FROM ticket" +
                                                               " WHERE name=:ticket_name", conn);

                var ticket_name_db = new NpgsqlParameter(":ticket_name", DbType.String);
                ticket_name_db.Value = ticket_name;
                selectTicket.Parameters.Add(ticket_name_db);

                selectTicket.Prepare();

                int ticketId = (int)selectTicket.ExecuteScalar();

                SaleTicket saleTicket = new SaleTicket
                {
                    sale_id   = saleId,
                    ticket_id = ticketId,
                    amount    = amount
                };

                NpgsqlCommand addSaleTicket = new NpgsqlCommand("insert into sale_ticket (amount,sale_id,ticket_id) " +
                                                                " values(:amount, :sale_id, :ticket_id); ", conn);
                var amount_db = new NpgsqlParameter(":amount", DbType.Int32);
                amount_db.Value = saleTicket.amount;
                addSaleTicket.Parameters.Add(amount_db);

                var sale_id_db = new NpgsqlParameter(":sale_id", DbType.Int32);
                sale_id_db.Value = saleTicket.sale_id;
                addSaleTicket.Parameters.Add(sale_id_db);

                var ticket_id_db = new NpgsqlParameter(":ticket_id", DbType.Int32);
                ticket_id_db.Value = saleTicket.ticket_id;
                addSaleTicket.Parameters.Add(ticket_id_db);

                addSaleTicket.Prepare();

                int rowsAddedToSale       = addSale.ExecuteNonQuery();
                int rowsAddedToTicketSale = addSaleTicket.ExecuteNonQuery();


                for (int i = 0; i < routeParts.Count; i++)
                {
                    routeParts[i].seats_amount -= 1;
                    NpgsqlCommand updateRouteSubroute = new NpgsqlCommand("update route_subroute set seats_amount = :seats_amount " +
                                                                          "where id = :id;", conn);

                    var seats_amount_db = new NpgsqlParameter(":seats_amount", DbType.Int32);
                    seats_amount_db.Value = routeParts[i].seats_amount;
                    updateRouteSubroute.Parameters.Add(seats_amount_db);

                    var id_db = new NpgsqlParameter(":id", DbType.Int32);
                    id_db.Value = routeParts[i].id;
                    updateRouteSubroute.Parameters.Add(id_db);

                    updateRouteSubroute.Prepare();

                    int rowsUpdated = updateRouteSubroute.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                conn.Close();
                return(false);
            }
            transaction.Commit();
            conn.Close();
            return(true);
        }