コード例 #1
0
        private MovimientoCajaDatos creaMovimiento(MovimientoCajaDatos ObjMovimientoCajaDatos)
        {
            MovimientoCajaDatos _objmovimientocajadatos = new MovimientoCajaDatos();

            _objmovimientocajadatos = new MovimientoCajaDatos();
            _objmovimientocajadatos.CadenaConexion        = ObjMovimientoCajaDatos.CadenaConexion;
            _objmovimientocajadatos.Caja                  = ObjMovimientoCajaDatos.Caja;
            _objmovimientocajadatos.FMovimiento           = ObjMovimientoCajaDatos.FMovimiento;
            _objmovimientocajadatos.FOperacion            = ObjMovimientoCajaDatos.FOperacion;
            _objmovimientocajadatos.Empleado              = ObjMovimientoCajaDatos.Empleado;
            _objmovimientocajadatos.Folio                 = ObjMovimientoCajaDatos.Folio;
            _objmovimientocajadatos.ImplementadorMensajes = ObjMovimientoCajaDatos.ImplementadorMensajes;
            _objmovimientocajadatos.Observaciones         = ObjMovimientoCajaDatos.Observaciones;
            _objmovimientocajadatos.StatusAltaMC          = ObjMovimientoCajaDatos.StatusAltaMC;
            _objmovimientocajadatos.Status                = ObjMovimientoCajaDatos.Status;

            _objmovimientocajadatos.TipoMovimientoCaja = ObjMovimientoCajaDatos.TipoMovimientoCaja;
            _objmovimientocajadatos.SaldoAFavor        = 0;
            _objmovimientocajadatos.Total        = 0;
            _objmovimientocajadatos.Usuario      = ObjMovimientoCajaDatos.Usuario;
            _objmovimientocajadatos.ListaPedidos = new List <ReferenciaConciliadaPedido>();
            _objmovimientocajadatos.ListaCobros  = new List <Cobro>();


            return(_objmovimientocajadatos);
        }
コード例 #2
0
        /*        public List<MovimientoCaja> ReorganizaTransban(MovimientoCajaDatos ObjMovimientoCajaDatos, int MaxDocumentos)
         *      {
         *          try
         *          {
         *              Boolean ultimaCedula = false;
         *              int cliente = 0;
         *              MovimientoCaja objmovimientocajadatos;
         *              List<MovimientoCaja> lstMovimientoCajaDatos = new List<MovimientoCaja>();
         *              List<ReferenciaConciliadaPedido> lstPedidos = new List<ReferenciaConciliadaPedido>();
         *              List<ReferenciaConciliadaPedido> lstPedidosOrdenada = new List<ReferenciaConciliadaPedido>();
         *              List<Cobro> lstCobros = new List<Cobro>();
         *
         *              lstPedidosOrdenada = ObjMovimientoCajaDatos.ListaPedidos.OrderBy(s => s.Cliente).ToList();
         *
         *              lstCobros = ObjMovimientoCajaDatos.ListaCobros.OrderBy(s => s.Cliente).ToList();
         *
         *              if (ObjMovimientoCajaDatos.ListaPedidos.Count() > MaxDocumentos)
         *              {
         *                  int i = 0;
         *                  foreach (ReferenciaConciliadaPedido Pedido in lstPedidosOrdenada)
         *                  {
         *                      i = i + 1;
         *
         *                      if (Pedido.Cliente != cliente && ultimaCedula)
         *                      {
         *                          objmovimientocajadatos = new MovimientoCajaDatos(ObjMovimientoCajaDatos.Caja,
         *                                                              ObjMovimientoCajaDatos.FOperacion,
         *                                                              ObjMovimientoCajaDatos.Consecutivo,
         *                                                              ObjMovimientoCajaDatos.Folio,
         *                                                              ObjMovimientoCajaDatos.FMovimiento,
         *                                                              ObjMovimientoCajaDatos.Total,
         *                                                              ObjMovimientoCajaDatos.Usuario,
         *                                                              ObjMovimientoCajaDatos.Empleado,
         *                                                              ObjMovimientoCajaDatos.Observaciones,
         *                                                              ObjMovimientoCajaDatos.SaldoAFavor,
         *                                                              ObjMovimientoCajaDatos.ListaCobros,
         *                                                              implementadorMensajes);
         *
         *
         *                          lstPedidos.ForEach(c => objmovimientocajadatos.ListaPedidos.Add(c));
         *
         *
         *                          lstPedidos.Clear();
         *                          lstPedidos.Add(Pedido);
         *
         *                          var ListaDistintosClientes = objmovimientocajadatos.ListaPedidos.Select(x => x.Cliente).Distinct().ToList();
         *
         *                          List<Conciliacion.RunTime.ReglasDeNegocio.Cobro> buffCobro = new List<Conciliacion.RunTime.ReglasDeNegocio.Cobro>();
         *
         *                          foreach (var clientedisti in ListaDistintosClientes)
         *                          {
         *                              buffCobro = lstCobros.Where(X => X.Cliente == clientedisti).ToList();
         *                          }
         *
         *                          objmovimientocajadatos.ListaCobros.Clear();
         *                          buffCobro.ForEach(x=> objmovimientocajadatos.ListaCobros.Add(x));
         *
         *                          lstMovimientoCajaDatos.Add(objmovimientocajadatos);
         *
         *                          ultimaCedula = false;
         *                          i = 1;
         *                      }
         *                      else
         *                      {
         *                          int NumClientes = ObjMovimientoCajaDatos.ListaPedidos.Where(y => y.Cliente == Pedido.Cliente).Count();
         *
         *                          lstPedidos.Clear();
         *                          lstPedidos.Add(Pedido);
         *
         *                          objmovimientocajadatos = new MovimientoCajaDatos(ObjMovimientoCajaDatos.Caja,
         *                                                              ObjMovimientoCajaDatos.FOperacion,
         *                                                              ObjMovimientoCajaDatos.Consecutivo,
         *                                                              ObjMovimientoCajaDatos.Folio,
         *                                                              ObjMovimientoCajaDatos.FMovimiento,
         *                                                              ObjMovimientoCajaDatos.Total,
         *                                                              ObjMovimientoCajaDatos.Usuario,
         *                                                              ObjMovimientoCajaDatos.Empleado,
         *                                                              ObjMovimientoCajaDatos.Observaciones,
         *                                                              ObjMovimientoCajaDatos.SaldoAFavor,
         *                                                              ObjMovimientoCajaDatos.ListaCobros,
         *                                                              implementadorMensajes);
         *
         *                          objmovimientocajadatos.ListaPedidos.Clear();
         *                          objmovimientocajadatos.ListaCobros.Clear();
         *
         *                          objmovimientocajadatos.ListaPedidos.Add(Pedido);
         *
         *                          var ListaDistintosClientes = objmovimientocajadatos.ListaPedidos.Select(x => x.Cliente).Distinct().ToList();
         *                          List<Conciliacion.RunTime.ReglasDeNegocio.Cobro> buffCobro = new List<Conciliacion.RunTime.ReglasDeNegocio.Cobro>();
         *
         *                          foreach (var clientedisti in ListaDistintosClientes)
         *                          {
         *                              buffCobro = lstCobros.Where(X => X.Cliente == clientedisti).ToList();
         *                          }
         *
         *                          buffCobro.ForEach(x => objmovimientocajadatos.ListaCobros.Add(x));
         *
         *                          lstMovimientoCajaDatos.Add(objmovimientocajadatos);
         *
         *                          if (NumClientes + i > MaxDocumentos && ultimaCedula == false)
         *                              ultimaCedula = true;
         *
         *                          cliente = Pedido.Cliente;
         *                      }
         *
         *                  }
         *                  objmovimientocajadatos =
         *                                  new MovimientoCajaDatos(ObjMovimientoCajaDatos.Caja,
         *                                  ObjMovimientoCajaDatos.FOperacion,
         *                                  ObjMovimientoCajaDatos.Consecutivo,
         *                                  ObjMovimientoCajaDatos.Folio,
         *                                  ObjMovimientoCajaDatos.FMovimiento,
         *                                  ObjMovimientoCajaDatos.Total,
         *                                  ObjMovimientoCajaDatos.Usuario,
         *                                  ObjMovimientoCajaDatos.Empleado,
         *                                  ObjMovimientoCajaDatos.Observaciones,
         *                                  ObjMovimientoCajaDatos.SaldoAFavor,
         *                                  ObjMovimientoCajaDatos.ListaCobros,
         *                                  implementadorMensajes);
         *                  lstPedidos.ForEach(c => objmovimientocajadatos.ListaPedidos.Add(c));
         *
         *                  var ListaDistintosClientes1 = objmovimientocajadatos.ListaPedidos.Select(x => x.Cliente).Distinct().ToList();
         *
         *                  List<Conciliacion.RunTime.ReglasDeNegocio.Cobro> buffCobro1 = new List<Conciliacion.RunTime.ReglasDeNegocio.Cobro>();
         *
         *                  foreach (var clientedisti in ListaDistintosClientes1)
         *                  {
         *                      buffCobro1 = lstCobros.Where(X => X.Cliente == clientedisti).ToList();
         *                  }
         *
         *                  objmovimientocajadatos.ListaCobros.Clear();
         *                  //objmovimientocajadatos.ListaCobros = buffCobro1;
         *                  buffCobro1.ForEach(x => objmovimientocajadatos.ListaCobros.Add(x));
         *
         *
         *                  //lstMovimientoCajaDatos.Add(objmovimientocajadatos);
         *              }
         *              else
         *              {
         *                  lstMovimientoCajaDatos.Add(ObjMovimientoCajaDatos);
         *              }
         *
         *              TransBanException objTransBanException = new TransBanException();
         *              objTransBanException.DetalleExcepcion.CodigoError = 0;
         *              objTransBanException.DetalleExcepcion.Mensaje = "Proceso Exitoso";
         *              objTransBanException.DetalleExcepcion.VerificacionValida = true;
         *
         *              return lstMovimientoCajaDatos;
         *          }
         *          catch (Exception ex)
         *          {
         *              TransBanException objTransBanException = new TransBanException();
         *              objTransBanException.DetalleExcepcion.CodigoError = 202;
         *              objTransBanException.DetalleExcepcion.Mensaje = ex.Message;
         *              objTransBanException.DetalleExcepcion.VerificacionValida = false;
         *              throw ex;
         *          }
         *
         *      }
         *  }*/

        public List <MovimientoCaja> ReorganizaTransban(MovimientoCajaDatos ObjMovimientoCajaDatos, int MaxDocumentos)
        {
            List <MovimientoCaja>             lstMovimientoCajaDatos = new List <MovimientoCaja>();
            List <Cobro>                      listaCobrosCliente;
            List <ReferenciaConciliadaPedido> listaPedidosCliente;
            MovimientoCajaDatos               ObjMovimientoCajaActual;
            int     restante;
            decimal _total       = 0;
            decimal _saldoAFavor = 0;



            List <int> ListaDistintosClientes = new List <int>();

            if (ObjMovimientoCajaDatos == null)
            {
                throw new Exception("Error en método: TransBan.ReorganizaTransban, la instancia de MovimientoCajaDatos es nula, imposible continuar con el proceso de reorganización.");
            }
            ObjMovimientoCajaActual = creaMovimiento(ObjMovimientoCajaDatos);

            ListaDistintosClientes = ObjMovimientoCajaDatos.ListaPedidos.Select(x => x.Cliente).Distinct().ToList();

            if (ObjMovimientoCajaDatos.ListaPedidos.Count() > MaxDocumentos)
            {
                foreach (var clienteTemp in ListaDistintosClientes)
                {
                    listaPedidosCliente = ObjMovimientoCajaDatos.ListaPedidos.Where(x => x.Cliente == clienteTemp).ToList();
                    listaCobrosCliente  = ObjMovimientoCajaDatos.ListaCobros.Where(x => x.Cliente == clienteTemp).ToList();
                    _total       = listaPedidosCliente.Sum(x => x.MontoConciliado);
                    _saldoAFavor = listaCobrosCliente.Sum(x => x.Saldo);

                    restante = MaxDocumentos - ObjMovimientoCajaActual.ListaPedidos.Count;

                    if (listaPedidosCliente.Count > restante)
                    {
                        if (ObjMovimientoCajaActual.ListaPedidos.Count != 0)
                        {
                            lstMovimientoCajaDatos.Add(ObjMovimientoCajaActual);
                            ObjMovimientoCajaActual = creaMovimiento(ObjMovimientoCajaDatos);
                        }
                    }

                    ObjMovimientoCajaActual.ListaPedidos.AddRange(listaPedidosCliente);
                    ObjMovimientoCajaActual.ListaCobros.AddRange(listaCobrosCliente);
                    ObjMovimientoCajaActual.Total       = ObjMovimientoCajaActual.Total + _total;
                    ObjMovimientoCajaActual.SaldoAFavor = ObjMovimientoCajaActual.SaldoAFavor + _saldoAFavor;
                }
                lstMovimientoCajaDatos.Add(ObjMovimientoCajaActual);
            }
            else
            {                //No se supera el máximo configurado
                _saldoAFavor = ObjMovimientoCajaDatos.ListaPedidos.Where(x => x.Diferencia > 0).Sum(x => x.Diferencia);
                _total       = ObjMovimientoCajaDatos.ListaPedidos.Where(x => x.Total > 0).Sum(x => x.Total);
                if (_saldoAFavor > 0)
                {
                    //ObjMovimientoCajaDatos.Total = ObjMovimientoCajaDatos.Total + _total;
                    ObjMovimientoCajaDatos.SaldoAFavor = _saldoAFavor;
                }
                lstMovimientoCajaDatos.Add(ObjMovimientoCajaDatos);
            }
            return(lstMovimientoCajaDatos);
        }