Ejemplo n.º 1
0
        public ActionResult Create([Bind(Include = "LAND,SPRAS,LANDX,IMAGE,ACTIVO")] PAI pAI)
        {
            pAI.ACTIVO = true;
            var con = db.PAIS.Where(x => x.LAND == pAI.LAND && x.ACTIVO == false).ToList();

            if (con.Count == 0)
            {
                if (ModelState.IsValid)
                {
                    db.PAIS.Add(pAI);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }

                return(View(pAI));
            }
            else
            {
                if (ModelState.IsValid)
                {
                    var res = db.PAIS.Where(x => x.LAND == pAI.LAND).First();
                    res.ACTIVO = true;
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }

                return(View(pAI));
            }
        }
Ejemplo n.º 2
0
        public void insertElement(object element, USUARIO u)
        {
            if (element != null)
            {
                using (var entity = new TAE2Entities())
                {
                    PAI pais = (PAI)element;

                    var validacion = (from cust in entity.PAIS
                                      where cust.PAIS == pais.PAIS
                                      select cust).ToList();

                    if (validacion.Count == 0)
                    {
                        pais.UNID_PAIS = UNID.getNewUNID();
                        //Sync
                        pais.IS_MODIFIED        = true;
                        pais.LAST_MODIFIED_DATE = UNID.getNewUNID();
                        var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                        modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                        entity.SaveChanges();
                        //
                        entity.PAIS.AddObject(pais);
                        entity.SaveChanges();

                        UNID.Master(pais, u, -1, "Inserción");
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public CatalogPaisModel(IDataMapper dataMapper)
 {
     this._dataMapper   = new PaisDataMapper();
     this._pais         = new FixupCollection <DeletePais>();
     this._selectedPais = new PAI();
     this.loadItems();
 }
Ejemplo n.º 4
0
        public void loadSync(object element)
        {
            if (element != null)
            {
                PAI poco = (PAI)element;
                using (var entity = new TAE2Entities())
                {
                    var query = (from cust in entity.PAIS
                                 where poco.UNID_PAIS == cust.UNID_PAIS
                                 select cust).ToList();

                    //Actualización
                    if (query.Count > 0)
                    {
                        var aux = query.First();

                        if (aux.LAST_MODIFIED_DATE < poco.LAST_MODIFIED_DATE)
                        {
                            udpateElementSync((object)poco);
                        }
                    }
                    //Inserción
                    else
                    {
                        insertElementSync((object)poco);
                    }

                    var modifiedMenu = entity.PAIS.First(p => p.UNID_PAIS == poco.UNID_PAIS);
                    modifiedMenu.IS_MODIFIED = false;
                    entity.SaveChanges();
                }
            }
        }
Ejemplo n.º 5
0
 public DeletePais(PAI pais)
 {
     this.UNID_PAIS = pais.UNID_PAIS;
     this.PAIS      = pais.PAIS;
     this.ISO       = pais.ISO;
     this.IS_ACTIVE = pais.IS_ACTIVE;
     this.IsChecked = false;
 }
Ejemplo n.º 6
0
        public ActionResult DeleteConfirmed(string id)
        {
            PAI pAI = db.PAIS.Find(id);

            pAI.ACTIVO = false;
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 7
0
 public ActionResult Edit([Bind(Include = "LAND,SPRAS,LANDX,IMAGE,ACTIVO")] PAI pAI)
 {
     if (ModelState.IsValid)
     {
         db.Entry(pAI).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(pAI));
 }
Ejemplo n.º 8
0
        // GET: Pais/Delete/5
        public ActionResult Delete(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PAI pAI = db.PAIS.Find(id);

            if (pAI == null)
            {
                return(HttpNotFound());
            }
            return(View(pAI));
        }
 public DeleteProveedor(PROVEEDOR proveedor)
 {
     this.UNID_PROVEEDOR = proveedor.UNID_PROVEEDOR;
     this.PROVEEDOR_NAME = proveedor.PROVEEDOR_NAME;
     this._pais          = proveedor.PAI;
     this._ciudad        = proveedor.CIUDAD;
     this.UNID_PAIS      = proveedor.UNID_PAIS;
     this.UNID_CIUDAD    = proveedor.UNID_CIUDAD;
     this.CONTACTO       = proveedor.CONTACTO;
     this.TEL1           = proveedor.TEL1;
     this.TEL2           = proveedor.TEL2;
     this.MAIL           = proveedor.MAIL;
     this.CALLE          = proveedor.CALLE;
     this.CODIGO_POSTAL  = proveedor.CODIGO_POSTAL;
     this.RFC            = proveedor.RFC;
     this.IS_ACTIVE      = proveedor.IS_ACTIVE;
     this.IsChecked      = false;
 }
Ejemplo n.º 10
0
        public void insertElementSync(object element)
        {
            if (element != null)
            {
                using (var entity = new TAE2Entities())
                {
                    PAI pais = (PAI)element;

                    //Sync

                    var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                    modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                    entity.SaveChanges();
                    //
                    entity.PAIS.AddObject(pais);
                    entity.SaveChanges();
                }
            }
        }
Ejemplo n.º 11
0
 public void udpateElement(object element, USUARIO u)
 {
     if (element != null)
     {
         using (var entity = new TAE2Entities())
         {
             PAI pais         = (PAI)element;
             var modifiedPais = entity.PAIS.First(p => p.UNID_PAIS == pais.UNID_PAIS);
             modifiedPais.PAIS = pais.PAIS;
             modifiedPais.ISO  = pais.ISO;
             //Sync
             modifiedPais.IS_MODIFIED        = true;
             modifiedPais.LAST_MODIFIED_DATE = UNID.getNewUNID();
             var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
             modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
             entity.SaveChanges();
             //
             UNID.Master(pais, u, -1, "Modificación");
         }
     }
 }
Ejemplo n.º 12
0
        public void deleteElement(object element)
        {
            if (element != null)
            {
                using (var entity = new TAE2Entities())
                {
                    PAI pais = (PAI)element;

                    var deletePais = entity.PAIS.First(p => p.UNID_PAIS == pais.UNID_PAIS);

                    deletePais.IS_ACTIVE = false;
                    //Sync
                    deletePais.IS_MODIFIED        = true;
                    deletePais.LAST_MODIFIED_DATE = UNID.getNewUNID();
                    var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                    modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                    entity.SaveChanges();
                    //
                    entity.SaveChanges();
                }
            }
        }
Ejemplo n.º 13
0
        public object getElement(object element)
        {
            object res = null;

            if (element != null)
            {
                PAI Eprov = (PAI)element;
                FixupCollection <PAI> tp = new FixupCollection <PAI>();
                using (var Entity = new TAE2Entities())
                {
                    var query = (from p in Entity.PAIS
                                 where p.UNID_PAIS == Eprov.UNID_PAIS
                                 select p).ToList();

                    if (query.Count > 0)
                    {
                        res = query;
                    }
                }
            }
            return(res);
        }
Ejemplo n.º 14
0
        // GET: Pais/Edit/5
        public ActionResult Edit(string id)
        {
            int    pagina = 652; //ID EN BASE DE DATOS
            string u      = User.Identity.Name;
            var    user   = db.USUARIOs.Where(a => a.ID.Equals(u)).FirstOrDefault();

            ViewBag.permisos = db.PAGINAVs.Where(a => a.ID.Equals(user.ID)).ToList();
            ViewBag.carpetas = db.CARPETAVs.Where(a => a.USUARIO_ID.Equals(user.ID)).ToList();
            ViewBag.usuario  = user; ViewBag.returnUrl = Request.Url.PathAndQuery;;
            ViewBag.rol      = user.PUESTO.PUESTOTs.Where(a => a.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
            ViewBag.Title    = db.PAGINAs.Where(a => a.ID.Equals(pagina)).FirstOrDefault().PAGINATs.Where(b => b.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
            ViewBag.warnings = db.WARNINGVs.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();
            ViewBag.textos   = db.TEXTOes.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();

            try
            {
                string p = Session["pais"].ToString();
                ViewBag.pais = p + ".png";
            }
            catch
            {
                //return RedirectToAction("Pais", "Home");
            }
            Session["spras"] = user.SPRAS_ID;


            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PAI pAI = db.PAIS.Find(id);

            if (pAI == null)
            {
                return(HttpNotFound());
            }
            return(View(pAI));
        }
Ejemplo n.º 15
0
        public static ProjectDetailsDto MapToDetailsDto(ProjectDto dto)
        {
            return(new ProjectDetailsDto
            {
                Id = dto.Id,
                Active = dto.Active,
                Description = dto.Description,
                EndDate = dto.EndDate,
                IsAccepted = dto.IsAccepted,
                IsDone = dto.IsDone,
                IsFixedPrice = dto.IsFixedPrice,
                Price = dto.Price,
                ESTdriving = dto.ESTdriving,
                StartDate = dto.StartDate,
                Rowversion = dto.Rowversion,
                CustomerId = dto.CustomerId,
                Customer = dto.CustomerDto,

                ProjectDrivings = dto.ProjectDrivingDtos.GroupBy(PD => PD.UnitPrice)
                                  .Select(PD => new ProjectDrivingDto
                {
                    Amount = PD.Sum(a => a.Amount),
                    EmployeeId = PD.First().EmployeeId,
                    Employee = PD.First().Employee,
                    ProjectId = PD.First().ProjectId,
                    UnitPrice = PD.First().UnitPrice
                }).ToList(),

                TotalUsedDriving = dto.ProjectDrivingDtos.Sum(UI => UI.Amount * UI.UnitPrice),

                ProjectEmployees = dto.ProjectEmployeeDtos.GroupBy(PE => PE.Employee.Id)
                                   .Select(PE => new ProjectEmployeeDto
                {
                    EstWorkingHours = PE.Sum(a => a.EstWorkingHours),
                    EmployeeID = PE.First().EmployeeID,
                    Employee = PE.First().Employee,
                    ProjectId = PE.First().ProjectId
                }).ToList(),

                TotalAssignedHours = dto.ProjectEmployeeDtos.Sum(PE => (PE.Employee.Type.HourlyPrice + PE.Employee.Specialty.Bonus) * PE.EstWorkingHours),

                //working hours summed up by employee
                WorkingHours = dto.WorkingHoursDtos
                               .GroupBy(WH => WH.EmployeeId)
                               .Select(WH => new WorkingHoursDto
                {
                    Amount = WH.Sum(a => a.Amount),
                    EmployeeId = WH.First().EmployeeId,
                    Employee = WH.First().Employee,
                    ProjectId = WH.First().ProjectId,
                    HourlyPrice = WH.First().Employee.Type.HourlyPrice + WH.First().Employee.Specialty.Bonus
                }).ToList(),

                TotalUsedHours = dto.WorkingHoursDtos.Sum(WH => WH.Amount * WH.HourlyPrice),

                //assigned items summed up
                AssignedItems = dto.AssignedItemDtos.GroupBy(PAI => PAI.ItemID)
                                .Select(PAI => new ProjectAssignedItemDto
                {
                    Amount = PAI.Sum(c => c.Amount),
                    Item = PAI.First().Item,
                    Price = PAI.First().Price,
                    ProjectId = PAI.First().ProjectId
                }).ToList(),

                TotalAssignedItems = dto.AssignedItemDtos.Sum(UI => UI.Amount * UI.Price),

                //used items summed up
                UsedItems = dto.UsedItemsDtos.GroupBy(PUI => PUI.ItemID)
                            .Select(PUI => new ProjectUsedItemDto
                {
                    Amount = PUI.Sum(c => c.Amount),
                    Item = PUI.First().Item,
                    Price = PUI.First().Price,
                    ProjectId = PUI.First().ProjectId
                }).ToList(),
                TotalUsedItems = dto.UsedItemsDtos.Sum(UI => UI.Amount * UI.Price)
            });
        }
Ejemplo n.º 16
0
        public int creaRecurrente(string id_d, string tsol)
        {
            string   dates   = DateTime.Now.ToString("dd/MM/yyyy");
            DateTime theTime = DateTime.ParseExact(dates, //"06/04/2018 12:00:00 a.m."
                                                   "dd/MM/yyyy",
                                                   System.Globalization.CultureInfo.InvariantCulture,
                                                   System.Globalization.DateTimeStyles.None);

            var relacionada_neg = "";
            var relacionada_dis = "";

            DOCUMENTO      dOCUMENTO   = new DOCUMENTO();
            DOCUMENTO      dOCpADRE    = new DOCUMENTO();
            string         errorString = "";
            TAT001Entities db          = new TAT001Entities();


            string           p     = "";
            List <TREVERSAT> ldocr = new List <TREVERSAT>();
            decimal          rel   = 0;

            try
            {
                if (id_d == null || id_d.Equals(""))
                {
                    throw new Exception();
                }
                rel = Convert.ToDecimal(id_d);
            }
            catch
            {
                rel = 0;
            }

            //Obtener los documentos relacionados
            List <DOCUMENTO> docsrel = new List <DOCUMENTO>();

            SOCIEDAD id_bukrs = new SOCIEDAD();
            var      id_pais  = new PAI();
            var      id_waers = db.MONEDAs.Where(m => m.ACTIVO == true).ToList();

            if (rel > 0)
            {
                dOCpADRE = db.DOCUMENTOes.Where(doc => doc.NUM_DOC == rel).FirstOrDefault();
                if (dOCpADRE.TIPO_RECURRENTE == null)//RSG 28.05.2018----------------------------------------------
                {
                    return(0);
                }
                if (!((dOCpADRE.TIPO_RECURRENTE.Equals("M") | dOCpADRE.TIPO_RECURRENTE.Equals("P")) & dOCpADRE.ESTATUS.Equals("A") & dOCpADRE.ESTATUS_WF.Equals("A")))//RSG 28.05.2018
                {
                    return(0);
                }
                //List<DOCUMENTOREC> ddrec = new List<DOCUMENTOREC>();
                DOCUMENTOREC drec = dOCpADRE.DOCUMENTORECs.Where(a => a.ESTATUS == "A").FirstOrDefault();
                if (drec == null)
                {
                    return(0);
                }
                else
                {
                    DateTime hoy    = (DateTime)drec.FECHAF;
                    var      primer = new DateTime(hoy.Year, hoy.Month, 1);
                    var      ultimo = primer.AddMonths(1).AddDays(-1);
                    dOCUMENTO.FECHAI_VIG   = primer;
                    dOCUMENTO.FECHAF_VIG   = ultimo;
                    dOCUMENTO.MONTO_DOC_MD = (decimal)drec.MONTO_BASE;
                }
                if (tsol != dOCpADRE.TSOL_ID)
                {
                    return(0);
                }
                //RSG 28.05.2018----------------------------------------------
                docsrel  = db.DOCUMENTOes.Where(docr => docr.DOCUMENTO_REF == rel).ToList();
                id_bukrs = db.SOCIEDADs.Where(soc => soc.BUKRS == dOCpADRE.SOCIEDAD_ID && soc.ACTIVO == true).FirstOrDefault();
                id_pais  = db.PAIS.Where(pais => pais.LAND.Equals(dOCpADRE.PAIS_ID)).FirstOrDefault();//RSG 15.05.2018
                dOCUMENTO.DOCUMENTO_REF = rel;
                relacionada_neg         = dOCpADRE.TIPO_TECNICO;
                ////ViewBag.TSOL_ANT = dOCUMENTO.TSOL_ID;

                if (dOCUMENTO != null)
                {
                    dOCUMENTO.TSOL_ID = tsol;
                    dOCUMENTO.NUM_DOC = 0;
                    foreach (DOCUMENTOP pos in dOCpADRE.DOCUMENTOPs)
                    {
                    }
                }
            }
            else
            {
            }

            dOCUMENTO.SOCIEDAD_ID = id_bukrs.BUKRS;
            dOCUMENTO.PAIS_ID     = id_pais.LAND;//RSG 18.05.2018
            dOCUMENTO.MONEDA_ID   = id_bukrs.WAERS;
            dOCUMENTO.PERIODO     = Convert.ToInt32(DateTime.Now.ToString("MM"));
            dOCUMENTO.EJERCICIO   = Convert.ToString(DateTime.Now.Year);

            dOCUMENTO.FECHAD = theTime;

            //----------------------------RSG 18.05.2018

            //dOCUMENTO.SOCIEDAD = db.SOCIEDADs.Find(dOCUMENTO.SOCIEDAD_ID);
            //----------------------------RSG 18.05.2018



            ////HTTPPOST
            DOCUMENTO d = new DOCUMENTO();

            if (dOCUMENTO.DOCUMENTO_REF > 0)
            {
                d = db.DOCUMENTOes.Where(doc => doc.NUM_DOC == dOCUMENTO.DOCUMENTO_REF).FirstOrDefault();
                //dOCUMENTO.TSOL_ID = d.TSOL_ID;
                id_bukrs               = db.SOCIEDADs.Where(soc => soc.BUKRS == d.SOCIEDAD_ID).FirstOrDefault();
                dOCUMENTO.ESTADO       = d.ESTADO;
                dOCUMENTO.CIUDAD       = d.CIUDAD;
                dOCUMENTO.PAYER_ID     = d.PAYER_ID;
                dOCUMENTO.CONCEPTO     = d.CONCEPTO;
                dOCUMENTO.NOTAS        = d.NOTAS;
                dOCUMENTO.FECHAI_VIG   = d.FECHAI_VIG;
                dOCUMENTO.FECHAF_VIG   = d.FECHAF_VIG;
                dOCUMENTO.PAYER_NOMBRE = d.PAYER_NOMBRE;
                dOCUMENTO.PAYER_EMAIL  = d.PAYER_EMAIL;
                dOCUMENTO.TIPO_CAMBIO  = d.TIPO_CAMBIO;
                dOCUMENTO.GALL_ID      = d.GALL_ID;
                dOCUMENTO.TALL_ID      = d.TALL_ID;
                //Obtener el país
                dOCUMENTO.PAIS_ID = d.PAIS_ID;//RSG 15.05.2018
                dOCUMENTO.TSOL_ID = d.TSOL_ID;
            }

            //Tipo técnico
            dOCUMENTO.TIPO_TECNICO = "M";

            USUARIO u = db.USUARIOs.Find(d.USUARIOC_ID);//RSG 02/05/2018
            //Obtener el número de documento
            decimal N_DOC = getSolID(dOCUMENTO.TSOL_ID);

            dOCUMENTO.NUM_DOC = N_DOC;


            //Obtener SOCIEDAD_ID
            dOCUMENTO.SOCIEDAD_ID = id_bukrs.BUKRS;

            ////Obtener el país
            //dOCUMENTO.PAIS_ID = p.ToUpper();

            //CANTIDAD_EV > 1 si son recurrentes
            dOCUMENTO.CANTIDAD_EV = 1;

            //Obtener usuarioc
            dOCUMENTO.PUESTO_ID   = u.PUESTO_ID;//RSG 02/05/2018
            dOCUMENTO.USUARIOC_ID = u.ID;

            //Fechac
            dOCUMENTO.FECHAC = DateTime.Now;

            //Horac
            dOCUMENTO.HORAC = DateTime.Now.TimeOfDay;

            //FECHAC_PLAN
            dOCUMENTO.FECHAC_PLAN = DateTime.Now.Date;

            //FECHAC_USER
            dOCUMENTO.FECHAC_USER = DateTime.Now.Date;

            //HORAC_USER
            dOCUMENTO.HORAC_USER = DateTime.Now.TimeOfDay;

            //Estatus
            dOCUMENTO.ESTATUS = "N";

            //Estatus wf
            dOCUMENTO.ESTATUS_WF = "P";

            ///////////////////Montos
            //MONTO_DOC_MD
            var MONTO_DOC_MD = dOCUMENTO.MONTO_DOC_MD;

            dOCUMENTO.MONTO_DOC_MD = Convert.ToDecimal(MONTO_DOC_MD);

            //Obtener el monto de la sociedad
            dOCUMENTO.MONTO_DOC_ML = getValSoc(id_bukrs.WAERS, dOCUMENTO.MONEDA_ID, Convert.ToDecimal(dOCUMENTO.MONTO_DOC_MD), out errorString);
            if (!errorString.Equals(""))
            {
                throw new Exception();
            }

            //MONTO_DOC_ML2
            var MONTO_DOC_ML2 = dOCUMENTO.MONTO_DOC_ML2;

            dOCUMENTO.MONTO_DOC_ML2 = Convert.ToDecimal(MONTO_DOC_ML2);

            //MONEDAL_ID moneda de la sociedad
            dOCUMENTO.MONEDAL_ID = id_bukrs.WAERS;

            //MONEDAL2_ID moneda en USD
            dOCUMENTO.MONEDAL2_ID = "USD";

            //Tipo cambio de la moneda de la sociedad TIPO_CAMBIOL
            dOCUMENTO.TIPO_CAMBIOL = getUkurs(id_bukrs.WAERS, dOCUMENTO.MONEDA_ID, out errorString);

            //Tipo cambio dolares TIPO_CAMBIOL2
            dOCUMENTO.TIPO_CAMBIOL2 = getUkursUSD(dOCUMENTO.MONEDA_ID, "USD", out errorString);
            if (!errorString.Equals(""))
            {
                throw new Exception();
            }
            //Obtener datos del payer
            CLIENTE payer = getCliente(dOCUMENTO.PAYER_ID);

            dOCUMENTO.VKORG = payer.VKORG;
            dOCUMENTO.VTWEG = payer.VTWEG;
            dOCUMENTO.SPART = payer.SPART;

            dOCUMENTO.DOCUMENTO_REF = null;

            //Guardar el documento
            db.DOCUMENTOes.Add(dOCUMENTO);
            db.SaveChanges();

            //Actualizar el rango
            updateRango(dOCUMENTO.TSOL_ID, dOCUMENTO.NUM_DOC);

            //RSG 28.05.2018----------------------------------------------
            string recurrente         = "";
            List <DOCUMENTOREC> ddrec = new List <DOCUMENTOREC>();
            DOCUMENTOREC        drecc = d.DOCUMENTORECs.Where(a => a.ESTATUS == "A").FirstOrDefault();

            if (drecc == null)
            {
                return(0);
            }
            else
            {
                DateTime hoy    = drecc.FECHAF.Value;
                var      primer = new DateTime(hoy.Year, hoy.Month, 1);
                var      ultimo = primer.AddMonths(1).AddDays(-1);
                dOCUMENTO.FECHAI_VIG   = primer;
                dOCUMENTO.FECHAF_VIG   = ultimo;
                dOCUMENTO.MONTO_DOC_MD = drecc.MONTO_BASE;
                dOCUMENTO.FECHAD       = DateTime.Now;
                recurrente             = "X";
            }
            drecc.DOC_REF = dOCUMENTO.NUM_DOC;
            //RSG 28.05.2018----------------------------------------------

            //RSG 28.05.2018----------------------------------------------
            drecc.DOC_REF = dOCUMENTO.NUM_DOC;
            drecc.ESTATUS = "P";
            db.SaveChanges();
            //RSG 28.05.2018----------------------------------------------

            //Guardar los documentos p para el documento guardado
            try
            {
                //Agregar materiales existentes para evitar que en la vista se hayan agregado o quitado
                List <DOCUMENTOP> docpl = new List <DOCUMENTOP>();

                docpl = db.DOCUMENTOPs.Where(docp => docp.NUM_DOC == dOCpADRE.NUM_DOC).ToList();

                for (int j = 0; j < docpl.Count; j++)
                {
                    try
                    {
                        //DOCUMENTOP_MOD docmod = new DOCUMENTOP_MOD();
                        var cat = "";

                        if (docpl[j].MATNR != null && docpl[j].MATNR != "")
                        {
                            //docmod = dOCUMENTO.DOCUMENTOP.Where(docp => docp.MATNR == docpl[j].MATNR).FirstOrDefault();
                        }
                        else
                        {
                            //docmod = dOCUMENTO.DOCUMENTOP.Where(docp => docp.MATKL_ID == docpl[j].MATKL).FirstOrDefault();
                            cat = "C";
                        }
                        //Si lo encuentra meter valores de la base de datos y vista
                        if (docpl[j] != null)
                        {
                            if (cat != "C")
                            {
                                DOCUMENTOP docP = new DOCUMENTOP();
                                docP.NUM_DOC = dOCUMENTO.NUM_DOC;
                                docP.POS     = docpl[j].POS;
                                if (docpl[j].MATNR == null || docpl[j].MATNR == "")
                                {
                                    docpl[j].MATNR = "";
                                }
                                docP.MATNR      = docpl[j].MATNR;
                                docP.MATKL      = docpl[j].MATKL;
                                docP.CANTIDAD   = 1;
                                docP.MONTO      = docpl[j].MONTO;
                                docP.PORC_APOYO = docpl[j].PORC_APOYO;
                                //docP.MONTO_APOYO = docmod.MONTO_APOYO;
                                docP.MONTO_APOYO  = docP.MONTO * (docP.PORC_APOYO / 100);
                                docP.MONTO_APOYO  = Math.Round(docP.MONTO_APOYO, 2);//RSG 16.05.2018
                                docP.PRECIO_SUG   = docpl[j].PRECIO_SUG;
                                docP.VOLUMEN_EST  = docpl[j].VOLUMEN_EST;
                                docP.VOLUMEN_REAL = docpl[j].VOLUMEN_REAL;
                                docP.VIGENCIA_DE  = docpl[j].VIGENCIA_DE;
                                docP.VIGENCIA_AL  = docpl[j].VIGENCIA_AL;
                                docP.APOYO_EST    = docpl[j].APOYO_EST;
                                docP.APOYO_REAL   = docpl[j].APOYO_REAL;
                                dOCUMENTO.DOCUMENTOPs.Add(docP); //RSG 28.05.2018
                                db.SaveChanges();                //RSG
                            }
                            else
                            {
                                foreach (DOCUMENTOM docmmm in docpl[j].DOCUMENTOMs)
                                {
                                    DOCUMENTOP docP = new DOCUMENTOP();
                                    docP.NUM_DOC = dOCUMENTO.NUM_DOC;
                                    docP.POS     = (docpl[j].POS * 10) + docmmm.POS;

                                    docP.MATNR = docmmm.MATNR;
                                    docP.MATKL = null;
                                    //docP.MONTO = (decimal)docmmm.APOYO_EST;
                                    docP.VIGENCIA_DE  = docpl[j].VIGENCIA_DE;
                                    docP.VIGENCIA_AL  = docpl[j].VIGENCIA_AL;
                                    docP.CANTIDAD     = 1;
                                    docP.APOYO_EST    = (decimal)docmmm.APOYO_EST;
                                    docP.APOYO_REAL   = (decimal)docmmm.APOYO_REAL;
                                    docP.VOLUMEN_EST  = 0;
                                    docP.VOLUMEN_REAL = 0;

                                    dOCUMENTO.DOCUMENTOPs.Add(docP); //RSG 28.05.2018
                                    db.SaveChanges();                //RSG
                                }
                            }
                        }
                        else
                        {
                            DOCUMENTOP docP = new DOCUMENTOP();
                            docP.NUM_DOC  = dOCUMENTO.NUM_DOC;
                            docP.POS      = docpl[j].POS;
                            docP.MATNR    = docpl[j].MATNR;
                            docP.MATKL    = docpl[j].MATKL;
                            docP.CANTIDAD = 1;
                            docP.MONTO    = docpl[j].MONTO;
                            //docP.PORC_APOYO = docpl[j].PORC_APOYO;
                            docP.MONTO_APOYO  = docP.MONTO * (docpl[j].PORC_APOYO / 100);
                            docP.MONTO_APOYO  = docpl[j].MONTO_APOYO;
                            docP.PRECIO_SUG   = docpl[j].PRECIO_SUG;
                            docP.VOLUMEN_EST  = docpl[j].VOLUMEN_EST;
                            docP.VOLUMEN_REAL = docpl[j].VOLUMEN_REAL;
                            docP.VIGENCIA_DE  = docpl[j].VIGENCIA_DE;
                            docP.VIGENCIA_AL  = docpl[j].VIGENCIA_AL;
                            docP.APOYO_EST    = docpl[j].APOYO_EST;
                            docP.APOYO_REAL   = docpl[j].APOYO_REAL;
                            dOCUMENTO.DOCUMENTOPs.Add(docP); //RSG 28.05.2018
                            db.SaveChanges();                //RSG
                        }

                        //Agregarlo a la bd
                        //db.DOCUMENTOPs.Add(docP);
                    }
                    catch (Exception e)
                    {
                    }
                }
            }
            catch (Exception e)
            {
            }
            decimal total = 0;

            //RSG 28.05.2018-----------------------------------------------------
            foreach (DOCUMENTOP dp in dOCUMENTO.DOCUMENTOPs)
            {
                dp.VIGENCIA_DE = dOCUMENTO.FECHAI_VIG;
                dp.VIGENCIA_AL = dOCUMENTO.FECHAF_VIG;
                if (dOCpADRE.TIPO_TECNICO == "P")
                {
                    ////if (!dOCpADRE.TSOL.FACTURA)
                    ////{
                    ////    try
                    ////    {
                    ////        total += (decimal)dp.APOYO_EST;
                    ////    }
                    ////    catch { }
                    ////}
                    ////else
                    ////{
                    ////    try
                    ////    {
                    ////        total += (decimal)dp.APOYO_REAL;
                    ////    }
                    ////    catch { }
                    ////}
                    dp.MONTO        = 0;
                    dp.CANTIDAD     = 0;
                    dp.MONTO_APOYO  = 0;
                    dp.PORC_APOYO   = 0;
                    dp.PRECIO_SUG   = 0;
                    dp.VOLUMEN_EST  = 0;
                    dp.VOLUMEN_REAL = 0;
                    try
                    {
                        decimal val = (decimal)(from P in db.PRESUPSAPPs
                                                where P.VKORG == dOCpADRE.VKORG
                                                & P.VTWEG == dOCpADRE.VTWEG
                                                & P.SPART == dOCpADRE.SPART
                                                & P.KUNNR == dOCpADRE.PAYER_ID
                                                & P.MATNR == dp.MATNR
                                                & P.PERIOD == DateTime.Now.Month
                                                select new { P.GRSLS }).Sum(a => a.GRSLS);
                        total   += val;
                        dp.MONTO = val;
                    }
                    catch { }
                }

                db.Entry(dOCUMENTO).State = EntityState.Modified;
                db.SaveChanges();
            }

            if (dOCpADRE.TIPO_TECNICO == "P")
            {
                foreach (DOCUMENTOP dp in dOCUMENTO.DOCUMENTOPs)
                {
                    //total = 100%   200 = 100%
                    //dp.MONTo = ?      50 = 25%
                    decimal porcentaje  = dp.MONTO / total * 100;
                    decimal nuevo_total = (decimal)drecc.MONTO_BASE;

                    if (!dOCpADRE.TSOL.FACTURA)
                    {
                        try
                        {
                            dp.APOYO_EST = nuevo_total * porcentaje / 100;
                        }
                        catch { }
                    }
                    else
                    {
                        try
                        {
                            dp.APOYO_REAL = nuevo_total * porcentaje / 100;;
                        }
                        catch { }
                        ////}
                    }
                    dp.MONTO = 0;

                    db.Entry(dOCUMENTO).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            //RSG 28.05.2018-----------------------------------------------------

            ProcesaFlujo pf = new ProcesaFlujo();
            //db.DOCUMENTOes.Add(dOCUMENTO);
            //db.SaveChanges();

            USUARIO user = db.USUARIOs.Where(a => a.ID.Equals(d.USUARIOC_ID)).FirstOrDefault();
            int     rol  = user.MIEMBROS.FirstOrDefault().ROL_ID;

            try
            {
                //WORKFV wf = db.WORKFHs.Where(a => a.BUKRS.Equals(dOCUMENTO.SOCIEDAD_ID) & a.ROL_ID == rol).FirstOrDefault().WORKFVs.OrderByDescending(a => a.VERSION).FirstOrDefault();
                WORKFV wf = db.WORKFHs.Where(a => a.TSOL_ID.Equals(dOCUMENTO.TSOL_ID)).FirstOrDefault().WORKFVs.OrderByDescending(a => a.VERSION).FirstOrDefault();
                if (wf != null)
                {
                    WORKFP wp = wf.WORKFPs.OrderBy(a => a.POS).FirstOrDefault();
                    FLUJO  f  = new FLUJO();
                    f.WORKF_ID    = wf.ID;
                    f.WF_VERSION  = wf.VERSION;
                    f.WF_POS      = wp.POS;
                    f.NUM_DOC     = dOCUMENTO.NUM_DOC;
                    f.POS         = 1;
                    f.LOOP        = 1;
                    f.USUARIOA_ID = dOCUMENTO.USUARIOC_ID;
                    f.ESTATUS     = "I";
                    f.FECHAC      = DateTime.Now;
                    f.FECHAM      = DateTime.Now;
                    string c = pf.procesa(f, recurrente);
                    //RSG 28.05.2018 -----------------------------------
                    //if (c == "1")
                    //{
                    //    Email em = new Email();
                    //    em.enviaMail(f.NUM_DOC, true);
                    //}
                    FLUJO conta = db.FLUJOes.Where(a => a.NUM_DOC.Equals(f.NUM_DOC)).OrderByDescending(a => a.POS).FirstOrDefault();
                    conta.USUARIOA_ID = user.ID;
                    conta.ESTATUS     = "A";
                    conta.FECHAM      = DateTime.Now;
                    pf.procesa(conta, "");
                    //RSG 28.05.2018 -----------------------------------
                }
            }
            catch (Exception ee)
            {
                if (errorString == "")
                {
                    errorString = ee.Message.ToString();
                    return(0);
                }
                //ViewBag.error = errorString;
            }

            return(1);
        }
Ejemplo n.º 17
0
        public ActionResult Index(string id)
        {
            using (TAT001Entities db = new TAT001Entities())
            {
                int    pagina = 101; //ID EN BASE DE DATOS
                string u      = User.Identity.Name;
                ////if (pais != null)
                ////    Session["pais"] = pais;
                //string u = "admin";
                var user = db.USUARIOs.Where(a => a.ID.Equals(u)).FirstOrDefault();
                ViewBag.permisos = db.PAGINAVs.Where(a => a.ID.Equals(user.ID)).ToList();
                ViewBag.carpetas = db.CARPETAVs.Where(a => a.USUARIO_ID.Equals(user.ID)).ToList();
                ViewBag.usuario  = user; ViewBag.returnUrl = Request.Url.PathAndQuery;;
                ViewBag.rol      = user.PUESTO.PUESTOTs.Where(a => a.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
                ViewBag.Title    = db.PAGINAs.Where(a => a.ID.Equals(pagina)).FirstOrDefault().PAGINATs.Where(b => b.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
                ViewBag.warnings = db.WARNINGVs.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();
                ViewBag.textos   = db.TEXTOes.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();
                try
                {
                    string p = Session["pais"].ToString();
                    ViewBag.pais = p + ".png";
                    PAI pa = db.PAIS.Find(p);
                    if (pa != null)
                    {
                        ViewBag.miles = pa.MILES;   //LEJGG 090718
                        ViewBag.dec   = pa.DECIMAL; //LEJGG 090718
                    }
                }
                catch
                {
                    //ViewBag.pais = "mx.png";
                    ////return RedirectToAction("Pais", "Home");
                }
                Session["spras"] = user.SPRAS_ID;

                try//Mensaje de documento creado
                {
                    string p = Session["NUM_DOC"].ToString();
                    ViewBag.NUM_DOC    = p;
                    Session["NUM_DOC"] = null;
                }
                catch
                {
                    ViewBag.NUM_DOC = "";
                }

                try//Mensaje de documento creado
                {
                    string error_files = Session["ERROR_FILES"].ToString();
                    ViewBag.ERROR_FILES    = error_files;
                    Session["ERROR_FILES"] = null;
                }
                catch
                {
                    ViewBag.ERROR_FILES = "";
                }


                string   us    = "";
                DateTime fecha = DateTime.Now.Date;
                List <TAT001.Entities.DELEGAR> del = db.DELEGARs.Where(a => a.USUARIOD_ID.Equals(User.Identity.Name) & a.FECHAI <= fecha & a.FECHAF >= fecha & a.ACTIVO == true).ToList();

                if (del.Count > 0)
                {
                    List <USUARIO> users = new List <USUARIO>();
                    foreach (DELEGAR de in del)
                    {
                        users.Add(de.USUARIO);
                    }
                    users.Add(ViewBag.usuario);
                    ViewBag.delegados = users.ToList();

                    if (id != null)
                    {
                        us = id;
                    }
                    else
                    {
                        us = User.Identity.Name;
                    }
                    ViewBag.usuariod = us;
                }
                else
                {
                    us = User.Identity.Name;
                }

                List <CSP_DOCUMENTOSXUSER_Result> dOCUMENTOes = db.CSP_DOCUMENTOSXUSER(us, user.SPRAS_ID).ToList();

                //dOCUMENTOes = dOCUMENTOes.Distinct(new DocumentoComparer()).ToList();
                //dOCUMENTOes = dOCUMENTOes.OrderByDescending(a => a.FECHAC).OrderByDescending(a => a.NUM_DOC).ToList();
                //ViewBag.Clientes = db.CLIENTEs.ToList();
                //ViewBag.Cuentas = db.CUENTAs.ToList();
                //ViewBag.DOCF = db.DOCUMENTOFs.ToList();
                //jemo inicio 4/07/2018
                ViewBag.imgnoticia = db.NOTICIAs.Where(x => x.FECHAI <= DateTime.Now && x.FECHAF >= DateTime.Now && x.ACTIVO == true).Select(x => x.PATH).FirstOrDefault();


                List <Documento> listaDocs = new List <Documento>();
                foreach (CSP_DOCUMENTOSXUSER_Result item in dOCUMENTOes)
                {
                    Documento ld = new Documento();
                    ld.BUTTON = item.BUTTON;

                    ld.NUM_DOC      = item.NUM_DOC;
                    ld.NUM_DOC_TEXT = item.NUM_DOC_TEXT;
                    ld.SOCIEDAD_ID  = item.SOCIEDAD_ID;
                    ld.PAIS_ID      = item.PAIS_ID;
                    ld.FECHADD      = item.FECHAD.Value.Day + "/" + item.FECHAD.Value.Month + "/" + item.FECHAD.Value.Year;
                    ld.FECHAD       = item.FECHAD.Value.Year + "/" + item.FECHAD.Value.Month + "/" + item.FECHAD.Value.Day;
                    ld.HORAC        = item.HORAC.Value.ToString().Split('.')[0];
                    ld.PERIODO      = item.PERIODO + "";

                    if (item.ESTATUS == "R")
                    {
                        item.ESTATUSS = item.ESTATUSS.Substring(0, 6) +
                                        db.FLUJOes.Where(x => x.NUM_DOC == item.NUM_DOC & x.ESTATUS == "R").OrderByDescending(a => a.POS).FirstOrDefault().USUARIO.PUESTO_ID +
                                        item.ESTATUSS.Substring(6, 1);
                    }
                    else
                    {
                        item.ESTATUSS = item.ESTATUSS.Substring(0, 6) + " " + item.ESTATUSS.Substring(6, 1);;
                    }
                    Estatus e = new Estatus();
                    ld.ESTATUS       = e.getText(item.ESTATUSS, ld.NUM_DOC);
                    ld.ESTATUS_CLASS = e.getClass(item.ESTATUSS, ld.NUM_DOC);
                    //ld.ESTATUS = e.getText(item.ESTATUSS);
                    //ld.ESTATUS_CLASS = e.getClass(item.ESTATUSS);

                    ld.PAYER_ID = item.PAYER_ID;

                    ld.CLIENTE = item.NAME1;
                    ld.CANAL   = item.CANAL;
                    ld.TSOL    = item.TXT020;
                    ld.TALL    = item.TXT50;
                    //foreach (CUENTA cuenta in db.CUENTAs.Where(x => x.SOCIEDAD_ID.Equals(item.SOCIEDAD_ID)).ToList())
                    //{
                    //    if (item.TALL != null)
                    //    {
                    //        if (cuenta.TALL_ID == item.TALL.ID)
                    //        {
                    //            ld.CUENTAS = cuenta.CARGO.ToString();
                    //            break;
                    //        }
                    //    }
                    //}
                    try
                    {
                        ld.CUENTAS = item.CARGO + "";
                    }
                    catch { }
                    ld.CONCEPTO     = item.CONCEPTO;
                    ld.MONTO_DOC_ML = item.MONTO_DOC_MD + "";

                    ld.FACTURA  = item.FACTURA;
                    ld.FACTURAK = item.FACTURAK;

                    ld.USUARIOC_ID = item.USUARIOD_ID;

                    if (item.DOCUMENTO_SAP != null)
                    {
                        if (item.PADRE)
                        {
                            ld.NUM_PRO = item.DOCUMENTO_SAP;
                            ld.NUM_AP  = "";
                            ld.NUM_NC  = "";
                            ld.NUM_REV = "";
                        }
                        else if (item.REVERSO)
                        {
                            ld.NUM_REV = item.DOCUMENTO_SAP;
                            ld.NUM_AP  = "";
                            ld.NUM_NC  = "";
                            ld.NUM_PRO = "";
                        }
                        else
                        {
                            ld.NUM_NC  = item.DOCUMENTO_SAP;
                            ld.NUM_AP  = "";
                            ld.NUM_PRO = "";
                            ld.NUM_REV = "";
                        }
                        //<!--NUM_SAP-->
                        ld.BLART       = item.BLART;
                        ld.NUM_PAYER   = item.KUNNR;
                        ld.NUM_CLIENTE = item.DESCR;
                        ld.NUM_IMPORTE = item.IMPORTE + "";
                        ld.NUM_CUENTA  = item.CUENTA_C;
                    }
                    else
                    {
                        //<td></td>
                        //<td></td>
                        //<td></td>
                        //<td></td>
                        //<td></td>
                        //<td></td>
                        //<td></td>
                        //<td></td>
                        //<td></td>
                    }

                    listaDocs.Add(ld);
                }
                return(View(listaDocs));
            }
        }
Ejemplo n.º 18
0
        public JsonResult LoadExcel()
        {
            List <DET_AGENTEC> ld = new List <DET_AGENTEC>();

            if (Request.Files.Count > 0)
            {
                HttpPostedFileBase file = Request.Files["FileUpload"];

                ////string extension = System.IO.Path.GetExtension(file.FileName);
                IExcelDataReader reader = ExcelReaderFactory.CreateReader(file.InputStream);
                // 2. Use the AsDataSet extension method
                DataSet result = reader.AsDataSet();

                // The result of each spreadsheet is in result.Tables
                // 3.DataSet - Create column names from first row
                DataTable dt = result.Tables[0];
                ld = objAList(dt);

                reader.Close();
            }

            List <Flujos>  ff       = new List <Flujos>();
            List <USUARIO> usuarios = new List <USUARIO>();
            List <CLIENTE> clientes = new List <CLIENTE>();
            List <PAI>     paises   = new List <PAI>();

            foreach (DET_AGENTEC da in ld)
            {
                Flujos f = new Flujos();
                ////---------------------------------------USUARIO
                f.USUARIOC_ID  = da.USUARIOC_ID;
                f.USUARIOC_IDX = true;
                USUARIO u = usuarios.FirstOrDefault(x => x.ID.Equals(f.USUARIOC_ID));
                if (u == null)
                {
                    u = db.USUARIOs.Where(x => x.ID.Equals(f.USUARIOC_ID) && x.ACTIVO == true).FirstOrDefault();
                    if (u == null)
                    {
                        f.USUARIOC_IDX = false;
                    }
                    else
                    {
                        usuarios.Add(u);
                    }
                }
                if (!f.USUARIOC_IDX)
                {
                    f.USUARIOC_ID = "<span class='red white-text'>" + f.USUARIOC_ID + "</span>";
                }
                ////---------------------------------------PAIS
                f.PAIS_ID  = da.PAIS_ID;
                f.PAIS_IDX = true;

                PAI p = paises.FirstOrDefault(x => x.LAND.Equals(f.PAIS_ID));
                if (p == null)
                {
                    p = db.PAIS.Where(x => x.LAND.Equals(f.PAIS_ID) && x.ACTIVO && x.SOCIEDAD_ID != null).FirstOrDefault();
                    if (p == null)
                    {
                        f.PAIS_IDX = false;
                    }
                    else
                    {
                        paises.Add(p);
                    }
                }
                if (!f.PAIS_IDX)
                {
                    f.PAIS_ID = "<span class='red white-text'>" + f.PAIS_ID + "</span>";
                }

                ////---------------------------------------CLIENTE
                f.KUNNR  = da.KUNNR;
                f.KUNNRX = true;

                CLIENTE c = clientes.FirstOrDefault(x => x.KUNNR.Equals(f.KUNNR));
                if (c == null)
                {
                    c = db.CLIENTEs.Where(cc => cc.KUNNR.Equals(f.KUNNR) && cc.ACTIVO).FirstOrDefault();
                    if (c == null)
                    {
                        f.KUNNRX = false;
                    }
                    else
                    {
                        clientes.Add(c);
                    }
                }
                if (!f.KUNNRX)
                {
                    f.KUNNR = "<span class='red white-text'>" + f.KUNNR + "</span>";
                }


                f.VERSION = da.VERSION.ToString();
                f.POS     = da.POS.ToString();
                ////---------------------------------------USUARIOA
                f.USUARIOA_ID  = da.USUARIOA_ID;
                f.USUARIOA_IDX = true;
                USUARIO ua = usuarios.FirstOrDefault(x => x.ID.Equals(f.USUARIOA_ID));
                if (ua == null)
                {
                    ua = db.USUARIOs.Where(x => x.ID.Equals(f.USUARIOA_ID) && x.ACTIVO == true).FirstOrDefault();
                    if (ua == null)
                    {
                        f.USUARIOA_IDX = false;
                    }
                    else
                    {
                        usuarios.Add(ua);
                    }
                }
                if (!f.USUARIOA_IDX)
                {
                    f.USUARIOA_ID = "<span class='red white-text'>" + f.USUARIOA_ID + "</span>";
                }

                if (da.MONTO == null)
                {
                    f.MONTO = null;
                }
                else
                {
                    f.MONTO = da.MONTO.ToString();
                }
                f.PRESUPUESTO = da.PRESUPUESTO.ToString();
                ff.Add(f);
            }
            JsonResult jl = Json(ff, JsonRequestBehavior.AllowGet);

            return(jl);
        }
Ejemplo n.º 19
0
        public decimal creaReversa(string id_d, string tsol)
        {
            string   dates   = DateTime.Now.ToString("dd/MM/yyyy");
            DateTime theTime = DateTime.ParseExact(dates, //"06/04/2018 12:00:00 a.m."
                                                   "dd/MM/yyyy",
                                                   System.Globalization.CultureInfo.InvariantCulture,
                                                   System.Globalization.DateTimeStyles.None);

            var relacionada_neg = "";
            var relacionada_dis = "";

            DOCUMENTO      dOCUMENTO   = new DOCUMENTO();
            DOCUMENTO      dOCpADRE    = new DOCUMENTO();
            string         errorString = "";
            TAT001Entities db          = new TAT001Entities();

            string           p     = "";
            List <TREVERSAT> ldocr = new List <TREVERSAT>();
            decimal          rel   = 0;

            try
            {
                if (id_d == null || id_d.Equals(""))
                {
                    throw new Exception();
                }
                rel = Convert.ToDecimal(id_d);
            }
            catch
            {
                rel = 0;
            }
            //---
            //Obtener los valores de tsols
            List <TSOL> tsols_val = new List <TSOL>();

            //List<TSOLT_MODBD> tsols_valbd = new List<TSOLT_MODBD>();//RSG 13.06.2018
            try
            {
                tsols_val = db.TSOLs.ToList();
                //tsols_valbd = tsols_val.Select(tsv => new TSOLT_MODBD
                //{
                //    ID = tsv.ID,
                //    FACTURA = tsv.FACTURA
                //}).ToList();
            }
            catch (Exception e)
            {
            }
            //Validar si es una reversa
            string isrn     = "";
            string isr      = "";
            var    freversa = (dynamic)null;

            try
            {
                if (tsol == null || tsol.Equals(""))
                {
                    throw new Exception();
                }
                TSOL ts = tsols_val.Where(tsb => tsb.TSOLR == tsol).FirstOrDefault();
                if (ts != null)
                {
                    isrn     = "X";
                    isr      = "preversa";
                    freversa = theTime.ToString("yyyy-MM-dd");;
                    //Obtener los tipos de reversas
                    try
                    {
                        ldocr = db.TREVERSATs.Where(a => a.TREVERSA.ACTIVO == true && a.SPRAS_ID == dOCpADRE.USUARIO.SPRAS_ID).ToList();
                    }
                    catch (Exception e)
                    {
                    }
                }
            }
            catch (Exception e)
            {
                isrn     = "";
                isr      = "";
                freversa = "";
            }
            //---

            //Obtener los documentos relacionados
            List <DOCUMENTO> docsrel = new List <DOCUMENTO>();

            SOCIEDAD id_bukrs = new SOCIEDAD();
            var      id_pais  = new PAI();
            var      id_waers = db.MONEDAs.Where(m => m.ACTIVO == true).ToList();

            if (rel > 0)
            {
                dOCpADRE = db.DOCUMENTOes.Where(doc => doc.NUM_DOC == rel).FirstOrDefault();
                ////if (dOCpADRE.TIPO_RECURRENTE == null)//RSG 28.05.2018----------------------------------------------
                ////    return 0;
                ////if (!((dOCpADRE.TIPO_RECURRENTE.Equals("M") | dOCpADRE.TIPO_RECURRENTE.Equals("P")) & dOCpADRE.ESTATUS.Equals("A") & dOCpADRE.ESTATUS_WF.Equals("A")))//RSG 28.05.2018
                ////{
                ////    return 0;
                ////}
                //////List<DOCUMENTOREC> ddrec = new List<DOCUMENTOREC>();
                ////DOCUMENTOREC drec = dOCpADRE.DOCUMENTORECs.Where(a => a.ESTATUS == "A").FirstOrDefault();
                ////if (drec == null)
                ////    return 0;
                ////else
                ////{
                ////    DateTime hoy = (DateTime)drec.FECHAF;
                ////    var primer = new DateTime(hoy.Year, hoy.Month, 1);
                ////    var ultimo = primer.AddMonths(1).AddDays(-1);
                ////    dOCUMENTO.FECHAI_VIG = primer;
                ////    dOCUMENTO.FECHAF_VIG = ultimo;
                ////    dOCUMENTO.MONTO_DOC_MD = (decimal)drec.MONTO_BASE;
                ////}
                ////if (tsol != dOCpADRE.TSOL_ID)
                ////    return 0;
                //////RSG 28.05.2018----------------------------------------------
                docsrel  = db.DOCUMENTOes.Where(docr => docr.DOCUMENTO_REF == rel).ToList();
                id_bukrs = db.SOCIEDADs.Where(soc => soc.BUKRS == dOCpADRE.SOCIEDAD_ID && soc.ACTIVO == true).FirstOrDefault();
                id_pais  = db.PAIS.Where(pais => pais.LAND.Equals(dOCpADRE.PAIS_ID)).FirstOrDefault();//RSG 15.05.2018
                dOCUMENTO.DOCUMENTO_REF = rel;
                relacionada_neg         = dOCpADRE.TIPO_TECNICO;
                ////ViewBag.TSOL_ANT = dOCUMENTO.TSOL_ID;

                if (dOCUMENTO != null)
                {
                    dOCUMENTO.TSOL_ID = tsol;
                    dOCUMENTO.NUM_DOC = 0;
                    ////foreach (DOCUMENTOP pos in dOCpADRE.DOCUMENTOPs)
                    ////{

                    ////}
                    List <DOCUMENTOP> docpl    = db.DOCUMENTOPs.Where(docp => docp.NUM_DOC == dOCpADRE.NUM_DOC).ToList();//Documentos que se obtienen de la provisión
                    List <DOCUMENTOP> docsrelp = new List <DOCUMENTOP>();

                    if (docsrel.Count > 0)
                    {
                        docsrelp = docsrel
                                   .Join(
                            db.DOCUMENTOPs,
                            docsl => docsl.NUM_DOC,
                            docspl => docspl.NUM_DOC,
                            (docsl, docspl) => new DOCUMENTOP
                        {
                            NUM_DOC      = docspl.NUM_DOC,
                            POS          = docspl.POS,
                            MATNR        = docspl.MATNR,
                            MATKL        = docspl.MATKL,
                            CANTIDAD     = docspl.CANTIDAD,
                            MONTO        = docspl.MONTO,
                            PORC_APOYO   = docspl.PORC_APOYO,
                            MONTO_APOYO  = docspl.MONTO_APOYO,
                            PRECIO_SUG   = docspl.PRECIO_SUG,
                            VOLUMEN_EST  = docspl.VOLUMEN_EST,
                            VOLUMEN_REAL = docspl.VOLUMEN_REAL,
                            APOYO_REAL   = docspl.APOYO_REAL,
                            APOYO_EST    = docspl.APOYO_EST,
                            VIGENCIA_DE  = docspl.VIGENCIA_DE,
                            VIGENCIA_AL  = docspl.VIGENCIA_AL
                        }).ToList();
                    }
                    List <TAT001.Models.DOCUMENTOP_MOD> docsp = new List <DOCUMENTOP_MOD>();
                    var dis = "";
                    for (int j = 0; j < docpl.Count; j++)
                    {
                        try
                        {
                            //Documentos de la provisión
                            DOCUMENTOP_MOD docP = new DOCUMENTOP_MOD();
                            docP.NUM_DOC = dOCpADRE.NUM_DOC;
                            docP.POS     = docpl[j].POS;
                            docP.MATNR   = docpl[j].MATNR;
                            if (j == 0 && docP.MATNR == "")
                            {
                                relacionada_dis = "C";
                            }
                            docP.MATKL       = docpl[j].MATKL;
                            docP.MATKL_ID    = docpl[j].MATKL;
                            docP.CANTIDAD    = 1;
                            docP.MONTO       = docpl[j].MONTO;
                            docP.PORC_APOYO  = docpl[j].PORC_APOYO;
                            docP.MONTO_APOYO = docpl[j].MONTO_APOYO;
                            docP.PRECIO_SUG  = docpl[j].PRECIO_SUG;
                            docP.VOLUMEN_EST = docpl[j].VOLUMEN_EST;
                            docP.VIGENCIA_DE = docpl[j].VIGENCIA_DE;
                            docP.VIGENCIA_AL = docpl[j].VIGENCIA_AL;
                            docP.APOYO_EST   = docpl[j].APOYO_EST;
                            docP.APOYO_REAL  = docpl[j].APOYO_REAL;

                            //Verificar si hay materiales en las relacionadas
                            if (docsrelp.Count > 0)
                            {
                                List <DOCUMENTOP> docrel = new List <DOCUMENTOP>();

                                if (docP.MATNR != null && docP.MATNR != "")
                                {
                                    docrel = docsrelp.Where(docrell => docrell.MATNR == docP.MATNR).ToList();
                                }
                                else
                                {
                                    docrel = docsrelp.Where(docrell => docrell.MATKL == docP.MATKL_ID).ToList();
                                    dis    = "C";
                                }

                                for (int k = 0; k < docrel.Count; k++)
                                {
                                    //Relacionada se obtiene el
                                    decimal docr_vr = Convert.ToDecimal(docrel[k].VOLUMEN_REAL);
                                    decimal docr_ar = Convert.ToDecimal(docrel[k].APOYO_REAL);

                                    docP.VOLUMEN_EST -= docr_vr;
                                    docP.APOYO_EST   -= docr_ar;

                                    if (dis == "C")
                                    {
                                        //decimal docr_vr = Convert.ToDecimal(docrel[k].);
                                        //decimal docr_ar = Convert.ToDecimal(docrel[k].APOYO_REAL);
                                    }
                                }
                            }

                            //Siempre tiene que ser igual a 0
                            if (docP.VOLUMEN_EST < 0)
                            {
                                docP.VOLUMEN_EST = 0;
                            }
                            if (docP.APOYO_EST < 0)
                            {
                                docP.APOYO_EST = 0;
                            }

                            docP.MATNR = docpl[j].MATNR.TrimStart('0');//RSG 07.06.2018
                            docsp.Add(docP);
                        }
                        catch (Exception e)
                        {
                        }
                    }

                    dOCUMENTO.DOCUMENTOP = docsp;
                }
            }
            else
            {
            }

            dOCUMENTO.SOCIEDAD_ID = id_bukrs.BUKRS;
            dOCUMENTO.PAIS_ID     = id_pais.LAND;//RSG 18.05.2018
            dOCUMENTO.MONEDA_ID   = id_bukrs.WAERS;
            dOCUMENTO.PERIODO     = Convert.ToInt32(DateTime.Now.ToString("MM"));
            dOCUMENTO.EJERCICIO   = Convert.ToString(DateTime.Now.Year);

            dOCUMENTO.FECHAD = theTime;

            //----------------------------RSG 18.05.2018

            //dOCUMENTO.SOCIEDAD = db.SOCIEDADs.Find(dOCUMENTO.SOCIEDAD_ID);
            //----------------------------RSG 18.05.2018


            dOCUMENTO.MONTO_DOC_MD = decimal.Parse("0.00");
            foreach (DOCUMENTOP_MOD dpm in dOCUMENTO.DOCUMENTOP)
            {
                DOCUMENTOP ddp = new DOCUMENTOP();
                ddp.MATKL        = dpm.MATKL_ID;
                ddp.MATNR        = new Cadena().completaMaterial(dpm.MATNR);
                ddp.MONTO        = dpm.MONTO;
                ddp.MONTO_APOYO  = dpm.MONTO_APOYO;
                ddp.PORC_APOYO   = dpm.PORC_APOYO;
                ddp.POS          = dpm.POS;
                ddp.PRECIO_SUG   = dpm.PRECIO_SUG;
                ddp.VIGENCIA_AL  = dpm.VIGENCIA_AL;
                ddp.VIGENCIA_DE  = dpm.VIGENCIA_DE;
                ddp.VOLUMEN_EST  = dpm.VOLUMEN_EST;
                ddp.VOLUMEN_REAL = dpm.VOLUMEN_REAL;
                ddp.APOYO_EST    = dpm.APOYO_EST;
                ddp.APOYO_REAL   = dpm.APOYO_REAL;
                ddp.CANTIDAD     = dpm.CANTIDAD;

                DOCUMENTOP dpp = dOCpADRE.DOCUMENTOPs.Where(x => x.POS == ddp.POS).FirstOrDefault();
                foreach (DOCUMENTOM dm in dpp.DOCUMENTOMs)
                {
                    DOCUMENTOM dmm = new DOCUMENTOM();
                    dmm.APOYO_EST  = dm.APOYO_EST;
                    dmm.APOYO_REAL = dm.APOYO_REAL;
                    dmm.MATNR      = dm.MATNR;
                    //dmm.NUM_DOC = dm.NUM_DOC;
                    dmm.PORC_APOYO  = dm.PORC_APOYO;
                    dmm.POS         = dm.POS;
                    dmm.POS_ID      = dm.POS_ID;
                    dmm.VALORH      = dm.VALORH;
                    dmm.VIGENCIA_A  = dm.VIGENCIA_A;
                    dmm.VIGENCIA_DE = dm.VIGENCIA_DE;

                    ddp.DOCUMENTOMs.Add(dmm);
                }

                dOCUMENTO.DOCUMENTOPs.Add(ddp);
                dOCUMENTO.MONTO_DOC_MD += ddp.APOYO_EST;
            }

            foreach (DOCUMENTOP dpp in dOCpADRE.DOCUMENTOPs)
            {
            }
            ////HTTPPOST
            DOCUMENTO d = new DOCUMENTO();

            if (dOCUMENTO.DOCUMENTO_REF > 0)
            {
                d = db.DOCUMENTOes.Where(doc => doc.NUM_DOC == dOCUMENTO.DOCUMENTO_REF).FirstOrDefault();
                //dOCUMENTO.TSOL_ID = d.TSOL_ID;
                id_bukrs               = db.SOCIEDADs.Where(soc => soc.BUKRS == d.SOCIEDAD_ID).FirstOrDefault();
                dOCUMENTO.ESTADO       = d.ESTADO;
                dOCUMENTO.CIUDAD       = d.CIUDAD;
                dOCUMENTO.PAYER_ID     = d.PAYER_ID;
                dOCUMENTO.CONCEPTO     = d.CONCEPTO;
                dOCUMENTO.NOTAS        = d.NOTAS;
                dOCUMENTO.FECHAI_VIG   = d.FECHAI_VIG;
                dOCUMENTO.FECHAF_VIG   = d.FECHAF_VIG;
                dOCUMENTO.PAYER_NOMBRE = d.PAYER_NOMBRE;
                dOCUMENTO.PAYER_EMAIL  = d.PAYER_EMAIL;
                dOCUMENTO.TIPO_CAMBIO  = d.TIPO_CAMBIO;
                dOCUMENTO.GALL_ID      = d.GALL_ID;
                dOCUMENTO.TALL_ID      = d.TALL_ID;
                //Obtener el país
                dOCUMENTO.PAIS_ID = d.PAIS_ID;//RSG 15.05.2018
                //dOCUMENTO.TSOL_ID = d.TSOL_ID;
            }

            //Tipo técnico
            dOCUMENTO.TIPO_TECNICO = "";

            USUARIO u      = db.USUARIOs.Find(d.USUARIOC_ID); //RSG 02/05/2018
            Rangos  rangos = new Rangos();                    //RSG 01.08.2018
            //Obtener el número de documento
            decimal N_DOC = rangos.getSolID(dOCUMENTO.TSOL_ID);

            dOCUMENTO.NUM_DOC = N_DOC;

            //Obtener SOCIEDAD_ID
            dOCUMENTO.SOCIEDAD_ID = id_bukrs.BUKRS;

            ////Obtener el país
            //dOCUMENTO.PAIS_ID = p.ToUpper();

            //CANTIDAD_EV > 1 si son recurrentes
            dOCUMENTO.CANTIDAD_EV = 1;

            //Obtener usuarioc
            dOCUMENTO.PUESTO_ID   = u.PUESTO_ID;//RSG 02/05/2018
            dOCUMENTO.USUARIOC_ID = u.ID;
            dOCUMENTO.USUARIOD_ID = u.ID;

            //Fechac
            dOCUMENTO.FECHAC = DateTime.Now;

            //Horac
            dOCUMENTO.HORAC = DateTime.Now.TimeOfDay;

            //FECHAC_PLAN
            dOCUMENTO.FECHAC_PLAN = DateTime.Now.Date;

            //FECHAC_USER
            dOCUMENTO.FECHAC_USER = DateTime.Now.Date;

            //HORAC_USER
            dOCUMENTO.HORAC_USER = DateTime.Now.TimeOfDay;

            //Estatus
            dOCUMENTO.ESTATUS = "N";

            //Estatus wf
            dOCUMENTO.ESTATUS_WF = "P";

            ///////////////////Montos
            //MONTO_DOC_MD
            var MONTO_DOC_MD = dOCUMENTO.MONTO_DOC_MD;

            dOCUMENTO.MONTO_DOC_MD = Convert.ToDecimal(MONTO_DOC_MD);

            TCambio tcambio = new TCambio();//RSG 01.08.2018

            //Obtener el monto de la sociedad
            dOCUMENTO.MONTO_DOC_ML = tcambio.getValSoc(id_bukrs.WAERS, dOCUMENTO.MONEDA_ID, Convert.ToDecimal(dOCUMENTO.MONTO_DOC_MD), out errorString);
            if (!errorString.Equals(""))
            {
                throw new Exception();
            }

            //MONTO_DOC_ML2
            var MONTO_DOC_ML2 = dOCUMENTO.MONTO_DOC_ML2;

            dOCUMENTO.MONTO_DOC_ML2 = Convert.ToDecimal(MONTO_DOC_ML2);

            //MONEDAL_ID moneda de la sociedad
            dOCUMENTO.MONEDAL_ID = id_bukrs.WAERS;

            //MONEDAL2_ID moneda en USD
            dOCUMENTO.MONEDAL2_ID = "USD";

            //Tipo cambio de la moneda de la sociedad TIPO_CAMBIOL
            dOCUMENTO.TIPO_CAMBIOL = tcambio.getUkurs(id_bukrs.WAERS, dOCUMENTO.MONEDA_ID, out errorString);

            //Tipo cambio dolares TIPO_CAMBIOL2
            dOCUMENTO.TIPO_CAMBIOL2 = tcambio.getUkursUSD(dOCUMENTO.MONEDA_ID, "USD", out errorString);
            if (!errorString.Equals(""))
            {
                throw new Exception();
            }
            //Obtener datos del payer
            CLIENTE payer = getCliente(dOCUMENTO.PAYER_ID);

            dOCUMENTO.VKORG = payer.VKORG;
            dOCUMENTO.VTWEG = payer.VTWEG;
            dOCUMENTO.SPART = payer.SPART;

            //dOCUMENTO.DOCUMENTO_REF = null;
            dOCUMENTO.TSOL_ID = tsol;
            //Guardar el documento
            db.DOCUMENTOes.Add(dOCUMENTO);
            db.SaveChanges();

            //Actualizar el rango
            rangos.updateRango(dOCUMENTO.TSOL_ID, dOCUMENTO.NUM_DOC);


            DOCUMENTO referencia = db.DOCUMENTOes.Find(dOCUMENTO.DOCUMENTO_REF);

            referencia.ESTATUS         = "R";
            db.Entry(referencia).State = EntityState.Modified;
            db.SaveChanges();
            //Guardar los documentos p para el documento guardado

            ProcesaFlujo2 pf = new ProcesaFlujo2();
            //db.DOCUMENTOes.Add(dOCUMENTO);
            //db.SaveChanges();

            USUARIO user = db.USUARIOs.Where(a => a.ID.Equals(d.USUARIOC_ID)).FirstOrDefault();
            int     rol  = user.MIEMBROS.FirstOrDefault().ROL_ID;

            try
            {
                //WORKFV wf = db.WORKFHs.Where(a => a.BUKRS.Equals(dOCUMENTO.SOCIEDAD_ID) & a.ROL_ID == rol).FirstOrDefault().WORKFVs.OrderByDescending(a => a.VERSION).FirstOrDefault();
                WORKFV wf = db.WORKFHs.Where(a => a.TSOL_ID.Equals(dOCUMENTO.TSOL_ID)).FirstOrDefault().WORKFVs.OrderByDescending(a => a.VERSION).FirstOrDefault();
                if (wf != null)
                {
                    WORKFP wp = wf.WORKFPs.OrderBy(a => a.POS).FirstOrDefault();
                    FLUJO  f  = new FLUJO();
                    f.WORKF_ID    = wf.ID;
                    f.WF_VERSION  = wf.VERSION;
                    f.WF_POS      = wp.POS;
                    f.NUM_DOC     = dOCUMENTO.NUM_DOC;
                    f.POS         = 1;
                    f.LOOP        = 1;
                    f.USUARIOA_ID = dOCUMENTO.USUARIOC_ID;
                    f.ESTATUS     = "I";
                    f.FECHAC      = DateTime.Now;
                    f.FECHAM      = DateTime.Now;
                    string c = pf.procesa(f, "");
                    //RSG 28.05.2018 -----------------------------------
                    //if (c == "1")
                    //{
                    //    Email em = new Email();
                    //    em.enviaMail(f.NUM_DOC, true);
                    //}
                    ////FLUJO conta = db.FLUJOes.Where(a => a.NUM_DOC.Equals(f.NUM_DOC)).OrderByDescending(a => a.POS).FirstOrDefault();
                    ////conta.USUARIOA_ID = user.ID;
                    ////conta.ESTATUS = "A";
                    ////conta.FECHAM = DateTime.Now;
                    ////pf.procesa(conta, "");
                    //RSG 28.05.2018 -----------------------------------
                }
            }
            catch (Exception ee)
            {
                if (errorString == "")
                {
                    errorString = ee.Message.ToString();
                    return(0);
                }
                //ViewBag.error = errorString;
            }

            return(dOCUMENTO.NUM_DOC);
        }