예제 #1
0
 public Comprobante(IRepositoryContext repositoryContext, IComprobanteDetalle detalle, IPartidas partida, IUsuarioArea usuarioArea)
     : base(repositoryContext)
 {
     cdService          = detalle ?? new ComprobanteDetalle();
     parService         = partida ?? new Partidas();
     usuarioAreaService = usuarioArea ?? new UsuarioArea();
     parametroService   = parametroService ?? new Parametro();
     partidasService    = partidasService ?? new Partidas();
 }
예제 #2
0
 public Comprobante(IRepositoryContext repositoryContext)
     : base(repositoryContext)
 {
     cdService             = cdService ?? new ComprobanteDetalle();
     parService            = parService ?? new Partidas();
     usuarioAreaService    = usuarioAreaService ?? new UsuarioArea();
     parametroService      = parametroService ?? new Parametro();
     partidasService       = partidasService ?? new Partidas();
     usuarioEmpresaService = usuarioEmpresaService ?? new UsuarioEmpresa();
     empresaService        = empresaService ?? new Empresa();
 }
예제 #3
0
 public bool AprobarRegistro(int registro, string userName, List <string> empresas)
 {
     try
     {
         List <string> empresasFaltantes = new List <string>();
         var           control           = base.GetSingle(c => c.RC_REGISTRO_CONTROL == registro);
         if (control == null || control.SAX_PARTIDAS.Count == 0)
         {
             throw new Exception("Registro control no es valido o no se cuenta con partidas asociadas.");
         }
         if (!this.usuarioEmpresaValidateCarga(control.SAX_PARTIDAS.ToList(), empresas, ref empresasFaltantes))
         {
             throw new Exception($"No puede aprobar esta carga, ya que su usuario no maneja las empresas que contiene la carga que desea aprobar ({ String.Join(", ", empresasFaltantes.ToArray())})");
         }
         var partidas = control.SAX_PARTIDAS;
         var cloneReg = control.CloneEntity();
         cloneReg.RC_ESTATUS_LOTE      = Convert.ToInt16(BusinessEnumerations.EstatusCarga.APROBADO);
         cloneReg.RC_USUARIO_APROBADOR = userName;
         cloneReg.RC_FECHA_APROBACION  = DateTime.Now;
         using (var trx = new TransactionScope())
         {
             using (var db = new DBModelEntities())
             {
                 db.Database.CommandTimeout          = 200000;
                 db.Configuration.LazyLoadingEnabled = false;
                 base.Update(control, cloneReg);
                 partidas = ReferenceAsign(control.RC_COD_OPERACION, partidas, userName, partidas.FirstOrDefault().RC_REGISTRO_CONTROL);
                 EFBatchOperation.For(db, db.SAX_PARTIDAS).UpdateAll(partidas, x => x.ColumnsToUpdate(y => y.PA_FECHA_APROB, z => z.PA_USUARIO_APROB, t => t.PA_STATUS_PARTIDA, u => u.PA_REFERENCIA), null, 1500);
             }
             trx.Complete();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     return(true);
 }
예제 #4
0
 public RegistroControl(IPartidas ipartidas)
 {
     partidas = ipartidas;
 }
예제 #5
0
        private ICollection <SAX_PARTIDAS> ReferenceAsign(int tipoOperacion, ICollection <SAX_PARTIDAS> partidasList, string userName, int idPartida)
        {
            string          codeOperacion = string.Empty;
            CuentaContable  cuentas       = new CuentaContable();
            Empresa         emp           = new Empresa();
            AreaOperativa   area          = new AreaOperativa();
            RegistroControl regCtrl       = new RegistroControl();

            if (tipoOperacion == Convert.ToInt16(BusinessEnumerations.TipoOperacion.CARGA_INICIAL))
            {
                codeOperacion = "I";
            }
            else if (tipoOperacion == Convert.ToInt16(BusinessEnumerations.TipoOperacion.CARGA_MASIVA))
            {
                codeOperacion = "D";
            }
            else if (tipoOperacion == Convert.ToInt16(BusinessEnumerations.TipoOperacion.CAPTURA_MANUAL))
            {
                codeOperacion = "M";
            }

            DateTime todays = DateTime.Now.Date;

            var refAut = Convert.ToInt16(BusinessEnumerations.TipoReferencia.AUTOMATICO);

            partidas = partidas ?? new Partidas();
            var aproveed = Convert.ToInt16(BusinessEnumerations.EstatusCarga.APROBADO);

            switch (tipoOperacion)
            {
            case 21:
                var groupByFechaTrx = partidasList.GroupBy(c => c.PA_FECHA_TRX);



                foreach (var item in groupByFechaTrx)
                {
                    //int intcounter = 1;
                    var counterRecord = partidas.Count(c => DbFunctions.TruncateTime(c.PA_FECHA_TRX) == DbFunctions.TruncateTime(item.Key) &&
                                                       c.PA_STATUS_PARTIDA == aproveed && c.PA_ORIGEN_REFERENCIA == refAut) + 1;
                    var itemgroup = item.Key;
                    foreach (var internalcol in item)
                    {
                        if (string.IsNullOrEmpty(internalcol.PA_REFERENCIA) | internalcol.PA_REFERENCIA == "")
                        {
                            if (internalcol.PA_ORIGEN_REFERENCIA == refAut)
                            {
                                internalcol.PA_REFERENCIA = itemgroup.ToString(refFormat) + counterRecord.ToString().PadLeft(5, '0');
                                counterRecord++;
                            }
                        }

                        internalcol.PA_FECHA_APROB    = DateTime.Now;
                        internalcol.PA_USUARIO_APROB  = userName;
                        internalcol.PA_STATUS_PARTIDA = Convert.ToInt16(BusinessEnumerations.EstatusCarga.APROBADO);
                        //intcounter++;
                    }
                }
                break;

            case 22:
                var groupByFechaTrx2 = partidasList.GroupBy(c => c.PA_FECHA_TRX);


                foreach (var item in groupByFechaTrx2)
                {
                    //int intcounter = 1;
                    var counterRecord = partidas.Count(c => DbFunctions.TruncateTime(c.PA_FECHA_TRX) == DbFunctions.TruncateTime(item.Key) &&
                                                       c.PA_STATUS_PARTIDA == aproveed && c.PA_ORIGEN_REFERENCIA == refAut) + 1;
                    var itemgroup = item.Key;
                    foreach (var internalcol in item)
                    {
                        if (string.IsNullOrEmpty(internalcol.PA_REFERENCIA) | internalcol.PA_REFERENCIA == "")
                        {
                            if (internalcol.PA_ORIGEN_REFERENCIA == refAut)
                            {
                                internalcol.PA_REFERENCIA = itemgroup.ToString(refFormat) + counterRecord.ToString().PadLeft(5, '0');
                                counterRecord++;
                            }
                        }
                        internalcol.PA_FECHA_APROB    = DateTime.Now;
                        internalcol.PA_USUARIO_APROB  = userName;
                        internalcol.PA_STATUS_PARTIDA = Convert.ToInt16(BusinessEnumerations.EstatusCarga.APROBADO);
                        //intcounter++;
                    }
                }
                break;

            case 23:
                var groupByFechaTrx3 = partidasList.GroupBy(c => c.PA_FECHA_TRX);


                foreach (var item in groupByFechaTrx3)
                {
                    //int intcounter = 1;
                    var counterRecord = partidas.Count(c => DbFunctions.TruncateTime(c.PA_FECHA_TRX) == DbFunctions.TruncateTime(item.Key) &&
                                                       c.PA_STATUS_PARTIDA == aproveed && c.PA_ORIGEN_REFERENCIA == refAut) + 1;
                    var itemgroup = item.Key;
                    foreach (var internalcol in item)
                    {
                        if (string.IsNullOrEmpty(internalcol.PA_REFERENCIA) | internalcol.PA_REFERENCIA == "")
                        {
                            if (internalcol.PA_ORIGEN_REFERENCIA == refAut)
                            {
                                internalcol.PA_REFERENCIA = itemgroup.ToString(refFormat) + counterRecord.ToString().PadLeft(5, '0');
                                counterRecord++;
                            }
                        }
                        internalcol.PA_FECHA_APROB    = DateTime.Now;
                        internalcol.PA_USUARIO_APROB  = userName;
                        internalcol.PA_STATUS_PARTIDA = Convert.ToInt16(BusinessEnumerations.EstatusCarga.APROBADO);
                        //intcounter++;
                    }
                }
                break;

            default:
                break;
            }

            return(partidasList);
        }