示例#1
0
        public override bool ValidateFile()
        {
            if (isValid())
            {
                var connB1 = B1Connection.Instance();

                if (!connB1.connectedtoHana)
                {
                    addError("Error en SAP", "No se puedo conectar con SAP B1, es posible que algunas validaciones cruzadas con SAP no sean ejecutadas");
                }

                bool v1  = VerifyBP(1, 2, process.BranchesId, user);
                bool v2  = VerifyColumnValueIn(3, _context.Dependencies.Where(x => x.BranchesId == this.process.BranchesId).Select(x => x.Cod).ToList(), comment: "Esta Dependencia no es Válida");
                var  pei = connB1.getCostCenter(B1Connection.Dimension.PEI).Cast <string>().ToList();
                bool v3  = VerifyColumnValueIn(4, pei, comment: "Este PEI no existe en SAP.");
                bool v4  = VerifyLength(5, 50);
                bool v5  = VerifyLength(6, 50);
                bool v6  = VerifyColumnValueIn(7, new List <string> {
                    "CC_ACADEMICA", "CC_SOCIAL", "CC_DEPORTIVA", "CC_CULTURAL", "CC_PASTORAL", "CC_OTROS", "CC_TEMPORAL"
                }, comment: "No existe este tipo de Cuenta Asignada.");
                bool v7 = VerifyTotal();
                bool v8 = true;
                foreach (var i in new List <int>()
                {
                    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
                })
                {
                    v8 = VerifyNotEmpty(i) && v8;
                }

                return(v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8);
            }

            return(false);
        }
        public override bool ValidateFile()
        {
            var connB1 = B1Connection.Instance();

            if (!connB1.connectedtoHana)
            {
                addError("Error en SAP", "No se puedo conectar con SAP B1, es posible que algunas validaciones cruzadas con SAP no sean ejecutadas");
            }
            int  brId = Int32.Parse(this.segmentoOrigen);
            bool v1   = VerifyPerson(ci: 1, CUNI: 16, fullname: 2, personActive: false);
            bool v2   = VerifyColumnValueIn(6, _context.TipoEmpleadoDists.Select(x => x.Name).ToList(), comment: "Este Tipo empleado no es valido.");
            bool v3   = VerifyParalel(cod: 19, periodo: 7, sigla: 8, paralelo: 9, dependency: 17, branch: brId);
            bool v4   = VerifyColumnValueIn(12, new List <string> {
                "PA", "PI", "TH"
            });
            var pei = connB1.getCostCenter(B1Connection.Dimension.PEI, mes: this.mes, gestion: this.gestion).Cast <string>().ToList();

            pei.Add("0");
            bool v5 = VerifyColumnValueIn(18, pei, comment: "Este PEI no existe en SAP.");
            bool v6 = VerifyColumnValueIn(11, new List <string> {
                "0"
            }, comment: "Este valor no puede ser 0", notin: true);
            bool v7 = VerifyColumnValueIn(15, new List <string> {
                "0"
            }, comment: "Este valor no puede ser 0", notin: true);
            bool v0 = isValid();
            var  xx = valid;

            //return v0 && v1 && v2 && v4 && v7 && v8 && v6 && v5;//v3
            return(v0 && v1 && v2 && v3 && v4 && v5 && v6 && v7);
        }
示例#3
0
 public ContractController()
 {
     _context = new ApplicationDbContext();
     auth     = new ValidateAuth();
     B1       = B1Connection.Instance();
     AD       = new ADClass();
 }
        public IHttpActionResult addalltoSAP()
        {
            var           date   = new DateTime(2017, 1, 1);
            List <People> person = _context.ContractDetails.Include(x => x.People).Include(x => x.Positions).
                                   Where(y => (y.EndDate > date || y.EndDate == null) && y.DependencyId == 189
                                         ).Select(x => x.People).Distinct().ToList();

            //string query = "SELECT p.* FROM ADMNALRRHH.\"People\" p\r\ninner join ucatolica.ocrd bp\r\non concat(\'R\', p.cuni) = bp.\"CardCode\"";
            //List<People> person = _context.Database.SqlQuery<People>(query).ToList();

            //person = person.Where(x => x.CUNI == "RFA940908").ToList();
            B1Connection b1  = B1Connection.Instance();
            var          usr = auth.getUser(Request);
            int          i   = 0;

            foreach (var p in person)
            {
                i++;
                var X = b1.AddOrUpdatePerson(usr.Id, p);
                if (X.Contains("ERROR"))
                {
                    X = "";
                }
            }

            return(Ok());
        }
 public PeopleController()
 {
     _context        = new ApplicationDbContext();
     validator       = new ValidatePerson(_context);
     auth            = new ValidateAuth();
     activeDirectory = new ADClass();
     B1 = B1Connection.Instance();
 }
        private bool verifyproject(int dependency, int sheet = 1)
        {
            string   commnet   = "Este proyecto no existe en SAP.";
            var      connB1    = B1Connection.Instance();
            var      br        = _context.Branch.FirstOrDefault(x => x.Id == process.BranchesId);
            var      list      = connB1.getProjects("*").Where(x => x.U_Sucursal == br.Abr).Select(x => new { x.PrjCode, x.U_UORGANIZA }).ToList();
            int      index     = 6;
            int      tipoproy  = 11;
            bool     res       = true;
            IXLRange UsedRange = wb.Worksheet(sheet).RangeUsed();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                var strproject    = index != -1 ? wb.Worksheet(sheet).Cell(i, index).Value.ToString() : null;
                var strdependency = dependency != -1 ? wb.Worksheet(sheet).Cell(i, dependency).Value.ToString() : null;
                var dep           = _context.Dependencies.Where(x => x.BranchesId == br.Id).Include(x => x.OrganizationalUnit).FirstOrDefault(x => x.Cod == strdependency);
                //------------------------------------Valida existencia del proyecto--------------------------------
                //Si no existe en esta rama un proyecto que haga match con el proyecto del excel
                if (!list.Exists(x => string.Equals(x.PrjCode.ToString(), strproject, StringComparison.OrdinalIgnoreCase)))
                {
                    //Si el tipo de proyecto, no es de los siguientes tipos y el codigo del proyecto no viene vacío
                    if (!(
                            (
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "CC_EC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "CC_FC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "CC_SA"
                            )
                            &&
                            wb.Worksheet(sheet).Cell(i, index).Value.ToString() == ""
                            ))
                    {
                        res = false;
                        paintXY(index, i, XLColor.Red, commnet);
                    }
                }
                else
                {
                    //como ya sabemos que existe el proyecto, ahora preguntamos de la UO
                    //dep es de la celda correcta
                    var    row    = list.FirstOrDefault(x => x.PrjCode == strproject);
                    string UO     = row.U_UORGANIZA.ToString();
                    string UOName = _context.OrganizationalUnits.FirstOrDefault(x => x.Cod == UO).Name;
                    if (!string.Equals(dep.OrganizationalUnit.Cod.ToString(), row.U_UORGANIZA.ToString(), StringComparison.OrdinalIgnoreCase))
                    {
                        //Si la UO para esta fila es diferente de la UO registrada en SAP, marcamos error
                        res = false;
                        paintXY(dependency, i, XLColor.Red, "Este proyecto debe tener una dependencia asociada a la Unidad Org: " + row.U_UORGANIZA + " " + UOName);
                    }
                }
            }
            valid = valid && res;
            if (!res)
            {
                addError("Valor no valido", "Proyecto o proyectos no validos en la columna: " + index, false);
            }

            return(res);
        }
        public override bool ValidateFile()
        {
            var  connB1 = B1Connection.Instance();
            bool v1     = VerifyPerson(ci: 1, fullname: 2, CUNI: 8, date: this.gestion + "-" + this.mes + "-01", personActive: false);
            bool v2     = VerifyColumnValueIn(7, connB1.getCostCenter(B1Connection.Dimension.PlanAcademico, mes: this.mes, gestion: this.gestion).Cast <string>().ToList(), comment: "Este Plan de Estudio no existe en SAP.");
            int  brId   = Int32.Parse(this.segmentoOrigen);
            bool v3     = VerifyColumnValueIn(9, _context.Dependencies.Where(x => x.BranchesId == brId).Select(m => m.Cod).Distinct().ToList());

            return(isValid() && v1 && v2 && v3);
        }
        public override bool ValidateFile()
        {
            var  connB1 = B1Connection.Instance();
            bool v1     = VerifyPerson(ci: 1, fullname: 2, CUNI: 8, date: this.gestion + "-" + this.mes + "-01", personActive: false);
            bool v2     = VerifyColumnValueIn(7, connB1.getCostCenter(B1Connection.Dimension.PlanAcademico, mes: this.mes, gestion: this.gestion).Cast <string>().ToList(), comment: "Este Plan de Estudio no existe en SAP.");
            int  brId   = Int32.Parse(this.segmentoOrigen);
            bool v3     = VerifyCareer(cod: 7, branch: brId, dependency: 9, sheet: 1);//esto no esta bien

            return(isValid() && v1 && v2 && v3);
        }
        public override bool ValidateFile()
        {
            var  connB1 = B1Connection.Instance();
            bool v1     = VerifyColumnValueIn(1, connB1.getBusinessPartners().Cast <string>().ToList(), comment: "Este Codigo de Socio de Negocio no existe en SAP.");
            bool v2     = VerifyColumnValueIn(2, connB1.getBusinessPartners(col: "CardName").Cast <string>().ToList(), comment: "Este nombre de Socio de Negocio no existe en SAP.");
            bool v3     = VerifyColumnValueIn(3, new List <string> {
                "D_ANTI", "D_REND", "D_OTR", "D_PCOB", "D_RCIVA"
            }, comment: "Tipo de deducción no valido");

            return(isValid() && v1 && v2 && v3);
        }
        // GET /B1
        public IHttpActionResult Get()
        {
            var B1con = B1Connection.Instance();

            // B1con.ConnectB1();
            // General error;258 insufficient privilege: Not authorized
            // var  id = B1con.addVoucher();
            // var  id = B1con.updatePersonInBP(_context.Person.FirstOrDefault(x => x.CUNI == "RFA940908"));
            // var  id = B1con.addPersonToB1(_context.Person.FirstOrDefault(x => x.CUNI == "RFA940908"));
            return(Ok("  ****  " + B1con.getLastError()));
        }
示例#11
0
        public bool VerifyCareer(int cod, int branch, int dependency, int sheet = 1)
        {
            var            B1conn       = B1Connection.Instance();
            int            branchId     = Convert.ToInt16(branch);
            var            branchName   = _context.Branch.FirstOrDefault(x => x.Id == branchId).Abr;
            List <dynamic> list         = B1conn.getCareers();
            var            filteredList = list.Where(x => x.segmento == branchName);
            bool           res          = true;
            IXLRange       UsedRange    = wb.Worksheet(sheet).RangeUsed();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                var strcod        = cod != -1 ? wb.Worksheet(sheet).Cell(i, cod).Value.ToString() : null;
                var strdependency = dependency != -1 ? wb.Worksheet(sheet).Cell(i, dependency).Value.ToString() : null;
                var dep           = _context.Dependencies.Where(x => x.BranchesId == branch).Include(x => x.OrganizationalUnit).FirstOrDefault(x => x.Cod == strdependency);
                if (dep == null)
                {
                    //Si no existe la dependencia entonces no podemos validar
                    paintXY(dependency, i, XLColor.Red, "Esta dependencia no existe en la base de Datos Nacional");
                    res = false;
                }
                else
                {
                    //Si no existe un match del código de la carrera
                    if (!filteredList.Any(x => x.cod == strcod && x.OU == dep.OrganizationalUnit.Cod))
                    {
                        res = false;
                        if (filteredList.Any(x => x.cod == strcod))
                        {
                            var row = filteredList.FirstOrDefault(x => x.cod == strcod);
                            // Verifica UO
                            if (dep.OrganizationalUnit.Cod.ToString() != row.OU.ToString())
                            {
                                string UO     = row.OU.ToString();
                                string UOName = _context.OrganizationalUnits.FirstOrDefault(x => x.Cod == UO).Name;
                                paintXY(dependency, i, XLColor.Red, "Esta carrera debería tener una dependencia asociada a la UO: " + UOName);
                            }
                        }
                        else
                        {
                            paintXY(cod, i, XLColor.Red, "Esta carrera no existe, al menos para esta regional");
                        }
                    }
                }
            }

            valid = valid && res;
            if (!res)
            {
                addError("Datos Carrera", "Algunos datos de la carrera no coinciden o no existen en SAP B1.");
            }
            return(res);
        }
        private bool verifyDates(int dependency, int sheet = 1)
        {
            string commnet;//especifica el error
            var    connB1 = B1Connection.Instance();
            var    br     = _context.Branch.FirstOrDefault(x => x.Id == process.BranchesId);
            //todos los proyectos de esa rama
            var list = connB1.getProjects("*").Where(x => x.U_Sucursal == br.Abr).Select(x => new { x.PrjCode, x.U_Tipo, x.ValidFrom, x.ValidTo, x.U_UORGANIZA }).ToList();
            //columnas del excel
            int      index     = 6;
            bool     res       = true;
            IXLRange UsedRange = wb.Worksheet(sheet).RangeUsed();
            var      l         = UsedRange.LastRow().RowNumber();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                if (list.Exists(x => string.Equals(x.PrjCode.ToString(), wb.Worksheet(sheet).Cell(i, index).Value.ToString(), StringComparison.OrdinalIgnoreCase)))
                {
                    var    strproject    = index != -1 ? wb.Worksheet(sheet).Cell(i, index).Value.ToString() : null;
                    var    row           = list.FirstOrDefault(x => x.PrjCode == strproject);
                    string UO            = row.U_UORGANIZA.ToString();
                    var    strdependency = dependency != -1 ? wb.Worksheet(sheet).Cell(i, dependency).Value.ToString() : null;
                    var    dep           = _context.Dependencies.Where(x => x.BranchesId == br.Id).Include(x => x.OrganizationalUnit).FirstOrDefault(x => x.Cod == strdependency);
                    //Si la UO hace match también
                    if (row.U_UORGANIZA == dep.OrganizationalUnit.Cod)
                    {
                        //-----------------------------Validaciones de la fecha del proyecto--------------------------------
                        var      projectInitialDate = list.Where(x => x.PrjCode == wb.Worksheet(sheet).Cell(i, index).Value.ToString()).FirstOrDefault().ValidFrom.ToString();
                        DateTime parsedIni          = Convert.ToDateTime(projectInitialDate);
                        var      projectFinalDate   = list.Where(x => x.PrjCode == wb.Worksheet(sheet).Cell(i, index).Value.ToString()).FirstOrDefault().ValidTo.ToString();
                        DateTime parsedFin          = Convert.ToDateTime(projectFinalDate);

                        //si el tiempo actual es menor al inicio del proyecto en SAP ó si el tiempo actual es mayor a la fecha límite del proyectoSAP
                        if (System.DateTime.Now < parsedIni || System.DateTime.Now > parsedFin)
                        {
                            res     = false;
                            commnet = "La fecha de este proyecto ya está cerrada, estuvo disponible del " + parsedIni + " al " + parsedFin;
                            paintXY(index, i, XLColor.Red, commnet);
                        }
                    }
                }
            }
            valid = valid && res;
            if (!res)
            {
                addError("Valor no valido", "Proyecto/s con fechas no válidas en la columna:" + index, false);
            }

            return(res);
        }
        private bool verifyDates(int dependency, int sheet = 1)
        {
            string commnet;//especifica el error
            // se inicializa la instancia del SDK para obtener la lista de proyectos
            var connB1 = B1Connection.Instance();
            // filtrado de proyectos por regional del proceso SALOMON
            int branchId = Convert.ToInt16(segmentoOrigen);
            var branch   = _context.Branch.FirstOrDefault(x => x.Id == branchId).Abr;
            // proyectos para la regional del proceso
            var      list      = connB1.getProjects("*").Where(x => x.U_Sucursal == branch).Select(x => new { x.PrjCode, x.U_Tipo, x.ValidFrom, x.ValidTo, x.U_UORGANIZA }).ToList();
            int      index     = 15;
            bool     res       = true;
            IXLRange UsedRange = wb.Worksheet(sheet).RangeUsed();
            var      l         = UsedRange.LastRow().RowNumber();

            //recorriendo el excel desde la fil
            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                //Si el proyecto de la celda en la lista de proyectos filtrados en SAP ahí validamos fechas
                if (list.Exists(x => string.Equals(x.PrjCode.ToString(), wb.Worksheet(sheet).Cell(i, index).Value.ToString(), StringComparison.OrdinalIgnoreCase)))
                {
                    var strproject = index != -1 ? wb.Worksheet(sheet).Cell(i, index).Value.ToString() : null;
                    //-----------------------------Validaciones de la fecha del proyecto--------------------------------
                    var      projectInitialDate = list.Where(x => x.PrjCode == strproject).FirstOrDefault().ValidFrom.ToString();
                    DateTime parsedIni          = Convert.ToDateTime(projectInitialDate);
                    var      projectFinalDate   = list.Where(x => x.PrjCode == strproject).FirstOrDefault().ValidTo.ToString();
                    DateTime parsedFin          = Convert.ToDateTime(projectFinalDate);

                    //si el tiempo actual es menor al inicio del proyecto en SAP ó si el tiempo actual es mayor a la fecha límite del proyectoSAP
                    if (System.DateTime.Now < parsedIni || System.DateTime.Now > parsedFin)
                    {
                        res     = false;
                        commnet = "La fecha de este proyecto ya está cerrada, estuvo disponible del " + parsedIni + " al " + parsedFin;
                        paintXY(index, i, XLColor.Red, commnet);
                    }
                }
            }
            valid = valid && res;
            if (!res)
            {
                addError("Valor no valido", "Proyecto/s con fechas no válidas en la columna:" + index, false);
            }

            return(res);
        }
示例#14
0
        public override bool ValidateFile()
        {
            if (isValid())
            {
                var connB1 = B1Connection.Instance();

                if (!connB1.connectedtoHana)
                {
                    addError("ErrorenSAP", "No se puede conectar con SAP B1, es posible que algunas validaciones cruzadas con SAP no sean ejecutadas");
                }

                bool v1      = VerifyBP(1, 2, process.BranchesId, user);
                bool v2      = VerifyColumnValueIn(3, _context.Dependencies.Where(x => x.BranchesId == this.process.BranchesId).Select(x => x.Cod).ToList(), comment: "Esta Dependencia no es Válida");
                var  pei     = connB1.getCostCenter(B1Connection.Dimension.PEI).Cast <string>().ToList();
                bool v3      = VerifyColumnValueIn(4, pei, comment: "Este PEI no existe en SAP.");
                bool v4      = VerifyLength(5, 50);
                var  brs     = _context.Branch.FirstOrDefault(x => x.Id == process.BranchesId);
                var  carrera = connB1.getCostCenter(B1Connection.Dimension.PlanAcademico).Cast <string>().ToList().Where(x => x.Contains(brs.Abr)).ToList();
                bool v5      = VerifyColumnValueIn(6, carrera, comment: "Esta Carrera no existe en SAP.");
                bool v6      = VerifyLength(8, 38);
                bool v7      = VerifyColumnValueIn(9, new List <string> {
                    "TG", "REL", "LEC", "REV", "PAN", "EXA", "OTR", "RRR", "PROF", "REC", "DDA", "MCT", "MT"
                }, comment: "No existe esta tipo de Tarea Asignada.");
                bool v8 = VerifyColumnValueIn(10, new List <string> {
                    "CC_TEMPORAL"
                }, comment: "No existe este tipo de Cuenta Asignada.");
                bool v9  = VerifyTotal();
                bool v11 = VerifyCareer(cod: 6, branch: process.BranchesId, dependency: 3, sheet: 1);
                bool v10 = true;
                foreach (var i in new List <int>()
                {
                    1, 2, 3, 4, 5, 6, /* 7, */ 8, 9, 10, 11, 12, 13, 14
                })
                {
                    v10 = VerifyNotEmpty(i) && v10;
                }

                return(v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8 && v10 && v11 && v9);
            }

            return(false);
        }
        public override bool ValidateFile()
        {
            if (isValid())
            {
                var connB1 = B1Connection.Instance();

                if (!connB1.connectedtoHana)
                {
                    addError("Error en SAP", "No se puedo conectar con SAP B1, es posible que algunas validaciones cruzadas con SAP no sean ejecutadas");
                }

                bool v1  = VerifyBP(1, 2, process.BranchesId, user);
                bool v2  = VerifyColumnValueIn(3, _context.Dependencies.Where(x => x.BranchesId == this.process.BranchesId).Select(x => x.Cod).ToList(), comment: "Esta Dependencia no es Válida");
                var  pei = connB1.getCostCenter(B1Connection.Dimension.PEI).Cast <String>().ToList();
                bool v3  = VerifyColumnValueIn(4, pei, comment: "Este PEI no existe en SAP.");
                bool v4  = VerifyLength(5, 50);
                bool v5  = verifyproject();

                var  periodo = connB1.getCostCenter(B1Connection.Dimension.Periodo).Cast <string>().ToList();
                bool v6      = VerifyColumnValueIn(9, periodo, comment: "Este Periodo no existe en SAP.");

                bool v7 = VerifyColumnValueIn(10, new List <string> {
                    "PROF", "TG", "REL", "LEC", "REV", "PAN", "OTR"
                }, comment: "No existe este tipo de Tarea Asignada.");
                bool v8 = VerifyColumnValueIn(11, new List <string> {
                    "CC_POST", "CC_EC", "CC_FC", "CC_INV", "CC_SA"
                }, comment: "No existe este tipo de Cuenta Asignada.");

                bool v9 = true;
                foreach (var i in new List <int>()
                {
                    1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 15
                })
                {
                    v9 = VerifyNotEmpty(i) && v9;
                }

                return(v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8 && v9);
            }

            return(false);
        }
示例#16
0
        public override bool ValidateFile()
        {
            var connB1 = B1Connection.Instance();

            //bool v1 = VerifyColumnValueIn(6, connB1.getProjects(col: "PrjName").ToList(), comment: "Este Proyecto no existe en SAP.");
            int  brId = Int32.Parse(this.segmentoOrigen);
            bool v2   = VerifyColumnValueIn(9, _context.Dependencies.Where(x => x.BranchesId == brId).Select(m => m.Cod).Distinct().ToList(), comment: "No existe esta dependencia.");
            bool v3   = VerifyColumnValueIn(11, _context.TipoEmpleadoDists.Select(x => x.Name).ToList().Where(x => new List <string> {
                "POST", "EC", "INV", "FC", "SA"
            }.Contains(x)).ToList(), comment: "No existe este tipo de proyecto.");
            bool v4 = VerifyColumnValueIn(12, new List <string> {
                "PROF", "TG", "REL", "LEC", "REV", "OTR", "PAN"
            }, comment: "No existe este tipo de tarea asignada.");
            bool v5 = VerifyColumnValueIn(13, connB1.getCostCenter(B1Connection.Dimension.PEI, mes: this.mes, gestion: this.gestion).Cast <string>().ToList(), comment: "Este PEI no existe en SAP.");
            bool v6 = VerifyColumnValueIn(14, connB1.getCostCenter(B1Connection.Dimension.Periodo, mes: this.mes, gestion: this.gestion).Cast <string>().ToList(), comment: "Este periodo no existe en SAP.");
            //bool v7 = VerifyColumnValueIn(15, connB1.getProjects(), comment: "Este proyecto no existe en SAP.");
            bool v7 = verifyproject();
            bool v8 = VerifyPerson(ci: 1, fullname: 2, CUNI: 10, date: gestion + "-" + mes + "-01", personActive: false);

            return(isValid() && v2 && v3 && v4 && v8 && v5 && v6 && v7);
        }
        private bool verifyproject(int sheet = 1)
        {
            string   commnet   = "Este proyecto no existe en SAP.";
            var      connB1    = B1Connection.Instance();
            var      br        = _context.Branch.FirstOrDefault(x => x.Id == process.BranchesId);
            var      list      = connB1.getProjects("*").Where(x => x.U_Sucursal == br.Abr).Select(x => x.PrjCode).ToList();
            int      index     = 6;
            int      tipoproy  = 11;
            bool     res       = true;
            IXLRange UsedRange = wb.Worksheet(sheet).RangeUsed();
            var      l         = UsedRange.LastRow().RowNumber();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                if (!list.Exists(x => string.Equals(x.ToString(), wb.Worksheet(sheet).Cell(i, index).Value.ToString(), StringComparison.OrdinalIgnoreCase)))
                {
                    var a1 = wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString();
                    var a2 = wb.Worksheet(sheet).Cell(i, index).Value.ToString();
                    if (!(
                            (
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "CC_EC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "CC_FC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "CC_SA"
                            )
                            &&
                            wb.Worksheet(sheet).Cell(i, index).Value.ToString() == ""
                            ))
                    {
                        res = false;
                        paintXY(index, i, XLColor.Red, commnet);
                    }
                }
            }
            valid = valid && res;
            if (!res)
            {
                addError("Valor no valido", "Valor o valores no validos en la columna: " + index, false);
            }
            return(res);
        }
示例#18
0
        public override bool ValidateFile()
        {
            var  connB1 = B1Connection.Instance();
            bool v1     = VerifyColumnValueIn(6, _context.Branch.Select(x => x.Abr).ToList(), comment: "Esta Regional No existe");
            bool v2     = VerifyPerson(ci: 1, CUNI: 8, fullname: 2, personActive: false);
            //Dim1 OU
            //var D1 = connB1.getCostCenter(B1Connection.Dimension.OrganizationalUnit, mes: this.mes, gestion: this.gestion).Cast<string>().ToList();
            var D1 = _context.Dependencies.Select(x => x.Cod).ToList();

            D1.Add("");
            bool v8 = VerifyColumnValueIn(9, D1, comment: "Esta Unidad Organizacional no existe en SAP.");
            // PEI
            var pei = connB1.getCostCenter(B1Connection.Dimension.PEI, mes: this.mes, gestion: this.gestion).Cast <string>().ToList();

            pei.Add("");
            bool v3 = VerifyColumnValueIn(10, pei, comment: "Este PEI no existe en SAP.");
            //Plan Acad
            var planacad = connB1.getCostCenter(B1Connection.Dimension.PlanAcademico, mes: this.mes, gestion: this.gestion).Cast <string>().ToList();

            planacad.Add("");
            bool v4 = VerifyColumnValueIn(11, planacad, comment: "Este plan de estudios no existe en SAP.");
            //paralelo
            var paralelo = connB1.getCostCenter(B1Connection.Dimension.Paralelo, mes: this.mes, gestion: this.gestion).Cast <string>().ToList();

            paralelo.Add("");
            bool v5 = VerifyColumnValueIn(12, paralelo, comment: "Este paralelo no existe en SAP.");
            //periodo
            var periodo = connB1.getCostCenter(B1Connection.Dimension.Periodo, mes: this.mes, gestion: this.gestion).Cast <string>().ToList();

            periodo.Add("");
            bool v6 = VerifyColumnValueIn(13, periodo, comment: "Este periodo no existe en SAP.");
            //proyectos
            var projects = connB1.getProjects().Cast <String>().ToList();

            projects.Add("");
            bool v7 = VerifyColumnValueIn(14, projects, comment: "Este proyecto no existe en SAP.");

            return(isValid() && v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8);
        }
示例#19
0
        private bool verifyproject(int sheet = 1)
        {
            string        commnet   = "Este proyecto no existe en SAP.";
            var           connB1    = B1Connection.Instance();
            List <string> list      = connB1.getProjects().Cast <String>().ToList();
            int           index     = 15;
            int           tipoproy  = 11;
            bool          res       = true;
            IXLRange      UsedRange = wb.Worksheet(sheet).RangeUsed();
            var           l         = UsedRange.LastRow().RowNumber();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                if (!list.Exists(x => string.Equals(x, wb.Worksheet(sheet).Cell(i, index).Value.ToString(), StringComparison.OrdinalIgnoreCase)))
                {
                    var a1 = wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString();
                    var a2 = wb.Worksheet(sheet).Cell(i, index).Value.ToString();
                    if (!(
                            (
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "EC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "FC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "SA"
                            )
                            &&
                            wb.Worksheet(sheet).Cell(i, index).Value.ToString() == ""
                            ))
                    {
                        res = false;
                        paintXY(index, i, XLColor.Red, commnet);
                    }
                }
            }
            valid = valid && res;
            if (!res)
            {
                addError("Valor no valido", "Valor o valores no validos en la columna: " + index, false);
            }
            return(res);
        }
        public override bool ValidateFile()
        {
            if (isValid())
            {
                var connB1 = B1Connection.Instance();

                if (!connB1.connectedtoHana)
                {
                    addError("Error en SAP", "No se puedo conectar con SAP B1, es posible que algunas validaciones cruzadas con SAP no sean ejecutadas");
                }

                bool v1      = VerifyBP(1, 2, process.BranchesId, user);
                bool v2      = VerifyColumnValueIn(3, _context.Dependencies.Where(x => x.BranchesId == this.process.BranchesId).Select(x => x.Cod).ToList(), comment: "Esta Dependencia no es Válida");
                var  pei     = connB1.getCostCenter(B1Connection.Dimension.PEI).Cast <string>().ToList();
                bool v3      = VerifyColumnValueIn(4, pei, comment: "Este PEI no existe en SAP.");
                bool v4      = VerifyLength(5, 50);
                var  periodo = connB1.getCostCenter(B1Connection.Dimension.Periodo).Cast <string>().ToList();
                bool v5      = VerifyColumnValueIn(6, periodo, comment: "Este Periodo no existe en SAP.");
                bool v6      = VerifyParalel(cod: 9, periodo: 6, sigla: 7, paralelo: 8, dependency: 3, branch: this.process.BranchesId);//esta dependencia debe estar en 3, no 17
                bool v7      = VerifyColumnValueIn(10, new List <string> {
                    "CC_TEMPORAL"
                }, comment: "No existe este tipo de Cuenta Asignada.");
                bool v8 = VerifyTotal();

                bool v9 = true;
                foreach (var i in new List <int>()
                {
                    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
                })
                {
                    v9 = VerifyNotEmpty(i) && v9;
                }

                return(v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8 && v9);
            }

            return(false);
        }
        private bool verifyproject(int dependency, int sheet = 1)
        {
            string   commnet   = "Este proyecto no existe en SAP.";
            var      connB1    = B1Connection.Instance();
            int      branchId  = Convert.ToInt16(segmentoOrigen);
            var      branch    = _context.Branch.FirstOrDefault(x => x.Id == branchId).Abr;
            var      list      = connB1.getProjects("*").Where(x => x.U_Sucursal == branch).Select(x => new { x.PrjCode, x.U_UORGANIZA }).ToList();
            int      index     = 15;
            int      tipoproy  = 11;
            bool     res       = true;
            IXLRange UsedRange = wb.Worksheet(sheet).RangeUsed();
            var      l         = UsedRange.LastRow().RowNumber();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                var strdependency = dependency != -1 ? wb.Worksheet(sheet).Cell(i, dependency).Value.ToString() : null;
                var strproject    = index != -1 ? wb.Worksheet(sheet).Cell(i, index).Value.ToString() : null;
                var dep           = _context.Dependencies.Where(x => x.BranchesId == branchId).Include(x => x.OrganizationalUnit).FirstOrDefault(x => x.Cod == strdependency);
                if (!list.Exists(x => string.Equals(x.PrjCode.ToString(), strproject, StringComparison.OrdinalIgnoreCase)))
                //Si el proyecto no existe en la lista de proyectos SAP. Solo entrará si está vacío o es un proyecto no registrado segun Codigo y su UO correspondiente
                {
                    var a1 = wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString();
                    var a2 = wb.Worksheet(sheet).Cell(i, index).Value.ToString();
                    if (!(
                            (
                                //Estos tipos de proyecto pueden no tener codigo de proyecto
                                //POST e INV siempre deben estar con un codigo de proyecto
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "EC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "FC" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "SA" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "CAP" ||
                                wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() == "PAS"
                            )
                            &&
                            wb.Worksheet(sheet).Cell(i, index).Value.ToString() == ""
                            ))
                    {
                        res = false;
                        paintXY(index, i, XLColor.Red, commnet);
                    }
                }
                else
                {
                    //como ya sabemos que existe el proyecto, ahora preguntamos de la UO
                    var    row    = list.FirstOrDefault(x => x.PrjCode == strproject);
                    string UO     = row.U_UORGANIZA.ToString();
                    string UOName = _context.OrganizationalUnits.FirstOrDefault(x => x.Cod == UO).Name;
                    if (!string.Equals(dep.OrganizationalUnit.Cod.ToString(), row.U_UORGANIZA.ToString(), StringComparison.OrdinalIgnoreCase))
                    {
                        //Si la UO para esta fila es diferente de la UO registrada en SAP, marcamos error
                        res = false;
                        paintXY(dependency, i, XLColor.Red, "Este proyecto debe tener una dependencia asociada a la Unidad Org: " + UOName);
                    }
                }
            }
            valid = valid && res;
            if (!res)
            {
                addError("Valor no valido", "Proyecto o proyectos no válidos en la columna: " + index, false);
            }

            return(res);
        }
        public IHttpActionResult BusinessPartners()
        {
            var B1con = B1Connection.Instance();

            return(Ok(B1con.getBusinessPartners("*")));
        }
示例#23
0
        public bool VerifyParalel(int cod, int periodo, int sigla, int paralelo, int dependency, int branch, int sheet = 1)
        {
            var            B1conn       = B1Connection.Instance();
            bool           res          = true;
            IXLRange       UsedRange    = wb.Worksheet(sheet).RangeUsed();
            int            branchId     = Convert.ToInt16(branch);
            var            branchName   = _context.Branch.FirstOrDefault(x => x.Id == branchId).Abr;
            List <dynamic> list         = B1conn.getParalels();
            var            filteredList = list.Where(x => x.segmento == branchName);


            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                var strcod      = cod != -1 ? wb.Worksheet(sheet).Cell(i, cod).Value.ToString() : null;
                var strperiodo  = periodo != -1 ? wb.Worksheet(sheet).Cell(i, periodo).Value.ToString() : null;
                var strsigla    = sigla != -1 ? wb.Worksheet(sheet).Cell(i, sigla).Value.ToString() : null;
                var strparalelo = paralelo != -1 ? wb.Worksheet(sheet).Cell(i, paralelo).Value.ToString() : null;
                //para hacer las validaciones de UO
                var strdependency = dependency != -1 ? wb.Worksheet(sheet).Cell(i, dependency).Value.ToString() : null;
                var dep           = _context.Dependencies.Where(x => x.BranchesId == branch).Include(x => x.OrganizationalUnit)
                                    .FirstOrDefault(x => x.Cod == strdependency);
                if (dep == null)
                {
                    paintXY(dependency, i, XLColor.Red, "Esta dependencia no existe en la Base de Datos Nacional.");
                    res = false;
                }
                else
                {
                    //Solo se valida si existe la dep
                    //Si no existe un match del código del paralelo en SAP, el periodo, la sigla y el paralelo del excel con Datos Maestros, especificamos el error...
                    //A´demás de lo validado en el comentario previo, se revisa si hay match con la UO correcta, ya sea de la col OU o de la tabla auxiliar. Debajo se valida la OU
                    if (!filteredList.Any(x => (x.cod == strcod && x.periodo == strperiodo && x.sigla == strsigla && x.paralelo == strparalelo) && (x.OU == dep.OrganizationalUnit.Cod || x.auxiliar == dep.OrganizationalUnit.Cod)))
                    {
                        res = false;
                        if (filteredList.Any(x => x.cod == strcod))//si hay match con el código del paralelo, especificamos cual fue el elemento que no hizo match
                        {
                            var row = filteredList.FirstOrDefault(x => x.cod == strcod);
                            if (row.sigla != strsigla)
                            {
                                paintXY(sigla, i, XLColor.Red, "Esta Sigla no es correcta.");
                            }
                            if (row.periodo != strperiodo)
                            {
                                paintXY(periodo, i, XLColor.Red, "Este Periodo no es correcto.");
                            }
                            if (row.paralelo != strparalelo)
                            {
                                paintXY(paralelo, i, XLColor.Red, "Este Paralelo no es correcto.");
                            }
                            // Verificar UO: si este paralelo tiene una UO auxiliar, esa es la que manda, sino validar con la columna OU
                            if (row.auxiliar != "")
                            {
                                if (dep.OrganizationalUnit.Cod.ToString() != row.auxiliar.ToString())
                                {
                                    string UO     = row.auxiliar.ToString();
                                    string UOName = _context.OrganizationalUnits.FirstOrDefault(x => x.Cod == UO).Name;
                                    paintXY(dependency, i, XLColor.Red, "Este paralelo debería tener una dependencia asociada a la UO: " + UOName);
                                }
                            }
                            else
                            {
                                if (dep.OrganizationalUnit.Cod.ToString() != row.OU.ToString())
                                {
                                    string UO     = row.OU.ToString();
                                    string UOName = _context.OrganizationalUnits.FirstOrDefault(x => x.Cod == UO).Name;
                                    paintXY(dependency, i, XLColor.Red, "Este paralelo debería tener una dependencia asociada a la UO: " + UOName);
                                }
                            }
                        }
                        else
                        {
                            paintXY(cod, i, XLColor.Red, "Este código de paralelo no existe en SAP, al menos para esta regional");
                        }
                    }
                }
            }

            valid = valid && res;
            if (!res)
            {
                addError("Datos Paralelos", "Algunos datos de paralelos no coinciden o no existen en SAP B1.");
            }
            return(res);
        }
        public IHttpActionResult ToSAP(int id, JObject webdata)
        {
            if (webdata == null || webdata["date"] == null)
            {
                return(BadRequest());
            }

            var B1 = B1Connection.Instance();
            HttpResponseMessage response = new HttpResponseMessage();
            var user      = auth.getUser(Request);
            var processes = _context.ServProcesses.Include(x => x.Branches).Where(f =>
                                                                                  f.Id == id && f.State == ServProcess.Serv_FileState.PendingApproval);

            if (processes.Count() == 0)
            {
                return(NotFound());
            }

            processes = auth.filerByRegional(processes, user).Cast <ServProcess>();
            var process = processes.FirstOrDefault();

            if (process == null)
            {
                return(Unauthorized());
            }

            DateTime date = DateTime.Parse(webdata["date"].ToString());

            process.InSAPAt = date;
            var data  = process.getVoucherData(_context);
            var memos = data.Select(x => x.Memo).Distinct().ToList();

            foreach (var memo in memos)
            {
                //remove special chars
                var goodMemo = Regex.Replace(memo, "[^\\w\\._]", "");
                //remove new line characters
                goodMemo = Regex.Replace(goodMemo, @"\t|\n|\r", "");

                var ppagar = data.Where(g => g.Concept == "PPAGAR" && g.Memo == memo).Select(g => new Serv_Voucher()
                {
                    CardName    = g.CardName,
                    CardCode    = g.CardCode,
                    OU          = g.OU,
                    PEI         = g.PEI,
                    Carrera     = g.Carrera,
                    Paralelo    = g.Paralelo,
                    Periodo     = g.Periodo,
                    ProjectCode = g.ProjectCode,
                    Memo        = g.Memo,
                    LineMemo    = g.LineMemo,
                    Concept     = g.Concept,
                    //AssignedAccount=g.AssignedAccount,
                    Account = g.Account,
                    Credit  = g.Credit,
                    Debit   = g.Debit
                }).ToList();

                List <Serv_Voucher> rest = data.Where(g => g.Concept != "PPAGAR" && g.Memo == memo).GroupBy(g => new
                {
                    g.CardCode,
                    g.OU,
                    g.PEI,
                    g.Carrera,
                    g.Paralelo,
                    g.Periodo,
                    g.ProjectCode,
                    g.Memo,
                    g.LineMemo,
                    g.Concept,
                    //g.AssignedAccount,
                    g.Account,
                }).Select(g => new Serv_Voucher()
                {
                    CardName    = "",
                    CardCode    = g.Key.CardCode,
                    OU          = g.Key.OU,
                    PEI         = g.Key.PEI,
                    Carrera     = g.Key.Carrera,
                    Paralelo    = g.Key.Paralelo,
                    Periodo     = g.Key.Periodo,
                    ProjectCode = g.Key.ProjectCode,
                    Memo        = g.Key.Memo,
                    LineMemo    = g.Key.LineMemo,
                    Concept     = g.Key.Concept,
                    //AssignedAccount=g.Key.AssignedAccount,
                    Account = g.Key.Account,
                    Credit  = g.Sum(s => s.Credit),
                    Debit   = g.Sum(s => s.Debit)
                }).ToList();

                List <Serv_Voucher> dist1 = ppagar.Union(rest).OrderBy(z => z.Debit == 0.00M ? 1 : 0).ThenBy(z => z.Account).ToList();
                B1.addServVoucher(user.Id, dist1.ToList(), process);
            }

            if (memos.Count() > 1)
            {
                process.SAPId = "Multiples.";
            }
            process.State         = ServProcess.Serv_FileState.INSAP;
            process.LastUpdatedBy = user.Id;
            _context.ServProcesses.AddOrUpdate(process);
            _context.SaveChanges();

            return(Ok(process.SAPId));
        }
 public CostCentersController()
 {
     B1conn   = B1Connection.Instance();
     _context = new ApplicationDbContext();
 }
示例#26
0
        public override bool ValidateFile()
        {
            var connB1 = B1Connection.Instance();

            if (!connB1.connectedtoHana)
            {
                addError("Error en SAP", "No se puedo conectar con SAP B1, es posible que algunas validaciones cruzadas con SAP no sean ejecutadas");
            }
            this.segmentInt = Int32.Parse(this.segmentoOrigen);
            bool v1 = VerifyColumnValueIn(13, connB1.getBusinessPartners().Cast <string>().ToList(), comment: "Esta AFP no esta registrada como un Bussines Partner en SAP");
            bool v2 = VerifyColumnValueIn(20, _context.TipoEmpleadoDists.Select(x => x.Name).ToList(), comment: "Este Tipo empleado no es valido.\n");
            bool v3 = VerifyColumnValueIn(21, connB1.getCostCenter(B1Connection.Dimension.PEI, mes: this.mes, gestion: this.gestion).Cast <string>().ToList(), comment: "Este PEI no existe en SAP.\n");
            bool v4 = VerifyColumnValueIn(23, _context.Dependencies.Where(x => x.BranchesId == this.segmentInt).Select(m => m.Cod).Distinct().ToList(), comment: "Esta Dependencia no existe en la Base de Datos Nacional.\n");
            bool v5 = VerifyPerson(ci: 1, CUNI: 19, fullname: 2, personActive: true, branchesId: this.segmentInt, date: this.gestion + "-" + this.mes + "-01", dependency: 23, paintdep: true, tipo: 20);
            bool v6 = VerifyColumnValueIn(25, connB1.getBusinessPartners().Cast <string>().ToList(), comment: "Este seguro no esta registrado como un Bussines Partner en SAP");
            bool v7 = ValidateLiquidoPagable();
            bool v8 = ValidatenoZero();
            bool v9 = validateAllPeopleInPayroll();
            // HB
            bool v10 = ValidateNoNegative(6);
            // Bono
            bool v11 = ValidateNoNegative(7);
            // Otros Ingresos
            bool v12 = ValidateNoNegative(8);
            // Ingresos Docencia
            bool v13 = ValidateNoNegative(9);
            // Ingresos Otras Actividades Academicas
            bool v14 = ValidateNoNegative(10);
            // Reintegro
            bool v15 = ValidateNoNegative(11);
            // Total Ganado
            bool v16 = ValidateNoNegative(12);
            // Aporte AFP
            bool v17 = ValidateNoNegative(14);
            // IVA
            bool v18 = ValidateNoNegative(15);
            // Descuentos
            bool v19 = ValidateNoNegative(16);
            // Total Descuentos
            bool v20 = ValidateNoNegative(17);
            // Liquido Pagable
            bool v21 = ValidateNoNegative(18);
            // Horas Trabajadas
            bool v22 = ValidateNoNegative(22);
            // Aporte Patronal AFP
            bool v23 = ValidateNoNegative(24);
            // Aporte Patronal SCP
            bool v24 = ValidateNoNegative(26);
            // Provision Aguinaldo
            bool v25 = ValidateNoNegative(27);
            // Provision Prima
            bool v26 = ValidateNoNegative(28);
            // Provision Indeminizacion
            bool v27 = ValidateNoNegative(29);
            // Socio de Negocio AFP
            bool v28 = ValidateSN(13);
            // Socio de Negocio SSU
            bool v29       = ValidateSN(25);
            bool Negativos = v10 && v11 && v12 && v13 && v14 && v15 && v16 && v17 && v18 && v19 && v20 && v21 && v22 &&
                             v23 && v24 && v25 && v26 && v27;
            // Cheque or Banco
            bool v30 = VerifyColumnValueIn(30, new List <string>()
            {
                "CHQ", "BCO"
            }, comment: "Este no es un tipo valido de modo de pago");

            return(isValid() && v1 && v2 && v3 && v4 && v5 && v6 && v7 && v8 && v9 && Negativos && v28 && v29 && v30);
        }
示例#27
0
        public IHttpActionResult CivilbyBranch(int id)
        {
            var B1 = B1Connection.Instance();

            if (id != 0)
            {
                // we get the Branches from SAP
                var query = "select c.\"Id\", c.\"FullName\",c.\"SAPId\",c.\"NIT\",c.\"Document\",c.\"CreatedBy\",ocrd.\"BranchesId\" " +
                            "from " + CustomSchema.Schema + ".\"Civil\" c" +
                            " inner join " +
                            " (select ocrd.\"CardCode\", br.\"Id\" \"BranchesId\"" +
                            " from " + ConfigurationManager.AppSettings["B1CompanyDB"] + ".ocrd" +
                            " inner join " + ConfigurationManager.AppSettings["B1CompanyDB"] + ".crd8" +
                            " on ocrd.\"CardCode\" = crd8.\"CardCode\"" +
                            " inner join " + CustomSchema.Schema + ".\"Branches\" br" +
                            " on br.\"CodigoSAP\" = crd8.\"BPLId\"" +
                            " where ocrd.\"validFor\" = \'Y\'" +
                            " and crd8.\"DisabledBP\" = \'N\') ocrd" +
                            " on c.\"SAPId\" = ocrd.\"CardCode\"" +
                            " where ocrd.\"BranchesId\"=" + id + ";";
                var rawresult = _context.Database.SqlQuery <Civil>(query);

                var user = auth.getUser(Request);

                var res = auth.filerByRegional(rawresult.AsQueryable(), user);

                return(Ok(res));
            }
            else
            {
                var    user   = auth.getUser(Request);
                var    brs    = AD.getUserBranches(user);
                var    brsIds = brs.Select(x => x.Id);
                string StrIds = "";
                int    n      = brsIds.Count();
                int    i      = 0;
                foreach (var brid in brsIds)
                {
                    i++;
                    StrIds += brid + "" + (i == n?"":", ");
                }


                var query = "select c.\"Id\", c.\"FullName\",c.\"SAPId\",c.\"NIT\",c.\"Document\",c.\"CreatedBy\",ocrd.\"BranchesId\" " +
                            "from " + CustomSchema.Schema + ".\"Civil\" c" +
                            " inner join " +
                            " (select ocrd.\"CardCode\", br.\"Id\" \"BranchesId\"" +
                            " from " + ConfigurationManager.AppSettings["B1CompanyDB"] + ".ocrd" +
                            " inner join " + ConfigurationManager.AppSettings["B1CompanyDB"] + ".crd8" +
                            " on ocrd.\"CardCode\" = crd8.\"CardCode\"" +
                            " inner join " + CustomSchema.Schema + ".\"Branches\" br" +
                            " on br.\"CodigoSAP\" = crd8.\"BPLId\"" +
                            " where ocrd.\"validFor\" = \'Y\'" +
                            " and crd8.\"DisabledBP\" = \'N\') ocrd" +
                            " on c.\"SAPId\" = ocrd.\"CardCode\"" +
                            " where ocrd.\"BranchesId\" in (" + StrIds + ");";
                var rawresult = _context.Database.SqlQuery <Civil>(query);
                var res       = auth.filerByRegional(rawresult.AsQueryable(), user);
                return(Ok(res));
            }
        }
        private bool verifyAcount(int dependency, int sheet = 1)
        {
            bool   res        = true;
            string commnet    = "";
            int    index      = 15;
            int    tipoproy   = 11;
            int    badType    = 0;
            int    badAccount = 0;
            var    connB1     = B1Connection.Instance();
            int    branchId   = Convert.ToInt16(segmentoOrigen);
            var    branch     = _context.Branch.FirstOrDefault(x => x.Id == branchId).Abr;
            // la lista de proyectos segun la regional del proceso SAP
            var      listParams = connB1.getProjects("*").Where(x => x.U_Sucursal == branch).Select(x => new { x.PrjCode, x.U_Tipo, x.U_UORGANIZA }).ToList();
            IXLRange UsedRange  = wb.Worksheet(sheet).RangeUsed();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                //Si el proyecto existe en SAP ahí validamos los tipos de proyecto y cuentas asignadas
                var strproject = index != -1 ? wb.Worksheet(sheet).Cell(i, index).Value.ToString() : null;
                if (listParams.Exists(x => string.Equals(x.PrjCode.ToString(), strproject, StringComparison.OrdinalIgnoreCase)))
                {
                    //CAP se deja pasar, no validamos ese tipo de proyecto
                    if (wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString() != "CAP")
                    {
                        //-----------------------------Validacion del tipo--------------------------------
                        var projectType = listParams.Where(x => x.PrjCode == wb.Worksheet(sheet).Cell(i, index).Value.ToString()).FirstOrDefault().U_Tipo.ToString();
                        //tipo de proyecto de la celda excel
                        string tipo = projectType;
                        // lista de tipos de proyectos que son validos
                        var tiposBD    = _context.TableOfTableses.Where(x => x.Type.Equals("TIPOS_P&C_SALOMON")).Select(x => x.Value).ToList();
                        var typeExists = tiposBD.Exists(x => string.Equals(x.Split(':')[0], tipo, StringComparison.OrdinalIgnoreCase));
                        if (!typeExists)
                        {
                            //si el proyecto tiene un U_Tipo en SAP y no lo tenemos en personas, entonces no es válido.
                            //Pasa para los proyectos con U_Tipo 'I', ESOS NUNCA ENTRAN EN PLANILLAS, este If es una formalidad
                            commnet = "El tipo de proyecto: " + tipo + " no es válido.";
                            paintXY(index, i, XLColor.Red, commnet);
                            badType++;
                            res = false;
                        }
                        else
                        {
                            //-----------------------------Validacion de la cuenta asignada--------------------------------
                            // el tipo de proyecto en SAP
                            var projectAccount = wb.Worksheet(sheet).Cell(i, tipoproy).Value.ToString();
                            //la cuenta asignada a ese tipo de proyecto segun el tipo de proyecto
                            var assignedAccount = tiposBD.Where(x => x.Split(':')[0].Equals(tipo)).FirstOrDefault().ToString().Split(':')[1];
                            if (projectAccount != assignedAccount)
                            {
                                commnet = "La cuenta asignada es incorrecta, debería ser: " + assignedAccount;
                                paintXY(tipoproy, i, XLColor.Red, commnet);
                                badAccount++;
                                res = false;
                            }
                        }
                    }
                }
            }
            valid = valid && res;
            if (!res && badAccount > 0 && badType > 0)
            {
                addError("Valor no valido", "Tipos de proyectos no válidos en la columna: " + index + " y cuentas asignadas no válidas en la columna: " + tipoproy, false);
            }
            else if (!res && badAccount > 0 && badType == 0)
            {
                addError("Valor no valido", "Cuentas asignadas no válidas en la columna: " + tipoproy, false);
            }
            else if (!res && badAccount == 0 && badType > 0)
            {
                addError("Valor no valido", "Tipos de proyectos no válidos en la columna: " + index, false);
            }
            return(res);
        }
 public AltasContratosController()
 {
     _context = new ApplicationDbContext();
     B1       = B1Connection.Instance();
 }
        public bool VerifyParalel(int cod, int periodo, int sigla, int paralelo, int dependency, int sheet = 1)
        {
            var            B1conn    = B1Connection.Instance();
            bool           res       = true;
            IXLRange       UsedRange = wb.Worksheet(sheet).RangeUsed();
            var            c         = new ApplicationDbContext();
            List <dynamic> list      = B1conn.getParalels();

            for (int i = headerin + 1; i <= UsedRange.LastRow().RowNumber(); i++)
            {
                var strcod        = cod != -1 ? wb.Worksheet(sheet).Cell(i, cod).Value.ToString() : null;
                var strperiodo    = periodo != -1 ? wb.Worksheet(sheet).Cell(i, periodo).Value.ToString() : null;
                var strsigla      = sigla != -1 ? wb.Worksheet(sheet).Cell(i, sigla).Value.ToString() : null;
                var strparalelo   = paralelo != -1 ? wb.Worksheet(sheet).Cell(i, paralelo).Value.ToString() : null;
                var strdependency = dependency != -1 ? wb.Worksheet(sheet).Cell(i, dependency).Value.ToString() : null;

                var dep = _context.Dependencies.Include(x => x.OrganizationalUnit)
                          .FirstOrDefault(x => x.Cod == strdependency);

                if (/*dep == null ||*/ !list.Any(x => x.cod == strcod && x.periodo == strperiodo && x.sigla == strsigla && x.paralelo == strparalelo /* && x.OU == dep.OrganizationalUnit.Cod*/))
                {
                    res = false;
                    if (list.Any(x => x.cod == strcod))
                    {
                        var row = list.FirstOrDefault(x => x.cod == strcod);
                        if (row.sigla != strsigla)
                        {
                            paintXY(sigla, i, XLColor.Red, "Esta Sigla no es correcta.");
                        }
                        if (row.periodo != strperiodo)
                        {
                            paintXY(periodo, i, XLColor.Red, "Este Periodo no es correcto.");
                        }
                        if (row.paralelo != strparalelo)
                        {
                            paintXY(paralelo, i, XLColor.Red, "Este Paralelo no es correcto.");
                        }

                        // Verify dependency

                        /*if (dep == null || row.OU != dep.OrganizationalUnit.Cod)
                         * {
                         *  paintXY(dependency, i, XLColor.Red, "Esta dependencia no esta asociada a este paralelo." + row.OU + "->" + dep.OrganizationalUnit.Cod );
                         * }*/
                    }
                    else
                    {
                        paintXY(cod, i, XLColor.Red, "Este Codigo no es correcto.");
                        paintXY(periodo, i, XLColor.Red, "No es posible validar este Periodo.");
                        paintXY(sigla, i, XLColor.Red, "No es posible validar esta Sigla.");
                        paintXY(paralelo, i, XLColor.Red, "No es posible validar este Paralelo.");
                    }
                }
            }

            valid = valid && res;
            if (!res)
            {
                addError("Datos Paralelos", "Algunos datos de paralelos no coinciden o no existen en SAP B1.");
            }
            return(res);
        }