protected void InitTicket(Ticket ticket) { if (ticket.Estado != Ticket.Estados.Pendiente) { return; } if (ticket.Vehiculo == null) { throw new ApplicationException("No se puede iniciar el ticket porque no tiene un vehiculo asignado"); } var ciclo = new CicloLogisticoHormigon(ticket, DaoFactory, new MessageSaver(DaoFactory)); ciclo.ProcessEvent(new InitEvent(DateTime.UtcNow)); }
protected void btIniciar_Click(object sender, EventArgs e) { mpePanel.Hide(); if (TicketToInitId.Get() <= 0) { return; } var date = dtHora.SelectedDate; if (!date.HasValue) { ThrowMustEnter("FECHA"); } var ticket = DAOFactory.TicketDAO.FindById(TicketToInitId.Get()); TicketToInitId.Set(-1); SetStartDate(ticket, SecurityExtensions.ToDataBaseDateTime(date.Value)); var messageSaver = new MessageSaver(DAOFactory); var ciclo = new CicloLogisticoHormigon(ticket, DAOFactory, messageSaver); var evento = new InitEvent(DateTime.UtcNow); try { ciclo.ProcessEvent(evento); ShowInfo(CultureManager.GetSystemMessage("CLOG_START_SENT") + ticket.Vehiculo.Interno); Bind(); if (TieneDocumentosVencidos.Get()) { messageSaver.Save(MessageCode.CicloLogisticoIniciadoDocumentosInvalidos.GetMessageCode(), ticket.Vehiculo, evento.Date.AddSeconds(1), null, string.Empty); } } catch (NoVehicleException) { ShowError(new ApplicationException(CultureManager.GetError("TICKET_NO_VEHICLE_ASSIGNED"))); } catch //AlreadyOpenException, QueueException, Exception { ShowError(new ApplicationException(CultureManager.GetError("CLOG_MESSAGE_NOT_SENT") + ticket.Vehiculo.Interno)); } }
protected override void Regenerate() { if (EditObject.Vehiculo == null) { ThrowMustEnter("Entities", "PARENTI03"); } var ticket = DAOFactory.TicketDAO.FindById(EditObject.Id); var ciclo = new CicloLogisticoHormigon(ticket, DAOFactory, null /*new MessageSaver(DAOFactory)*/); ciclo.Regenerate(); ShowInfo(CultureManager.GetSystemMessage("TCIKET_REGENERATE_DONE")); Bind(); updRefreshTabGeneral.Update(); updRefreshTabDetalles.Update(); }
protected void btOpenedCerrarTicket_Click(object sender, EventArgs e) { if (TicketToInitId.Get() <= 0) { return; } var ticket = DAOFactory.TicketDAO.FindById(TicketToInitId.Get()); var opened = DAOFactory.TicketDAO.FindEnCurso(ticket.Vehiculo.Dispositivo); if (opened != null) { opened.UserField3 += "(cerrado manual x inicio)"; var ciclo = new CicloLogisticoHormigon(opened, DAOFactory, new MessageSaver(DAOFactory)); var evento = new CloseEvent(DateTime.UtcNow); ciclo.ProcessEvent(evento); } StartTicketWindow(ticket); }
protected void lnkbtnEstado_Command(object sender, CommandEventArgs commandEventArgs) { var index = Convert.ToInt32(commandEventArgs.CommandArgument); var id = Convert.ToInt32(Grid.DataKeys[index].Value); var ticket = DAOFactory.TicketDAO.FindById(id); switch (commandEventArgs.CommandName) { case "Start": StartTicketWindow(ticket); break; case "Close": ticket.UserField3 += "(cerrado manual)"; var ciclo = new CicloLogisticoHormigon(ticket, DAOFactory, new MessageSaver(DAOFactory)); var evento = new CloseEvent(DateTime.UtcNow); ciclo.ProcessEvent(evento); Bind(); break; } }
public Respuesta <bool> Anular(string sessionId, string company, string branch, string code, string reason) { try { ValidateLoginInfo(sessionId, Securables.WebServiceTickets); var empresa = GetEmpresaByCode(company); var linea = string.IsNullOrEmpty(branch) ? null : GetLineaByCode(branch, empresa); var codigo = code.Trim(); if (string.IsNullOrEmpty(codigo)) { throw new ApplicationException("El codigo no puede estar vacío"); } var ticket = DAOFactory.TicketDAO.FindByCode(new[] { empresa.Id }, new[] { linea != null ? linea.Id : -1 }, codigo); if (ticket == null) { throw new ApplicationException("No se encontró un ticket con el código: " + code); } if (ticket.Estado == Ticket.Estados.EnCurso) { var ciclo = new CicloLogisticoHormigon(ticket, DAOFactory, new MessageSaver(DAOFactory)); var eventoCierre = EventFactory.GetCloseEvent(); ciclo.ProcessEvent(eventoCierre); } ticket.Anular(reason, Usuario); DAOFactory.TicketDAO.SaveOrUpdate(ticket); return(Respuesta <bool> .Create(true)); } catch (Exception e) { STrace.Error("WebService Tickets", e.Message); return(Respuesta <bool> .CreateError(e.Message)); } }
public Respuesta <bool> AssignAndInit(string sessionId, string company, string branch, DateTime utcDate, string clientCode, string deliveryPointCode, int tripNo, string vehicle, string driver, string load) { try { ValidateLoginInfo(sessionId, Securables.WebServiceTickets); var empresa = GetEmpresaByCode(company); var linea = string.IsNullOrEmpty(branch) ? null : GetLineaByCode(branch, empresa); Ticket ticket; if (tripNo > 0) { ticket = DAOFactory.TicketDAO.FindByOrdenDiario(empresa != null ? empresa.Id : -1, linea != null ? linea.Id : -1, utcDate, tripNo); if (ticket == null) { throw new ApplicationException("No se encontro un ticket con un orden " + tripNo + " para el dia " + utcDate.ToString("dd/MM/yyyy")); } if (ticket.Cliente.Codigo != clientCode) { throw new ApplicationException("El ticket con orden " + tripNo + " para el dia " + utcDate.ToString("dd/MM/yyyy") + " no tiene el mismo cliente que el ingresado. Ingresado: " + clientCode + " - Ticket " + ticket.Codigo + ": " + ticket.Cliente.Codigo); } } else { var respuesta = Respuesta <bool> .Create(true); respuesta.Mensaje = "No se recibió número de viaje. Ticket omitido."; return(respuesta); //var cliente = GetClienteByCode(clientCode); //var puntoEntrega = GetPuntoEntregaByCode(deliveryPointCode, cliente); //var tickets = DAOFactory.TicketDAO.GetList(new[] { empresa != null ? empresa.Id : -1 }, // new[] { linea != null ? linea.Id : -1 }, // new[] { -1 }, // new[] { -1 }, // new[] { -1 }, // new[] { -1 }, // new int[] { Ticket.Estados.Pendiente }, // new[] { cliente.Id }, // new[] { puntoEntrega != null ? puntoEntrega.Id : -1 }, // new[] { -1 }, // utcDate.Date, utcDate.Date.AddDays(1)); //ticket = tickets.Where(t => t.Estado == Ticket.Estados.Pendiente).FirstOrDefault(); //if (ticket == null) throw new ApplicationException("No se encontro un ticket para el cliente " + clientCode); } var vehiculo = GetCocheByInterno(empresa, linea, vehicle); if (vehiculo.Dispositivo == null) { throw new ApplicationException("El vehiculo " + vehiculo.Interno + " no tiene un dispositivo asignado."); } var multiplesRemitos = ticket.Pedido != null && ticket.Pedido.EsMinimixer; var ticketVehiculo = DAOFactory.TicketDAO.FindEnCurso(vehiculo.Dispositivo); if (ticketVehiculo != null) { if (!multiplesRemitos || ticketVehiculo.Pedido == null || ticket.Pedido == null || ticketVehiculo.Pedido.Id != ticket.Pedido.Id) { ticketVehiculo.UserField3 += "(auto cerrado ws)"; var cicloAnterior = new CicloLogisticoHormigon(ticketVehiculo, DAOFactory, new MessageSaver(DAOFactory)); var eventoCierre = EventFactory.GetCloseEvent(); cicloAnterior.ProcessEvent(eventoCierre); } else { ticket.Anular("Multiples remitos: " + ticketVehiculo.Codigo + " (ws)", Usuario); DAOFactory.TicketDAO.SaveOrUpdate(ticket); ticket = ticketVehiculo; } } ticket.Vehiculo = vehiculo; ticket.Dispositivo = vehiculo.Dispositivo; ticket.CantidadCargaReal += load; ticket.UserField3 = "(iniciado via " + (tripNo > 0 ? "nro viaje" : "ws") + ")"; var ciclo = new CicloLogisticoHormigon(ticket, DAOFactory, new MessageSaver(DAOFactory)); ciclo.ProcessEvent(EventFactory.GetInitEvent()); STrace.Trace("WebService Tickets", vehiculo.Dispositivo.Id, String.Format("Ticket {0} iniciado correctamente. {1}", ticket.Codigo, tripNo > 0 ? "Por nro de viaje" : "Por datos")); return(Respuesta <bool> .Create(true)); } catch (Exception e) { STrace.Error("WebService Tickets", e.Message); return(Respuesta <bool> .CreateError(e.Message)); } }